1.String.intern()
2.可重入鎖:一個線程中的多個流程可以獲取同一把鎖洽沟,持有這把同步鎖可以再次進入睡陪,自己可以獲取自己的內(nèi)部鎖(暫時模糊理解下)
3.基于Synchronized和ReentrantLock可重入鎖局限性分析
4.LockSupport
LockSupport的park()和unpark()方法底層調(diào)用unsafe類的park和unpark方法镣丑,分別使當前線程的許可證permit設(shè)置為0和1命辖,注意多次調(diào)用upark不會使permit累加练链,即permit最大是1
5.AQS
定義:抽象的隊列同步器
基于ReentrantLock對AQS的源碼深度解讀
ReentrantLock里有屬性Sync担败,Sync繼承自AQS讯壶,架構(gòu)如下
AQS是所有關(guān)于鎖的實現(xiàn)機制的上層建筑(頂層設(shè)計)雪情,有一個子類sync,并通過cas控制state控制鎖的開放和關(guān)閉鸭巴,把沒有搶到cpu時間片的線程加到內(nèi)部類node隊列(CLH隊列)里眷细,實現(xiàn)機制類比map
AQS這個類的內(nèi)部類node的屬性說明
AQS源碼分析
6.spring4和5的aop順序
7.Spring循環(huán)依賴
定義:多個bean之間的相互依賴,形成了一個閉環(huán)鹃祖,比如A依賴B溪椎,B依賴C,C依賴A
通常來說恬口,如果問Spring容器內(nèi)部如何解決循環(huán)依賴校读,一定默認指的是單例Bean中,屬性相互引用的場景祖能,即scop只能是singleton不能是prototype歉秫,否則報錯
對構(gòu)造方法注入的Bean不能解決,setter注入的方式可以
8.DefaultSingletonBeanRegistry的三級緩存养铸,解決循環(huán)依賴問題
9.redis
查看版本 redis-server -v 或者登錄后 info
登錄狀態(tài)下的幫助命令 help @數(shù)據(jù)類型
redis的命令不區(qū)分大小寫雁芙,但是key區(qū)分大小寫
linux的redis版本穩(wěn)定的6.0.8
10.數(shù)據(jù)類型
String
Hash
list
Set
Zset
11.基于redis實現(xiàn)的分布式鎖(上傳原因,倒敘展示)
12.redis占用內(nèi)存不設(shè)置或者設(shè)置為0钞螟,在64位操作系統(tǒng)下不限制內(nèi)存大小兔甘,在32位操作系統(tǒng)下3G,一般生產(chǎn)配置為物理內(nèi)存的四分之三
修改redis占用內(nèi)存:修改配置文件maxmemory或者通過命令config set maxmemory 100*1024,單位字節(jié)
查看redis配置筛圆,config get xxxx
查看redis全部信息裂明,info
查看redis內(nèi)存(配置和使用)信息,info memory
如果redis內(nèi)存打滿太援,報錯oom
13.redis緩存刪除策略:
1.定時刪除:過期時間一到就刪除闽晦。優(yōu)點是數(shù)據(jù)的實時性很高,缺點是cpu需要時刻監(jiān)督redis數(shù)據(jù)的過期時間提岔,cpu很忙
2.惰性刪除:如果未過期返回數(shù)據(jù)仙蛉,發(fā)現(xiàn)已過期,刪除碱蒙,返回不存在荠瘪。優(yōu)點是相對前者降低了cpu的壓力,缺點是對內(nèi)存不友好赛惩,有可能把已經(jīng)過期的數(shù)據(jù)還存在redis里占用內(nèi)存
3.定期刪除:
14.redis緩存淘汰策略
哀墓,生產(chǎn)建議配置allkeys-lru
15.LRU算法(最近最少使用),核心是哈希鏈表