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