不要再走彎路了,最全的Java學(xué)習(xí)路線在這!(內(nèi)含13張思維導(dǎo)圖)
最近耗費(fèi)了一周時間整理了一套Java學(xué)習(xí)路線,
對于初次接觸 Java 的朋友,想必一定很迷茫,想知道如何掌握好 Java 這門技術(shù),如何運(yùn)用Java進(jìn)行項(xiàng)目開發(fā),以及給自己帶來高的收益!
我也經(jīng)歷過一段迷茫時期,雖然學(xué)了很多,但是技術(shù)積累的比較散,在面試的時候,一碰到面試官提一些自己沒聽說過的問題,瞬間就傻逼了,而且時常不夠自信,但是自從認(rèn)識了一些大牛之后,我才發(fā)現(xiàn)自己欠缺的是系統(tǒng)性的知識,以及對自己未來的定位。從那時候起,漸漸的開始思考 Java 為什么至今依然這么火,怎么學(xué)好 Java 這門技術(shù),以及自己未來的方向。
在這里,可以將Java開發(fā)涉及到的技術(shù)棧知識學(xué)習(xí)分為以下幾個部分:

一,Java 核心技術(shù)篇
這個階段就是Java入門階段,也是核心階段,掌握 Java 這門編程語言的基本語法,和基本特征,核心api和編碼規(guī)范,安全規(guī)范等,為后面的修行之路打好基礎(chǔ)。一定要注意是基礎(chǔ),基礎(chǔ)一定要牢固。

1,基礎(chǔ)知識 又包括如下知識點(diǎn):

2,容器知識
容器主要是數(shù)據(jù)集合類,主要包括以下幾個,也是Java開發(fā)最常用的數(shù)據(jù)結(jié)構(gòu):
ArrayList、LinkedList、HashMap、LinkedHashMap、HashTable、HashSet,Vector,CopyOnWriteArrayList,ConcurrentHashMap,WeakHashMap等,如果過需要分析原理的小伙伴可以去java.util
包下進(jìn)行查找,開發(fā)中使用很廣。

3,IO知識
實(shí)現(xiàn)文件或者網(wǎng)絡(luò)的輸入/輸出操作,主要包括如下內(nèi)容:
File類的作用
File類中常用方法的使用介紹
使用File類操作文件和文件夾
相對路徑和絕對路徑的介紹
IO流的概念和工作原理
IO流的分類
文件流的使用
轉(zhuǎn)換流的使用
緩沖流的使用
對象流的使用
內(nèi)存流的使用
使用不同的流實(shí)現(xiàn)文件內(nèi)容的拷貝

4,多線程知識
主要包含線程和進(jìn)程的基本概念、使用、以及并發(fā)編程等內(nèi)容,多線程中有一個重點(diǎn)是線程池,用來管理線程,多線程可以說是 Java 高性能的核心基石,對大用戶量高并發(fā)有很好的處理優(yōu)勢,必須要掌握好多線程的知識點(diǎn)。
簡單歸類主要包括如下幾點(diǎn)

5,JVM虛擬機(jī)
說到虛擬機(jī),很多大廠尤其會面試這方面的知識點(diǎn),很多工作幾年的開發(fā)者都沒有實(shí)質(zhì)的接觸到,核心知識點(diǎn)主要是GC調(diào)優(yōu),詳細(xì)可以分為如下幾點(diǎn):

二、設(shè)計模式
設(shè)計模式(Design Pattern)是前輩們對代碼開發(fā)經(jīng)驗(yàn)的總結(jié),是解決特定問題的一系列套路。它不是語法規(guī)定,而是一套用來提高代碼可復(fù)用性、可維護(hù)性、可讀性、穩(wěn)健性以及安全性的解決方案。
從模式上,可以將其分為四大類:創(chuàng)建型模式、結(jié)構(gòu)型模式、行為型模式,J2EE 設(shè)計模式 ,合計各個類別總共有 23 種!

三、Java 開源框架
Java 程序員從事 JavaWeb 的相關(guān)開發(fā)當(dāng)然離不開 Spring 的系列框架。
就目前來說 沒有 一個項(xiàng)目 不包含Spring 。Spring 框架正在變得越來越龐大,但核心的概念仍然是 IOC 和 AOP,也就是控制反轉(zhuǎn)和面向切面編程。這個兩個概念對于初學(xué)者來說,學(xué)習(xí)曲線有點(diǎn)陡峭。
有關(guān)Spring的核心框架:

