2009年,我從從事了三年多的互聯(lián)網(wǎng)行業(yè)轉(zhuǎn)向嵌入式方向的開發(fā),其中有迫不得已的意味。我嘗試在這個(gè)行業(yè)發(fā)掘一些自己的興趣點(diǎn),很遺憾,最終還是發(fā)現(xiàn)互聯(lián)網(wǎng)行業(yè)更加適合我一些。于是,在2010年就要到來的時(shí)候,毅然提出了離職。很快,也許我就要離開深圳,只為了尋找一個(gè)能夠從事自己感興趣職業(yè)的發(fā)展機(jī)會(huì)。有幾次面試的時(shí)候,面試官都會(huì)問我,為什么這么喜歡互聯(lián)網(wǎng),我想都沒想就回答說,當(dāng)初選擇做軟件就是為了能給他人帶來幫助,而在這個(gè)互聯(lián)網(wǎng)這個(gè)行業(yè)里我能找到最大的成就感。
技術(shù)方面,今年重點(diǎn)關(guān)注了幾個(gè)方面:
1) Linux內(nèi)核。年初剛開始轉(zhuǎn)行嵌入式的時(shí)候,想借著機(jī)會(huì)學(xué)一下Linux內(nèi)核方面的知識(shí),當(dāng)時(shí)也蠻有決心。但是,后來的工作,與系統(tǒng)底層關(guān)系不大,而內(nèi)核的代碼又太過龐大。坦率的說,閱讀Linux內(nèi)核給我?guī)順O大的挫折感,一方面就在于沒有相關(guān)的經(jīng)驗(yàn),第二不知道從何看起。所以,暫時(shí)這個(gè)計(jì)劃就被擱置了。雖然如此,閱讀內(nèi)核的代碼的經(jīng)歷,也進(jìn)一步培養(yǎng)了自己探究真相的好奇心,同時(shí),如果能在操作系統(tǒng)層面上思考一些問題,我想會(huì)理解起來會(huì)更加深入。所以,這個(gè)閱讀內(nèi)核的計(jì)劃遲早還是會(huì)重新?lián)炱饋淼摹7此歼@一次的失敗,我想,以后的閱讀首先挑自己感興趣的部分,帶著疑問,步步深入進(jìn)去吧,比如我目前更加感興趣的部分是:進(jìn)程調(diào)度模塊,內(nèi)存管理模塊,TCP協(xié)議棧實(shí)現(xiàn)這幾塊。
2) Nginx代碼的閱讀。Nginx在之前有短暫的接觸,當(dāng)時(shí)已經(jīng)被它的效率折服,一直想看代碼來著,不過一直沒抽出空來。廣州技術(shù)沙龍上,第二期老zhu分享了自己閱讀Nginx的心得,沒趕上沙龍現(xiàn)場(chǎng),不過就后面看到的文檔,再結(jié)合著自己以前閱讀Ligty的經(jīng)驗(yàn),也就相關(guān)的部分進(jìn)行了一些比較分析。個(gè)人的感覺,Nginx的代碼寫的很考究,作者是個(gè)重視細(xì)節(jié),重視編碼優(yōu)雅的也許有些“代碼潔癖”的人。Nginx的分析,和之前的ligty分析一樣,我只重點(diǎn)關(guān)注到服務(wù)器I/O架構(gòu)部分,還有幾個(gè)部分需要關(guān)注的,比如內(nèi)存管理,比如模塊設(shè)計(jì)細(xì)節(jié),讀取配置文件等。應(yīng)該說,Nginx里面可學(xué)的不止這些,其他的,等我真要好好研究一個(gè)web服務(wù)器的實(shí)現(xiàn)時(shí),再慢慢看了,都是涉及到具體業(yè)務(wù)細(xì)節(jié)的部分了,可以暫時(shí)略過。
其實(shí),就我的感覺來看,所謂的“高性能”服務(wù)器,在I/O網(wǎng)絡(luò)模型設(shè)計(jì)方面已經(jīng)有比較成熟的模型了,這方面不會(huì)有太多的變化,關(guān)鍵在于與業(yè)務(wù)邏輯相關(guān)的架構(gòu),服務(wù)器集群之間的架構(gòu),服務(wù)器的可維護(hù)性,容錯(cuò)性,以及后端的存儲(chǔ)等。在閱讀了Nginx/Ligty之后,我想,就單純的I/O網(wǎng)絡(luò)模型上,我已經(jīng)有一些自己的想法了,今后應(yīng)該會(huì)減少單純的服務(wù)器項(xiàng)目代碼的閱讀,而轉(zhuǎn)為其他一些我更加不熟悉部分內(nèi)容項(xiàng)目的閱讀上去。比如我想閱讀GFS的文檔以及相關(guān)的一些開源項(xiàng)目,還有一些分布式相關(guān)的項(xiàng)目等,因?yàn)檫@樣涉及到分布式的項(xiàng)目,會(huì)更多的考慮服務(wù)器之間的關(guān)系,我比較缺這方面的經(jīng)驗(yàn)。
3)存儲(chǔ)相關(guān)的項(xiàng)目。今年的一個(gè)收獲是,我找到了自己更加感興趣的方向,就是與高性能存儲(chǔ)相關(guān)的部分,比如cache,持久化存儲(chǔ)等。這一部分,之前閱讀過的開源項(xiàng)目是memcached,我也做過類似的開源項(xiàng)目,不過僅是cache方面的。cache的舞臺(tái)多是內(nèi)存,而持久化存儲(chǔ)如tokyocabinet等則多是文件了,存儲(chǔ)介質(zhì)變了,文件的組織,算法,數(shù)據(jù)結(jié)構(gòu)都有很大的不同。我最近也開始在看tokyocabinet的實(shí)現(xiàn)了,應(yīng)該最近在比較有把握的情況下會(huì)有一些文檔交出來。
這么一看,其實(shí)這一年里面,技術(shù)上的長(zhǎng)進(jìn)著實(shí)不多,更多的我想是在個(gè)人心智的成長(zhǎng)上。這一年對(duì)我而言,更多的是低潮,磨礪,以及自省,有了這些開始看上去不那么愉快的經(jīng)歷,我想在今后都是一個(gè)財(cái)富。
另外,我在找C++服務(wù)器端的開發(fā)工作,有以下幾個(gè)小小的要求:
1) 騰訊就算了。我之前從騰訊出來,之后想回去,去面過幾次,技術(shù)上算過關(guān)了吧,不過現(xiàn)在回流騰訊難度似乎比較大,所以我想還是不要浪費(fèi)大家的時(shí)間了。
2) 做網(wǎng)游開發(fā)的就算了。我曾經(jīng)很喜歡做游戲類的開發(fā),不過當(dāng)前中國(guó)大陸的網(wǎng)游現(xiàn)狀,與我的預(yù)想差別還是比較大,每次看到那些在網(wǎng)吧沉迷游戲的孩子,都會(huì)覺得是網(wǎng)游害了他們。所以,如果做網(wǎng)游,我想我過不了自己這一關(guān)的,還是算了吧。
3) 北京,上海就免了,不太喜歡這兩個(gè)大城市,壓力大,同時(shí)排外情緒也嚴(yán)重一些。
除了以上幾個(gè)條件,其他的,都可以談,如果覺得靠譜,就給我博客留言吧,我將盡快回復(fù),謝謝。
2009年,不是一個(gè)平靜的年份。