肝了一個月,終於把Java學習路線、面試題資源和電子書資源都整理好了。
Java 從基礎到微服務的學習路線,其中還包括科班知識、學習建議、後續的學習引導和相應的學習資源(視訊、書籍、網站),還整理了Java 面試題,資源都在文末。
寫這一篇文章的目的很明確,在個人能力的基礎上給小夥伴一個迴圈漸進的 Java全棧學習路線。為小夥伴布好道路,讓學習的路途儘可能的通暢。
在這裡點綴下個人對程式設計的三個層次的理解:
-
從學會使用(知其表)
-
到深入架構設計原理(知其理)
-
再到自研技術(思想鑄造)
而本文的學習路線只有前面兩個層次,關於“自研層面”屬於思想的再創作,恕我無能為力。
能力有限,如有不對,還望糾正。
0.知識廣度和深度
對於從事技術開發行業,著重的是技術的應用,技術知識使用起來才能實現它的價值。技術知識的廣度就像金字塔的底部,深度就像金字塔的高度,金字塔的底面積大小將決定金字塔的高低,知識面的廣度決定深度,深度將決定你在這行業能不能混的好的基礎,如果你是做技術的話。
廣度:可通過不斷學習新技術來拓寬;
深度:基於已有知識深入研究其奧妙。
在這學習路線一開始就先拓寬技術知識面,著重技術的基礎使用;後續再深入學習,學習其中的架構設計原理,理解設計者的核心思想,從而提高知識的深度,不至於只知其表不知其理。深入學習後漸漸地就會感受到程式設計思想帶來的質變,是程式設計能力提高最關鍵的一步,也是邁進“自研層面”的第一步。
每階段都配有學習網站和相應書籍,還有階段專案鞏固所學知識。
1.第一部分:Java基礎
必須理解物件導向程式設計,並掌握Java基礎知識怎麼使用,通過Java程式語言實現一些功能。比如:實現程式和文字的讀寫(記憶體和磁碟的互動),簡單的多人聊天室(客戶端和服務端的互動)。
領悟兩點:
第一點:有了這些基礎,你可以嘗試看看原始碼(比如:String類的原始碼),部分原始碼看得懂了,可能比較費勁。
第二點:所有的服務端程式語言都具備IO流、網路程式設計、多執行緒等等這些基礎能力,掌握一門程式語言基礎對於學習其他程式語言基礎那就簡單多了。
2.第二部分:MySQL基礎
掌握命令的方式操作MySQL 的基礎使用;通過JDBC 技術實現對MySQL資料庫資料的增刪查改。
3.第三部分:JavaWeb
前面兩部分是學習Java應用的開發,這部分開始學習Java的web系統開發,主要學習JavaWeb 基礎和前端基礎知識。學習完這部分,可以基於JavaWeb開發網站、管理系統等,比如:基於JavaWeb的後臺管理系統、音樂網站。但是目前直接使用JavaWeb 基礎技術開發web系統的很少,一般都是使用框架技術快速開發安全又美觀的系統。所以接下來學習主流框架技術。
4.第四部分:主流框架和技術
框架技術主要分為前端和後端框架,目前國內前端以Vue全家桶為主,整合各種框架來完成前端開發;後端以SSM框架技術為主,整合其他框架來完成後端開發。開發框架的主要作用是避免重複造輪子,提高開發效率,降低運維難度,降低人員成本,降低專案風險等等。
學到這裡應該知道一些網站架構模式:分層模式,叢集模式,快取模式。
-
分層模式:常見的有MVC,MVVM,7層的網路通訊協議等等。
-
叢集模式:多臺伺服器部署相同的應用構成一個叢集,並通過負載均衡裝置共同對外提供服務,提高可用性和併發數。
-
快取模式:使用快取技術提高系統效能。
學習這些模式的使用帶來新的問題
-
叢集模式帶來的新問題,如:有/無狀態服務。
-
快取模式帶來的新問題,如:快取穿透。
-
通過快取模式解決叢集模式帶來的新問題,如:會話記錄。
先學會框架的使用,再通過閱讀原始碼、相關文件來掌握框架中使用到的程式設計思想、程式設計技巧和架構設計,最後在開發的過程中是否能使用上這些程式設計思想、程式設計技巧和架構設計。
5.第五部分:回顧並進階
這部分主要是進階之前的學習內容和學習更多技術,這都是分散式功能實現需要用到的基礎技術。當業務服務變得越來越複雜,部署的服務也越來越多,服務之間錯綜複雜,難於管理時,就需要自動化的東西替代人類勞動力去解決這一系列問題,所以下個部分內容就是學習分散式服務治理和微服務知識。
6.第六部分:微服務篇
學習各種各樣的技術來解決分散式帶來的新問題,這些技術的實現都是為了治理錯綜複雜的業務服務,並提高業務響應速度,服務可用性,效能,擴充套件性和安全性等等。
7.程式設計基礎的擴充套件--科班知識(內功)
這一部分的學習是枯燥的,是要掉頭髮的,但又是必須學習的。關於必學的內容都放前面了,尤其是軟體工程、計算機網路、作業系統、資料結構和演算法。
8.學習更多
不斷學習成長,往更高處走。這只是拋磚引玉,真的要深入學這幾本書還真不夠。比如架構設計,要從程式設計師走向架構師,這必須得學;想了解更多有關“雲技術”,可以到阿里等各大雲平臺的開發者社群學習等等。這個就看自己的選擇了。
9.學習的一些建議
以上是個人的一些建議。在這裡給愛拖延的小夥伴一個行之有效的建議:別幹想,行動起來。
10.面試篇
面試資源主要都是來源於網路,做了分類整理,也將部分不易於閱讀的處理了(很費時間……)
比如:
處理前:朦朧和擋住了部分內容
處理後:
11.總結
從Java基礎到微服務的學習路線和相應的電子書,都已經分享到GitHub,
GitHub連結:https://github.com/yuantingyue/JavaLearningRoutes-Books
後續會不斷完善學習路線和學習資源,分享更多的知識和更多資源,一起成長,共勉?
想獲得最新訊息可關注WX公眾號:Java全棧佈道師
點贊走起?
原創不易,轉載指明出處,違者必究!!!