- 浏览: 599643 次
- 性别:
- 来自: 厦门
最新评论
文章列表
深入掌握JMS(一):JSM基础
1. JMS基本概念
JMS(Java Message Service) 即Java消息服务。它提供标准的产生、发送、接收消息的接口简化企业应用的开发。
它支持两种消息通信模型:点到点(point-to-point)(P2P)模型和发布/订阅(Pub/Sub)模型。
P2P 模型规定了一个消息只能有一个接收者;Pub/Sub 模型允许一个消息可以有多个接收者。
对于点到点模型,消息生产者产生一个消息后,把这个消息发送到一个Queue(队列)中,然后消息接收者再从这个Queue中读取,一旦这个消息被一个接收者读取之后,它就在这个Queue中消失了,所 ...
代理模式(基于接口)
- 博客分类:
- 代理模式
一、代理模式简介
代理模式的作用是:为其他对象提供一种代理,以控制对该对象的访问。在某种情况下,一个客户不想或者不能直接引用另一个对象,此时代理对象可以在客户端 和目标对象之间起到中介的作用。代理模式有如下特点:
职责清晰:真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。
代理对象:可以在客户端和目标对象之前起到中介的作用,这样保护了目标对象
高扩展性
代理模式UML图如下:
二、代理模式实现
代理模式一般涉及到的角色如下:
抽象角色:声明真实对象和代理对象的共同接口
代理角色:代理对象角色内部含有对真 ...
一、分析
一个二叉树节点有三个部分,一个是指向左子树的部分,一个是指向右子树的部分,另外一个是数据部分。可以把这个节点抽象成一个节点对象,给对象有两个节点对象属性和一个数据属性。如下图:
一个二叉树有只有一个根节点,其余的都是根节点的直接或间接子节点。所以可以把二叉树抽象成一个对象,该对象有一个节点类型的数据,也就是用来保存根节点。如下图:
package com.algorithms.treee;
/**
* 二叉树
*/
public class BinaryTree
{
private TreeNode root;// 根节点
...
将字符串转化成实体集合
List<SQZCOrderDtail> list= om.readValue(node.findPath("result"),new TypeReference<List<SQZCOrderDtail>>(){});//把json转换为list<实体>
Jackson是一个采用Java开发的高性能JSON处理器(JSON解析器+JSON生成器)。它比其它任何Java JSON Parser和Data Binder都快。除了基本的JSON读写功能之外,它提供完全基于节点的Tree Model和完整的O ...
多个线程实现累加
package com.thread;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/**
* @author:xxx
* @TODO:使用callable进行自增
*/
p ...
事务的原子性
事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据改操作要全部执行,要么全部不执行。这种特性称为原子性。 事务的原子性要求,如果把一个事务看作是一个程序,它要么完 ...
Log4j学习总结-1
- 博客分类:
- Log4J
为什么不用System.out.println()?
功能太弱;不易于控制。如果暂时不想输出了怎么办?如果想输出到文件怎么办?如果想部分输出怎么办?……
为什么同时使用commons-logging和Log4j?为什么不仅使用其中之一?
Commons-loggin的目的是 ...
如果不采用连接池技术,将导致不断创建和销毁数据库Connection,造成性能上的损耗。而数据库连接池技术将在池中创建一定数量的Connection,当需要Connection时就从池中取出一个,用完之后归还给连接池,而不是将其销毁。
自定义数据库连接池的具体步骤分析:
a. 定义MyDataSource类,实现DataSource接口,并提供接口中定义的方法。其中,核心方法为Connection getConnection()。
b. 可以在静态代码块或构造函数中创建多个Connection对象, 并将他们存储在LinkedList中. 当调用MyDataSource对象的getConnect ...
线程池作用就是限制系统中执行线程的数量。
合理利用线程池能够带来三个好处:
第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。
第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。
流程分析:线程池的主要工作流程如下图:
从上图我们可以看出,当提交一个新任务到线程池时,线程池的处理流程如下:
首先线程池判断基本线程池是否已满?没满,创建一个工 ...
地址:http://www.iteye.com/magazines/131
摘录术语:
进程具有一个独立的执行环境。通常情况下,进程拥有一个完整的、私有的基本运行资源集合。特别地,每个进程都有自己的内存空间。进程是系统进行资源分配和调度的一个独立单位。
线程有时也被称为轻量级的进程。进程和线程都提供了一个执行环境,但创建一个新的线程比创建一个新的进程需要的资源要少。
线程是在进程中存在的 — 每个进程最少有一个线程。线程共享进程的资源,包括内存和打开的文件。这样提高了效率,但潜在的问题就是线程间的通信。 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能 ...
Spring注解原理学习-1
- 博客分类:
- Spring Inject
注解(Annotation)提供了一种安全的类似注释的机制,为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻方便的使用这些数据(通过解析注解来使用这些数据),用来将任何的信息或者元数据与程序元素(类、方法、成员变量等)进行关联。其实就是更加直观更加明了的说明,这些说明信息与程序业务逻辑没有关系,并且是供指定的工具或框架使用的。Annotation像一种修饰符一样,应用于包、类型、构造方法、方法、成员变量、参数及本地变量的申明语句中。
Annotation其实是一种接口。通过java的反射机制相关的API来访问Annotation信息。相关类(框架或工具中的类 ...
synchronized使用起来非常简单,有三种使用模式:
1. 作为修饰符加在方法声明上,synchronized修饰非静态方法时表示锁住了调用该方法的堆对象,修饰静态方法时表示锁住了这个类在方法区中的类对象(记住JAVA中everything is object) ...
HIBERNATE一对多配置实例
1.环境:假定班级和学生是一对多的关系,班级是一,学生是多,对应表格分别是:zlass ,student
2.创建Zlass和Student对象
public class Zlass{
private String class_id;
private String class_name;
private java.util.Set students;
public void setId(String id){
this.class_id = id;
}
public void setClassName(St ...
地址:
http://blog.csdn.net/dbcrocodile/article/details/23753995
http://blog.csdn.net/dbcrocodile/article/details/23921383
http://www.itpub.net/forum.php?mod=viewthread&tid=1807325&highlight=
ORACLE执行计划学习
- 博客分类:
- oracle
基于ORACLE的应用系统很多性能问题,是由应用系统SQL性能低劣引起的,所以SQL的性能优化很重要,分析与优化SQL的性能我们一般通过查看该SQL的执行计划,本文就如何看懂执行计划,以及如何通过分析执行计划对SQL进行优化 ...