技術,繼續,更深入的

有段時間沒有更新blog了,好吧,不是有段時間,是兩個月了。
先說說這段時間做了些什麼事情,因爲多少和本文有些關係。大概做了三個方面的事情,除了給小朋友餵飯、玩耍和換尿布之外。

1.    開始參與一個新的項目

因爲是新的項目,所以和之前做的東西很不一樣,而且不幸,或者應該說是幸運的是這個項目用到了大量的新的技術,準確的說,是對我們做的一些人來說新的技術。每逢這樣的時候自然是學習曲線狂陡的一個階段,而且發現不瞭解技術細節,很多工作難以開展,不知道怎麼測,有些部分目前的工具都不ready,甚至業界也沒有很好的方案。這個過程還在繼續,不過因爲很多的細節和項目的方案有關,目前還不便分享。

2.       回頭補課

性能測試和系統穩定性測試一直是自己比較喜歡的方向。但是隨着最近的一些工作發現很多地方的做法和理解還停留在比較黑盒的方面,能發現問題,但是很多時候不能更進一步去找到問題出在哪裏,也就談不上給出解決方案。而要達到這樣的程度,就要下一個臺階到更底層一點的技術層面來看看。下面會有一些具體的例子聊聊這方面的體會。

3.       和業界同行的交流變多了

參加淘寶的技術嘉年華算是一個開頭,藉着這個機會認識了很多不同公司的同行,很多都非常的優秀和富有經驗,另外就是和一些前同事的交流,知道不同組織的一些做法。在一個地方做久了,心中總會有一些危機感,擔心自己積累的技術,方法和經驗是不是會侷限在狹小的領域而變得沒有通用性,另一個方面就是想知道別人是怎麼做的。最近的這些交流起到了很大的作用,不過結果其實也在意料之中,侷限是一定有的,另一方面很多大家遇到的問題和一些思路做法很相似,也有一些東西被證明是有一定適用範圍的。

圍繞着上面的三個方面,每每要提筆寫一篇blog的時候總是會有些猶豫,覺得有些地方講得不夠,或者有些時候想先學習再分享。

下面說說最近花時間比較多的兩個技術方向。
一個是關於程序運行時的內存使用和管理。
這個topic的來源其實由來已久,比如談到系統或者某個進程的內存使用情況,包括內存泄露問題的時候,都覺得有些含糊。因爲操作系統(例如Linux)會給你一堆的關於內存使用的指標,搞不清楚具體的含義總是心裏不踏實,也不能亂講對吧。另外更進一步,這些內存使用和真正的代碼的情況是如何對應的,比如棧和堆的分配使用等。要瞭解到這些,可能需要進一步瞭解程序的編譯鏈接和加載。發現這一塊有很多值得學習和研究的地方,順便對於靜態和動態鏈接這一部分也有了更多的一些認識。
學習的方法是看書和實踐。
書是下面幾本:

-          深入理解計算機系統

-          鏈接器和加載器

-          程序員的自我修養 – 鏈接、裝載和庫

實踐就是自己寫一些C/C++的小程序,在執行和調試的過程中加以觀察和驗證,加深理解。

第二個方面是關於高併發的服務器
這個其實和性能穩定性等也有很大的關係。因爲大部分經驗都是在做服務類的產品,都要支持比較高的併發。但是之前的測試工作都是黑盒爲主,用工具設計好流量去壓,看被測的產品能否達到預期的目標或者有沒有什麼異常的行爲。這樣的工作有意義,但是無法突破,而突破,我的理解就是要知道爲什麼它能或者不能支持高的併發,好的響應時間。而不只是黑盒的判斷,因爲很多時候,性能從架構和設計的時候就已經被框定了大致的範圍。
這一塊的學習也還在繼續中,方法,還是看書加實踐,另外也包含請教其他同事,比自己獨自搜索和摸索的效率要高。
說到資料,自然要提R. Stevens的經典,《UNIX網絡編程》。還有網上很多經典的文章,比如C10K等。
實踐自是必不可少,之前只是寫過最簡單的socket client和server(這方面的hello world),以及一些從測試角度的瞭解。覺得這樣很不夠,需要自己動手去獲得更深入的理解。
目前比較focus在Linux上,所以也順便花時間熟悉更細節的Linux網絡方面的東西。

這些東西對很多人來說可能是比較基本的,是的,應該掌握的。最近有個感受就是我們很多時候被一些所謂的新的技術吸引了,反倒不願意靜下來把這些影響深遠的技術弄得更清楚一些。另一方面,對這些有長久生命力的技術的理解,不僅可以幫到現在的工作,而且對於新技術的理解和應用也會很有幫助。比如深入理解了傳統的socket編程,select模型,再去學習epoll等技術肯定會更輕鬆。

除了工作和項目的需要以外,瞭解這些技術的細節也能給人帶來很大的滿足感,知道一個東西是怎麼work的總是充滿了吸引力。

其實從另外一個角度,我在想,可能還有一個原因,那就是國內的IT行業經過這麼些年的發展和積累,已經可以給工程師們提供一個稍微靜下心來研究產品和技術的環境,對把一個東西做得更好和更有效率的價值也有了更多的認可。

好吧,這裏算是個開頭,後面的一些學習和實踐再來分享。


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