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