從一次問題討論聊聊我對閱讀源碼的思考

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

比如本文,沒有深度思考的同學,很容易就被表面現象所迷惑,以爲問題就此解決,立馬關掉文章。但是深度思考的同學就會選擇關注肥朝公衆號,然後星標置頂,並思考,肥朝爲什麼能迅速找到這個關鍵的類呢?這個纔是最核心的問題!一定要明白什麼叫"解決一個問題"和"解決一類問題"!如果你沒有掌握分析問題的方法和技巧,下次遇到其他的註解,你還是解決不了,那又有什麼意義?

圖片

分析問題

由於肥朝之前寫過Dubbo系列的源碼解析,公衆號也大多是老粉絲,那麼我就以Dubbo爲例,說下分析問題的思路。當然這個時候喜歡擡槓的同學可能就要反駁了,這個問題不是Springboot的嗎,和Dubbo有什麼關係?我只能說,優秀的代碼,套路思想都基本相同,坑爹的代碼,卻各有各種不同的坑法。拿Dubbo來分析,並不影響你發現問題的本質!

比如Dubbo中常強調的就是"微核心"、"插件式"。梁飛曾經提過

即然要擴展,擴展點的加載方式,首先要統一, 微核心+插件式,是比較能達到OCP原則的思路,由一個插件生命週期管理容器,構成微核心,核心不包括任何功能,這樣可以確保所有功能都能被替換, 並且,框架作者能做到的功能,擴展者也一定要能做到,以保證平等對待第三方, 所以,框架自身的功能也要用插件的方式實現,不能有任何硬編碼。

很多同學看完這段一臉懵逼。其實這段話的後半部分是關鍵

框架作者能做到的功能,擴展者也一定要能做到,以保證平等對待第三方, 所以,框架自身的功能也要用插件的方式實現,不能有任何硬編碼。

所以從這段話肥朝就可以斷定,actuator如果要用定時器的功能,他肯定站在和普通使用者也就是公衆號粉絲使用定時器的角度,去啓動這個定時器的功能。

也就是說,spring-boot-starter-actuator中,肯定是有類打上了@EnableScheduling註解,而不是零散的調用註解底層封裝的一些東西。這個是理論基礎。這個理論基礎,才能決定你下一步的思考和行動方向。

有了理論基礎,那麼關鍵是,到底哪個類打上了啊!這個時候,我們可以利用idea的搜索技巧來

圖片

idea的這個搜索功能很好用,搜索scope可以設置各種範圍,看源碼必備技能!

考慮到每個人的快捷鍵不同,因此看下圖

圖片

敲黑板劃重點

看到這裏,很多人就容易理解成,本篇是介紹idea的技巧的文章。還是那句話,看問題一定要深度思考。源碼是看不完的,但是解決問題的手段和套路,卻是有限的。很多同學看源碼,就只是看個流程,感覺像看電影一樣,並沒有個人的獨立思考,這樣知識的轉換率實在太低。比如你注意看我本文分析的理論基礎實踐,這些經驗,都是需要你從大量的閱讀源碼中不斷去總結的。

所以,請不要再問肥朝,"看源碼,究竟有沒有用","怎麼看源碼"等問題,因爲我每一篇源碼解析,源碼實戰,都在回答這兩個問題,如果你還問這種問題,可見你根本就沒有關注肥朝,或者關注了沒有星標置頂!

另外,各種源碼解析系列(注意肥朝的用詞,我說的是系列)還在不斷熱更中,歡迎持續關注,一起"追劇"!

寫在最後

圖片


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章