開源框架的出現(xiàn),對整個IT行業(yè)來說,尤其是程序員,真的絕對是一種福利!
比如新手上手難、項(xiàng)目開發(fā)周期長、編碼風(fēng)格不統(tǒng)一等問題,Spring、SpringMVC、Mybtais、Hibernate等框架的出現(xiàn),極大的改善了web應(yīng)用程序后端開發(fā)的難度,縮短了開發(fā)周期,對于后端開發(fā)者而言,真的是一種解放!

四、數(shù)據(jù)庫篇
學(xué)習(xí)一門編程語言,數(shù)據(jù)庫操作是必不可少的,不學(xué)會數(shù)據(jù)庫,這門編程語言你也只能算是懂得一點(diǎn)點(diǎn)皮毛而已,對吧?要想學(xué)好數(shù)據(jù)庫,首先要學(xué)習(xí)一下 SQL,推薦《SQL 必知必會》,然后是 MySQL,推薦《高性能 MySQL》。再拓展的話,還有 Redis,互聯(lián)網(wǎng)技術(shù)領(lǐng)域中使用最廣泛的存儲中間件,推薦《Redis 深度歷險:核心原理與應(yīng)用實(shí)戰(zhàn)》。
還有 MongoDB,非關(guān)系型數(shù)據(jù)庫,推薦《MongoDB權(quán)威指南》。
根據(jù)使用用途,數(shù)據(jù)庫可分為關(guān)系型數(shù)據(jù)庫、非關(guān)系型數(shù)據(jù)庫。
關(guān)系型數(shù)據(jù)庫:主要就是我們做業(yè)務(wù)時經(jīng)常會接觸到的一種數(shù)據(jù)庫,在設(shè)計時主要需要遵循三范式要求,以設(shè)計符合實(shí)際需要的表結(jié)構(gòu)關(guān)系。
非關(guān)系型數(shù)據(jù)庫:主要是面向那些不能用結(jié)構(gòu)化關(guān)系表達(dá)的數(shù)據(jù),通過
k-v
來實(shí)現(xiàn)存儲。

