最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

1 自定義Enable**注解,2 簡單了解開門狗機(jī)制及源碼

2023-07-16 20:32 作者:鱸魚懂個der的Java  | 我要投稿

我用的版本jkd17,如果是jkd8或者11的在模仿做的時候可以去看下對應(yīng)注解的源碼差不多就可以直接復(fù)制粘貼用。

1 自定義Enable**注解

很多時候我們需要自己封裝一個starter來進(jìn)行出來,如果不在啟動類上添加對應(yīng)的@enable**注解,對應(yīng)的配置類以及bean是不會被創(chuàng)建的

controller代碼

自定義Enable**注解

先來說說@Import這個注解,這個注解是用來在加載一個configuration配置類的bean的時候加上@Import注解 會導(dǎo)入后面這個配置xxxSelector這種的bean,如果不添加spring容器是不會在加載上述configuration配置類再去額外的去加載別的configuration中的bean了

BookSelector

selectImports方法作用如下

個人感覺總的來說就是返回對應(yīng)完整包名下的沒有添加注解的configuration的配置類,也可以說是編程式配置類。

BookConfg

Book

測試

沒有開啟注解


編輯

結(jié)果


開啟注解


編輯

結(jié)果


編輯切換為居中


這個可以用來自己學(xué)著封裝一個starter,并且可以防止springboot啟動的時候少掃描不必要的bean,我前面的文章有寫如何自定義一個starter,嘻嘻

自定義starter,注解,實(shí)現(xiàn)分布式鎖? ---某乎的文章名字(也是我這個菜鳥寫的哈哈)


2 簡單了解開門狗機(jī)制及源碼

不耐心的或者覺得寫的太亂的可以直接往下翻總結(jié)

redission中分布式鎖的看門狗機(jī)制

依賴版本



個人來說就是一個key被鎖住即將釋放的時候,如果在當(dāng)前線程還沒執(zhí)行完任務(wù)的時候,有新的線程進(jìn)來爭搶,會導(dǎo)致鎖應(yīng)該給誰的問題,這個時候官方為我們提供看門狗的機(jī)制,會自動增加鎖的時間,默認(rèn)的是30秒。不信的話,那個鎖住的key的ttl為30秒,自己可以下去試驗(yàn)一下。


調(diào)用方法trylock


調(diào)用方法的時候默認(rèn)給的釋放時間是-1,這個比較特殊,請記住

這是核心判斷鎖key的ttl方法,推薦自己單獨(dú)看上鎖源碼和操作,lua腳本放下面


再往下看核心代碼


注意,這個mapConcurrentMap(自己去查是否線程安全,別一天到晚等著)存放對應(yīng)的key和那幾種service,后續(xù)的自己可以去看看,關(guān)于源碼我下午看著看著記得有點(diǎn)亂。


總結(jié)

redission中的會實(shí)現(xiàn)一個看門狗的機(jī)制,并且在關(guān)鍵上鎖方法內(nèi)里面會有選擇是主從節(jié)點(diǎn)返回一個resouce還是集群節(jié)點(diǎn)返回一個resource,這個應(yīng)該涉及到主從key問題一致和集群key一致(本人猜想,主要是分布式鎖涉及到了訂閱發(fā)布操作)。還有實(shí)現(xiàn)的方法是一段lua腳本,其中對應(yīng)的是實(shí)現(xiàn)的service有這幾種。


看門狗續(xù)費(fèi)的實(shí)現(xiàn),其實(shí)是啟動了一個TimerTask(定時任務(wù)),也就是每隔一段時間會有進(jìn)程去更新一下這個key的ttl。還有那個上鎖的key源碼都是設(shè)置為可讀寫的,因?yàn)橐鉀Q對應(yīng)的看門狗續(xù)費(fèi)問題

如果分布式鎖的看門狗續(xù)費(fèi)失效的很多時候的切入點(diǎn)去看一下調(diào)用方法里的leaseTime是否是-1這個很關(guān)鍵?。?!

也是scheduleExpirationRenewal方法是否正常調(diào)用

EVAL這個是執(zhí)行l(wèi)ua腳本的關(guān)鍵

如果覺得寫的很亂沒有邏輯/可以改進(jìn)的地方可直接私信我說一下問題,我會采取改進(jìn)的,我是鱸魚,努力分享自己所學(xué)。













1 自定義Enable**注解,2 簡單了解開門狗機(jī)制及源碼的評論 (共 條)

分享到微博請遵守國家法律
安龙县| 晋城| 论坛| 钟祥市| 阳原县| 永顺县| 双江| 石首市| 射阳县| 中山市| 湖北省| 柘荣县| 新民市| 彭水| 太白县| 安义县| 抚顺市| 贞丰县| 名山县| 府谷县| 西吉县| 汉寿县| 漠河县| 当涂县| 阳春市| 天祝| 和政县| 永州市| 益阳市| 阿鲁科尔沁旗| 兴国县| 湘潭县| 土默特左旗| 辰溪县| 内丘县| 田林县| 满洲里市| 鹿邑县| 海门市| 界首市| 镇远县|