- 浏览: 159549 次
- 性别:
- 来自: 长沙
最新评论
-
h416373073:
多谢分享.
java代理模式 -
yeruowei:
为嘛atomikos的网站打不开?
spring3.0+Atomikos 构建jta的分布式事务 -
guoyanwei_ok:
也赞成2楼的说法。
Java装饰模式 -
liangsaifei:
我说那么面熟,原来是马士兵讲过的啊!
java代理模式 -
851228082:
这个例子,跟静态代理类完全一样呀。
Java装饰模式
文章列表
通过继承spring AbstractRoutingDataSource父类来进行动态的切换数据源,结合注解和spring aop来实现。
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
/**
* 自定义的多数据源路由器.
*
*/
public class CustomerRoutingDataSource extends AbstractRoutingDataSource {
private final transient Logger log = ...
spring3.0+Atomikos 构建jta的分布式事务
spring3.0已经不再支持jtom了,不过我们可以用第三方开源软件atomikos(http://www.atomikos.com/)来实现.
Atomikos是目前在分布式事务管理中做得相当不错的开源软件。有10年以上的经验,Atomikos保障您的关键事务和
防止昂贵的数据丢失在发生系统故障或事故中.Atomikos支持XA(全局事务)和NON-XA(非全局事务),NON-XA效率高
于XA.本文主要是讲XA事件,因为要在不同的数据库中操作多张表.
接下来说一下怎么和spring3.0结合使用
首先要下载spring3. ...
spring定时任务
- 博客分类:
- 学习笔记
spring定时任务配置:
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi: ...
队列:数据项遵循先进先出,就像是排队上车一样,排在最前面的最先上车,排在最后面的最后一个上车
java代码:
package com.gjy.queue;
public class Queue {
private int maxSize;
private long [] a;
private int front;//队头
private int rear;//队尾
private int nItems;//计数器
public Queue(int x){
this.maxSize = x ;
this.a = new long[maxS ...
选择排序:
以一个球队为例,现在在将这个球队的队员进行排序,首先观察队员,把最矮的队员与第一位置交换,即0位置。现在最左边的是有序的了,接下来从1闭门位置开始观察队员,找出最矮的与1位置交换,依此类推直到所有的队员都排好序。
下面是java代码:
package com.gjy.collect;
public class ArraySel {
private long [] array;
private int index;
public ArraySel(int max) {
array = new long[max];
index = 0;
}
...
插入排序:数组左边的数据项是已经排好序的,然后从没有排好序的数据项中取出第一个数据项记为temp,开始与左边数据项进行比较,如果找到比此数据项大的数据项记为out,则将temp放到out位,再从out位开始将左边排好序的数据项向后移一位,依此类推。
下面来看一下java代码:
package com.gjy.collect;
public class ArrayIns {
private long [] array;
private int index;
public ArrayIns(int max) {
array = new long[max];
...
栈一次只允许访问一个数据项:即最后插入的数据项。移除这个数据项后才能访问倒数第二个数据项,依此类推。栈的数据项遵循后进先出的次序。
1.栈的实现代码
package com.gjy.stack;
public class Stack {
private int maxSize;
private char [] stackArray;
private int top;
public Stack(int s){
maxSize = s;
stackArray = new char[maxSize];
top = -1;
}
// ...
Java装饰模式
装饰模式:给一个类添加一些额外的职责,并且在添加这些额外的职责时不会控制该类的执行逻辑。
UML类图:
组成部分:
抽象构件:原始的功能接口
具体构件:具体的原始功能类
装饰角色:持有具体构件类的对象,以便执行原有功能
具体装饰:具体扩展的功能在这里
下面看一个对开车功能拓展的实例(晚上+开车):
抽象构件:
package com.gjy.drector;
/**
* 抽象接口,规范准备接收附加责任的对象
* @author gjy
*/
public interface Component {
public void operation ...
Java动态代理模式
1. 代理:一个角色代表别一个角色来完成某些特定的功能。
比如:生产商,中间商,客户这三者这间的关系
客户买产品并不直接与生产商打交道,也不用知道产品是如何产生的,客户只与中间商打交道,而中间 ...
这篇文章写得很不错,我在此收藏了,供以后学习
http://www.cnblogs.com/riky/archive/2007/04/07/704298.html
struts2+hibernate3.3+spring3.0整合
struts2配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
...
Java多线程编程基础之线程对象
在进入java平台的线程对象之前,基于基础篇(一)的一些问题,我先插入两个基本概念。
[线程的并发与并行]
在单CPU系统中,系统调度在某一时刻只能让一个线程运行,虽然这种调试机制有多种形式(大多数是时间片轮巡为主),但无论如何,要通过不断切换需要运行的线程让其运行的方式就叫并发(concurrent)。而在多CPU系统中,可以让两个以上的线程同时运行,这种可以同时让两个以上线程同时运行的方式叫做并行(parallel)。
在上面包括以后的所有论述中,请各位朋友谅解,我无法用最准确的词语来定义储如并发和并行这类术语,但我以我的经验能通俗地告 ...
RMI(远程接口调用)
1. RMI的原理:
RMI系统结构,在客户端和服务器端都有几层结构。
方法调用从客户对象经占位程序(Stub)、远程引用层(Remote Reference Layer)和传输层(Transport Layer)向下,传递给主机,然后再次经传 输层,向上穿过远程调用层和骨干网(Skeleton),到达服务器对象。 占位程序扮演着远程服务器对象的代理的角色,使该对象可被客户激活。 远程引用层处理语义、管理单一或多重对象的通信,决定调用是应发往一个服务器还是多个。传输层管理实际的连接,并且追追踪可以接受方法调用的远程对象。服务器端的骨干网完成对服务器对象实际的方法调用, ...
两个字符串(String srcString,String destString)要求把destString字符串按$符分割,且每俩个$输出一个$,$后如果是数字的话分为一位和俩位用srcString来替换;
举例说明:
srcString:10,20,30,40(,为分割符)
destString:您的余额为:$1(或01)元,本月应交$$2(或02)元,下月交:$$$3(或03) 元,结余为:$$$$4(或04)元
输出为:
您的余额为:10元,本月应交$20元,下月交:$30元,结余为:$$40元
package com.sin.stringreplace;
publ ...
log4j.rootLogger=INFO,A1
#输出到控制台
#log4j.appender.A1=org.apache.log4j.ConsoleAppender
#输出到文件
#log4j.appender.A1=org.apache.log4j.FileAppender
#输出到文件,并且每天生成一个日志文件
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
#输出文件的位置
log4j.appender.A1.File=log\\Log
#日志文件的后缀
log4j.appender.A1.DatePatte ...