JDBC鏈接數(shù)據(jù)庫用到的是橋接設(shè)計模式;JDBC連接數(shù)據(jù)庫的時候橘忱,在各個數(shù)據(jù)庫之間進(jìn)行切換赴魁,基本不需要動太多的代碼,甚至絲毫不動钝诚,原因就是JDBC提供了統(tǒng)一接口颖御,每個數(shù)據(jù)庫提供各自的實現(xiàn),用一個叫做數(shù)據(jù)庫驅(qū)動的程序來橋接就行凝颇。
preparedStatement與Statemnet比較:
創(chuàng)建時的區(qū)別:
Statement statement = conn.createStatement();
PreparedStatement preStatement = conn.prepareStatement(sql);
執(zhí)行的時候:
ResuleSet set = statement .executeQuery(sql);
ResultSet pSet = preStatement.executeQuery();
可以看出潘拱,PreparedStatement有預(yù)編譯的過程,而statement不同祈噪,如果執(zhí)行多變,則相應(yīng)的就要編譯多少遍sql語句尚辑,所以效率要低辑鲤。
線程安全的map在JDK105及其以上的版本實現(xiàn)方法:
1、HashMp和TreeMap不是線程安全的杠茬,沒有進(jìn)行同步考慮月褥;
2、HashTable和ConcurrentHaspMap都是線程安全的瓢喉,區(qū)別在于他們對鎖的范圍不同宁赤,HashTable對整張表進(jìn)行加鎖,而ConcurrentHashMap將Hash表分為16桶(segment),每次只對需要的桶進(jìn)行加鎖栓票。
3决左、Collections類提供了sychronizdxxx()方法,可以將指定的集合包裝成線程同步的集合走贪,比如:
List list=Collection.syschronizedList(new ArrayList());
Set set = Collections.synchronizedSet(new HashSet);
Vector和ArrayList的區(qū)別:
同步性:Vector支持線程的同步佛猛,ArrayList是線程不安全的,不是同步的坠狡;
數(shù)據(jù)增長:當(dāng)需要增長時继找,Vector默認(rèn)為增長為原來的一倍,而ArrayList卻是原來的50%逃沿,這樣就有利于節(jié)約內(nèi)存空間
如果涉及到堆棧婴渡、隊列等操作,應(yīng)該考慮用Vector凯亮,如果需要快速隨機(jī)訪問元素則用ArrayList边臼;
創(chuàng)建對象有四種方法:
序列化對象、反射假消、克隆硼瓣、構(gòu)造方法new; 但是只有反射和new 調(diào)用了構(gòu)造方法 其他沒有調(diào)用構(gòu)造方法;