`
zhaoImpulse
  • 浏览: 80530 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
最近做了个项目,他们要求在主数据库中存一个表,记录了所有要连接的数据库,然后客户可以任意选择要连接哪个数据库。但是,连到那个数据库,只是获取某一部分信息,而像日志、注释等信息还要存在主库中。 我们选的是ibatis框架作为数据库层,用mysql实验的时候,是用c3p0创建动态数据库,然后调用getSqlMapClientTemplate().setDataSource(DataSource dataSource)方法将数据源赋给ibtis,这样换数据源时,spring不用重启就可以。 但后来换了sqlserver发现不行,虽然数据库照样创建,但是ibatis还是连接的以前的主库,所以为 ...

java 泛型

泛型是jdk1.5新出的一种应用,它可以使集合的实例关联或绑定到某种特定的类型。不用它,并不会引起什么问题,但尽量还是使用的好,这样能更加规范,更重要的是, public String get(List list){ for(String s:list){ System.out.println(s) } }    如果你偶然往list加入了一个int类型的值,那么只有在运行时,我们才会发现它报出的classcast错误,但如果使用泛型   private List<String> list; public ...
1.  Iframe不显示问题 <iframe    id="rightFrame" width="100%" height="80%" frameborder="0" style="overflow-y:hidden;overflow-x:hidden;"/> 在火狐中无法识别width="100%" height="80%"这种百分比,所以会显示不出来 解决方法:一:width="800px" height=&q ...
  1.HashSet内置了一个HashMap,将对象保存为HashMap的key,复用HashMap的算法来保证对象不可重复 但当创建时有第三个参数boolean dummy时,就用LinkedHashMap来管理  HashSet(int initialCapacity, float loadFactor, boolean dummy) { map = new LinkedHashMap< ...
  Employee e = DB.getEmployee("Bob"); //判断雇员e是否应该今天发薪水,如果是,则发 if(e != null && e.isTimeToPay(today)) e.pay();     如果Bob对象不存在,e就是一个null,然后&&的第一个表达式会被首先求值,而仅当第一个表达式为true时才会对第二个表达式求值。而在很多情况下我们会忘 了对null进行检查判定。这种惯用方法虽然常见,但很丑陋。 通过用DB抛出一个异常而不是返回null可以减少出错的可能。不过try/ ...
Themeplate Method   public abstract class Application { protected abstract void init(); protected abstract void idle(); protected abstract void cleanup(); private boolean isDone = false; protected void setDone(){ this.isDone = true; } protected boolean done(){ return isDone; } ...
转贴自:http://jinxingyi.spaces.live.com/ 前几天和朋友谈到Java的问题,她突然提到implements 和extend的比较问题,我觉得这个问题是一个老生常谈的问题了,但是它又特别的重要,重要到能够影响一个人编程的思维方式,所以还是值得我们讨论讨论的(本文讨论的extend是类的扩展,而不是interface的扩展;因为接口可以扩展多个接口)。 很多人用Java都因为它提供了丰富的开源库,却还用面向过程的思维方式编写Java程序。这样的程序不但重用性很差,而且会有很大的安全隐患。   谈谈接口和虚拟类 用一个形象比喻interface 和 abs ...

工厂模式

  简单工厂模式 依赖倒置原则(DIP)扶弱抑强 们应该优先依赖于抽象类,而避免依赖于具体类。当这些具体类不稳定时,更应该如此,因此下面的范例 它违反了DIP,SomeApp依赖于接口Shape,而且完全通过Shape接口来使用Shape的实例。它没有使用Square类或者Circle类的任何特定方法。糟糕的是,SomeApp也创建了Square和Circle的实例,因此就不得不依赖于这些具体类。 所以要用Factory模式来修正。   public interface ShapeFactory { public Shape makeCircle(); publ ...
Singleton模式 当要使用单例模式时,最常用的是Singleton模式: public class Singleton { private static Singleton theInstance = null; private Singleton(){} public static Singleton Instance(){ if(theInstance == null) theInstance = new Singleton(); return theInstance; } }  优点: 跨平台:使用合适的中间件(例如RMI),可以把S ...
  敏捷软件开发宣言 个体和交互 胜过 过程和工具 可以工作的软件 胜过 面面俱到的文档 客户合作 胜过 合同谈判 响应变化 胜过 遵循计划 敏捷设计原则: 单一职责原则(The Single Responsibility Principle,简称SRP); 开发-封装原则(The Open-Close Principle,简称OCP); Liskov替换原则(The Liskov Substitution Principle,简称LSP); 依赖倒置原则(the Dependency Inversion Principle,简称DIP); 接口隔离原则( ...

各种锁

活锁   T1 T2 T3 T4 lock R . . . . lock R . . . 等待 lock R . unlock 等待 . lock R . 等待 lock R 等待 . 等待 . 等待 . 等待 Unlock 等待 . 等待 . lock R . 等待 . . 如果事务T1封锁了数据R,事务T2又 ...

命令模式

命令模式(别名:动作,事务) 将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化;对请求排队或记录请求日志,心腹支持可撤销的操作。 Receiver(接收者):接收者是一个类的实例,该实例负责执行与请求相关的操作。 Command(命令)接口:命令是一个接口,规定了用来封装“请求”的若干个方法,比如execute()、undo()等方法. ConcreteCommand(具体命令):是实例命令接口的类的实例。具体命令必须实现命令接口中的方法,比如execute()方法,使该方法封装一个“请求”。 Invoker(请求者):是一个包含Command接口变量的类的实例。 ...
  <!--StartFragment -->   ◆寄存器:我们在程序中无法控制 ◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中 ◆堆:存放用new产生的数据 ◆静态域:存放在对象中用static定义的静态成 ...
摘自http://www.cnblogs.com/springcsc/archive/2009/12/03/1616330.html Posted on 2009-12-03 16:42 火之光 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。          所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。          在String ...

Java 一些基础

 语言基础 为了简化代码,Java5提供了静态导入机制。静态导入实现无需在使用其它类的静态成员时前缀其类名,。要使用静态成员(方法和变量),必须给出提供这个方法的类。使用静态导入,可以使被导入类的所有静态变量 ...
Global site tag (gtag.js) - Google Analytics