java逆向方法 如何系統(tǒng)的學(xué)習(xí)JAVA?
如何系統(tǒng)的學(xué)習(xí)JAVA?java的整體生態(tài)和積累知識(shí)確實(shí)是太大了。95年一直20多年的積累,幾乎涉及到計(jì)算機(jī)軟硬件的方方面面。我依我之見(jiàn)就其實(shí),提主所說(shuō)的全精通,是指jdk本身和一些必要的數(shù)據(jù)結(jié)構(gòu)在內(nèi)
如何系統(tǒng)的學(xué)習(xí)JAVA?
java的整體生態(tài)和積累知識(shí)確實(shí)是太大了。95年一直20多年的積累,幾乎涉及到計(jì)算機(jī)軟硬件的方方面面。我依我之見(jiàn)就其實(shí),提主所說(shuō)的全精通,是指jdk本身和一些必要的數(shù)據(jù)結(jié)構(gòu)在內(nèi)廣泛框架和面向?qū)ο蟮幕旧纤枷氚伞?/p>
從11年初到現(xiàn)在,總是在學(xué)習(xí)java相關(guān)的知識(shí)。其中也走了不少?gòu)澛贰0醋约旱姆e累,具體提主一個(gè)自其實(shí)合算且有是有深度的學(xué)習(xí)路線。確切分下面幾個(gè)階段吧。
1.必須應(yīng)盡可能會(huì)的打牢基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)和簡(jiǎn)單的算法基礎(chǔ)。
是可以去急速的學(xué)習(xí)一些簡(jiǎn)單的一百頭系統(tǒng),來(lái)滿足軟件學(xué)習(xí)的興趣和初期成就感。但,你必須回過(guò)頭,觀察的短時(shí)間內(nèi)數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)和簡(jiǎn)單點(diǎn)算法。類似這種書就可以不。
2.非常熟練不使用Java類庫(kù)和java第三方工具框架。
怎么學(xué)習(xí)不使用java的語(yǔ)法,一段時(shí)間理解Java語(yǔ)法電腦設(shè)計(jì)的邏輯。熟練的掌握掌握jdk第三方庫(kù)本身,以及各種第三方類庫(kù)工具包和第三方框架的簡(jiǎn)單的使用。這里自學(xué)的同時(shí),幫我推薦看看《設(shè)計(jì)模式》,《代碼整潔之道》,《spring源碼解讀》,《Spring揭秘》等這一類的書集。
3.理解怎么學(xué)習(xí)jdkjava代碼本身的應(yīng)用源碼實(shí)現(xiàn)方法和通吃第三方框架的源碼和架構(gòu)設(shè)計(jì)。
例如jdk本身的數(shù)據(jù)結(jié)構(gòu)二叉樹,紅黑樹,treemap,包括異步模式包的unsafe,同步阻塞隊(duì)列,call-future等等包源碼,以及線程基礎(chǔ)類的實(shí)現(xiàn),各個(gè)類庫(kù)設(shè)計(jì)什么的結(jié)構(gòu)和設(shè)計(jì)模式。學(xué)透第三方框架的設(shè)計(jì)思想,理解學(xué)第三方框架的核心源碼。
當(dāng)然了,這里面可能會(huì)涉及到其他的事務(wù),分布式協(xié)議等,這里再次展開(kāi)。這個(gè)過(guò)程未必一朝一夕,可能需要大量的時(shí)間和技術(shù)感悟。當(dāng)然了,《設(shè)計(jì)模式》,《代碼整潔之道》,《spring源碼解讀與設(shè)計(jì)詳析》,《Spring揭秘》等等這一大類書,在這個(gè)過(guò)程也可以再理解大差不差了。
4.理解jdk,jre即jvm原理和實(shí)現(xiàn)程序。
這里我我推薦看下葛老師的《實(shí)戰(zhàn)java虛擬機(jī)》,里面解說(shuō)都很偏實(shí)操。容易上手明白。
首先,是可以從jdk隨機(jī)軟件的工具學(xué)來(lái)何練起。
比如說(shuō):jstat,jmap,jstack,jps,jdb.......哪怕還有一個(gè)直接這個(gè)可以窺視運(yùn)行期間求實(shí)際內(nèi)存數(shù)據(jù)的HSDB??隙?,另外學(xué)進(jìn)一步,我們只要明白具體用法的幾個(gè)命令,并明白了其代表上帝的意義去掉。不過(guò),第三方監(jiān)控工具,除開(kāi)jdk本身也能提供了3個(gè)可視化的監(jiān)控。
或者,表述jvm的運(yùn)行讀取原理,搞明白class文件結(jié)構(gòu)。
這個(gè)過(guò)程我們也可以借助于之前會(huì)專用監(jiān)控工具,理解jvm讀取的基本原理。也可以建議參考官方各個(gè)版本的jvm標(biāo)準(zhǔn),學(xué)習(xí)看懂class文件。在此是可以在用如classpy等工具,方便些我們直接閱讀什么class文件。也可以試一下意見(jiàn)class字節(jié)碼級(jí)別的單步調(diào)試工具。甚至連,也可以試圖用用jvm匯編編碼工具。
下一步,理解jvm的垃圾回收機(jī)制發(fā)展歷史和各個(gè)主流垃圾回收器的工作原理。
這個(gè)過(guò)程反正更加奇怪。垃圾回收器有各種串行,分頭并進(jìn),新聲代/swap和老年代,在內(nèi)回收警戒線,large觸發(fā)條件,各種個(gè)樣的基本參數(shù)和不怎莫帶的超參數(shù),包括G1的H區(qū),ZGC等等。。。不過(guò)的是,GC并屬于什么jvm官方規(guī)范的一部分。
然后,動(dòng)手制作一些jvm的實(shí)踐和實(shí)戰(zhàn),
例如,jvm較常見(jiàn)的故障排查和故障總結(jié),性能調(diào)優(yōu),熱運(yùn)行程序,class字節(jié)碼的動(dòng)態(tài)操作,asm等。
之后,這個(gè)可以試圖實(shí)現(xiàn)自己的jvm。(不過(guò)這個(gè)步驟,對(duì)很多同學(xué)來(lái)說(shuō)也不是可以了)
這里我推薦幾本書,都是全部搞明白jvm相關(guān)規(guī)范的學(xué)習(xí)路徑。好是自己實(shí)現(xiàn)方法垃圾回收器。
周老師的《深入理解Java虛擬機(jī)》。
接下來(lái)的事情是《深入嵌入式j(luò)ava虛擬機(jī)》和配套源碼。這個(gè)cldc的jvm源碼只有1M多。目前在oracle的官網(wǎng)上,依舊也可以去下載。是一個(gè)設(shè)計(jì)的很系統(tǒng)精簡(jiǎn)的jvm基于。
這一次,也可以去閱讀《自己動(dòng)手寫java 虛擬機(jī)》。這本書的jvm利用是采用go語(yǔ)言編譯程序。其實(shí)其中也有很多設(shè)計(jì)并又不是太合理。但基本上都不能違背了jvm規(guī)范。
而現(xiàn)在就也可以去看看吧github上各種jvm的開(kāi)源軟件實(shí)現(xiàn)方法了。有you,scalajvm,javainjava,ajvm,python-jvm,lua,各個(gè)版本各個(gè)相同的jvm實(shí)現(xiàn)程序。
肯定,這些實(shí)現(xiàn)方法都只不過(guò)是基本原理。
后面推薦你去看《實(shí)戰(zhàn)hotspot》豹子書,了解高級(jí)語(yǔ)言虛擬機(jī)的圈子。
肯定,垃圾回收的書籍比較少,這里肯定推薦給你垃圾回收的最經(jīng)典書《The Garbage Collection Cookbook》。實(shí)際上對(duì)新的垃圾回收算法有興趣,也可以去知乎搜索相關(guān)的論文和GC算法開(kāi)放源代碼基于的demo。
5.其實(shí),我的建議只不過(guò)根據(jù)Java本身。
完全要達(dá)到徹底才能學(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í)熟練,專研方向精通于,具體生態(tài)打聽(tīng)一下。
導(dǎo)致提問(wèn)是因?yàn)閖ava本身。我就不再繼續(xù)發(fā)動(dòng)了攻擊說(shuō)其他具體方向了。詳細(xì)解釋的是大的技術(shù)方向,完全沒(méi)有其他答主那樣,具體去討論語(yǔ)法糖這種級(jí)別。希望對(duì)提主所幫助。
有任何問(wèn)題,歡迎大家關(guān)注解除,與我討論。謝謝了。
有什么冷門但好用的軟件呢?
EssentialpimPRO:日程管理和知識(shí)管理的大神級(jí)軟件,惠普、三星、佳能等比較知名公司的選擇。
不僅這個(gè)可以拿出來(lái)日程管理軟件,還可以以及知識(shí)管理軟件:
單獨(dú)的數(shù)據(jù)庫(kù),確保全安全。變化莫測(cè)是從wifi歌詞同步:
該軟件能夠得到國(guó)際大牌公司同意:
這樣一款軟件,價(jià)格的確高。
不過(guò),如果沒(méi)有你愿意去,可以不選擇類型河蟹版。
話一說(shuō)完了比較傳統(tǒng)知識(shí)管理軟件,有刻寒也很太熱門的雙鏈筆記軟件:
簡(jiǎn)單的清楚看看什么是雙鏈筆記,不需要弄懂古怪概念,和比較熱門的知識(shí)管理軟件NOTION做一個(gè)比較比較:
當(dāng)然,roamedit未來(lái)的發(fā)展空間和底層架構(gòu)都比NOTION大短短一圈。
Roam到底是適合干什么,能能夠解決什么問(wèn)題?
簡(jiǎn)單理解,應(yīng)該是:讓知識(shí)能用
相似下面的圖:
為什么這樣的圖能讓知識(shí)更管用呢?
看下圖案例(軟件-全世界的界面):
知識(shí)之間、信息之間建立起關(guān)聯(lián),如果能明白了任何一個(gè)關(guān)鍵點(diǎn),就能順藤摸瓜的構(gòu)建體系整個(gè)知識(shí)大廈。
這才是真正的用處、能用的知識(shí)。
軟件界面(太復(fù)雜,拉轟并不在正式慢慢階段):
XYplorer:文件管理的超冷門超極為強(qiáng)大軟件一位大V這樣評(píng)價(jià)它:
看下它酷炫又實(shí)用點(diǎn)的界面:
當(dāng)然還這個(gè)可以中,選擇200元以內(nèi)軟件:
qdir
qttabbarclover
onecommander
tc
訊讀PDF:拉轟目前如果說(shuō)好是的PDF軟件,沒(méi)有之一
下面的思維導(dǎo)圖是目前的推薦軟件:
拉轟出品,必屬精品