想學Java?這些書和網站夠了
《深入理解Java虛擬機:JVM高級特性與最佳實踐》
如果你不滿足於只會寫if...else...的Java程序,而是希望更進一步,請繼續:
了解Java代碼的底層運行機制;
定位性能問題;
對整個系統進行性能調優;
解決各種奇奇怪怪的線上線下問題;
更加高級別的,為自己的項目量身定做一款適合自己項目的虛擬機。
那麼Java虛擬機是你必學的一門技術。《深入理解Java虛擬機:JVM高級特性與最佳實踐》作者是周志明,這本書可以說是國內寫得最好的有關Java虛擬機的書籍。另外值得一提的是,《深入理解Java虛擬機:JVM高級特性與最佳實踐》這本書,有電子版的,網上搜一下就能下載到了。
想要系統學習Java知識 加入學習群一四四九零一零七六 可以免費學習java還有大量學習乾貨哦
《HotSpot實戰》
所有的Java虛擬機都是遵循著Java虛擬機規範來的,市面上的Java虛擬機幾十款,《深入理解Java虛擬機:JVM高級特性與最佳實踐》一書裡面講的虛擬機並不針對某種特定的虛擬機,而是從Java虛擬機規範的角度來講解Java虛擬機。
平時使用的乃至商用的大多數Java虛擬機都是Sun公司的HotSpot,大家cmd進入命令行,使用"java -version"命令就可以看到了。如果希望在Java虛擬機規範的基礎上更加深入地去理解虛擬機的一些細節是怎麼實現的,就可以看一下《HotSpot實戰》一書,作者是陳濤。不過由於HotSpot的源碼都是C/C++寫的,所以要求讀者有非常好的C/C++基礎,如果對這兩門語言不是很熟悉的朋友,看這本書可能對你幫助不是很大。如果有興趣,不妨先去網上下載一個openJDK,HotSpot的源碼就在裡面。
《Java並發編程實戰》
《Java並發編程實戰》作者是Brian Goetz,這本書的特點是:
文字多代碼少;
講解多實踐少。
這可能就是老外寫書的特點吧,因為Java是北美國家(加拿大、美國)開發和維護的,所以老外對Java方方面面的理論知識體系都掌握得是非常清楚和透徹的。翻開這本書看,多線程什麼用、什麼是死鎖、什麼是競爭、什麼是線程安全等等,方方面面的知識點都用大量的文字篇幅講解,不免讓人感覺十分枯燥,也難讓讀者有實質性的進步。
《Java多線程編程核心技術》
《Java多線程編程核心技術》的作者是高洪岩,此書和《Java並發編程實戰》相反,這本書的特點是大篇幅的代碼+小篇幅的精講解,可能這和中國人寫的書比較偏向實用主義的風格有關。本書關於線程安全、synchronized、Reentrant、Timer等等都用詳細的代碼進行了講解,而且每個大知識點下的多個小知識點都會詳細講解到,非常有實踐價值。
有興趣的朋友們,我相信只要你們跟著這本書裡面的代碼敲、運行、思考,三步走,對於多線程的使用與理解一定會進幾大步。不過這本書的缺點就是對於Java並發包下的一些類像CountDownLatch、Semphore、CyclicBarrier、Future、Callable等都沒有講到,重點的CAS和AQS也沒有觸及,重點類的實現原理也沒有提。當然,這很深入了,在學習了這本書之後如果能再去對這些知識進行一些學習、研究的話,你一定會慢慢成長為一個很厲害的多線程高手。
《Effective Java中文版》
《Effective Java中文版》的作者是Joshua Bloch,他是谷歌的首席架構師,屬於超級技術大牛級,看完相信你也會慢慢牛起來的。
《深入分析Java Web技術內幕》
《深入分析Java Web技術內幕》,作者許令波,淘寶工程師。這本書用一個字概括就是:全。真的非常全,HTTP、DNS、CDN、靜態化、Jetty、Tomcat、Servlet、Spring、MyBatis等等,涉及知識面非常廣,但又不像專門精講某個知識點的書籍一樣講得非常深入,感覺這本書就是盡量去用短的篇幅講清楚一些Java Web使用到的技術的內幕,讓讀者對這些知識點的技術內幕有一個理性的認識。
不過,儘管每個知識點的篇幅都不多,但是重點都基本講到了,是一本讓人真正有收穫的書。如果想進一步了解這些技術的技術內幕,就要自己去買相關書籍或者自己上網查資料了,有種拋磚引玉,或者說師傅領進門、修行在個人的感覺。
《大型網站技術架構 核心原理與案例分析》
一個字評價這本書:屌;兩個字評價這本書:很屌;三個字評價這本書:非常屌。
《大型網站技術架構 核心原理與案例分析》的作者是李智慧,原阿里巴巴技術專家。Java的大多數應用都是用在Web上的,現在只要稍微大型一點的Web應用,都一定是一個分布式系統,那麼一個分布式系統用到了哪些技術?一個大型網站是如何從一個小型網站成長起來的?如何保證你的網站安全?分布式系統使用到了緩存,有哪些緩存?緩存的使用有哪些值得注意的事項?
關於分布式的知識點,都在這本書裡面有體現,只有你想不到,沒有他寫不到,而且寫得非常易懂,基本屬於看一兩遍,再記一些筆記就知道是怎麼一回事兒了。多看幾遍,對分布式的理解一定會加深不少。而且裡面不僅僅是分布式的知識,還非常接地氣地寫了如何做一個好的架構師,其實這不僅僅是寫給想做架構師的讀者看的,就是給讀者一些建議,如何更好地提出意見、如何更讓別人關注你的聲音、如何看到他人的優點,入木三分,讓人獲益匪淺。
《大型網站系統與Java中間件實踐》
《大型網站系統與Java中間件實踐》作者曾憲傑,是淘寶的技術總監,算起來應該在阿里有至少P8的級別了。這本書的部分內容和上面一本李智慧的《大型網站技術架構 核心原理與案例分析》有所重合,像分布式系統的演化、CDN、CAP理論和BASE理論等等,這也更說明這些都是分布式系統或者說是一個大型網站重點關注的內容,當作一次再學習也不錯。
本書要突出的重點是中間件三個字,中間件是分布式系統中一個非常重要的東西,其最重要的作用應該就是解耦,降低模塊與模塊之間的強依賴,不同的模塊之間的依賴度降低,便可以各自獨立地開發自己的功能,這也可以說是軟體工程發展的目標和驅動力。因此,本書有一部分的內容就是基於中間件,詳細講解了中間件與JMS的各種知識,適合對分布式系統比較熟悉並且想要往中間件方面有一定研究的讀者。
《從Paxos到ZooKeeper 分布式一致性原理與實踐》
《從Paxos到ZooKeeper 分布式一致性原理與實踐》,作者倪超,阿里巴巴工程師。這本書屬於分布式組件的範疇,屬於有些深入的內容。當然,如果有志向做一個出色的大型網站架構師、公司的技術總監之類,這些知識當然是必須掌握的。本書從分布式系統基本理論開始講起,講到Paxos演算法,最後慢慢引入到Zookeeper,循序漸進。當
如果網友們所在的公司在使用Zookeeper,並且你又對Zookeeper感興趣想要研究一下它的原理的,這本書將是不二之選。
《MySQL5.6從零開始學》
《MySQL5.6從零開始學》,作者劉增傑和李坤。作為一名Java程序員,千萬不要覺得資料庫是DBA的事情,資料庫對一個Java程序員來說也是必須掌握的一門知識,豐富的資料庫性能優化經驗是一個頂尖程序員必備技能。
目前主流的資料庫有Oracle和MySQL,當然推薦大家的是MySQL,主要原因有兩點:
MySQL相比Oracle更輕量級、更小、安裝和卸載更方便,SQL其實都是差不多的,如果想學資料庫,學MySQL就可以了,在家裡面可以自己方便地研究,如果你的公司使用Oracle,只要再用對比學習法,關注一下Oracle和MySQL的差別即可;
隨著2009年阿里巴巴去IOE的運動的進行,目前國內的很多互聯網公司都會選擇MySQL作為它們使用的資料庫,因為MySQL免費,所以既省錢又不需要出了問題就依賴甲骨文公司。
《Spring源碼深度解析》
《Spring源碼深度解析》,作者郝佳。Spring這個框架做得太好了,功能太強大了,以至於很多開發者都只知Spring,不知什麼是工廠、什麼是單例、什麼是代理(我面試別人的真實體會)。這種功能強大的框架內部一定是很複雜的實現,這就導致一旦你的程序使用Spring,出了問題,可能是Error、可能是Exception、可能是程序運行結果不是你的預期的,出現諸如此類問題的時候,將會讓你感到困惑,除了上網查資料或者問別人似乎沒有更好的解決辦法。
研讀Spring的源代碼不失為一種很好的學習方法,這有很多好處:
理解框架內部的實現之後,可以主動去解決問題,而不需要依賴別人;
Spring框架內部實現用到了很多設計模式,很好的代碼設計思路,這將會對你寫代碼、對你理解設計模式有很大的提高;
研究Spring框架將會大大增強你讀代碼的能力,我相信只要你能研究清楚Spring內部是如何實現的,其他任何一個框架的源代碼都難不倒你。
總而言之,我認為讀代碼的能力是一個普通的程序員和一個好的程序員之間最大的差別之一,前者只會把別人寫好的東西拿來用,後者不僅能用好,還清楚知道別人寫好的東西底層是如何實現的,在出現問題的時候可以輕鬆解決。
Spring源代碼,個人推薦《Spring源碼深度解析》一書,真要研究透並且寫清楚Spring源代碼,恐怕三四本書都不夠,作者在近400頁的篇幅中盡量去講解Spring源代碼是如何實現的,殊為不易,儘管無法講得完全,但是相信作者的講解配合上讀者自己的研究,一定可以對Spring的實現有更深度的理解。
以下是Java開發牛人必備的網站。這些網站可以提供信息,以及一些很棒的講座, 還能解答一般問題、面試問題等,要不要圍觀一下呢。
1. Stackoverflow
Stackoverflow.com 可能是編程界中最流行的網站了,該網站有成千上萬個好問題和答案。學習API或者編程語言,通常依賴於代碼示例,stackoverflow就可以提供大量的代碼片段。
Stackoverflow的另一個優點在於它的社交性。你可以在一些特定的標籤下查看問題,比如「Java」、「regex」,你就會看到哪些是高頻問題。這對於學習,以及Java博主書寫熱門話題都是一種非常好的資源。
網站地址:http://stackoverflow.com/
2. DZone
這是一個非常有趣的網站,有相當多的開發者在這個網站上分享他們博客文章。就像一場冒險一樣,在這裡,你永遠不知道下一秒會看到什麼內容。
3. LeetCode
如果有Java方面的面試問題,例如「在Java中,內存中的數組是什麼樣的」,你可以從很多Java教程中找到答案。但是,遇到類似於「如何將SortedArray轉化成一個BalancedTree」這樣的問題,你就應該去求助LeetCode了。LeetCode包含一系列演算法問題, 它能為有關信息技術的面試提供一個社會性的平台。這個網站最好的地方就是,它可以通過大小不同的數據在線檢查你的代碼是否正確。很多人認為,面試成功的關鍵在於重複這三個重要步驟:編碼->閱讀->討論。
網站地址: http://leetcode.com/
4. Java SE技術文檔
這個網站包含了在使用Java SE API時會用到的所有文檔,即使你是Java開發牛人,我敢肯定在這裡你仍能發現一些有用的東西。比如,你可以閱讀一些像「Java類的本質」、「部署」這樣的教程。
網站地址: http://docs.oracle.com/javase/
5. Github
你也許知道可以免費的將你的項目託管在哪,但你不一定知道它還是一個學習當今流行的Java庫和框架的優秀資源。比如,你想學 Spring MVC Framework,你可以搜索並且找到一些開源的項目。遵循「照葫蘆畫瓢」的原則,你能夠通過實例快速的學習框架,尤其是你已經具有使用類似框架的經驗。
網站地址:https://github.com/
6. Coursera
這是有關視頻講座的最好網站,在這裡你可以找到許多頂尖學校的著名教授的優秀計算機科學課程。這些教授中,有些甚至是一些計算機科學領域的發明者。
網站地址:https://www.coursera.org/
7. Java World
這個網站包含了大量的Java教程,涉及各種各樣的話題。其中很多文章都寫的很好,並且有圖片、插圖進行說明。它可以被用來當作深度學習的教科書。
8. IBM developerWorks
這裡有很多由IBM公司的人寫的非常不錯的文章。
網站地址:http://www.ibm.com/developerworks/java/
9. Wikipedia 維基百科
這個網站是查詢或學習幾乎所有概念的最好的資源之一。例如,作為一個資深的Java開發人員,你可能只是想了解一些概念並不想深度研究。這裡是一個可以免費查詢最新信息的好地方。例如,什麼是面向服務的編程?另外,它還能為你的寫作提供大量素材。比如,同一個詞在不同的領域可能會有完全不同的含義。有時,研究這些詞在不同領域的不同含義是非常有意思的。
網站地址: http://en.wikipedia.org/wiki/
10. Program Creek
與以上幾個網站相比,Programcreek.com在規模上要小很多。但是規模小也有優點,它在維護方面做的更好,讀起來更有趣。在這裡,你可以找到其他任何網站都不曾涉及到的話題,而且幾乎每篇文章都包含漂亮的插圖或者示例代碼。它包含了來自不同領域的人發表的文章(科研、工業),並且經常為Java開發者提供優質材料。希望有一天,它也會出現在一些人的網站前十名排行名單中。
想要系統學習Java知識 加入學習群一四四九零一零七六 可以免費學習java還有大量學習乾貨哦
※室內設計留白,是一種極致的美!
※java開發工程師整套學習體系 零基礎到項目實戰
※如何讓C語言初學者少走彎路
※氣質深藍,夏日美家清爽明朗 室內設計篇
※Web前端面試題、面試技巧有哪些?
TAG:IT技術java交流 |
※Angelababy簽約新人,網友:想學楊冪?可惜沒好眼光!
※聽說你想學好Python?
※想學Angelababy的混血妝?先從下睫毛學起!
※What!你想學人像修圖?
※想學Revit?怎麼能少了這套族庫大全!
※Crossover,剛開始打球最想學的招式
※想學搭配,不如看看名流們都是怎麼駕馭Fendi的經典包款Peekaboo
※也想學 ins 大佬玩客制? Air Huarache 「All-Star」讓你過足 DIY 的癮!
※諫言給那些想學Python的人,建議收藏後細看!
※LOL亞運會,Xiye解釋玩加里奧:不是想學Faker,而是想去保護UZI
※這垃圾是怎麼分的?通過Jovi語音助手啊!想學嗎?我教你啊
※A-level想學精?請抱好南京學長學姐的大腿……
※想學董事長玩《Kenshi》?它玩起來可沒那麼順心
※Kiwi這運球,腳踝哥做夢都想學
※楊超越:不想跳舞想學baby拍戲上綜藝,網友:可惜她連baby的顏都沒有
※想學習python?十分鐘帶你走進python的大門!
※張碧晨紅配綠驚艷眾人,但這鞋更時髦,網友:是想學Gaga嗎?
※Produce 48想學Wanna One朴志訓,結果東施效顰似眼疼?
※想學Lily Collins的復古甜心美?秘訣可不止大紅唇和大捲髮
※Node.js用戶想學Rust