天天看點

學點Java裡的程式設計思想(r12筆記第65天)

   按照自己之前的計劃,我覺得得看看關于開發的東西了,因為我對于并發,鎖的認知總是有一個局限性,自己也在地鐵上做了些功課。有了這個想法,再有拿起書的勇氣,那就是一個開始了。

   每個圈子都有自己喜愛的圖書,就如同Oracle圈子對于Tom的《Oracle程式設計藝術》,MySQL圈子對于《高性能MySQL》,Java圈子也有自己的,在我的印象中,應該就是《Java程式設計思想》了。

程式員其實還是容易偏執,在我們的生活中這種例子屢見不鮮,比如php是世界上最好的語言,幾方竟然能大很長時間的口水戰。程式員也有資料庫行業類似DB-Engines的排行榜,是開發語言排行榜,Java語言如同資料庫界Oracle的地位,也常年占據榜首位置,相對而言,語言之前的競争更加激烈和白熱化,優勢和差距都不是很大。

Java程式員的聖經

     我的家裡有個書架,已經很久沒怎麼讀過書了,已經快擺滿了雜物。書桌上有一本2007年的第四版的《Java程式設計思想》,書齡到現在已經10年了,但是看着裡面的技術點滴,還是很有意思的,但是也存在太多的遺憾。

   每每到這個時候,我才會發現很多東西似曾相識,但是自己卻沒有記下筆記,沒有了筆記,也就沒有了當時學習的軌迹,也就意味着很多内容我需要重新再看一遍,再感悟一遍。是以我越發覺得學習筆記是個好東西,得堅持。

    我總是能夠從書裡找到一些共鳴的地方,比如Bruce這樣說道:Java的設計者曾經說過,設計這門語言的靈感來自c++.盡管如此,學習Java,基本上不用參考c++,我也是這樣做的。

對于一些技術的學習,比如泛型,就很有必要和c++進行比較。了解c++模闆的某些方面,有助于了解泛型的基礎,這就如同學習MySQL的的鎖機制和Oracle的聯系起來,雖然不同,但是可以加深了解。同時,重要的一點是,你可以了解很多技術的局限是什麼,以及為什麼會有這些限制,最終的目的就是幫你了解,隻有了解了邊界,才能成為程式高手。隻有知道了某個技術不能做到什麼,才能更好的做到所能做的。這一點上來說,也是工程師的幾個階段:從思考能做什麼到思考不能做什麼。

《Java程式設計思想》我目前喜歡的是第21章并發和第18章

I/O系統,因為這些方面和資料庫的關聯更大一些,也是我學習的一個突破口,而對于資料庫中,高并發設計一直以來也是我們所關注的,而有時候難免會有瓶頸的認知存在。最近做了些功課,發現困擾自己,覺得不錯的網絡資料,裡面的很多觀點在書裡都有系統的講解,是以就是這本書了。而I/O系統方面,對于緩沖器的實作和持久化我更感興趣,這些希望能夠從再次的苦旅中找到一些共鳴和借鑒的地方。是以我的一個基本觀點是從開發的角度來了解一些問題的原理,會更加水到渠成。

幾種技術的比較

我在畢業的時候,做開發類工作,最開始接觸的就是Java Swing相關的技術,當時使用的還是Spring Rich

Client的架構,接觸了各種項目之後,發現架構真是層出不窮,沒過多久就能聽到一些新鮮的技術架構等等,而同時工作中大家對程式設計技巧尤其注意,總是會盡可能的用到設計模式方面的東西,而一個産品中總是會有若幹的子產品,也參與了不少子產品的開發測試工作,到了亞信的時候,全部的子產品都得熟悉,印象最深的一次,我連操作都沒弄熟,下午就要給客戶驗收測試,當時自己學習的壓力可想而知。而到了後來的工作中,我發現架構真是一門很精深的藝術,裡面總是會有很多設計的原則和理念,這一點上不得不佩服很多老外的技術沉澱,從這個層面,我能夠加深很多地方的了解,會把一個事情從一個更加全面的角度來考慮,得到一些更為細緻的影響範圍和風險評估。

   這樣一個基本的感受,對于我來說,還是存在着一些困惑,這些到底有什麼樣的關系。有時候自己都理不清楚,直到一次看架構類的書籍,看到了下面的對應關系,才豁然開朗。

學點Java裡的程式設計思想(r12筆記第65天)

這也是我上面描述的幾種技術場景的一個關系圖,這樣一來,你在學習的時候也會有的放矢,而不是蒙着頭逮什麼學什麼。

學點Java裡的程式設計思想(r12筆記第65天)