這里強(qiáng)烈推薦幾本書:
SQL基礎(chǔ)教程(入門級);
高性能MySQL(進(jìn)階級);
Redis入門指南(第2版)
Redis設(shè)計與實(shí)現(xiàn)
Redis實(shí)戰(zhàn)
五、前端技術(shù)篇
真正在實(shí)際開發(fā)過程中,對于后端開發(fā)者而言,不可能只做 Java 的開發(fā),也要兼顧前端的開發(fā),有一些公司連前端開發(fā)都沒有,前端任務(wù)全部都由后端人員來兼顧完成。
另外現(xiàn)在前后端分離開發(fā)也都是一個人來完成了,vue、react、angluar等前端框架,都需要學(xué)習(xí)。
開發(fā)人員必須掌握 Html、JavaScript技術(shù),原因就不多說了。
這里推薦幾個網(wǎng)站如下:
1、Bootstrap
Bootstrap無疑是最流行的CSS框架,它是最早的Web前端框架,由Twitter開發(fā)。Bootstrap還提供了許多實(shí)例來幫助你入門。
2、PatternFly
PatternFly是Red Hat的開源CSS框架,和Bootstrap不同的是,Bootstrap是為那些想要創(chuàng)建漂亮網(wǎng)站的人而設(shè)計的,而PatternFly主要專注于企業(yè)應(yīng)用程序開發(fā)人員,提供諸如條形圖、圖表、導(dǎo)航之類的組件,實(shí)際上Red Hat就是使用它創(chuàng)建了OpenShift。
3、Material Components for the web
Material Components for the web(MDC Web),是谷歌專為Web設(shè)計的全新前端框架。MDC Web可幫助開發(fā)人員執(zhí)行Material Design,組件由谷歌的核心工程師團(tuán)隊(duì)和UX設(shè)計人員開發(fā)。這些組件可以建立可靠的開發(fā)工作流程,以構(gòu)建美觀且功能強(qiáng)大的Web項(xiàng)目。
4、Pure
Bootstrap,Patternfly和MDC Web是功能非常強(qiáng)大的CSS框架,但它們可能非常繁瑣和復(fù)雜。如果你想要一個輕量級的CSS框架,可以嘗試Pure.css,它本身更接近于CSS編程,但又可以幫助你構(gòu)建一個不錯的網(wǎng)頁。Pure是具有最小占用空間的輕量級CSS框架,它由Yahoo開發(fā),根據(jù)BSD許可是開源的。
5、Foundation
Foundation聲稱是世界上最先進(jìn)的響應(yīng)式前端框架。它提供了用于構(gòu)建專業(yè)網(wǎng)站的高級功能和教程。許多公司,組織都使用該框架,并且該框架具有大量可用的文檔。
6、Bulma
Bulma是一個基于Flexbox的開源框架,可根據(jù)MIT許可證開源。Bulma是一個非常輕量級的框架,因?yàn)樗恍枰粋€CSS文件。Bulma擁有簡潔明了的文檔,可輕松選擇你想要的主題。它還具有許多Web組件,你可以在設(shè)計中使用它們。
7、Skeleton
如果說還有什么框架比Pure更加輕量級,那一定是Skeleton。Skeleton庫只有大約400行,并且該框架僅提供一些基本的CSS框架組件。盡管如此,Skeleton還是提供了詳細(xì)的文檔來幫助你快速上手。
8、Materialize
Materialize 是一個基于 Material Design風(fēng)格的一個現(xiàn)代化的響應(yīng)式前端框架,解決了最繁重的工作,結(jié)合你的自定義組件,為你提供默認(rèn)的樣式。Materialize的文檔頁面非常全面,并且很容易遵循。其組件頁面包括按鈕,卡片,導(dǎo)航等。
9、Bootflat
Bootflat是從Twitter的Bootstrap派生的開源CSS框架。與Bootstrap相比,Bootflat更簡單,并且更加輕量級。Bootflat的文檔似乎幾乎受到了IKEA的啟發(fā),大部分都是圖像,沒有太多的文字。
10,w3school(網(wǎng)站)
在 W3School,你可以找到你所需要的所有的網(wǎng)站建設(shè)教程。
從基礎(chǔ)的 HTML 到 CSS,乃至進(jìn)階的 XML、SQL、JS、PHP 和 ASP.NET。
六、中間件篇
問:什么情況下需要使用中間件呢?
答:如果面對一個請求量很大、對響應(yīng)要求很高的系統(tǒng),就需要中間件的支持。
問:中間件包括那些呢?
答:最常用的有:分布式緩存:redis、memcached,分布式消息隊(duì)列:activemq 、rabbitmq、rocketmq、kafka,分布式搜索引擎:elasticsearch,分布式任務(wù)調(diào)度:quartz,分布式API網(wǎng)關(guān):zuul,分布式熔斷器:Hystrix 等等。

七、服務(wù)器篇
服務(wù)器 重點(diǎn)主要是軟件安裝部署、服務(wù)器使用原理,容器化技術(shù)等,最為Java程序員不會部署服務(wù)器絕對不是好技術(shù)員。

最后:
推薦幾個Java 練手項(xiàng)目,超雞棒。
GitHub 和碼云上有成千上萬的項(xiàng)目,真正能脫穎而出的不在這個項(xiàng)目有多牛逼,作者的技術(shù)有多厲害,而在于這個項(xiàng)目的文檔能不能讓大家看得懂!能不能讓大家學(xué)習(xí)到這些知識點(diǎn)。
這里只給大家推薦2個個人認(rèn)為比較好的,相信還有很多我不知道的好的,大家也多多挖掘。
1)電商秒殺
SpringBoot 完整電商系統(tǒng) Mall:包括前臺商城系統(tǒng)及后臺管理系統(tǒng),基于 SpringBoot+MyBatis 實(shí)現(xiàn)。
https://github.com/macrozheng/mall
miaosha:秒殺系統(tǒng)設(shè)計與實(shí)現(xiàn)。
https://github.com/qiurunze123/miaosha
2)博客論壇
vhr:微人事是一個前后端分離的人力資源管理系統(tǒng),項(xiàng)目采用 SpringBoot+Vue 開發(fā)。
https://github.com/lenve/vhr
halo([?he?lo?],意為光環(huán),也可以當(dāng)成拼音讀(哈嘍)):一個優(yōu)秀的開源博客發(fā)布應(yīng)用。
https://github.com/halo-dev/halo