JDBC链接数据库用到的是桥接设计模式;JDBC连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不动,原因就是JDBC提供了统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行。
preparedStatement与Statemnet比较:
创建时的区别:
Statement statement = conn.createStatement();
PreparedStatement preStatement = conn.prepareStatement(sql);
执行的时候:
ResuleSet set = statement .executeQuery(sql);
ResultSet pSet = preStatement.executeQuery();
可以看出,PreparedStatement有预编译的过程,而statement不同,如果执行多变,则相应的就要编译多少遍sql语句,所以效率要低。
线程安全的map在JDK105及其以上的版本实现方法:
1、HashMp和TreeMap不是线程安全的,没有进行同步考虑;
2、HashTable和ConcurrentHaspMap都是线程安全的,区别在于他们对锁的范围不同,HashTable对整张表进行加锁,而ConcurrentHashMap将Hash表分为16桶(segment),每次只对需要的桶进行加锁。
3、Collections类提供了sychronizdxxx()方法,可以将指定的集合包装成线程同步的集合,比如:
List list=Collection.syschronizedList(new ArrayList());
Set set = Collections.synchronizedSet(new HashSet);
Vector和ArrayList的区别:
同步性:Vector支持线程的同步,ArrayList是线程不安全的,不是同步的;
数据增长:当需要增长时,Vector默认为增长为原来的一倍,而ArrayList却是原来的50%,这样就有利于节约内存空间
如果涉及到堆栈、队列等操作,应该考虑用Vector,如果需要快速随机访问元素则用ArrayList;
创建对象有四种方法:
序列化对象、反射、克隆、构造方法new; 但是只有反射和new 调用了构造方法 其他没有调用构造方法;