閱讀源碼之我見

過年后從勝任工作的喜悅中緩過勁來薯蝎,發(fā)現(xiàn)自己在Java之路上只是剛剛?cè)腴T德绿,于是開始了惡補(bǔ)辕录。最先主要是看書補(bǔ)習(xí)基礎(chǔ)知識(shí)昵仅,后來一步步逐漸閱讀源碼缓熟。相對于讀書看視頻這些直觀的知識(shí)輸出,閱讀源碼的門檻稍微高了一點(diǎn)摔笤,我也浪費(fèi)了很多時(shí)間在閱讀源碼的門口徘徊够滑,始終不得法而入。在不斷地嘗試后終于也總結(jié)了一些經(jīng)驗(yàn)吕世,分享出來希望幫助有需要的人彰触。

閱讀源碼的好處

許多人的學(xué)習(xí)路線應(yīng)該與我一致,在學(xué)習(xí)完java的基礎(chǔ)知識(shí)之后命辖,迫不及待地扎進(jìn)源碼的海洋之中想要一睹大師們的風(fēng)采况毅。為什么我們要閱讀源碼呢?我認(rèn)為有以下兩點(diǎn)好處尔艇。1尔许、閱讀代碼可以幫助我們深入了解內(nèi)部的實(shí)現(xiàn),看到大牛們?nèi)绾畏庋b繼承多態(tài)终娃,如何合理地運(yùn)用設(shè)計(jì)模式味廊,如何在開銷最小的情況下保證線程安全等等。我們應(yīng)該感謝開源棠耕,大牛們的代碼就是一本本活生生的教科書余佛。另一方面,閱讀源碼可以幫我們解決很多工作中遇到的問題昧辽,許多bug都是因?yàn)槲覀儗Τ绦蚣?xì)節(jié)實(shí)現(xiàn)的不了解導(dǎo)致的衙熔。如果不知道線程池在核心線程滿了之后是先入隊(duì)還是繼續(xù)創(chuàng)建線程直到最大線程數(shù),可能就會(huì)造成性能上的問題搅荞;如果不了解IOC、AOP框咙,可能就無法解決AOP和自己實(shí)現(xiàn)BeanPostProcessor做的代理之間可能出現(xiàn)的沖突等等咕痛。

閱讀源碼的方式

我認(rèn)為源碼閱讀分為三步,這里以Netty的源碼舉例喇嘱。第一步茉贡,首先了解一下源碼如何使用≌咄可以試著先寫一個(gè)簡單的客戶端服務(wù)端的demo將Netty跑起來腔丧,了解一下基本的功能放椰,常用的API等等。這時(shí)可以輔助閱讀官方的文檔或者買一本快速入門的書籍愉粤。會(huì)用從來都是閱讀源碼的基礎(chǔ)砾医,如果用都沒用過上來就讀,一方面很難讀懂浪費(fèi)時(shí)間衣厘,另一方面有些為了讀源碼而讀源碼的舍本逐末如蚜。
第二步則是了解源碼的背景以及整體架構(gòu)。我們都知道Netty總體上是對NIO的一個(gè)封裝影暴,那么NIO是什么错邦?為什么要封裝它,解決了什么問題型宙?OIO是什么撬呢?NIO相對于OIO又改進(jìn)了什么?這一連串的問題都需要我們事先進(jìn)行了解妆兑,才會(huì)在閱讀源碼之旅中有所得魂拦。除此之外,我們應(yīng)該從官方的文檔或者網(wǎng)上的博客上大體了解Netty的架構(gòu)箭跳,整體組成是怎樣以及每個(gè)模塊負(fù)責(zé)什么功能晨另,這樣會(huì)使得我們在閱讀源碼之時(shí)不會(huì)一葉障目,陷入細(xì)節(jié)谱姓。
最后就可以開始閱讀源碼了借尿。閱讀源碼的好方法有很多,個(gè)人比較喜歡一邊看博客一邊跟著debug屉来,效率很高路翻。還有一點(diǎn)需要注意的是,我們?nèi)绻肓私釴etty茄靠,一方面要閱讀Netty的源碼了解細(xì)節(jié)實(shí)現(xiàn)茂契,另一方面要閱讀用Netty進(jìn)行工業(yè)級實(shí)現(xiàn)的代碼(Dubbo、RocketMQ等)了解Netty正確的打開方式慨绳。
說是閱讀源碼的心得掉冶,卻主要講的是閱讀源碼的鋪墊。個(gè)人認(rèn)為這些鋪墊一定程度上比閱讀源碼更重要脐雪。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末厌小,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子战秋,更是在濱河造成了極大的恐慌璧亚,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脂信,死亡現(xiàn)場離奇詭異癣蟋,居然都是意外死亡透硝,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門疯搅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來濒生,“玉大人,你說我怎么就攤上這事秉撇√鹋剩” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵琐馆,是天一觀的道長规阀。 經(jīng)常有香客問我,道長瘦麸,這世上最難降的妖魔是什么谁撼? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮滋饲,結(jié)果婚禮上厉碟,老公的妹妹穿的比我還像新娘。我一直安慰自己屠缭,他們只是感情好箍鼓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著呵曹,像睡著了一般款咖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奄喂,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天铐殃,我揣著相機(jī)與錄音,去河邊找鬼跨新。 笑死富腊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的域帐。 我是一名探鬼主播赘被,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼肖揣!你這毒婦竟也來了帘腹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤许饿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后舵盈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陋率,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡球化,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瓦糟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筒愚。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖菩浙,靈堂內(nèi)的尸體忽然破棺而出巢掺,到底是詐尸還是另有隱情,我是刑警寧澤劲蜻,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布陆淀,位于F島的核電站,受9級特大地震影響先嬉,放射性物質(zhì)發(fā)生泄漏轧苫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一疫蔓、第九天 我趴在偏房一處隱蔽的房頂上張望含懊。 院中可真熱鬧,春花似錦衅胀、人聲如沸岔乔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雏门。三九已至,卻和暖如春哀九,著一層夾襖步出監(jiān)牢的瞬間剿配,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工阅束, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留呼胚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓息裸,卻偏偏與公主長得像蝇更,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子呼盆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354