JAVA 的學習路線圖
JAVA 語言是一門非常流行和重要的語言,目前仍是需求量很大的語言,應用範圍很廣的語言,在:企業級開發、移動開發、大數據雲計算、人工智能等領域都有大量的應用。 怎麼樣學習好 JAVA 語言,達到可以輕鬆就業的地步,是每個初學者都關注的話題。我們一般將 JAVA 編程的學習分爲這四個大階段:基礎階段、WEB 開發階段、框架階段、高級技術階段。各階段具體學習內容和方法如下:
一、基礎階段
基礎階段的學習說白了就是 JAVASE 的學習,這是基礎的階段。目標是讓初學者進入編程的殿堂,具備基本的編程思維。在這個階段我們可以再細分爲如下內容:
- JAVA 編程入門
入門階段主要學習:變量、數據類型、控制語句這些基本的概念。這些技術是所有編程語言都有的內容。很基礎也很重要。專心學完,大約需要 3 天時間。 - 面向對象
面向對象是深入學習 JAVA 的核心,也是大家真正進入 JAVA 世界的難點和重點。 這裏會有各種各樣的概念,非常重要。但是,大家在學習面向對象的時候,先注意 “開始學習語法和概念,不要期望一口氣學的很透徹。面向對象,需要大家在後面做項目時才能深入體會如何將面向對象思想應用於實踐”。因此,我建議大家不要在此處過於糾結概念,能學多少學多少,遇到不懂的概念,先記結論開始用,快速往後學,不要停留過長的時間在此處。如果全天候學習,建議學習時間 3 天。 - 異常
異常是 JAVA 安全機制的核心,也是讓我們程序更易懂更穩定的核心。初學異常重在理解概念、學習如何解決異常的思路。如果全天候學習,建議學習時間 0.5 天。 - 數組
數組是常用的概念。在學習本內容的時候,掌握核心“數組也是對象,數組的元 素相當於對象的成員變量”,理解了這一句話,就掌握了數組的一大半了。數組學習時順便學習一下一些基本的算法,比如:排序、二分法等。這樣,既可以學習數組,也能複習前面的控制語句、面向對象等知識。因此,在此處可以多做練習, 停留時間長一點。如果全天候學習,建議學習時間 2 天。 - 常用類
我們重點掌握常用類的用法,學習 API 的查詢和使用。如果你想更深入,學習時可以閱讀這些常用類的底層源碼,開始培養高手的格局。如果全天候學習,建議學 習時間 2 天。 - 容器
容器是開發中常用的內容。學習容器時,既要學習相關類和接口的使用,也要明白容器的底層原理。容器的底層實現和數據結構知識緊密掛鉤。也是,我們在工作和麪試中經常會碰到的問題。因此,容器需要初學者花大力氣學習,並且要深入底 層,明白底層的核心機制。如果全天候學習,建議學習時間 2 天。 - 多線程
多線程的 JAVA 語言的特點。我們在後續學習服務器編程時,服務器的底層核心機制就是基於“多線程”的。因此,我們需要掌握多線程的基本原理和應用。爲了後續學習併發編程,也有必要學習一下“生產者消費者模式”、“鎖機制”、 “TheadLocal”、“線程池”等高端一點的概念。如果全天候學習,建議學習時間 2 天。 - 網絡編程
更容器的網絡編程是 JAVA 在互聯網時代擊敗 C++的關鍵。我們需要掌握 TCP 編 程、UDP 編程的經典模式,但是不需要太深入去學習。因爲,大多數項目開發時底層都做好了封裝。如果全天候學習,建議學習時間 2 天。
二、WEB 服務器開發階段
學習 JAVA,大多數人最終會進入服務器編程、企業級開發領域。因此,爲了能夠完整地編寫項目。這個階段我們也要學習一些 JAVA 之外的技術:網頁開發和設計、數據庫編程。JAVA之內的技術有:Servlet、JSP、標籤庫、服務器等。這都是大家進入開發領域必須要學習的內容,光會 JAVASE 是不能實現就業、不能獨立開發項目的。但是,學完本階段的技能,大家就可以獨立開發一些項目、具備初步的就業能力了。
-
網頁開發和設計
JAVA 程序員主要完成服務器端的開發,但是對於瀏覽器端如何展現數據也是很有必要掌握的。網頁開發的基本知識可以說是必學的技能。HTML, CSS, JavaScript, JQuery等。網頁開發也是專門的專業,JAVA 程序員去學習,掌握基本概念即可,不需要深入太多細節。大家在學習的時候,把握好“度”。如果全天候學習,建議學習時間 7 天。
-
數據庫編程和設計
數據庫是絕大多數項目的存儲的核心,因此,作爲 JAVA 程序員也必須掌握。在學習數據庫技術時,重點掌握 SQL 查詢、表的設計範式、JDBC 技術、ORM 思想和 Mybatis 框架。其他關於數據庫管理的知識不需要掌握太多。如果全天候學習,建議學習時間 9 天。(互聯網公司首選 MySQL,其次Oracle,最後SQL Server…)
-
Tomcat
Tomcat 服務器是一個開源的輕量級Web應用服務器,在中小型系統和併發量小的場合下被普遍使用,是開發和調試Servlet、JSP 程序的首選。如果全天候學習,建議學習時間 0.5 天。
-
Servlet 和 JSP 技術
Servlet 和 JSP 是 JAVA 服務器開發的核心技術,也是必備技能。重點掌握如下知識: HTTP 協議、Tomcat 服務器、Servlet、Jsp、EL 表達式和標籤庫。如果全天候學習, 建議學習時間 5 天。(雖然在前後端分離模式盛行的時代,JSP顯露出頹勢,但在一些中小型公司中仍在使用,也是目前JAVA WEB 攻城貓必備的。)
-
做一個簡單的項目
學到現在,大家已經具備初步的項目開發能力。非常有必要通過一個項目,將所學的知識串聯一遍,強化所學成果。同時,也通過項目開發的學習,真正進入 JAVA 企業級開發的行列。如果全天候學習,建議學習時間 5 天。
三、框架階段
框架作爲企業使用的重要技術, 其本質是寫更少的代碼,做更多的事情, 從而大大減碼量, 讓程序員更加關注業務的實現。 自己寫的少 了,都是用別人寫好的東西就要明白別人寫了什麼,學習框架重難點不僅僅是如果使用框架而是要明白別人到底寫了什麼。 但是也要掌握好”度”, 不要一味追求底層, 要”擇其重”, 否則可能出現東西太多, 永遠也學習不完的情況。
-
MyBatis 框架
學習 MyBatis 框架要知道它是一個持久層框架。它的主要職責就是完成數據庫操作,因此也要求我們有一定的 SQL 基礎。MyBatis 靈活就體現在所有 SQL 都是程序員編寫,想要什麼樣的結果就寫什麼樣的 SQL 命令,剩下大部分的事情都交給 MyBatis 完成了。我們把Mybatis 放到了學完 JDBC 之後,這樣既可以鞏固 JDBC 和數據庫知識,也能在即將要做的項目中開始使用 Mybatis,這樣更貼合企業實戰。如果全天候學習,建議學習時間 3 天。 -
Spring 框架
學習 Spring 框架的目標很明確, 就是學習好 IOC/DI、 AOP、 聲明式事務。 單獨使用 Spring 很簡單,重點是學習了核心功能後如何把這些功能運行。目前大部分技術都需要被 Spring 整合, 所以 Spring 是很重要的框架。 Spring 框架不是專注於某一層, 哪裏都有 Spring 的影子。所以基礎語法學習好後要多做幾個項目去, 才能真正的感受到 Spring 的魅力。如果全天候學習,建議學習時間 3 天。 -
SpringMVC 框架
SpringMVC 做爲 MVC 框架, 其關注點就是控制器的編寫。如何接收參數, 如何傳遞內容到頁面,還有大量註解這些都是核心。學習時把握好主脈, 要從運行原理入手, 清楚的知道里面的核心組件, 學習起來就事半功倍了。如果全天候學習,建議學習時間 3 天。 -
Shiro 安全框架
Shiro 應用場景都是在權限、安全上,應用場景很明確,所以就導致 Shiro 裏面有着大量專業術語。 學習 Shiro 從架構圖出發,清晰的記憶所有專業術語。我們分兩大塊學習 Shiro ,分別是:認證和授權。如果全天候學習,建議學習時間 2 天。 -
Maven
Maven是項目構建工具,必須先要弄清楚分佈式的概念。 從學習了 Maven 後每個項目可能不是一個 Project 而是很多個, 所以重難點是項目和項目之間的關係以及 Maven 中 POM 的配置。如果全天候學習,建議學習時間 1 天。 -
做一個完整的SSM項目
學到現在,大家已經完全具備JAVA EE 項目的獨立開發能力。非常有必要通過一個完整項目,將所學的知識串聯一遍,強化所學成果。同時,也通過項目開發的學習,真正進入 JAVA 企業級開發的行列。如果全天候學習,建議學習時間 7 天。
-
Spring Boot框架
學完MyBatis、Spring、Spring MVC整合後,一定會被其繁瑣的配置,搞得頭昏腦脹,那麼你就可以好好感受一下Spring Boot的魅力嘍。從最根本上來講,Spring Boot 就是一些庫的集合,它能夠被任意項目的構建系統所使用。它使用 “約定大於配置” 的理念讓你的項目快速運行起來。用大佬的話來理解,就是 Spring Boot 其實不是什麼新的框架,它默認配置了很多框架的使用方式,就像 Maven 整合了所有的 jar 包,Spring Boot 整合了所有的框架。如果全天候學習,建議學習時間 3 天。
-
Spring Security框架
一個能夠爲基於Spring的企業應用系統提供聲明式的安全訪問控制解決方式的安全框架(簡單說是對訪問權限進行控制嘛),應用的安全性包括用戶認證(Authentication)和用戶授權(Authorization)兩個部分。用戶認證指的是驗證某個用戶是否爲系統中的合法主體,也就是說用戶能否訪問該系統。用戶認證一般要求用戶提供用戶名和密碼。系統通過校驗用戶名和密碼來完成認證過程。用戶授權指的是驗證某個用戶是否有權限執行某個操作。在一個系統中,不同用戶所具有的權限是不同的。比如對一個文件來說,有的用戶只能進行讀取,而有的用戶可以進行修改。一般來說,系統會爲不同的用戶分配不同的角色,而每個角色則對應一系列的權限。 Spring Security的主要核心功能爲認證和授權,所有的架構也是基於這兩個核心功能去實現的。如果全天候學習,建議學習時間 3 天。
四、高級技術階段
高級技術階段是隨着電商火熱後被大量使用的,這些技術大部分都是爲了解決”高負載”,”高併發”等使用。
-
Linux
Linux 是操作系統,學習 Linux 就是爲了讓自己開發的項目發佈到 Linux 中,所以學習 Linux 的主要要求是如何把項目運行的環境都配置出來。作爲 JAVA 程序員不要求掌握特別深的 Linux 知識,掌握基本操作即可。如果全天候學習,建議學習時間 2 天。 -
Docker
Docker是一個開源的應用容器引擎,開發者可以打包自己的應用到容器裏面,然後遷移到其他機器的Docker應用中,可以實現快速部署。如果出現的故障,可以通過鏡像,快速恢復服務。諸多高級技術都可以基於Docker,實現快速安裝部署,因此推薦優先學習。如果全天候學習,建議學習時間 2 天。
-
Spring Cloud
首先,儘管Spring Cloud帶有“Cloud”這個單詞,但它並不是雲計算解決方案,而是一個基於Spring Boot實現的雲原生應用開發工具,它爲基於JVM的雲原生應用開發中涉及的配置管理、服務發現、熔斷器、智能路由、微代理、控制總線、分佈式會話和集羣狀態管理等操作提供了一種簡單的開發方式。如果全天候學習,建議學習時間 3 天。 -
Redis
NoSQL 數據庫在企業中使用越來越多,主要的優點就是效率高。每個 NoSQL 數據 庫有着自己獨有的操作 API,所以在能夠熟練安裝 Redis 基礎上,更要熟練使用 Jedis、Spring Data Redis 操作 Redis。如果全天候學習,建議學習時間 2 天。 -
Rabbit MQ
基於隊列實現,明白隊列概念後,把 Rabbit MQ 安裝上可以很快的上手。如果全天候學習,建議學習時間 3 天。 -
Lucene
Lucene是一套用於全文檢索和搜尋的開源程序庫,提供了一個簡單卻強大的應用程序接口(API),能夠做全文索引和搜尋,Lucene並不是現成的搜索引擎產品,但可以用來製作搜索引擎產品。如果全天候學習,建議學習時間 1 天。
-
Solr
Solr 搜索,先要能夠搭建 SolrCloud。 學會使用 SolrJ 之後,還需要明白”索引”, 搜索算法,Solr 實現原理才能掌握好 Solr。如果全天候學習,建議學習時間 2 天。 -
ElasticSearch
ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java語言開發的,並作爲Apache許可條款下的開放源碼發佈,是一種流行的企業級搜索引擎。ElasticSearch用於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。官方客戶端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和許多其他語言中都是可用的。如果全天候學習,建議學習時間 3 天。
-
Nginx
先要弄清楚反向代理的概念,代理本機目錄和代理其他主機。 熟練安裝 Nginx 和 配置 Nginx 是學習 Nginx 的重點。如果全天候學習,建議學習時間 1 天。 -
MyCat
爲了保留關係型數據的優點,MyCat 作爲一個解決 MySql 不能分庫分表的解決方案。學習 MyCat 先從配置 MySQL 主從備份開始,然後熟練配置 MyCat 配置文件。如果全天候學習,建議學習時間 1 天。…
作爲開發人員,我們需要跟上技術發展的步伐。每天,我們都在學習新的編程語言、框架和庫。但是,技術和時尚一樣,正在以光速變化。這是一場沒有贏家的比賽,因爲技術的發展沒有終點。
五、設計模式和框架底層深化階段
設計模式是解決特定問題的較優代碼編寫方案。在程序開發中時時刻刻都有着設計模式。 學習設計模式必須理解代碼是爲了解決什麼問題。可以先把所有設計模式都學習完, 對於 GOF23 設計模式有一個基本的認識。 然後在學習成熟框架的底層代碼,這樣技能將框架學習更深入也能讓自己的底功更紮實。 學習設計模式可以拆分成多個小塊學習,不建議一次性佔用大量時間。
框架學習分爲兩種:
一種是使用一種是明白實現原理。 如果學習框架只是爲了知道如果搭建框架的環境, 如果使用框架,框架的學習還是比較容易的。但是如果想要非常清楚的明白每個功能是如何實現的就必須清楚的知道框架底層。 學習框架底層可以幫助我們在出現異常時快速的想到是什麼原因出現這個錯誤。 因爲 我們知道自己寫的代碼,也知道別人寫了什麼,出現了錯誤肯定會更好的解決。 MyBatis 框架底層可以從 SqlSessionFactory 入手, 一個類一個方法的往下跟蹤,一直跟蹤到 SqlSession 關閉。 Spring 的底層源碼要從 BeanFactory 和 ApplicationContext 入手,知道 Spring 容器作用。 SpringMVC 底層源碼可以從 DispatcherServlet 入手,觀察所有核心組件的運行過程。 每個框架可以自己繪製一份流程圖, 這樣更利於自己把整個框架的運行原理弄清晰框架底層內容可以在邊學習框架邊學習。
【注】框架底層的學習適合學有餘力的同學。如果掌握框架的使用都比較喫力,可以先放一下。熟練使用框架以後再深入底層。
六、綜合項目
技術技能學習完畢後,必須通過一個綜合的項目將所學知識串一遍。既是複習,也是昇華。我們採用“電商項目”作爲綜合項目。電商項目可以很簡單,也可以很複雜。有的所謂電商項目就是一個商品管理和購物車,但是一個京東商城也是電商項目。 所以,電商項目是一個非常好的可以串聯知識點的項目,以及解決高併發問題好的場景。
七、面試和求職
技術學習完畢了,我們也必須掌握一些基本的面試知識,讓自己在找工作和求職過程中最少做到“不喫虧”。如果這部分知識掌握到位,可以起到“畫龍點睛”的作用,讓自己的臨門一腳非常漂亮。爲自己的職場發展開好頭。
入職後如何快速成長(感興趣的可以去B站看看尚硅谷明哥的視頻)
-
入職後三個月試用期要做的事
- 三法寶,處理同事關係
- 核心兩點,處理好領導關係
- 每件事都是學習的機會
- 主動加班,試用期加班是學習的好機會
- 未通過試用期,如何應對?
-
前三年需要學的技術
- 工作後,千萬不要停止學習
- 項目經驗如何累積?
- JAVA 高級技術還需要學習哪些?
- 架構師課程如何學習?
- 工作中,快速學習新技術的捷徑(重要的是形成體系,而不是鑽到某個技術點)
-
前三年需要提高的軟實力
- 軟實力是真實力
- 軟實力的七要素,7A軟實力理論
- 好的溝通有方法
- 快速說服別人的技巧
- 口才也能練出來
- 領導力如何自我修煉
- 會議發言的三要素
- 酒宴祝詞、會議發言的完美公式
- 五點職場禮儀,讓你秒變職場受歡迎人士
- 軟實力是讓你脫穎而出的關鍵
ps:不管你現在的工作有多好,切記經常翻翻面試題
《就業無憂_明哥專有職場路線》
【就業攻略】
求職準備:BV1o4411p7An
就業技巧:BV1o4411p7An
初入職場:BV1o4411p7An
【職業素養】
時間管理:BV11t411J7ih
職場禮儀:BV1q4411U7TJ
溝通技巧:BV1QJ411R74p
心態修煉:BV1VJ411h7bk