java管理系統(tǒng)入門教學(xué) 如何系統(tǒng)的學(xué)習(xí)JAVA?
如何系統(tǒng)的學(xué)習(xí)JAVA?java的整體生態(tài)和學(xué)習(xí)積累確實(shí)是太大了。95年至今20多年的積累,完全涉及到計(jì)算機(jī)軟硬件的方方面面。我暫且放過就以為,提主所說的精通滿,是指jdk本身和一些必要的數(shù)據(jù)結(jié)構(gòu)以及
如何系統(tǒng)的學(xué)習(xí)JAVA?
java的整體生態(tài)和學(xué)習(xí)積累確實(shí)是太大了。95年至今20多年的積累,完全涉及到計(jì)算機(jī)軟硬件的方方面面。我暫且放過就以為,提主所說的精通滿,是指jdk本身和一些必要的數(shù)據(jù)結(jié)構(gòu)以及廣泛框架和面向?qū)ο蟮幕臼撬枷氚伞?/p>
從11年初至今,一直在學(xué)習(xí)java相關(guān)的知識(shí)。其中也走了不少彎路。按自己的積累,能提供提主一個(gè)自認(rèn)為比較合理且有一定深度的學(xué)習(xí)路線。大概情況分下面幾個(gè)階段吧。
1.是需要應(yīng)盡可能的打牢基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)和簡(jiǎn)單的算法基礎(chǔ)。
可以不去迅速的學(xué)習(xí)一些簡(jiǎn)單的大型系統(tǒng),來滿足的條件軟件怎么學(xué)習(xí)的興趣和初期成就感。但,要先回過身,翻看的平定內(nèi)亂數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)和簡(jiǎn)單算法。像這種書就可以不。
2.能熟練在用Java類庫和java第三方工具框架。
學(xué)習(xí)不使用java的語法,嘗試明白Java語法怎么設(shè)計(jì)的邏輯。熟練掌握到j(luò)dk開發(fā)庫本身,這些各種第三方類庫工具包和第三方框架的簡(jiǎn)單的使用。這里怎么學(xué)習(xí)的同時(shí),推薦看看吧《設(shè)計(jì)模式》,《代碼整潔之道》,《spring源碼解讀》,《Spring揭秘》等這一類的書集。
3.理解怎么學(xué)習(xí)jdk類庫本身的應(yīng)用源碼實(shí)現(xiàn)方法和高端點(diǎn)第三方框架的源碼和架構(gòu)設(shè)計(jì)。
例如jdk本身的數(shù)據(jù)結(jié)構(gòu)二叉樹,紅黑樹,treemap,和異步包的unsafe,同步阻塞隊(duì)列,call-future等等包源碼,以及線程基礎(chǔ)類的實(shí)現(xiàn),各個(gè)類庫啊,設(shè)計(jì)的結(jié)構(gòu)和設(shè)計(jì)模式。理解透徹第三方框架的設(shè)計(jì)思想,理解學(xué)習(xí)第三方框架的核心源碼。
肯定,這里面很可能會(huì)涉及到其他的事務(wù),分布式協(xié)議等,這里繼續(xù)發(fā)起。這個(gè)過程未必一朝一夕,可能會(huì)要大量的時(shí)間和技術(shù)感悟。當(dāng)然了,《設(shè)計(jì)模式》,《代碼整潔之道》,《spring源碼解讀與設(shè)計(jì)詳析》,《Spring揭秘》等等這一大類書,在這個(gè)過程可以不解釋大差不差了。
4.理解jdk,jre即jvm原理和實(shí)現(xiàn)方法。
這里我?guī)臀彝扑]看下葛老師的《實(shí)戰(zhàn)java虛擬機(jī)》,里面解釋比較好偏實(shí)操。容易上手理解。
首先,可以不從jdk光盤驅(qū)動(dòng)的工具去學(xué)習(xí)來從哪里入手。
.例如:jstat,jmap,jstack,jps,jdb.......甚至連還有一個(gè)直接這個(gè)可以窺視運(yùn)行期間求實(shí)際內(nèi)存數(shù)據(jù)的HSDB。當(dāng)然了,充當(dāng)學(xué)習(xí)進(jìn)一步,我們只必須表述正確的幾個(gè)命令,并知道其代表的意義再試一下。畢竟,第三方監(jiān)控工具,包括jdk本身也提供給了3個(gè)可視化的監(jiān)控。
如果你是,再理解jvm的運(yùn)行打開程序原理,搞懂class文件結(jié)構(gòu)。
這個(gè)過程我們可以借助于之前會(huì)用的監(jiān)控工具,理解jvm讀取的基本原理??梢越ㄗh參考官方各個(gè)版本的jvm標(biāo)準(zhǔn),學(xué)習(xí)看懂class文件。到此可以使用如classpy等工具,方便些我們直接泛讀class文件。也可以試試支持什么class字節(jié)碼級(jí)別的單步運(yùn)行調(diào)試工具。哪怕,這個(gè)可以一段時(shí)間用用jvm匯編編碼工具。
接下來的,理解jvm的垃圾回收機(jī)制發(fā)展歷史和各個(gè)主流垃圾回收器的工作原理。
這個(gè)過程總之太急切。垃圾回收器有各種串行,聯(lián)成一體,新聲代/swap和老年代,以及回收警戒線,endless觸發(fā)條件,各種個(gè)樣的基本參數(shù)和不怎么是用超參數(shù),這些G1的H區(qū),ZGC等等。。。還好的是,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。(其實(shí)這個(gè)步驟,對(duì)很多同學(xué)來說不是什么必須了)
這里我推薦推薦幾本書,確實(shí)是完全看懂jvm規(guī)范的要求的學(xué)習(xí)路徑。建議自己基于垃圾回收器。
周老師的《深入理解Java虛擬機(jī)》。
下一步是《深入嵌入式j(luò)ava虛擬機(jī)》和配套源碼。這個(gè)cldc的jvm源碼唯有1M多。目前在oracle的官網(wǎng)上,依然可以可以下載。是一個(gè)設(shè)計(jì)的很不精簡(jiǎn)的jvm實(shí)現(xiàn)方法。
接下來的,可以不去閱讀《自己動(dòng)手寫java 虛擬機(jī)》。這本書的jvm利用是常規(guī)go語言c語言設(shè)計(jì)。不過其中也有很多設(shè)計(jì)并不是太合算。但基本上都不違背了jvm規(guī)范。
這會(huì)兒就這個(gè)可以去看下github上各種jvm的閉源利用了。有play,scalajvm,javainjava,ajvm,python-jvm,lua,各個(gè)版本各個(gè)相同的jvm利用。
不過,這些實(shí)現(xiàn)都只是基本原理。
后面推薦推薦你自己去看《實(shí)戰(zhàn)hotspot》豹子書,了解高級(jí)語言虛擬機(jī)的圈子。
肯定,垃圾回收的書籍比較好少,這里那就幫我推薦給你垃圾回收的很經(jīng)典書《The Garbage Collection Cookbook》。實(shí)際上對(duì)新的垃圾回收算法有興趣,可以不去知乎搜索相關(guān)的論文和GC算法開源利用的demo。
5.當(dāng)然,我的建議只是根據(jù)Java本身。
真正的要提升到幾乎能學(xué)好java生態(tài),軟件工程,計(jì)算機(jī)網(wǎng)絡(luò),大數(shù)據(jù)基礎(chǔ)知識(shí),mahuot,sparklib,分布式搜索架構(gòu),各種消息中間件,緩存中間件,數(shù)據(jù)庫,DNS/CDN。。。。。這些大都做互聯(lián)網(wǎng)應(yīng)用,無法躲閃的。
沒有辦法見意,通用知識(shí)比較熟練,專研方向精通滿,去相關(guān)生態(tài)所了解。
由于提問是因?yàn)閖ava本身。我就并沒有展開攻擊說其他具體方向了。具體解釋的是大的技術(shù)方向,并沒有其他答主那樣,具體看去討論語法糖這種級(jí)別。希望對(duì)提主有不幫助。
有任何問題,歡迎關(guān)注知道回答,與我繼續(xù)討論。謝謝啦。
使用java如何打造分布式框架或系統(tǒng),需要哪些知識(shí)?
感激邀請(qǐng)。
分布式系統(tǒng)的架構(gòu)與設(shè)計(jì),可能要按實(shí)際中項(xiàng)目升級(jí)的需要來演繹,要:有SOA的思想,RESTfulAPI得整個(gè)明白了,且大量應(yīng)用;
有都統(tǒng)一登陸賬號(hào),身份認(rèn)證與合法授權(quán)的想法,token的定義與無法激活機(jī)制,加解密的處理;
有文件服務(wù)器,能提供支持靜態(tài)文件的讀寫服務(wù)(包裝成熟可信的API),CDN的概念;
有消息隊(duì)列的想法,且適度地應(yīng)用,比ActiveMQ,Kafka;
有緩存管理的概念,且更多運(yùn)用,例如Memecache,Redis等;
有web服務(wù)器集群,負(fù)載均衡的想法,會(huì)玩Nginx,HAProxy等;
有數(shù)據(jù)庫集群的概念,能玩主從數(shù)據(jù)庫復(fù)制,讀寫分離等;
有有高級(jí)網(wǎng)絡(luò)編程的概念,同步異步的應(yīng)用,多線程的處理,socket程序,非阻塞的IO處理
對(duì)https,tcp/ip,telnet有進(jìn)入到理解與應(yīng)用;
有對(duì)系統(tǒng)的容錯(cuò)機(jī)制如何處理,要做預(yù)警處理;
能怎么設(shè)計(jì)高可用(冷熱備份文件,異地多活等)的系統(tǒng);
有對(duì)當(dāng)下流行的應(yīng)用設(shè)計(jì)框架的理解與應(yīng)用等;
聲明搞分布式系統(tǒng),時(shí)間成本與資源成本得先考慮好;
如果不是用戶量下降數(shù)百,點(diǎn)擊率上不去,就放下心來先把系統(tǒng)功能做了才是真;
杰出的系統(tǒng),都是一步步分階段來演繹出來的。
(結(jié)束)