基礎(chǔ)篇 - 04

hashMap和hashTable有哪些區(qū)別?

hashMap(jdk1.8采用 數(shù)組+鏈表+紅黑樹,鏈表閾值長度超過8轉(zhuǎn)為紅黑樹):
1.key-value存儲,單鏈表超出閾值自增;
2.線程不安全,適用于單線程(多線程下可能會產(chǎn)生死鎖),多線程建議使用concurrent并發(fā)包下的concurrentHashMap(分段鎖);
3.可以有一個null的key,可以有多個null的value;(使用containsKey()方法進(jìn)行判斷是否存在某個鍵)
4.效率高

hashTable:
1.key-value存儲,單鏈表超出閾值自增;
2.線程安全,適用于多線程,因?yàn)閔ashTable每個方法都加了Synchronize;
3.key不可為null,value不可為null;
4.效率低

簡單說一下IOC和AOP?

IOC控制反轉(zhuǎn):將創(chuàng)建對象的權(quán)利交給核心容器(由容器來負(fù)責(zé)對象的生命周期和對象之間的關(guān)系)。
IOC主要實(shí)現(xiàn)方式有兩種:依賴注入和控制反轉(zhuǎn)(DI:就是IOC容器把當(dāng)前對象所需要的外部資源動態(tài)注入給我們;四種注入方式:注解注入,set注入,構(gòu)造器注入,靜態(tài)工廠注入)
----當(dāng)某個角色 需要另外一個角色協(xié)助的時候,在傳統(tǒng)的程序設(shè)計(jì)過程中,通常由調(diào)用者來創(chuàng)建被調(diào)用者的實(shí)例。但在spring中 創(chuàng)建被調(diào)用者的工作不再由調(diào)用者來完成,因此稱為控制反轉(zhuǎn)。創(chuàng)建被調(diào)用者的工作由spring來完成,然后注入調(diào)用者 因此也稱為依賴注入。

AOP面向切面編程:可以說是OOP的補(bǔ)充和完善,OOP引入封裝、繼承和多態(tài)性等概念來建立一種對象層次結(jié)構(gòu)。
實(shí)現(xiàn)AOP的技術(shù),主要分為兩大類:一是采用動態(tài)代理技術(shù),二是采用靜態(tài)織入的方式。
----這玩意我舉個例子說下,比如你寫了個方法用來做一些事情,但這個事情要求登錄用戶才能做,你就可以在這個方法執(zhí)行前驗(yàn)證一下,執(zhí)行后記錄下操作日志,把前后的這些與業(yè)務(wù)邏輯無關(guān)的代碼抽取出來放一個類里,這個類就是切面(Aspect),這個被環(huán)繞的方法就是切點(diǎn)(Pointcut),你所做的執(zhí)行前執(zhí)行后的這些方法統(tǒng)一叫做增強(qiáng)處理(Advice)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容