Java中級篇

在上一篇文章中,我們主要討論的是如何做一個(gè)Java Web項(xiàng)目盘寡,以及前期需要哪些方面的基礎(chǔ)楚殿。最后,我還推薦了幾個(gè)比較不錯(cuò)的視頻課程竿痰,以便給大家參考脆粥。

當(dāng)然,跟著視頻課程做完一個(gè)項(xiàng)目影涉,你只是照葫蘆畫瓢又練習(xí)了一遍变隔,可能其中有很多東西你并不太理解,比如你可能不知道為什么代碼要分層蟹倾,為什么要用maven進(jìn)行線上編譯匣缘,為什么Tomcat啟動時(shí)會輸出那么多的日志。

有疑問很正常鲜棠,因?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)容竖配。

對于即將參加校招的同學(xué)來說,最重要的也是這部分內(nèi)容里逆,你需要了解JVM虛擬機(jī)原理进胯,Java并發(fā)原理,并且熟悉JDK的部分源碼原押,了解這些API的底層實(shí)現(xiàn)胁镐。除此之外,還有很多诸衔,下面我們分別來談一談盯漂。

01 計(jì)算機(jī)基礎(chǔ)知識

計(jì)算機(jī)基礎(chǔ)課程(非科班)

如果你不是計(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)該算是三門課程比較簡單的一門了,推薦《數(shù)據(jù)結(jié)構(gòu)與算法(Java語言描述)》切揭,看書結(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虛擬機(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)容帝簇,相信你不會懼怕任何JVM面試題徘郭。

03 設(shè)計(jì)模式與源碼閱讀

設(shè)計(jì)模式

為什么在這里提到設(shè)計(jì)模式呢靠益,因?yàn)樵O(shè)計(jì)模式是Java編程規(guī)范的經(jīng)典總結(jié),并且在JDK源碼中經(jīng)常使用崎岂,由于我們后面會講到JDK源碼方面的學(xué)習(xí),所以對于設(shè)計(jì)模式闪湾,建議大家先學(xué)習(xí)一下冲甘,最好的學(xué)習(xí)方式就是看書結(jié)合實(shí)踐,把一些常用的設(shè)計(jì)模式自己實(shí)現(xiàn)一下途样。

推薦資源:《head first 設(shè)計(jì)模式》

JDK源碼(主要指集合類源碼)

接下來下場的選手是:JDK源碼江醇。不過對于大部分人來說,只要能夠掌握集合類何暇,字符串這些源碼就可以了陶夜,其他部分的源碼主要集中在JUC并發(fā)包里,而這些內(nèi)容我們會放在Java并發(fā)技術(shù)里來講裆站。

為什么我們需要掌握集合類源碼呢条辟,其一是因?yàn)槊嬖囅矚g考,其二是因?yàn)榧项惖脑创a實(shí)現(xiàn)都比較經(jīng)典宏胯,難度也不算太大羽嫡,并且運(yùn)用了很多優(yōu)化方法,所以了解它對于學(xué)習(xí)Java的同學(xué)來說大有裨益肩袍。

推薦資源

市面上并沒有哪本書專門來講JDK源碼的杭棵,所以這部分內(nèi)容的學(xué)習(xí)資源主要是兩個(gè)部分,一是JDK源碼本身氛赐,而是一些技術(shù)博客魂爪。

1 對于JDK源碼,直接看可能比較有難度艰管,不推薦新手這么做滓侍。 2 講解源碼的文章質(zhì)量參差不齊,所以我只推薦幾個(gè)我自己比較熟悉的牲芋,一個(gè)是importnew粗井。

Spring源碼

說實(shí)話,Spring源碼的復(fù)雜度遠(yuǎn)高于集合類的源碼街图,這也是因?yàn)镾pring運(yùn)用了很多的設(shè)計(jì)模式浇衬,并且有著非常繁雜的類關(guān)系。所以餐济,我不建議大家直接去讀Spring源碼耘擂,因?yàn)榧词故强碨pring源碼解析的書籍,你也會感到很吃力絮姆。

所以醉冤,我推薦的方式是秩霍,看書+看一些比較好的源碼解析文章。另外要告訴大家的是蚁阳,Spring的源碼很多铃绒,并不是所有內(nèi)容都需要你掌握的,大家都知道Spring最常用的特性就是IOC和AOP螺捐,所以看源碼解析時(shí)颠悬,最重要的也是這兩個(gè)部分了。

另外定血,看完Spring的源碼解析以后赔癌,別忘了看SpringMVC的源碼解析,學(xué)習(xí)方法也是一樣的澜沟,找重點(diǎn)內(nèi)容看即可灾票。

04 Java并發(fā)技術(shù)

Java并發(fā)技術(shù)

