Web後端 JAVA學習之路
-
1.Java分類
-
Java按應用來分,能夠分爲J2ME(手機版),J2SE(標準版),J2EE(企業版)三部分。
・J2ME:已經被安卓開發取代。
・J2SE:Java的核心類,其中包括桌面應用,但通常不用Java開發桌面應用。
・J2EE:已經被以Spring爲表明的開源框架所取代,統稱爲JavaWeb。
Java程序的優點是Linux下的大規模集羣環境下的代碼編寫,好比大型網站的後臺支撐系統。
因此,若是不考慮手機應用開發和桌面開發的話,咱們應該按照J2SE+JavaWeb+分佈式系統的路線來學習Java。
-
2.學習路線簡介
-
-
・J2SE學習階段:
-
完成對Java的語法,編程思想,數據結構和算法的學習。
-
・JavaWeb學習階段:
-
完成B/S架構的基礎知識(Html,JavaScript,Ajax,Jsp,Servlet,SQL),產品特性(瀏覽器,服務器,數據庫),框架特性(SSM),設計模式的學習。
-
・分佈式系統學習階段:
-
完成分佈式系統的架構,微服務架構(SpringCloud),消息隊列(kafka),緩存(redis),協調中心(zookeeper)等學習。
-
3.學習路線詳細
-
・J2SE
-
-
[推薦書籍]
-
《Java語言程序設計》大衆化的教科書方式,不深不淺,知識點基本上很全,適合初學者。能夠按照書中目錄瞭解知識點,沒必要深究具體概念。
《深刻理解Java虛擬機》《深刻Java虛擬機》精讀(JVM指令和class文件結構部分不須要精度,瞭解一下便可)
《算法導論》算法證實部分能夠不看,但課後題必定要本身作。
-
[環境]
-
DOS環境搭建知道爲何要設置path變量
-
Eclipse環境搭建會搭建環境便可,不要花費時間研究工具的使用
-
[基礎]
-
程序流程圖會畫基本流程圖,用例圖,泳道圖便可,不要花時間研究各類圖
-
基本數據類型,表達式,函數
-
分支,循環
-
一維數組,二維數組
-
List,Map
-
對象,類
-
繼承,封裝,多態
-
抽象類,接口
-
異常處理
-
[圖形界面]
-
Swing基本組件能畫界面,處理點擊事件便可,不要花費時間
-
事件分發和監聽機制
-
自定義事件重點
-
[I/O]
-
文件讀寫會讀寫文件便可,其餘隨用隨學
-
[網絡編程]
-
TCP/IP協議重點,但不要死背,結合實際應用理解基本的請求格式,返回狀態碼含義
-
Thread,Runnable結合JMM模型和Concurren包裏的東西看
-
線程池,線程同步結合JMM模型和Concurren包裏的東西看
-
生產者消費者重點
-
Socket實際用起來
-
[數據庫編程]
-
SQL(添刪改查)重點
-
JDBC結合實際用起來,不要死背概念
-
[數據結構與算法]持久戰,邊學其餘知識邊在leetcode上刷題
-
大O表示法
-
數組,鏈表,隊列,棧。
-
排序(冒泡排序,插入排序,快速排序,堆排序,桶排序等)
-
二叉樹
-
Hash散列
-
動態規劃
-
圖的遍歷,最短路徑
-
[Java虛擬機]重點,從調優,排查問題,運行時內存分佈等角度來學習
-
Java虛擬機結構
-
類加載機制
-
垃圾回收機制
-
[框架技術]不要死背概念,本身作一套框架
-
Java反射
-
動態代理(jdk與cglib)
-
・JavaWeb
-
-
[推薦書籍]
-
《HeadFirst設計模式》設計模式不是技術,但要了解每一種設計模式,不要把設計模式做爲重點
《Java併發編程實戰》精讀,結合下面列出的《四火的文章》和《聊聊併發系列》來讀
《構建高性能Web站點》精讀
-
[推薦文章]
-
-
四火的文章
-
Java 多線程發展簡史
-
java.util.concurrent 併發包諸類概覽
-
聊聊併發系列
-
聊聊併發(一)深刻分析Volatile的實現原理
-
聊聊併發(二)Java SE1.6中的Synchronized
-
聊聊併發(三)Java線程池的分析和使用
-
聊聊併發(四)深刻分析ConcurrentHashMap
-
聊聊併發(五)原子操做的實現原理
-
聊聊併發(六)ConcurrentLinkedQueue的實現原理
-
聊聊併發(七)Java中的阻塞隊列
-
聊聊併發(八)Fork/Join框架介紹
-
聊聊併發(九)Java中的CopyOnWrite容器
-
聊聊併發(十)生產者消費者模式
-
深刻理解java內存模型系列
-
深刻理解java內存模型(一)——基礎
-
深刻理解java內存模型(二)——重排序
-
深刻理解java內存模型(三)——順序一致性
-
深刻理解java內存模型(四)——volatile
-
深刻理解java內存模型(五)——鎖
-
深刻理解java內存模型(六)——final
-
深刻理解java內存模型(七)——總結
-
[基礎知識]
-
Html,Css,JavaScript,Ajax不要花時間在上面,會作網頁便可,隨用隨學
-
Jsp,Servlet,Filter,XML
-
Cookie,Session重點
-
Http協議重點
-
Tomcat會用便可
-
鏈接池重點
-
[三層模型]
-
MVC理解概念便可,不要花時間在上面
-
Service
-
Dao
-
[經常使用框架]
-
Bootstrap不要花時間在上面,會作網頁便可,隨用隨學
-
JQuery不要花時間在上面,會作網頁便可,隨用隨學
-
SpringMVC瞭解經常使用配置便可,不要爲了讀源碼而讀源碼
-
Spring瞭解經常使用配置便可,不要爲了讀源碼而讀源碼
-
MyBatis瞭解經常使用配置便可,不要爲了讀源碼而讀源碼
-
[版本管理]
-
SVN,Git會checkout,checkin便可,不要花時間在上面
-
[集成]
-
Maven會用便可,不要花時間在上面
-
SpringBoot瞭解經常使用配置便可,不要爲了讀源碼而讀源碼
-
Linux基本操做(ssh,ftp,rpm,iptable,tar...)本身會在linux上安裝各類服務
-
[併發]重點,結合前面介紹的文章和書來學習
-
java.util.concurrent包
-
Java併發簡史
-
Java併發編程
-
Java內存模型
-
[性能]重點
-
SQL執行計劃
-
緩存技術
-
消息隊列
-
負載均衡技術
-
查看系統負荷
-
查看JVM負荷
-
[其餘]會用便可
-
WebService
-
JavaMail
-
SQL(Join,子查詢,Group by)
-
・分佈式系統學習
-
-
[框架]動手實踐,重點
-
SpringCloud
-
[經常使用組件]動手實踐,重點
-
kafka
-
redis
-
zookeeper
-
[理論]動手實踐,重點
-
CAP理論
-
分佈式存儲
-
分佈式事務
歡迎關注本站公眾號,獲取更多信息