Java學(xué)習(xí)步驟及路線(超詳細(xì))
我學(xué)習(xí)Java 已經(jīng)快四年了,在 Java 學(xué)習(xí)這條路上也踩過無數(shù)次的坑,恰巧有小伙伴問我 Java 學(xué)習(xí)的路線,我想著趁這次機(jī)會(huì)分享自己學(xué) Java 的路線,希望給小伙伴們一點(diǎn)幫助,避開路上的一些坑
小伙伴們有興趣想了解內(nèi)容和更多相關(guān)學(xué)習(xí)資料的請(qǐng)點(diǎn)贊收藏+評(píng)論轉(zhuǎn)發(fā)+關(guān)注我,后面會(huì)有很多干貨。我有一些面試題、架構(gòu)、設(shè)計(jì)類資料可以說是程序員面試必備!
所有資料都整理到網(wǎng)盤了,需要的話歡迎下載!私信我回復(fù)【資料】即可免費(fèi)獲取

首先,我先分享下自己對(duì)不同學(xué)習(xí)方式的理解,小伙伴們可以根據(jù)自己情況選擇。
看視頻系統(tǒng)學(xué)習(xí),比如培訓(xùn)機(jī)構(gòu)的課程、MOOC的課程等。看視頻的好處就是有老師帶著,易于理解和掌握,非常適合初學(xué)者。
看書學(xué)習(xí),如《Redis設(shè)計(jì)與實(shí)現(xiàn)》、《 Java 并發(fā)編程的藝術(shù)》,便于了解技術(shù)脈絡(luò)和深入學(xué)習(xí)知識(shí)點(diǎn)。
看博客和源碼精進(jìn)學(xué)習(xí)。博客的好處是有些知識(shí)點(diǎn)會(huì)以很通俗的方式講解出來,我們很好理解。
第一階段: Java 基礎(chǔ)
最開始要學(xué)習(xí)的是 Java 基礎(chǔ),學(xué)習(xí)了這部分,就會(huì)對(duì) Java 語言有一個(gè)初步的了解。其實(shí)大部分語言的基礎(chǔ)知識(shí)都是大同小異,如果之前已經(jīng)學(xué)習(xí)過其他語言如C、C++,那學(xué)習(xí)這部分會(huì)更快。
這部分主要學(xué)習(xí)的內(nèi)容有:基本程序結(jié)構(gòu),類與對(duì)象,接口,泛型,反射,集合,異常與調(diào)試, Java 網(wǎng)絡(luò)編程, Java I/O和多線程。
學(xué) Java 基礎(chǔ),
————————————————
除此之外,還可以閱讀《 Java 核心技術(shù) 卷I》,這本書偏向?qū)嵱?,廣度和深度都恰到好處。其中,第7-9章講述了 Java 的GUI編程, Java 的GUI開發(fā)使用并不多,這部分可以先跳過。
網(wǎng)上也有一些不錯(cuò)的文檔教程網(wǎng)站,可以輔助學(xué)習(xí):
菜鳥教程 Java :Java 教程 | 菜鳥教程
當(dāng)學(xué)完了這部分,就可以做個(gè)圖書管理系統(tǒng)、學(xué)生管理系統(tǒng)這樣的小項(xiàng)目了。還記得庫森在大二學(xué)完這部分,就跟著教程學(xué)做了個(gè)貪吃蛇游戲,還是蠻有成就感的。
當(dāng)然,時(shí)間有限的小伙伴,可以不用做這塊的項(xiàng)目,直接做 Java Web 項(xiàng)目就好了。
第二階段:數(shù)據(jù)庫
MySQL 和 Oracle 都是廣受企業(yè)歡迎的數(shù)據(jù)庫,其中 MySQL 是目前應(yīng)用最廣泛的開源關(guān)系數(shù)據(jù)庫,對(duì)于新手或者校招的小伙伴,我們目前只學(xué)習(xí) MySQL 就可以了。
這部分主要學(xué)習(xí)的內(nèi)容有:數(shù)據(jù)庫的CRUD操作、JDBC API、數(shù)據(jù)庫特性和數(shù)據(jù)庫連接池。
其中,數(shù)據(jù)庫連接池是為了避免頻繁地創(chuàng)建和銷毀 JDBC 連接,常見連接池包括 C3P0,Druid 和 HikariCP,目前使用最廣泛的是HikariCP。
書籍方面,推薦入門的小伙伴看《MySQL必知必會(huì)》,是一本小冊(cè)子,這本書實(shí)踐性很強(qiáng),基本沒有什么理論的堆砌,非常適合入門。
如果想要深入學(xué)習(xí),可以看《高性能 MySQL》,這本書是MySQL領(lǐng)域的經(jīng)典之作,不過就是太厚了,面試重點(diǎn)看索引部分就可以了。
除此之外,如果要深入學(xué)習(xí)MySQL的使用和原理,可以看極客時(shí)間的專欄《MySQL實(shí)戰(zhàn)45講》,阿里資深技術(shù)專家講解的課程,有很多生產(chǎn)經(jīng)常遇到的問題,非常有深度。
第三階段: Java Web
學(xué)習(xí) Java Web,我們不僅需要掌握后端 Java 技術(shù),還需要學(xué)習(xí)些前端知識(shí)。
前端有三大基礎(chǔ)技術(shù) Html、CSS和 Java Script,初學(xué)的話,學(xué)習(xí)這些就可以了。如果想做出更好的交互式效果,可以再學(xué)習(xí)Vue和React等前端技術(shù)。
后端 Java 技術(shù)包括 Servlet、Filter、Listener、Session、Cookie、JSP、EL 表達(dá)式和 JSTL 等。
其中,像 JSP 這樣比較老的技術(shù),目前在各大互聯(lián)網(wǎng)公司基本不再使用,已經(jīng)被 Freemark、Thymeleaf 這樣的模板引擎所替代,我們只需要了解基本使用即可。
入門 Java Web,推薦尚硅谷的 Java Web 教程,教程不僅包括前端三大技術(shù),還有后端 Java 技術(shù),最后還會(huì)帶大家做一個(gè)書城項(xiàng)目。
第四階段:主流框架
這部分我們要學(xué)習(xí)的主流框架主要有 Spring、Spring MVC 和 MyBatis,俗稱 SSM 框架。
曾經(jīng)的 SSH 框架,即 Struts2、Spring、Hibernate 框架,已經(jīng)逐漸被 SSM 替代,現(xiàn)在可以不用再學(xué) Struts2 和 Hibernate 框架了。
學(xué)習(xí)這些框架之前,我們先來學(xué)習(xí)項(xiàng)目管理利器Maven和Git。
Maven
Maven 是一個(gè)項(xiàng)目管理工具,它基于項(xiàng)目對(duì)象模型(POM)的概念,它可以管理項(xiàng)目的構(gòu)建、報(bào)告和文檔。
Maven 本質(zhì)就是一個(gè)巨大的 jar 包資源庫,使用 Maven 構(gòu)建項(xiàng)目,只需在項(xiàng)目的 pom.xml 中配置相關(guān)依賴后,就可以直接從遠(yuǎn)程倉庫同步到本地,再也不用滿世界搜索下載 jar 包了,省了很多查找和下載的煩惱。
Git
Git 是一個(gè)開源的分布式版本控制系統(tǒng),最大作用就是對(duì)文件進(jìn)行版本管理,方便在不同版本進(jìn)行切換修改,還可以很方便的協(xié)作開發(fā)。
GitHub 是基于 Git 的代碼庫托管站,學(xué)會(huì)了 Git ,我們就能愉快地上 Github 交友了。
喜歡文字版的小伙伴,推薦看廖雪峰的 Git 教程,很淺顯易懂
方便查閱的 Git 中文手冊(cè):Git - Book
SSM框架
Spring 是一個(gè)輕量級(jí)的 Java 開發(fā)框架,現(xiàn)在已經(jīng)是最受歡迎的企業(yè)級(jí) Java 應(yīng)用程序開發(fā)框架,目前已經(jīng)更新到 Spring5。
Spring 框架的核心特性是依賴注入(DI)與面向切面編程(AOP),Spring 框架的組成結(jié)構(gòu)圖如下所示:
Spring MVC 是一個(gè)基于MVC架構(gòu),用來簡化web應(yīng)用程序開發(fā)的框架,它是 Spring 的一部分,SpringMVC 已經(jīng)成為目前最主流的 MVC 框架之一。
MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲(chǔ)過程以及高級(jí)映射。
在使用傳統(tǒng)JDBC時(shí),往往需要寫很多JDBC代碼,需要自己寫SQL語句以及自己裝配參數(shù),然后自己對(duì)結(jié)果集進(jìn)行封裝處理。
而Mybatis則幫我們簡化了以上功能,只需要一些配置文件(xml)或是注解即可完成對(duì)數(shù)據(jù)庫的查詢以及結(jié)果的映射封裝。
學(xué)習(xí)SSM框架,推薦使用一整套課程進(jìn)行學(xué)習(xí),會(huì)有更好的連貫性,而且還會(huì)學(xué)習(xí)整合SSM框架。
整合SSM框架還是比較繁瑣的,庫森之前學(xué)習(xí)時(shí)就整合了一天,時(shí)間緊張的小伙伴可以不用在整合這里花費(fèi)時(shí)間,因?yàn)檫@種整合方式目前也不在流行了,現(xiàn)在直接使用更強(qiáng)大的利器Spring Boot就可以了。
Spring Boot
Spring Boot 采用約定大約配置的方式,大量的減少了配置文件的使用,從而使開發(fā)人員不再需要定義樣板化的配置。
學(xué)習(xí) Spring Boot,推薦雷豐陽老師的 Spring Boot 課程,課程基于 SpringBoot2.3與2.4 版本,包含核心基礎(chǔ)、Web原理、單元測(cè)試、數(shù)據(jù)訪問、指標(biāo)監(jiān)控等章節(jié)。
那要不要跳過了 SSM 直接去學(xué)習(xí) Spring Boot呢?
如果只是為了使用 Spring Boot,當(dāng)然可以跳過,畢竟 SSM 配置太繁瑣了。
如果想深入學(xué)習(xí),尤其是找 Java 開發(fā)的工作,面試中會(huì)出現(xiàn)很多 Spring 的底層問題,因此還是要學(xué)習(xí) SSM 的,如果跳過了不利于學(xué)習(xí)原理。
第五階段:服務(wù)器中間件
學(xué)完上面的內(nèi)容,我們已經(jīng)具備實(shí)際項(xiàng)目的開發(fā)能力了,但是要解決些復(fù)雜的業(yè)務(wù)場(chǎng)景,我們還要學(xué)習(xí)Redis、MQ、Elasticsearch這些中間件。
Redis
Redis 是一個(gè) key-value 存儲(chǔ)系統(tǒng),是跨平臺(tái)的非關(guān)系型數(shù)據(jù)庫,可用作數(shù)據(jù)庫,高速緩存和消息隊(duì)列代理。
Redis作為當(dāng)下主流的緩存技術(shù),已經(jīng)成為互聯(lián)網(wǎng)企業(yè)的不二首選。
想深入學(xué)習(xí)的小伙伴,推薦閱讀《Redis設(shè)計(jì)與實(shí)現(xiàn)》,知識(shí)點(diǎn)非常豐富,講了很多底層的原理,我曾經(jīng)看了三遍,對(duì)我面試幫助很大,非常推薦!
Redis 設(shè)計(jì)與實(shí)現(xiàn)在線版:Redis 設(shè)計(jì)與實(shí)現(xiàn) — Redis 設(shè)計(jì)與實(shí)現(xiàn)
查詢Redis命令的中文網(wǎng)站:Redis中文教程
MQ
MQ(Message Queue)是一種跨進(jìn)程的通信機(jī)制,用于傳遞消息。通俗點(diǎn)說,就是一個(gè)先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)。MQ有三大主要作用分別為解耦、異步、削峰/限流。
?
我最開始學(xué)習(xí)的是Kafka,因?yàn)樽龅捻?xiàng)目中使用到了,小伙伴們根據(jù)喜好或者項(xiàng)目需要,選擇一款MQ學(xué)習(xí)就可以了。
此外,如果要深入學(xué)習(xí),可以閱讀《Kafka權(quán)威指南》,這本書由Kafka作者執(zhí)筆,覆蓋比較全面。
Elasticsearch
全文搜索屬于最常見的需求,開源的 Elasticsearch是目前全文搜索引擎的首選。
它可以快速地儲(chǔ)存、搜索和分析海量數(shù)據(jù)。維基百科、Stack Overflow、Github 都采用它。
Elasticsearch的底層是開源庫 Lucene。但是,必須自己寫代碼去調(diào)用Lucene的接口。Elastic 是 Lucene 的封裝,提供了 REST API 的操作接口,開箱即用。
項(xiàng)目實(shí)踐
學(xué)完了這些,就可以把這些技術(shù)整合起來做個(gè)項(xiàng)目,這里推薦個(gè)我做過的社區(qū)論壇項(xiàng)目。
這個(gè)論壇項(xiàng)目不僅實(shí)現(xiàn)了基本的注冊(cè),登錄,發(fā)帖,評(píng)論,點(diǎn)贊,回復(fù)功能,同時(shí)使用前綴樹實(shí)現(xiàn)敏感詞過濾,使用wkhtmltopdf生成長圖和pdf,實(shí)現(xiàn)網(wǎng)站UV和DAU統(tǒng)計(jì),并將用戶頭像等信息存于七牛云服務(wù)器。
這是項(xiàng)目使用到的相關(guān)技術(shù):
?
這個(gè)項(xiàng)目作為Spring Boot實(shí)戰(zhàn)練手很不錯(cuò),老師講解的很清晰,課程的深度和廣度都有,而且課程最后還會(huì)手把手教大家將項(xiàng)目部署在云服務(wù)器。
課程中也會(huì)簡要講解Redis、Kafka和Elasticsearch,即使沒有學(xué)過這些技術(shù),仍然可以學(xué)習(xí)這個(gè)項(xiàng)目。
補(bǔ)充一點(diǎn),現(xiàn)在的服務(wù)器基本都是Linux系統(tǒng),將項(xiàng)目部署在服務(wù)器,學(xué)習(xí)些基本的Linux命令是必不可少的。
Linux命令在線查詢:Linux命令搜索引擎 命令,Linux Linux命令搜索引擎 命令詳解:最專業(yè)的Linux命令大全,內(nèi)容包含Linux命令手冊(cè)、詳解、學(xué)習(xí),值得收藏的Linux命令速查手冊(cè)。 - Linux 命令搜索引擎
第六階段:微服務(wù)和分布式
對(duì)于實(shí)習(xí)和校招的小伙伴來講,學(xué)好前五階段的技術(shù)知識(shí),再深入學(xué)習(xí)個(gè)技術(shù)點(diǎn)就可以了,如果還有時(shí)間和精力的小伙伴,可以學(xué)習(xí)微服務(wù)和分布式的內(nèi)容。
Spring Cloud
Spring Cloud 是一套完整的微服務(wù)解決方案,基于 Spring Boot框架。
準(zhǔn)確的說,Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發(fā)便利性簡化了分布式系統(tǒng)的開發(fā),比如服務(wù)發(fā)現(xiàn)、服務(wù)網(wǎng)關(guān)、服務(wù)路由、鏈路追蹤等。
Dubbo
值得一提的是,還有阿里開源Dubbo,Dubbo一個(gè)高性能優(yōu)秀的服務(wù)框架。簡單地說,Dubbo是一個(gè)基于Spring的RPC(遠(yuǎn)程過程調(diào)用)框架,能夠?qū)崿F(xiàn)服務(wù)的遠(yuǎn)程調(diào)用、服務(wù)的治理。
至于Spring Cloud 和Dubbo 有什么區(qū)別,大家可以搜索下。這里用網(wǎng)絡(luò)上一個(gè)臺(tái)式電腦的比喻來說就是:Dubbo 是品牌機(jī),Spring Cloud 是組裝機(jī)。
ZooKeeper
ZooKeeper是一個(gè)高可用的分布式管理與協(xié)調(diào)框架,基于ZAB算法(原子消息廣播協(xié)議)的實(shí)現(xiàn)。該框架能夠保證分布式環(huán)境中數(shù)據(jù)的一致性,使得ZooKeeper成為了解決分布式一致性問題的利器。
第七階段:進(jìn)階優(yōu)化
學(xué)會(huì)前面這些,我們就可以獨(dú)立完成一個(gè)小項(xiàng)目,獨(dú)立完成項(xiàng)目組分配給你的開發(fā)任務(wù)。
但是這還不足以寫出好的代碼,我們要想寫出好的代碼,還需要學(xué)習(xí)設(shè)計(jì)模式,學(xué)習(xí)多線程,以及JVM的內(nèi)部原理等。同樣,這些也是面試的必考點(diǎn)。
設(shè)計(jì)模式的書籍推薦《HeadFirst設(shè)計(jì)模式》,這是一本圖文并茂的書籍,適合入門。
JVM 的書籍推薦《深入理解 Java 虛擬機(jī)》,這本書是 Java 開發(fā)者必看的書,很多 JVM 的文章都是來自這本書。
Java 并發(fā)方面,可以看《 Java 并發(fā)編程的藝術(shù)》,這本書深入到JVM、CPU層面講解了 Java 并發(fā)框架、線程池的原理等,面對(duì)面試足夠了;還有《并發(fā)編程實(shí)戰(zhàn)》,這是一本不錯(cuò)的 Java 并發(fā)參考手冊(cè)。
想要領(lǐng)取資料的小伙伴們,請(qǐng)關(guān)注下方微信公眾號(hào)領(lǐng)取哦~
然后就等著私信查收吧~

