1. 程式人生 > >成為Java頂尖程式設計師 ,看這9本書就夠了

成為Java頂尖程式設計師 ,看這9本書就夠了

“學習的最好途徑就是看書”,這是我自己學習並且小有了一定的積累之後的第一體會。個人認為看書有兩點好處:
1.能出版出來的書一定是經過反覆的思考、雕琢和稽核的,因此從專業性的角度來說,一本好書的價值遠超其他資料
2.對著書上的程式碼自己敲的時候方便
“看完書之後再次提升自我的最好途徑是看一些相關的好博文”,我個人認為這是學習的第二步,因為一本書往往有好幾百頁,好的博文是自己看書學習之後的一些總結和提煉,對於梳理學習的內容很有好處,當然這裡不是說自己的學習方法,就不再扯下去了。
很多程式設計師們往往有看書的衝動,但不知道看哪些書,下面我就給各位Java程式猿們推薦一些好書,其中絕大多數都是我自己平時在看的書,也算是我對於平時讀的書做一個小總結和讀後感吧。

《Effective Java中文版》

作者是JoshuaBloch,這個人就很厲害了,他是谷歌的首席架構師,屬於超級技術大牛級別了吧,呵呵。由於沒有看過這本書,所以我不好發表評論,但是從這本書的知名度以及其作者的來頭來看(多提一句,這本書也是Java之父James Gosling博士推崇的一本書),我相信這一定是一本值得一看的好書。
好的程式碼是每個Java程式設計師都應該去追求的,不是說我今天寫一段好程式碼相比寫一段爛程式碼對效能會有多大的提升,更多的應該是提升了程式碼的可讀性以及可以規
避許多潛在的、未知的問題,避免程式碼上線之後出問題而花時間去維護—-無論從時間成本、人力成本還是風險成本來說,這都是非常高的。

《實戰Java虛擬機器:JVM故障診斷與效能優化》

如果你不滿足於做一個只會寫if…else…的Java程式設計師,而是希望更進一步,我隨便舉幾個例子吧:
1、瞭解Java程式碼的底層執行機制
2、定位效能問題
3、對整個系統進行效能調優
4、解決各種奇奇怪怪的線上線下問題
那 麼Java虛擬機器是你必學的一門技術。《實戰Java虛擬機器:JVM故障診斷與效能優化》寫的很入門,技術也最新,新手也能看得懂,如果有java技術瓶頸的,看完會豁然開朗。

《實戰Java高併發程式設計》

這本書是目前點評推薦比較多的書,其特色是:
1、案例小,好實踐
2、程式碼有場景,實用。
無論如何,併發已經成為多核時代的趨勢,還是一定要推薦給大家的。

《java多執行緒程式設計核心技術》

《Java多執行緒程式設計核心技術》作者高洪巖。想要學習多執行緒的朋友,這本書是我大力推薦的,我的個人部落格裡面二十多篇的多執行緒博文都是基於此書,並且在這本書的基礎上進行提煉和總結而寫出來的。
此書和《Java併發程式設計實戰》
相反,這本書的特點是大篇幅的程式碼+小篇幅的精講解,可能這和中國人寫的書比較偏向實用主義的風格有關。本書關於執行緒安全、synchronized、Reentrant、Timer等等都用詳細的程式碼進行了講解,而且每個大知識點下的多個小知識點都會詳細講解到,非常有實踐價值。
有興趣的朋友們,我相信只要你們跟著這本書裡面的程式碼敲、執行、思考,三步走,對於多執行緒的使用與理解一定會進幾大步。
不過這本書的缺點就是對於Java併發包下的一些類像CountDownLatch、Semphore、CyclicBarrier、Future、Callable等都沒有講到,重點的CAS和AQS也沒有觸及,重點類的實現原理也沒有提。當然,這很深入了,在學習了這本書之後如果能再去對這些知識進行一些學習、研究的話,你一定會慢慢成長為一個很厲害的多執行緒高手。

《深入分析Java Web技術內幕》

這本書我用一個字概括就是:全。真的非常全,HTTP、DNS、CDN、靜態化、Jetty、Tomcat、Servlet、Spring、MyBatis等等,什麼都有,涉及知識面非常廣,但又不像專門精講某個知識點的書籍一樣講得非常深入,感覺這本書就是儘量去用短的篇幅講清楚一些JavaWeb使用到的技術的內幕,讓讀者對這些知識點的技術內幕有一個理性的認識。
不過,儘管每個知識點的篇幅都不多,但是重點都基本講到了,是一本讓人真正有收穫的書。如果想進一步瞭解這些技術的技術內幕,就要自己去買相關書籍或者自己上網查資料了,有種拋磚引玉,或者說師傅領進門、修行在個人的感覺。

