1.ibatis非常簡(jiǎn)單易學(xué)拜效,hibernate相對(duì)較復(fù)雜,門檻較高浓恶。
2.ibatis需要手寫sql語(yǔ)句,也可以生成一部分结笨,hibernate則基本上可以自動(dòng)生成包晰,偶爾會(huì)寫一些hql湿镀。同樣的需求,ibatis的工作量比hibernate要大很多。類似的伐憾,如果涉及到數(shù)據(jù)庫(kù)字段的修改勉痴,hibernate修改的地方很少树肃,而ibatis要把那些sql mapping的地方一一修改。?
java 中的instanceof 運(yùn)算符是用來(lái)在運(yùn)行時(shí)指出對(duì)象是否是特定類的一個(gè)實(shí)例胸嘴。instanceof通過(guò)返回一個(gè)布爾值來(lái)指出,這個(gè)對(duì)象是否是這個(gè)特定類或者是它的子類的一個(gè)實(shí)例劣像。
instanceof 可以用于 A對(duì)象是否繼承B對(duì)象? 如果繼承?instanceof 返回true? 如果 B繼承A ;C繼承B? 那個(gè)a,c?instanceof? 是會(huì)返回false ;instanceof 用于對(duì)象之間的比較只會(huì)有子父之間? 如果隔代了會(huì)有變化的? 變量中用可以判斷 2個(gè)變量是否是同一數(shù)據(jù)類型
equals 方法的參數(shù)類型是Object 判斷2個(gè)對(duì)象是否相等或者變量是否相同(只是比較值)和==比較內(nèi)存空間是有些不同的
public int? hashCode()
這個(gè)方法返回對(duì)象的散列碼乡话,返回值是int類型的散列碼。
對(duì)象的散列碼是為了更好的支持基于哈希機(jī)制的Java集合類蚊伞,例如 Hashtable, HashMap, HashSet 等吮铭。
重寫了euqls方法的對(duì)象必須同時(shí)重寫hashCode()方法。
如果2個(gè)對(duì)象通過(guò)equals調(diào)用后返回是true颅停,那么這個(gè)2個(gè)對(duì)象的hashCode方法也必須返回同樣的int型散列碼
如果2個(gè)對(duì)象通過(guò)equals返回false谓晌,他們的hashCode返回的值允許相同。(然而癞揉,程序員必須意識(shí)到纸肉,hashCode返回獨(dú)一無(wú)二的散列碼喊熟,會(huì)讓存儲(chǔ)這個(gè)對(duì)象的hashtables更好地工作。)
IO和NIO解說(shuō)http://blog.csdn.net/evan_man/article/details/50910542
阻塞就是:當(dāng)某個(gè)事件或者任務(wù)在執(zhí)行過(guò)程中烦味,它發(fā)出一個(gè)請(qǐng)求操作壁拉,但是由于該請(qǐng)求操作需要的條件不滿足,那么就會(huì)一直在那等待弃理,直至條件滿足;
非阻塞就是:當(dāng)某個(gè)事件或者任務(wù)在執(zhí)行過(guò)程中钥勋,它發(fā)出一個(gè)請(qǐng)求操作,如果該請(qǐng)求操作需要的條件不滿足算灸,會(huì)立即返回一個(gè)標(biāo)志信息告知條件不滿足,不會(huì)一直在那等待测僵。
同步和異步著重點(diǎn)在于多個(gè)任務(wù)的執(zhí)行過(guò)程中谢翎,一個(gè)任務(wù)的執(zhí)行是否會(huì)導(dǎo)致整個(gè)流程的暫時(shí)等待;
而阻塞和非阻塞著重點(diǎn)在于發(fā)出一個(gè)請(qǐng)求操作時(shí)森逮,如果進(jìn)行操作的條件不滿足是否會(huì)返會(huì)一個(gè)標(biāo)志信息告知條件不滿足
三.什么是阻塞IO?什么是非阻塞IO良风?
在了解阻塞IO和非阻塞IO之前闷供,先看下一個(gè)具體的IO操作過(guò)程是怎么進(jìn)行的。
通常來(lái)說(shuō)歪脏,IO操作包括:對(duì)硬盤的讀寫、對(duì)socket的讀寫以及外設(shè)的讀寫