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