1. 程式人生 > >從零講java 給你一條學習路線

從零講java 給你一條學習路線

1.計算機基礎
    1.1資料結構基礎
        1.向量,連結串列,棧,佇列和堆,詞典。
        2.樹,二叉搜尋樹。
        3.圖,有向圖,無向圖,基本概念。
        4.二叉搜尋A,B,C類,9大排序。
        5.樹的前中後,層次,之字,最短路。
        6.KMP等字串演算法。
--------------------------------------
    1.2作業系統
        1.程序,執行緒,程序執行緒區別,程序間通訊。
        2.程序排程演算法理解。
        3.儲存,虛擬記憶體,分頁分段,記憶體排程演算法。
        4.檔案系統,鏈式,索引。
        5.死鎖:原因,避免,解除。
        6.Linux基本操作命令,會一門指令碼程式設計:shell,Python。
--------------------------------------
    1.3計算機網路
        1.網路分層:五層,七層,四層等。
        2.網路層:IP分類,子網劃分,超網。ARP協議,ICMP協議。理解內部閘道器和外部閘道器,vpn等。
        3.運輸層:埠,UDP協議理解,TCP協議理解,三次握手,四次斷開。
        4.應用層:瞭解常用協議使用的埠和底層協議。
        5.更加深入理解:TCP/IP 對擁塞控制,滑動視窗,如何實現可靠等。
--------------------------------------
    1.4基礎演算法
        1.理解大O等記號。
        2.動態規劃如:幾類揹包問題,最好有現成的程式碼用於筆試。最長公共子序列。
        3.貪心演算法:理解赫夫曼編碼(筆試常考概念)。
        4.B樹B+樹用於理解資料庫索引。
        5.常用的圖演算法:廣度優先,深度優先,最短路徑演算法(最好有現成的程式碼),最小生成樹。
-----------------------------------------------------------------------------

2.JAVA知識基礎
    
2.1JAVA基礎(推薦書籍:《程式設計思想》) 1.掌握java常用技術,io、多執行緒、反射、常用集合框架。 2.對處理輸入輸出的IO進行熟悉,用於筆試。 3.對Iterator,Iterable和Comparable,Comparator瞭解,以及常用集合的遍歷和排序。 4.對NIO一定要熟悉,以及瞭解JMS和RPC。 5.對JAVA基礎概念要熟悉,比如抽象類和介面區別等,這些熟記。 -------------------------------------- 2.2JAVA原始碼 1.Hashmap,Hashtable,ConcurrentHashMap原始碼以及區別。 2.其他集合框架:LinkedHashMap,LinkedHashSet,Copy-On-Write等。 3.對Lock,Object,String等類的原始碼瞭解。 -------------------------------------- 2.3JAVA併發API(推薦書籍:應付筆試面試:《JAVA多執行緒程式設計與核心技術》真正神書:《JAVA併發程式設計實戰》) 1.Synchronize和Lock的區別與用法。 2.wait()和await(),notify()和signal(),wait()和sleep()區別與用法。 3.其他的API用法:yield,join等。 4.voliate深入理解,以及CAS理解。 5.JAVA鎖底層實現:自旋鎖,阻塞鎖,可重入鎖,偏向鎖,等。 6.執行緒池和阻塞佇列。 7.以及一些常用的併發實現案例如生產者和消費者。 -------------------------------------- 2.4理解JVM(推薦書籍:《深入理解JAVA虛擬機器》) 1.JAVA記憶體模型,哪個區域存放哪些內容。 2.引用技術法和可達性分析法。 3.物件的強、軟、弱和虛引用區別與作用。 4.jvm垃圾回收機制,以及回收演算法。 5.常見的OOM和SOF的原因和解決方案,以及通過什麼工具進行分析。 6.常見的JVM輸入引數熟悉。 7.瞭解GC停頓,逃逸分析,TLAB區,堆外記憶體等。 8.常用垃圾收集器:G1,CMS等。 9.瞭解常用效能監控工具:如visualvm、jconsole等。 10.必須熟悉虛擬機器類載入機制,包括原理步驟,以及雙親委派方式的原理。 ----------------------------------------------------------------------------- 3.常規儲備知識學習
3.1資料庫(推薦書籍:《sql入門》《Mysql必知必會》《深入理解:高效能Mysql》) 1.常用關聯查詢語法,自己所動手寫幾個。 2.資料庫索引深入認識和理解。 3.JDBC學習。 4.常用資料庫調優手段:比如通過索引調優。 5.InnoDB和MyISAM區別。 6.瞭解主鍵,外來鍵,索引,唯一索引。 7.瞭解索引、檢視、觸發器、遊標和儲存過程。 8.常用關係型資料庫和非關係型資料庫:關係型瞭解:Mysql,Oracle;非關係型瞭解:redis,Hbase,monogodb等。 -------------------------------------- 3.2設計模式(推薦書籍:《設計模式之禪》) 1.單例模式的幾種寫法一定要會。 2.JDK中對應的設計模式:如IO中的裝飾模式和介面卡模式等。 3.框架中常用的設計模式:如Struts中的責任鏈模式,Spring中的工廠模式,動態代理模式等。 4.瞭解6大設計原則。 -------------------------------------- 3.3HTTP協議(推薦書籍:《HTTP權威指南》) 1.什麼是HTTP,協議版本等。 2.學會使用瀏覽器檢視HTTP請求與響應。 3.熟悉HTTP請求頭和請求體。 4.熟悉HTTP響應頭和響應體。 5.瞭解Rest風格。 -------------------------------------- 3.4神一般的Spring(推薦書籍:《Spring實戰和Spring技術內幕》) 1.瞭解IOC原理和作用。 2.瞭解AOP原理和作用。 3.常用的XML配置。 4.Spring事務原理和使用。 5.SpringMVC。 6.瞭解Spring的webflow,遠端服務,rest,訊息,安全等。 7.新功能:Springboot和Springcloud。 ----------------------------------------------------------------------------- 4.後端學習之路
4.1WEB後端學習之路(推薦書籍:可以選擇一些SSH整合開發之類的) 1.JSP和Servlet學習。 2.XML和JSON解析學習。 3.前端知識:HTML、css,js。 4.JDBC學習,檔案上傳\下載,JAVAMail等。 5.可以利用jsp和Servlet開發簡單專案。 6.接著框架學習:Struts2,Hibernate,Spring以及相互整合開發。 7.接著可以瞭解:SpringMvc,Mybatis,Lucene,shiro等。 8.利用框架實現簡單專案比如CMS。 -------------------------------------- 4.2服務架構學習之路(推薦書籍:《分散式服務框架原理與實踐和微服務設計》)(此部分筆試面試不一定學習) 1.瞭解SOA和微服務。 2.負載均衡:LVS,NGINX等。 3.RPC框架學習:RMI,Thrift等。 4.訊息框架學習:ActiveMq等。 5.Netty通訊框架學習。 6.服務框架:dubbo。 -------------------------------------- 4.3Hadoop學習之路(推薦書籍:《Hadoop權威指南》)(此部分筆試面試不一定學習) 1.熟悉mapReduce和HDfS。 2.Hadoop叢集搭建。 3.瞭解:zk,hive,hbase,pig,mahout等。 4.zk幾個常用作用如做註冊中心,放配置資訊等。 =============================================================================