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