語言是學(xué)習(xí)成本比較低的,Java作為一種高級語言,其相關(guān)語法相對簡單,各種類庫、框架封裝的都相對好,而且相關(guān)生態(tài)也比較好(百度、google可以快速檢索,github也有很多相當(dāng)優(yōu)秀的資源),Java類庫的使用與C++的STL有很多類似的地方(STL的類庫是基于C的template的規(guī)則衍生出來的,而Java的類庫就基礎(chǔ)實現(xiàn)來說我理解也是template,通過將基礎(chǔ)功能模版化封裝好,這其中涉及到范型等語法)。而Java類較C++而言,C++的虛函數(shù)被java中的接口取代;較C而言,C中的結(jié)構(gòu)體也就是Java中的類;所以將Java與大家最常使用和學(xué)習(xí)的C/C++做類比,會發(fā)現(xiàn)Java的語法有很多其他語言的影子,尤其C/C++。
上面建紹了小編對Java的理解,現(xiàn)對其基礎(chǔ)語法學(xué)習(xí)推薦一本書:《Java編程思想》,Java編程神書,適合打基礎(chǔ)使用,但是相對較貴,可以搜索電子書進(jìn)行閱讀。java基礎(chǔ)語法學(xué)習(xí)外,要懂的主要幾個點:八個基礎(chǔ)類型與其對應(yīng)的類的裝包和拆包(主要是對應(yīng)類的底層數(shù)據(jù)結(jié)構(gòu),重點);collection類、map類(collection類要會畫它的類圖,map類要懂hashmap的底層數(shù)據(jù)結(jié)構(gòu),curruenthashmap的底層數(shù)據(jù)結(jié)構(gòu),Java1.8之前和之后的不同等等),并且要理解哪幾種是線程安全的類(舉例:curruenthashmap、vector、hashtable);最基礎(chǔ)的類object的三個方法的具體實現(xiàn),add、hashcode、equal。
高級進(jìn)階:
已經(jīng)有了相對較好的java基礎(chǔ)后,需要學(xué)習(xí)一些java使用較高級的東西,大體有兩方面,一個是并發(fā),一個是JVM(java虛擬機(jī)),分別推薦兩本書吧:《Java并發(fā)編程的藝術(shù)》、《深入理解Java虛擬機(jī)》,前者較好的講解了java中并發(fā)編程的實現(xiàn),內(nèi)容通俗易懂,主要理解volitile和sychornizer,涉及到底層封裝,主要是通過CAS和AQS實現(xiàn)的,而原子類、JUL下的工具類等實現(xiàn)也是上述兩種方法實現(xiàn)的,而并發(fā)最重要的技術(shù)體現(xiàn)就是線程池技術(shù)(此處是重點,源碼)和鎖(主要理解對象的頭部markhard部分,在此基礎(chǔ)上學(xué)習(xí)下重入鎖、讀寫鎖,而悲觀鎖、樂觀鎖、輕量鎖、重量鎖等概括要通過相應(yīng)的關(guān)鍵字來理解);后者較深,不建議Java入門學(xué)習(xí),只要對JVM底層結(jié)構(gòu)有一定了解,對內(nèi)存模型有概念,對GC的實現(xiàn)理解其算法和流程就好。
Java面向?qū)ο缶幊?,面向?qū)ο缶幊痰囊粋€特點就是有很多設(shè)計模式,比如單例模式(懶漢和餓漢)、工廠模式、策略模式、迭代器模式、服務(wù)端和客戶端模式等等,這些設(shè)計模式可以看一些書學(xué)理解一下精髓,推薦《設(shè)計模式解析》,設(shè)計模式只要先懂精髓就好,這個跟jvm比較相識,在實際工作中理解效果更好,)世界上本沒有路走的人多了也就成了路(,一個道理的。
框架相關(guān):
經(jīng)典的SSM框架(spring、springMVC、mybatis),要對其使用、結(jié)構(gòu)、源碼實現(xiàn)有一定理解,其中spring的IOC和AOP,springMVC和服務(wù)器/bean層的關(guān)系及實現(xiàn),mybatis的源碼實現(xiàn)(mybatis源碼流程相對簡單,便于學(xué)習(xí)java代碼)?,F(xiàn)在用的最多的是springboot,便于快速構(gòu)建,但是缺點是缺少對具體實現(xiàn)的感知,需要有SSM或SSH的組合理解(不推薦SSH呀,太老了)。
Netty框架是一種網(wǎng)絡(luò)通信框架,基于Netty可以實現(xiàn)客戶端和服務(wù)端的消息通信,基于Netty可以學(xué)習(xí)一下NIO的具體實現(xiàn)(AIO,BIO最好懂一下原理)。
常用技術(shù)棧:
數(shù)據(jù)庫技術(shù)懂mysql就好,會用最基本的select、delete、update、query(orderby,groupby)就好,最好會用index(索引,公司用的比較多的內(nèi)容,基于紅黑樹),自己可以試著建表,多線程訪問增刪改查,看看效果。數(shù)據(jù)庫的四大特性及引入的三大問題,及解決問題的四大隔離事務(wù)都要懂。
web相關(guān)技術(shù),需要懂一下http、https協(xié)議,對request和response相關(guān)字段要理解,可以通過postman在網(wǎng)上找一些例子進(jìn)行學(xué)習(xí)。而且要懂socket編程,不管是Java還是其他語言,socket編程都是最基本的服務(wù)端和客戶端的通信方式。
linux的常用命令一定要會用(自己多用用就好了),并且最好試著跑一下服務(wù)端程序,試試效果。git也要會用,可以在github上建立一個庫,上傳自己開發(fā)的程序。
以上就是長沙達(dá)內(nèi)教育java培訓(xùn)機(jī)構(gòu)小編介紹的“Java學(xué)習(xí)計劃,給自己一個學(xué)習(xí)線路”的內(nèi)容,希望對大家有幫助,更多java最新資訊請繼續(xù)關(guān)注長沙達(dá)內(nèi)教育java培訓(xùn)機(jī)構(gòu)官網(wǎng),每天會有精彩內(nèi)容分享與你。
Java學(xué)習(xí)