相信你為了搞定集合類源碼和Spring源碼花了不少功夫了,接下來輪到Java并發(fā)技術(shù)出場了茫虽。我們在入門篇其實(shí)已經(jīng)談到了多線程刊苍,但是也僅僅停留在使用Thread或者Runnable實(shí)現(xià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ǔ)知識旨怠,比如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)》

05 Java網(wǎng)絡(luò)編程

Java網(wǎng)絡(luò)編程

在搞懂Java并發(fā)編程技術(shù)之后渺贤,相信這部分內(nèi)容也難不倒你雏胃。當(dāng)然,前提是你對計(jì)算機(jī)網(wǎng)絡(luò)有一定了解志鞍,因?yàn)榫W(wǎng)絡(luò)編程涉及到TCP和HTTP相關(guān)的知識點(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ī)會去用一用這一網(wǎng)絡(luò)編程框架氮双,學(xué)有余力的同學(xué)還可以考慮看看它的源碼(筆者沒有看)碰酝。

05 Java8

Java的版本一直在更新,但目前在用的主要還是Java8和Java7戴差,等再過幾年可能這部分的內(nèi)容就過時(shí)了送爸。但是目前看來,對Java8的學(xué)習(xí)和了解還是很重要的暖释,畢竟面試也喜歡考袭厂。

對這部分內(nèi)容學(xué)習(xí)的最好方式就是:看文章+代碼實(shí)踐

推薦資源:《Java8實(shí)戰(zhàn)》

06 總結(jié)

今天的內(nèi)容貌似有點(diǎn)多,大家會不會感覺有點(diǎn)吃不消呢球匕。沒關(guān)系纹磺,因?yàn)檫@部分內(nèi)容確實(shí)需要花很多時(shí)間去學(xué)習(xí)。對于一個(gè)在校的Java學(xué)習(xí)者來說亮曹,可能沒有機(jī)會接觸到多么高大上的項(xiàng)目橄杨,所以對內(nèi)功的修煉顯得格外重要。

看書照卦,寫demo式矫,讀源碼,看似簡單的事情實(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末克婶,一起剝皮案震驚了整個(gè)濱河市筒严,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌情萤,老刑警劉巖鸭蛙,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異筋岛,居然都是意外死亡娶视,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進(jìn)店門睁宰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肪获,“玉大人,你說我怎么就攤上這事柒傻⌒⒑眨” “怎么了?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵红符,是天一觀的道長青柄。 經(jīng)常有香客問我,道長预侯,這世上最難降的妖魔是什么致开? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮雌桑,結(jié)果婚禮上喇喉,老公的妹妹穿的比我還像新娘。我一直安慰自己校坑,他們只是感情好拣技,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著耍目,像睡著了一般膏斤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上邪驮,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天莫辨,我揣著相機(jī)與錄音,去河邊找鬼。 笑死沮榜,一個(gè)胖子當(dāng)著我的面吹牛盘榨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蟆融,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼草巡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了型酥?” 一聲冷哼從身側(cè)響起山憨,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弥喉,沒想到半個(gè)月后郁竟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡由境,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年棚亩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片藻肄。...
    茶點(diǎn)故事閱讀 38,664評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡剂买,死狀恐怖溉知,靈堂內(nèi)的尸體忽然破棺而出妖泄,到底是詐尸還是另有隱情巧颈,我是刑警寧澤债查,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布录别,位于F島的核電站速挑,受9級特大地震影響嘿悬,放射性物質(zhì)發(fā)生泄漏低零。R本人自食惡果不足惜婆翔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掏婶。 院中可真熱鬧啃奴,春花似錦、人聲如沸雄妥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽老厌。三九已至瘟则,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間枝秤,已是汗流浹背醋拧。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人丹壕。 一個(gè)月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓庆械,卻偏偏與公主長得像,于是被迫代替她去往敵國和親菌赖。 傳聞我的和親對象是個(gè)殘疾皇子干奢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容

  • Java動態(tài)追蹤技術(shù)探究 在Java虛擬機(jī)中,字符串常量到底存放在哪 一次生產(chǎn) CPU 100% 排查優(yōu)化實(shí)踐 聊...
    passiontim閱讀 4,052評論 0 38
  • 轉(zhuǎn)自https://www.cnblogs.com/zuoxiaolong/p/life82.html 本...
    Jerome_Guo閱讀 514評論 0 10
  • 人一直閑著盏袄,就會慢慢忘記我是誰忿峻,我在哪。 平吃穑總抱怨休息時(shí)間不夠逛尚,可我們就在抱怨中逐漸習(xí)慣了忙碌。我家沒有很多親戚...
    Vicky_Yo閱讀 143評論 0 0
  • 2017年7月24日 相濡以沫 時(shí)至今日刁愿,我已經(jīng)凱旋歸來上了兩天的班了绰寞,貌似對西安的兩日游還木有總結(jié),四十...
    滋滋味味閱讀 248評論 0 1