一、整體線路
1.在學習一門課程之前,最好掌握整體路徑,不要盲目踏入,循序漸進的學習方式會讓知識更容易嚼爛。
2.這裏列出了學習java的整體路徑,每一步都是憑藉自己的經驗,走過的路總結出來的。也許有人會認爲這個路徑不對,每一個人都有每一個的學習方式,沒有對不對,只有適不適合自己,我這裏僅是憑藉自己的經驗來總結讓想要學習這麼課程的同學少走彎路。
3.java基礎位於最前,這個沒什麼好說的,當然如果你覺得入門比較難,可以先學一下c語言。學完java基礎,會寫一些簡單的程序,一個簡單登陸、註冊功能的javaweb項目。
4.常用框架,這將讓你使用別人優秀的代碼來提高自己項目的高可用性和代碼整潔性。
5.jvm會讓給你瞭解java程序是怎麼在計算機裏運行的。你能夠通過jvm參數來對項目進行一些簡單的調優。
6.常用工具讓你在實際工作過程中,提高開發效率。
7.在會做一些項目之後,你不得不對自己更加嚴格,希望提高程序的運行速度,學會多線程。
8.在學會多線程之後,試着將學的之後運用到實際生產中,高併發是你需要解決的難點之一。
9.如果你進來一個大公司,很可能公司的項目並不是一個簡單的程序,你需要學習分佈式。
10.學完上面那些內容,我們基本上能夠熟練運用別人寫的框架,也懂了程序的運行原理。如果想要更深一步學習,需要學習程序的設計模式,數據結構與此同時也不能落下,一個程序猿能走多遠,就看他數據結構和算法理解得有多透徹。
11.看完的常用的設計模式,在去閱讀別人的源代碼時,會發現不是那麼喫力,你會驚奇的發現,誒,它這裏使用了這種設計模式,好處是爲了。。。
12.別人的優秀的代碼我們也閱讀得差不多了。可以試着自己去寫一兩個優秀的項目,可以在github開源自己的一兩個項目,吸引更多的人蔘與進來。
二、細節決定成敗
1.在上面的整體路徑中,我們對我們所要學的東西有了一個大致的瞭解。但是每一步,我們究竟需要學習些什麼呢?
2.java基礎是根本。
1.java語法、關鍵字、運算符 |
2.基本數據類型包裝類、String類的常用方法與屬性 |
3.什麼是面向對象 |
4.封裝、繼承、多態的概念 |
5.異常處理常用集合及遍歷方法 |
6.異常處理 |
7.jdk1.8的新特性。 |
8.能夠對數據庫完成簡單的增刪改查(在這期間,你不得不學習一點關於數據庫的知識) |
9.servlet、jsp |
10.能夠完成簡單的,登陸註冊功能(簡單的html、css、js是你需要掌握的) |
3.常用框架
1.spring框架(理解什麼是IOC、DI以及AOP) |
2.springMVC當然也是屬於spring系列的(mvc模式,前端請求進行都經過了哪幾個步驟,最後返回) |
3.mybatis (非常優秀的orm開源框架) |
4.Hibernate也是orm框架(方便快捷,易遷移。但我個人還是比較喜歡用mybatis) |
5.struts2 (也是mvc框架,我用得比較少) |
6.當然如果你的精力足夠,額外也可以學習幾個很重要的框架運用(shiro權限管理,netty nio框架) |
4.jvm
1.jvm內存模型與運行時數據區 |
2.類的加載過程 |
3.jvm常用參數 |
4.垃圾收集算法 |
5.jvm垃圾收集器 |
6.通過對吞吐量和響應時間兩個性能指標進行調優 |
5.常用工具
1.maven (項目依賴管理工具) |
2.Git (版本控制工具) |
3.jboss容器(tomcat我想你在創建web工程的時候就應該學習了) |
4.生產中可能會運用到管道(jenkins、ansible等) |
5.redis |
6.消息隊列MQ |
6.多線程
1.線程的生命週期 |
2.線程的創建方式 |
3.鎖的分類 |
4.線程池 |
5.常用的併發容器 |
6.CAS算法 |
7.高併發
1.高併發場景 |
2.應對高併發的準則點 |
3.秒殺項目 |
8.分佈式
1.zookeeper |
2.rpc框架原理 |
2.dubbo |
3.springCloud |
9.設計模式
1.單列模式 |
2.簡單工廠、工廠方法、抽象工廠 |
3.代理模式 |
4.責任鏈模式 |
5.建造者模式 |
6.適配器模式 |
7.裝飾模式 |
10.源碼解讀
1.String類源碼解讀 |
2.LinkedList源碼解讀 |
3.HashMap源碼解讀 |
4.ConcurrentHashMap源碼解讀 |
5.TreeMap源碼解讀 |
6.Spring框架源碼解讀(最好找一本書,跟着書的內容走) |
11.開源項目,完成了上面這些,相信會的東西已經很多了,哪怕在遇到的新的知識或框架或語言時,也能夠非常快的去熟悉適應。這時候,可以自己在github上寫一個自己的開源項目,比如,寫一個RPC框架。
三、回顧
1.要學的知識遠比我上面介紹的要多,但是你會發現,你在進行其中某一項學習內容時,你不得不去學習另外一項可能我沒列出來的。比如Linux的基本操作,shell腳本,bash、pathoy至少得會一樣。
2.學習是個漫長的過程,重在堅持。最後,宣傳一波,如果你想要獲取更多的學習資料,少走彎路,可以關注微信公衆號: