刷题遇到的知识点(一)

2017-10-19  本文已影响0人  ComputerBoy

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 调用了构造方法 其他没有调用构造方法;

上一篇下一篇

猜你喜欢

热点阅读