Java工程師學(xué)習(xí)指南
成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括麻山網(wǎng)站建設(shè)、麻山網(wǎng)站制作、麻山網(wǎng)頁(yè)制作以及麻山網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,麻山網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到麻山省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!中級(jí)篇
最近有很多小伙伴來問我,Java小白如何入門,如何安排學(xué)習(xí)路線,每一步應(yīng)該怎么走比較好。原本我以為之前的幾篇文章已經(jīng)可以解決大家的問題了,其實(shí)不然,因?yàn)槲覍懙奈恼露际钦驹贘ava后端的全局上進(jìn)行思考和總結(jié)的,忽略了很多小白們的感受,而很多朋友都需要更加基礎(chǔ),更加詳細(xì)的學(xué)習(xí)路線。
所以,今天我們重新開一個(gè)新的專題,分別按照四個(gè)部分講述Java的學(xué)習(xí)路線,筆者也打算趁此機(jī)會(huì),回憶一下自己的Java學(xué)習(xí)歷程。今天我們要講的是第三部分,Java工程師學(xué)習(xí)指南(中級(jí)篇)。
先聲明一點(diǎn),文章里面不會(huì)詳細(xì)到每一步怎么操作,只會(huì)提供大致的思路和方向,給大家以啟發(fā),如果真的要一步一步指導(dǎo)操作的話,那至少需要一本書的厚度啦。
當(dāng)然,本文提到的大部分內(nèi)容都能在我的博客中找到對(duì)應(yīng)的一些文章。所以也歡迎大家去我博客找到你們需要的資源。
本文中的方法不一定適合所有人,如有錯(cuò)誤還請(qǐng)諒解。
在上一篇文章中,我們主要討論的是如何做一個(gè)Java Web項(xiàng)目,以及前期需要哪些方面的基礎(chǔ)。最后,我還推薦了幾個(gè)比較不錯(cuò)的視頻課程,以便給大家參考。
當(dāng)然,跟著視頻課程做完一個(gè)項(xiàng)目,你只是照葫蘆畫瓢又練習(xí)了一遍,可能其中有很多東西你并不太理解,比如你可能不知道為什么代碼要分層,為什么要用maven進(jìn)行線上編譯,為什么Tomcat啟動(dòng)時(shí)會(huì)輸出那么多的日志。
有疑問很正常,因?yàn)橐粋€(gè)Java Web項(xiàng)目涉及的技術(shù)還是很多的,如果要理解這些技術(shù)的原理,光靠一個(gè)項(xiàng)目課程是遠(yuǎn)遠(yuǎn)不夠的。所以,在你體驗(yàn)了Java Web項(xiàng)目的開發(fā)流程以后,你應(yīng)該花些時(shí)間去了解相關(guān)技術(shù)原理了,今天我們要講的也是這部分內(nèi)容。
對(duì)于即將參加校招的同學(xué)來說,最重要的也是這部分內(nèi)容,你需要了解JVM虛擬機(jī)原理,Java并發(fā)原理,并且熟悉JDK的部分源碼,了解這些API的底層實(shí)現(xiàn)。除此之外,還有很多,下面我們分別來談一談。
01
計(jì)算機(jī)基礎(chǔ)知識(shí)
如果你不是計(jì)算機(jī)專業(yè)的同學(xué),那你可能要注意一下了。在學(xué)習(xí)下面這些內(nèi)容之前,你最好要學(xué)習(xí)一下計(jì)算機(jī)基礎(chǔ)課程。
這里我們說的計(jì)算機(jī)課程是:數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng),計(jì)算機(jī)網(wǎng)絡(luò)。
數(shù)據(jù)結(jié)構(gòu):這門課應(yīng)該算是三門課程比較簡(jiǎn)單的一門了,推薦《數(shù)據(jù)結(jié)構(gòu)與算法(Java語(yǔ)言描述)》,看書結(jié)合代碼實(shí)踐,把基本的數(shù)據(jù)結(jié)構(gòu)算法寫一寫就可以了。
操作系統(tǒng):關(guān)于操作系統(tǒng)我看了很多本書,但是沒有感覺特別好的,所以如果有時(shí)間的話可以先看另外一本書《深入理解計(jì)算機(jī)系統(tǒng)》,這本書講了很多計(jì)算機(jī)的基本概念,不局限于操作系統(tǒng)。
然后可以看一看湯小丹寫的《操作系統(tǒng)》,或者你們學(xué)校的教材。
計(jì)算機(jī)網(wǎng)絡(luò):網(wǎng)絡(luò)方面的書也非常多,推薦看一下《計(jì)算機(jī)網(wǎng)絡(luò):自頂向下方法》,另外還有一本《TCP/IP 詳解:卷一》也是備受推崇的書。
除此之外,我還要推薦一下劉欣老師的書《碼農(nóng)翻身》,書中用一些有趣的故事來講解操作系統(tǒng)和計(jì)算網(wǎng)絡(luò)的一些復(fù)雜概念,有助于大家理解這部分內(nèi)容。
02
JVM虛擬機(jī)
為什么把JVM放在第一位,因?yàn)樗亲罨A(chǔ)也最重要的一塊內(nèi)容。所有的Java代碼都運(yùn)行在JVM上,事實(shí)上,JVM在操作系統(tǒng)中只是一個(gè)進(jìn)程。為了了解Java代碼的運(yùn)行方式,底層引擎的執(zhí)行原理,以及內(nèi)存的分配情況,我們必須要學(xué)習(xí)JVM虛擬機(jī)。
推薦資源:《深入理解JVM虛擬機(jī)》
很高興地告訴你們,學(xué)習(xí)JVM你只需要把這本書吃透即可,當(dāng)然,看一遍可不夠,筆者前后至少看了三遍,有條件的話最好把書中的實(shí)例都跑一跑。
另外,JVM也是面試必考的內(nèi)容,所以,相應(yīng)地去準(zhǔn)備一些面試題也是很有必要的,如果你基本掌握了這本書的內(nèi)容,相信你不會(huì)懼怕任何JVM面試題。
03
設(shè)計(jì)模式與源碼閱讀
為什么在這里提到設(shè)計(jì)模式呢,因?yàn)樵O(shè)計(jì)模式是Java編程規(guī)范的經(jīng)典總結(jié),并且在JDK源碼中經(jīng)常使用,由于我們后面會(huì)講到JDK源碼方面的學(xué)習(xí),所以對(duì)于設(shè)計(jì)模式,建議大家先學(xué)習(xí)一下,最好的學(xué)習(xí)方式就是看書結(jié)合實(shí)踐,把一些常用的設(shè)計(jì)模式自己實(shí)現(xiàn)一下。
推薦資源:《head first 設(shè)計(jì)模式》
JDK源碼(主要指集合類源碼)
接下來下場(chǎng)的選手是:JDK源碼。不過對(duì)于大部分人來說,只要能夠掌握集合類,字符串這些源碼就可以了,其他部分的源碼主要集中在JUC并發(fā)包里,而這些內(nèi)容我們會(huì)放在Java并發(fā)技術(shù)里來講。
為什么我們需要掌握集合類源碼呢,其一是因?yàn)槊嬖囅矚g考,其二是因?yàn)榧项惖脑创a實(shí)現(xiàn)都比較經(jīng)典,難度也不算太大,并且運(yùn)用了很多優(yōu)化方法,所以了解它對(duì)于學(xué)習(xí)Java的同學(xué)來說大有裨益。
推薦資源
市面上并沒有哪本書專門來講JDK源碼的,所以這部分內(nèi)容的學(xué)習(xí)資源主要是兩個(gè)部分,一是JDK源碼本身,而是一些技術(shù)博客。
1 對(duì)于JDK源碼,直接看可能比較有難度,不推薦新手這么做。 2 講解源碼的文章質(zhì)量參差不齊,所以我只推薦幾個(gè)我自己比較熟悉的,一個(gè)是importnew。一個(gè)是我的博客。另外,我之前分享的一篇文章
《你不可錯(cuò)過的Java學(xué)習(xí)資源》
中也推薦了很多大牛和博客,大家也可以去看看。
說實(shí)話,Spring源碼的復(fù)雜度遠(yuǎn)高于集合類的源碼,這也是因?yàn)镾pring運(yùn)用了很多的設(shè)計(jì)模式,并且有著非常繁雜的類關(guān)系。所以,我不建議大家直接去讀Spring源碼,因?yàn)榧词故强碨pring源碼解析的書籍,你也會(huì)感到很吃力。
所以,我推薦的方式是,看書+看一些比較好的源碼解析文章。另外要告訴大家的是,Spring的源碼很多,并不是所有內(nèi)容都需要你掌握的,大家都知道Spring最常用的特性就是IOC和AOP,所以看源碼解析時(shí),最重要的也是這兩個(gè)部分了。
另外,看完Spring的源碼解析以后,別忘了看SpringMVC的源碼解析,學(xué)習(xí)方法也是一樣的,找重點(diǎn)內(nèi)容看即可。
推薦資源:《Spring源碼深度》,我的博客專欄
04
Java并發(fā)技術(shù)
相信你為了搞定集合類源碼和Spring源碼花了不少功夫了,接下來輪到Java并發(fā)技術(shù)出場(chǎng)了。我們?cè)谌腴T篇其實(shí)已經(jīng)談到了多線程,但是也僅僅停留在使用Thread或者Runnable實(shí)現(xiàn)簡(jiǎn)單的多線程demo。
實(shí)際上,為了理解Java并發(fā)技術(shù)的底層實(shí)現(xiàn),我們還需要知道JMM模型,了解synchronized和volatile的底層實(shí)現(xiàn),同時(shí)還要明白Java中的多線程和操作系統(tǒng)的多線程和什么聯(lián)系和區(qū)別。除此之外,我們經(jīng)常談到的線程安全,有哪些實(shí)現(xiàn)方法,也是這部分內(nèi)容的要點(diǎn)。
學(xué)習(xí)并發(fā)技術(shù),我建議分為三個(gè)步驟
1 首先熟悉Java的多線程基礎(chǔ)知識(shí),比如Thread的使用,線程的狀態(tài)轉(zhuǎn)換,以及一些api的使用方式。
2 了解一些理論基礎(chǔ),比如JMM,操作系統(tǒng)的多線程實(shí)現(xiàn)。這部分內(nèi)容推薦通過看書和看博客來學(xué)習(xí)。
3 了解并使用JUC的一些API,然后開始看JUC的一些源代碼。這個(gè)階段是最重要也是最困難的。
推薦資源: 書籍:《Java并發(fā)編程藝術(shù)》,《Java并發(fā)編程實(shí)戰(zhàn)》 網(wǎng)站:我的博客專欄,并發(fā)編程網(wǎng),importnew,
《你不可錯(cuò)過的Java學(xué)習(xí)資源》
05
Java網(wǎng)絡(luò)編程
在搞懂Java并發(fā)編程技術(shù)之后,相信這部分內(nèi)容也難不倒你。當(dāng)然,前提是你對(duì)計(jì)算機(jī)網(wǎng)絡(luò)有一定了解,因?yàn)榫W(wǎng)絡(luò)編程涉及到TCP和HTTP相關(guān)的知識(shí)點(diǎn)。
在學(xué)習(xí)這部分內(nèi)容的時(shí)候,你首先要了解socket的使用以及原理,然后再去了解NIO的相關(guān)API,多寫一些客戶端和服務(wù)端通訊的demo,以便熟悉這些內(nèi)容。為了更好地理解網(wǎng)絡(luò)編程,你還要去了解UNIX網(wǎng)絡(luò)編程模型。
除此之外,如果你想要更好地理解Java網(wǎng)絡(luò)編程,你還需要去了解Tomcat的實(shí)現(xiàn)原理。同時(shí),Netty也是值得你去學(xué)習(xí)的一部分內(nèi)容,最好有機(jī)會(huì)去用一用這一網(wǎng)絡(luò)編程框架,學(xué)有余力的同學(xué)還可以考慮看看它的源碼(筆者沒有看)。
推薦資源:我的技術(shù)博客,《Java網(wǎng)絡(luò)編程》,
《你不可錯(cuò)過的Java學(xué)習(xí)資源》
05
Java的版本一直在更新,但目前在用的主要還是Java8和Java7,等再過幾年可能這部分的內(nèi)容就過時(shí)了。但是目前看來,對(duì)Java8的學(xué)習(xí)和了解還是很重要的,畢竟面試也喜歡考。
對(duì)這部分內(nèi)容學(xué)習(xí)的最好方式就是:看文章+代碼實(shí)踐
推薦資源:《Java8實(shí)戰(zhàn)》
06
總結(jié)
今天的內(nèi)容貌似有點(diǎn)多,大家會(huì)不會(huì)感覺有點(diǎn)吃不消呢。沒關(guān)系,因?yàn)檫@部分內(nèi)容確實(shí)需要花很多時(shí)間去學(xué)習(xí)。對(duì)于一個(gè)在校的Java學(xué)習(xí)者來說,可能沒有機(jī)會(huì)接觸到多么高大上的項(xiàng)目,所以對(duì)內(nèi)功的修煉顯得格外重要。
看書,寫demo,讀源碼,看似簡(jiǎn)單的事情實(shí)際上需要花費(fèi)大量時(shí)間和精力,這個(gè)過程是需要你靜下心來,慢慢沉淀的,在學(xué)習(xí)的過程中你也可以和筆者一樣,寫一些總結(jié)和博客,以便更好地回顧自己的學(xué)習(xí)歷程。
總結(jié)以下今天所講的內(nèi)容吧:
1 計(jì)算機(jī)基礎(chǔ)課程:數(shù)據(jù)結(jié)構(gòu),網(wǎng)絡(luò)和操作系統(tǒng) 2 JVM基本原理 3 設(shè)計(jì)模式,JDK源碼,Spring源碼 4 Java并發(fā)技術(shù),JUC源碼 5 Java網(wǎng)絡(luò)編程 6 Java8
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。
網(wǎng)站題目:Java工程師學(xué)習(xí)指南(中級(jí)篇)-創(chuàng)新互聯(lián)
當(dāng)前URL:http://www.rwnh.cn/article40/dcioho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、手機(jī)網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷推廣、網(wǎng)站設(shè)計(jì)、搜索引擎優(yōu)化、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容