111.哈夫曼編碼
??????? 簡易的理解就是,假如我有A,B,C,D,E五個字符,出現(xiàn)的頻率(即權(quán)值)分別為5,4,3,2,1,那么我們第一步先取兩個最小權(quán)值作為左右子樹構(gòu)造一個新樹,即取1,2構(gòu)成新樹,其結(jié)點為1+2=3,如圖:

??????? 虛線為新生成的結(jié)點,第二步再把新生成的權(quán)值為3的結(jié)點放到剩下的集合中,所以集合變成{5,4,3,3},再根據(jù)第二步,取最小的兩個權(quán)值構(gòu)成新樹,如圖:

??????? 再依次建立哈夫曼樹,如下圖:

??????? 其中各個權(quán)值替換對應(yīng)的字符即為下圖:

??????? 所以各字符對應(yīng)的編碼為:A->11,B->10,C->00,D->011,E->010
112.說說Runnable與Callable
Callable接口:public interface Callable{ V call() throws Exception;}
Runnable接口:public interface Runnable { public abstract void run();}
相同點:
??????? 1.兩者都是接口;(廢話)
??????? 2.兩者都可用來編寫多線程程序;
??????? 3.兩者都需要調(diào)用Thread.start()啟動線程;
不同點:
??????? 1.兩者最大的不同點是:實現(xiàn)Callable接口的任務(wù)線程能返回執(zhí)行結(jié)果;而實現(xiàn)Runnable接口的任務(wù)線程不能返回結(jié)果;
??????? 2.Callable接口的call()方法允許拋出異常;而Runnable接口的run()方法的異常只能在內(nèi)部消化,不能繼續(xù)上拋;
注意點:?Callable接口支持返回執(zhí)行結(jié)果,此時需要調(diào)用FutureTask.get()方法實現(xiàn),此方法會阻塞主線程直到獲取‘將來’結(jié)果;當(dāng)不調(diào)用此方法時,主線程不會阻塞
Callable工作的Demo:


Runnable工作的Demo:


113.java線程池
https://www.cnblogs.com/aspirant/p/6920418.html
114.synchronized與Lock的區(qū)別
兩者區(qū)別:
1.首先synchronized是java內(nèi)置關(guān)鍵字,在jvm層面,Lock是個java類;
2.synchronized無法判斷是否獲取鎖的狀態(tài),Lock可以判斷是否獲取到鎖;
3.synchronized會自動釋放鎖(a 線程執(zhí)行完同步代碼會釋放鎖 ;b 線程執(zhí)行過程中發(fā)生異常會釋放鎖),Lock需在finally中手工釋放鎖(unlock()方法釋放鎖),否則容易造成線程死鎖;
4.用synchronized關(guān)鍵字的兩個線程1和線程2,如果當(dāng)前線程1獲得鎖,線程2線程等待。如果線程1阻塞,線程2則會一直等待下去,而Lock鎖就不一定會等待下去,如果嘗試獲取不到鎖,線程可以不用一直等待就結(jié)束了;
5.synchronized的鎖可重入、不可中斷、非公平,而Lock鎖可重入、可判斷、可公平(兩者皆可)
6.Lock鎖適合大量同步的代碼的同步問題,synchronized鎖適合代碼少量的同步問題。
115.synchronized鎖升級過程
https://www.cnblogs.com/kubidemanong/p/9520071.html
https://blog.csdn.net/mmoren/article/details/79185862#commentBox
116.hashmap 在JDK1.7 和1.8為什么數(shù)組下標(biāo)拉鏈時候是一個頭插入,一個尾叉?
?https://blog.csdn.net/qq_36520235/article/details/82417949
117.線程池shumdown 時候還有線程跑的話發(fā)生了什么
??????? 對shutdown方法的調(diào)用,可以防止新任務(wù)的被提交給這個Executor,當(dāng)前線程將繼續(xù)運行在shutdown()被調(diào)用之前提交的所有任務(wù)。這個程序?qū)⒃贓xecutor中的所有任務(wù)完成中之后盡快退出。
線程池文章:
http://www.itdecent.cn/p/210eab345423
118.B樹B+樹的區(qū)別?
http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html
119.淺談AVL樹,紅黑樹,B樹,B+樹原理及應(yīng)用
https://blog.csdn.net/whoamiyang/article/details/51926985
https://blog.csdn.net/guoziqing506/article/details/64122287
120.如何理解valatile保證內(nèi)存有序性
http://www.360doc.com/content/18/0311/23/14567867_736238973.shtml