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

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

基礎知識又包括如下知識點:

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

IO知識主要實現(xiàn)文件或者網(wǎng)絡的輸入/輸出操作,主要包括如下內(nèi)容:

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

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

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

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

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

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

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

七、服務器篇
服務器 重點主要是軟件安裝部署、服務器使用原理,容器化技術等,作為Java程序員不會部署服務器那絕對不是好技術員。

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