`
gongjiayun
  • 浏览: 159549 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论
文章列表
通过继承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定时任务配置: <?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 ...
Global site tag (gtag.js) - Google Analytics