《大型網站技術架構 核心原理與案例分析》

一個字評價這本書,屌;兩個字評價這本書,很屌;三個字評價這本書,非常屌。呵呵,好了,再說下去可能別人以為我是水軍了。
《大型網站技術架構 核心原理與案例分析》的作者是原阿里巴巴技術專家。
Java 的大多數應用都是用在Web上的,現在只要稍微大型一點的Web應用,都一定是一個分散式系統,那麼一個分散式系統用到了哪些技術?一個大型網站是如何從一個小型網站成長起來的?如何保證你的網站安全?分散式系統使用到了快取,有哪些快取?快取的使用有哪些值得注意的事項?
關於分散式的知識點,都在這本書裡面有體現,只有你想不到,沒有他寫不到,而且寫得非常易懂,基本屬於看一兩遍,再記一些筆記就知道是怎麼一回事兒了。多看幾遍,對分散式的理解一定會加深不少。而且裡面不僅僅是分散式的知識,還非常接地氣地寫了如何做一個好的架構師,其實我認為這不僅僅是寫給想做架構師的讀者看的,就是給讀者一些建議,如何更好地提出意見、如何更讓別人關注你的聲音、如何看到他人的優點,入木三分,讓人獲益匪淺。

《大型網站系統與Java中介軟體實踐》

這本書的部分內容和上面一本李智慧的《大型網站技術架構 核心原理與案例分析》有所重合,像分散式系統的演化、CDN、CAP理論和BASE理論等等,這也更說明這些都是分散式系統或者說是一個大型網站重點關注的內容,當作一次再學習也不錯。
本書要突出的重點是中介軟體三個字,中介軟體是分散式系統中一個非常重要的東西,其最重要的作用應該就是解耦,降低模組與模組之間的強依賴,不同的模組之間的依賴度降低,便可以各自獨立地開發自己的功能,這也可以說是軟體工程發展的目標和驅動力。
因此,本書有一部分的內容就是基於中介軟體,詳細講解了中介軟體與JMS的各種知識,適合對分散式系統比較熟悉並且想要往中介軟體方面有一定研究的讀者。

《從Paxos到ZooKeeper 分散式一致性原理與實踐》

這本書是我最近在研讀的一本書,和上面的《大型網站系統與Java中介軟體實踐》一樣,屬於分散式元件的範疇,屬於有些深入的內容,當然也是我自己的個人興趣。當然,如果有志向做一個出色的大型網站架構師、公司的技術總監之類,這些知識當然是必須掌握的。
本書從分散式系統基本理論開始講起,講到Paxos演算法,最後慢慢引入到Zookeeper,循序漸進。當然,更多的我目前還不方便發表什麼看法,因為這本書的第二張Paxos演算法我都還沒有弄懂(Paxos演算法確實有些難以理解和不太易懂),接下來的章節還沒有看下去。
如果網友們所在的公司在使用Zookeeper,並且你又對Zookeeper感興趣想要研究一下它的原理的,這本書將是不二之選。

《Spring原始碼深度解析》

Spring 這個框架做得太好了,功能太強大了,以至於很多開發者都只知Spring,不知什麼是工廠、什麼是單例、什麼是代理(我面試別人的真實體會)。這種功能強大的框架內部一定是很複雜的實現,這就導致一旦你的程式使用Spring,出了問題,可能是Error、可能是Exception、可能是程式執行結果不是你的預期的,出現諸如此類問題的時候,將會讓你感到困惑,除了上網查資料或者問別人似乎沒有更好的解決辦法。
研讀Spring的原始碼不失為一種很好的學習方法,我個人認為這有很多好處:
1、理解框架內部的實現之後,可以主動去解決問題,而不需要依賴別人
2、Spring框架內部實現用到了很多設計模式,很好的程式碼設計思路,這將會對你寫程式碼、對你理解設計模式有很大的提高
3、研究Spring框架將會大大增強你讀程式碼的能力,我相信只要你能研究清楚Spring內部是如何實現的,其他任何一個框架的原始碼都難不倒你
總而言之,我認為讀程式碼的能力是一個普通的程式設計師和一個好的程式設計師之間最大的差別之一,前者只會把別人寫好的東西拿來用,後者不僅能用好,還清楚知道別人寫好的東西底層是如何實現的,在出現問題的時候可以輕鬆解決。
Spring原始碼,個人推薦《Spring原始碼深度解析》一書,真要研究透並且寫清楚Spring原始碼,恐怕三四本書都不夠,作者在近400頁的篇幅中儘量去講解Spring原始碼是如何實現的,殊為不易,儘管無法講得完全,但是相信作者的講解配合上讀者自己的研究,一定可以對Spring的實現有更深度的理解。

此文來自猿助猿微信公眾: