動機(jī)
工作了半年之后,開始慢慢從學(xué)生時代的main函數(shù)走出來带膜,開始寫工程類代碼批狐。剛工作那會感覺好多東西可以學(xué)扇售,每天惶恐又興奮。但是經(jīng)過一段時間后,該掌握的基礎(chǔ)知識也就慢慢了然于胸承冰,剩下的就是業(yè)務(wù)邏輯的堆砌而已华弓。于是這時候開始尋求突破。
其實(shí)這時候的能力也是能搞簡單業(yè)務(wù)邏輯的系統(tǒng)而已困乒。對于一些比較復(fù)雜的系統(tǒng)寂屏,例如推送系統(tǒng),例如數(shù)據(jù)存儲系統(tǒng)顶燕,還是小白凑保。于是產(chǎn)生了好奇,想找個好的源代碼系統(tǒng)閱讀一下涌攻,看看究竟大神寫的代碼和咱有啥不同以及他們是如何構(gòu)造整個系統(tǒng)的。
這時候機(jī)緣巧合知道了leveldb這貨(同事介紹)频伤,也知道了jeff dean這位互聯(lián)網(wǎng)戰(zhàn)神恳谎,于是就下定決心看一下戰(zhàn)神是如何戰(zhàn)斗
的。
閱讀工具
leveldb的源代碼還是比較好獲取的憋肖,直接搜就出來了因痛。但是畢竟是個系統(tǒng)級工程,沒那么容易就能領(lǐng)略到戰(zhàn)神的風(fēng)采岸更,于是我們需要借助一下工具來閱讀鸵膏。我使用的工具是clion,可以很方便的跳轉(zhuǎn)和查找定義怎炊,界面如下:
非常清爽的工具谭企,jetBrains大法好!
這個工具是需要收費(fèi)评肆,不過我尋求的是破解版(互聯(lián)網(wǎng)人才濟(jì)濟(jì))
入手
當(dāng)我們接手一個新項(xiàng)目的時候债查,最惡心的是啥?沒有文檔瓜挽!
對的盹廷,這么大個工程,我們需要避免剛開始就陷入細(xì)節(jié)久橙,這樣很容易云里霧里看不清楚俄占。我的方法是:
- 首先看項(xiàng)目的文檔,文檔有介紹使用和結(jié)構(gòu)
- 網(wǎng)上搜一些別人的分析文章看淆衷,先建立自己對項(xiàng)目的全局感(文章有那幾個模塊缸榄,每個模塊用的啥技術(shù)),然后再各個擊破吭敢,這樣比較簡單
- 分技術(shù)點(diǎn)閱讀源碼
要知道碰凶,要熟悉掌握這樣一個系統(tǒng)是需要不少時間,畢竟人家也不是一朝一夕就寫出來的。我們需要慢慢啃欲低,一點(diǎn)一點(diǎn)消化辕宏,才能領(lǐng)悟到戰(zhàn)神的魅力。
其實(shí)除了系統(tǒng)原理砾莱,大神的代碼風(fēng)格也很值得學(xué)習(xí)呀瑞筐。
結(jié)束語
好了,開篇就講到這里腊瑟。接下來會以一系列文章的形式來記錄閱讀源碼的過程聚假,希望自己能領(lǐng)悟到其中的美妙!