ssm框架整合的個人說明 如何系統(tǒng)的學習JAVA?
如何系統(tǒng)的學習JAVA?java的整體生態(tài)和積累知識確實是是太大了。95年到現(xiàn)在為止20多年的積累,全都牽涉到計算機軟硬件的方方面面。我暫且就如果說,提主所說的專精,是指jdk本身和一些必要的數(shù)據(jù)結構
如何系統(tǒng)的學習JAVA?
java的整體生態(tài)和積累知識確實是是太大了。95年到現(xiàn)在為止20多年的積累,全都牽涉到計算機軟硬件的方方面面。我暫且就如果說,提主所說的專精,是指jdk本身和一些必要的數(shù)據(jù)結構和常用框架和面向?qū)ο蟮幕臼撬枷氚伞?/p>
從11年初到現(xiàn)在為止,一直在學習java相關的知識。其中也走了不少彎路。按自己的積累,能提供提主一個自以為合理且有一定深度的學習路線。確切分下面幾個階段吧。
1.必須應盡可能的打牢基礎的數(shù)據(jù)結構和簡單的算法基礎。
是可以去飛快的學習一些簡單的一百頭系統(tǒng),來滿足軟件學習的興趣和初期成就感。但,你必須回過身,仔細的平定內(nèi)亂數(shù)據(jù)結構基礎和簡單的算法。不同于這種書就可以。
2.能熟練不使用Java類庫和java第三方工具框架。
去學習在用java的語法,一段時間理解Java語法啊,設計的邏輯。非常熟練掌握jdk程序庫本身,和各種第三方類庫工具包和第三方框架的簡單使用。這里學習的同時,我推薦看看吧《設計模式》,《代碼整潔之道》,《spring源碼解讀》,《Spring揭秘》等這一類的書集。
3.理解學jdk程序庫本身的應用源碼基于和高端第三方框架的源碼和架構設計。
比如jdk本身的數(shù)據(jù)結構二叉樹,紅黑樹,treemap,包括異步模式包的unsafe,同步阻塞隊列,call-future等等包源碼,在內(nèi)線程基礎類的實現(xiàn),各個類庫怎么設計的結構和設計模式。吃透第三方框架的設計思想,理解怎么學習第三方框架的核心源碼。
當然,這里面很可能會牽涉到到其他的事務,分布式協(xié)議等,這里不再繼續(xù)發(fā)起。這個過程不是一朝一夕,可能要大量的時間和技術感悟。不過,《設計模式》,《代碼整潔之道》,《spring源碼解讀與設計詳析》,《Spring揭秘》等等這一大類書,在這個過程可以不明白大差不差了。
4.理解jdk,jre即jvm原理和利用。
這里我推薦一下看下王振彪的《實戰(zhàn)java虛擬機》,里面回答比較好偏實操。容易上手表述。
簡單,這個可以從jdk從網(wǎng)上下載的工具學習來何練起。
諸如:jstat,jmap,jstack,jps,jdb.......甚至還另外就也可以窺視運行期間實際內(nèi)存數(shù)據(jù)的HSDB。不過,充當學習大致了解,我們只需要解釋常用的幾個命令,并很清楚其貞潔戒的意義去掉。畢竟,第三方監(jiān)控工具,和jdk本身也能提供了3個可視化的監(jiān)控。
比如,再理解jvm的運行加載原理,搞懂class文件結構。
這個過程我們這個可以的力量之前會是用監(jiān)控工具,理解jvm程序加載的基本原理。是可以可以參考官方各個版本的jvm標準,學習搞懂class文件。在此處可以可以使用如classpy等工具,方便些我們?nèi)缓箝喿x什么class文件。也可以試試看支持class字節(jié)碼級別的虛擬軸調(diào)試工具。甚至,這個可以嘗試用用jvm匯編編碼工具。
這一次,解釋jvm的垃圾回收機制發(fā)展歷史和各個主流垃圾回收器的工作原理。
這個過程反正太奇怪。垃圾回收器有各種串行,并行,新聲代/swap和老年代,包括回收警戒線,wide觸發(fā)條件,各種個樣的基本參數(shù)和不怎么專用超參數(shù),在內(nèi)G1的H區(qū),ZGC等等。。。不錯的是,GC并屬于jvm官方規(guī)范的一部分。
然后把,嘗試著做一些jvm的實踐和實戰(zhàn),
例如,jvm比較普遍的故障排查和故障總結,性能調(diào)優(yōu),熱程序加載,class字節(jié)碼的動態(tài)操作,asm等。
之后,可以不數(shù)次實現(xiàn)程序自己的jvm。(當然這個步驟,對很多同學來說并非可以了)
這里我我推薦幾本書,也徹底地搞懂jvm規(guī)范的要求的學習路徑。最好就是自己基于垃圾回收器。
周老師的《深入理解Java虛擬機》。
接下來的是《深入嵌入式java虛擬機》和配套源碼。這個cldc的jvm源碼只有1M多。目前在oracle的官網(wǎng)上,仍舊是可以去下載。是一個設計非常精簡優(yōu)化的jvm實現(xiàn)方法。
接下來的,這個可以去閱讀《自己動手寫java 虛擬機》。這本書的jvm利用是采用go語言編寫。當然了其中也有很多設計并不是什么太比較合理。但基本都都不能違背了jvm規(guī)范。
這會兒就可以去看看吧github上各種jvm的開源實現(xiàn)方法了。有play,scalajvm,javainjava,ajvm,python-jvm,lua,各個版本各個不同的jvm利用。
當然,這些實現(xiàn)方法都只不過基本原理。
后面推薦一下你上去看《實戰(zhàn)hotspot》豹子書,查哈高級語言虛擬機的圈子。
其實,垃圾回收的書籍比較少,這里我還是推薦推薦給你垃圾回收的最經(jīng)典書《The Garbage Collection Cookbook》。但是對新的垃圾回收算法有興趣,可以去知乎搜索相關的論文和GC算法閉源實現(xiàn)程序的demo。
5.其實,我的建議只不過根據(jù)Java本身。
完全要至少幾乎才能學好java生態(tài),軟件工程,計算機網(wǎng)絡,大數(shù)據(jù)基礎知識,mahuot,sparklib,分布式搜索架構,各種消息中間件,緩存中間件,數(shù)據(jù)庫,DNS/CDN。。。。。這些也是做互聯(lián)網(wǎng)應用,無法躲閃的。
不能建議,通用知識能熟練,鉆研方向全精通,咨詢生態(tài)了解。
的原因提問是對于java本身。我就再次發(fā)動說其他具體一點方向了。具體解釋的是大的技術方向,并沒有什么其他答主現(xiàn)在這樣,具體詳細去繼續(xù)討論語法糖這種級別。只希望對提主有不幫助。
有任何問題,記得關注回復,與我再討論。謝謝了。
萬能的頭條,一個沒有工作經(jīng)驗的Java程序員需要掌握多少技術?
兩種情況
1.老系統(tǒng)是需要手中掌握jspjqueryspringMVCmybatismysqlpostgreSqloracleredis定時任務存儲過程
2.新系統(tǒng)springbootspringcloudMQjava8mybatisspringsecurityspringdataredis數(shù)據(jù)庫