第一階段——Java基礎html
第二階段——Web開發前端
這些內容主要是Web開發相關的內容,包括HTML/CSS/JS(前端頁面)、Servlet/JSP(J2EE)以及MySql(數據庫)相關的知識。java
第三階段——開發框架linux
目前比較主流的是SSM框架,即spring、springmvc、mybatis。git
1年之內github
《Java編程思想》 3月之內算法
1年-2年spring
《大話設計模式》數據庫
《重構 改善既有代碼的設計》編程
《effective java》
總而言之,這個階段,你的核心任務就是提升你的代碼能力,要能寫出一手優雅的代碼。
2年到3年
《深刻理解Java虛擬機》。這本書絕對是Java開發者最重要的書,沒有之一
《Java併發編程實戰》
《Java多線程編程核心技術》
《Java併發編程的藝術》
須要去看一些JDK中的類的源碼,也包括你所使用的框架的源碼
這個階段,除了上面提到的瞭解JVM、JDK和框架源碼之外,也請你根據別人優秀的源碼,去造一個任何你可以想象出來的輪子。
3年到4年
在這個階段,你就不能再簡單的去學習前3年的內容了,雖然前面的學習若是還不夠深刻的話依舊要繼續,但這個時候你應該更多的考慮創建你的優點,
也能夠稱爲差別性。
比較推崇的基礎書籍有三本,分別是《深刻理解計算機系統》,《tcp/ip詳解 卷1、2、三》,《數據結構與算法》。
其中TCP/IP有三本書,但咱們這裏把這三本當作是一本大書。
這三本分別適合三種人,《深刻理解計算機系統》比較適合一直從事Java Web開發和APP後端開發工做的人羣。
《tcp/ip詳解 卷1、2、三》比較適合作網絡編程的人羣,好比你使用netty去開發的話,那麼就要對TCP/IP有更深刻的瞭解。
而《數據結構與算法》這本書,則比較適合作計算研究工做的人,好比剛纔提到的分佈式計算。
4年到5年
在這個階段,你最大的任務是提升本身的影響力,爲本身將來的十年工做生涯那一天作準備。
若是你可以靠你的影響力和之前積累的技術,參與到一個偉大的項目當中,那麼你後面的五年也就有着落了。
5年以上
《深刻理解計算機系統》
《Java編程思想》【5星】:這本書就不說了吧,Java的經典,經典中的經典,LZ從去年10月份開始讀,大約花了三個月讀完。
《深刻理解Java虛擬機》【5星】:這本書也是經典中的經典,LZ讀的時間好像並不長,可是收穫巨大!
《重構:改善既有的代碼設計》【4星】:這本書將LZ帶進了重構的世界,LZ看的也很是快,但說實話,裏面的技巧目前還真沒什麼施展的餘地。
《大話設計模式》【電子版】【5星】:大話這本書是LZ進入設計模式世界的引導者,也正由於它,有了LZ的設計模式博文系列,也所以有人找LZ寫書。
不過LZ最近的生活和工做都有些改變(這點後面再說),因此寫書一事暫且放下了,不知是好是壞,我的以爲多沉澱一下其實也好,但不得不說,寫書真的是一件
絕對靠毅力的事,這與寫博客徹底是兩碼事。
《編譯原理》【5星】:這本書就不須要LZ評價了,不過LZ目前還沒看完,當時看了大約兩章暫且放下了。這本書是LZ之後必讀之書。
《設計模式:可複用面向對象軟件的基礎》【4星】:GOF的名著,之因此給4星,是由於難度過高。LZ如今看起來還有難度,緣由是由於裏面的smalltalk,
實在是骨灰級語言。
入手這本書的緣由,本來是爲了寫書而準備的,不過因爲寫書的進度被拉下來了,因此這本書就沒有急於攻破。
《Java併發編程實戰》【5星】:好書中的好書,它也算當時解了LZ的燃眉之急。經過它,LZ纔算進入了併發的世界,並且併發系列也將因它而出現,
目前LZ其實正在寫併發系列的第二篇文章,還未發表。
《Effective Java》【4星】:這本書LZ已經讀了一半多,這類書給LZ的感受是,看的時候會產生極強的共鳴,可是看過以後卻記不住什麼。不知道這是不是在潛在的影響LZ的編程手法。
《代碼整潔之道》【5星】:這一本書與《重構:改善既有的代碼設計》、《Effective Java》十分相似,都是在講如何編寫優秀的代碼,只是這本書給LZ的感受更實用。
《深刻理解計算機系統》【5星】:這本書實在是難啃,可是LZ看的過程當中收穫巨大。這種書的價值體現,並非最直觀的收穫,而是潛意識的影響。
《算法導論》:經典之做,不過LZ一直沒有時間去啃下這本巨大的著做。裏面的內容相信必定是很是精彩的,LZ期待着開啓的那一天。
《數據結構與算法分析》:這本書是LZ爲Java準備的算法書,以前看了一些,沒有繼續觀摩,以後也是要補上的。
《代碼大全》:又是一本巨厚的著做,這本書號稱也是經典之做,一樣是LZ十分期待的一本書,期待着開啓。
《Maven實戰》:當初買這本是由於項目當中用到了maven,因此準備大體瞭解一下,結果翻了幾頁發現興趣不大。悲哀,殭屍書了。
《linux私房菜》:這本書是給本身準備的linux工具書,買的時候就沒打算仔細看,結果買過來之後發現真沒仔細看。
《分佈式系統原理與範型》:買它是爲了瞭解一下分佈式系統的原理,這本書LZ仍是有興趣的,只是一直沒機會開啓。
《雲計算》:這本書是當時LZ要回家一趟,因此買了一本帶在火車上看,當時也看了很多,屬於一本消遣的書,算是開闊下視野吧。
《雲計算與SOA》:這本書與《雲計算》是一塊兒買的,由於仍是想與工做聯繫起來,因此看到SOA就拿過來了,後續有時間能夠拿來消遣,不打算細看。
1.語言的基礎部分:
基礎部分的重點,其實主要就是static、final、transient、volatile這一類的關鍵字,以及內部類、泛型這一類的高階語法。
2.Java運行時環境
3.併發知識與concurrent包
4.設計模式和反射
5.文件IO、NIO、網絡IO以及網絡協議
1.Spring、Mybatis框架
2.Linux服務器
3.數據庫優化
4.消息服務
5.緩存服務
6.負載均衡器
1.數據結構與算法
2.計算機操做系統
3.計算機網絡
4.熟練使用一種腳本語言
5.你的github和博客
併發、JVM、分佈式、TCP/IP協議這些
Java的數據結構相關的類實現原理,好比LinkedList,ArrayList,HashMap,TreeMap這一類的
HashMap是否是有序的?
接下來就可能會問你,TreeMap和LinkedHashMap是如何保證它的順序的?
你以爲它們兩個哪一個的有序實現比較好?
Java併發包當中的類,它們都有哪些做用,以及它們的實現原理,這些類就是java.concurrent包下面的。與上面同樣,我們也簡單的模擬一個併發包的連環炮。
柵欄(Java的併發包中的CyclicBarrier)
IO包和NIO包中的內容。這部分裏面NIO會是重點,IO包大部分都會比較熟悉,所以可能會直接略過,直接問你NIO的內容。
Java的虛擬機的內容。這部分主要包括三部分,GC、類加載機制,以及內存。
下面是關於類加載機制的簡單連環炮。
再來一個關於內存的連環炮。
https://www.cnblogs.com/xll1025/p/10016353.html
https://blog.csdn.net/MinggeQingchun/article/details/81166827
https://www.cnblogs.com/zuoxiaolong/p/life82.html
https://www.cnblogs.com/zuoxiaolong/p/life51.html