寫這篇總結,主要是記錄下本身的學習經歷,算是本身對知識的一個回顧。也給想要學習 Java 的提供一些參考,對於一些想要學習Java,又不知道從哪裏下手,以及如今有哪些主流的 Java 技術。想必你們學習一門技術,前期都很想看到一些結果或成就,這樣就比較容易激勵本身學習下去,最好的辦法就是實踐,實踐,實踐!先說明一下個人狀況,我是從大二纔開始接觸 Java,而後本身摸索,期間真是摸打滾爬過來的。選的是計算機專業,大一的時候尚未本身的筆記本,因此都是聽課過來的,瞭解了一些概念性的東西,課上老師也有演示過一些程序,懂得思考以後,發現計算機有不少有趣的地方,好比想知道這個東西是如何實現的,爲何會出現這些東西。真不是知道當初每天打遊戲的時候,爲何沒有發現,要是發現的話,如今說不定早就那啥那啥了。到了大二的時候本身有了筆記本以後,就開始本身摸索,很好奇本身當初拿到筆記本居然沒有去打遊戲,而是用來學習。下面開始說正事。前端
選語言java
開始學習的時候,通過本身搜索以後,發現有不少種語言,本身徹底處於懵逼狀態,不知道選哪一個,也不知道每種語言均可以用來幹什麼,後來通過學長的指點還有身邊的人都說 Java 好,本身慢慢的就入坑了。在選擇要學習一門語言的時候,必定要選本身感興趣的,並且要有本身的目標,否則的話,後期很難堅持下來,除非你有很強的自律性。每一個人前進都是有本身的驅動力,因此找到屬於本身的驅動力,才能保證你不斷的進步。web
Java第一階段算法
剛接觸 Java 的時候,想必你們都是從環境配置開始的,這個裏面的坑想必你們都踩過。對於尚未開始的同窗,也有可能會經歷這個階段,說多是由於如今的 Java1.6 以後安裝默認是加到環境變量裏面的,可是在安裝過程當中有可能會出現一些意外狀況,致使不能加入成功,這是就須要咱們手動加入了。在這裏特說明下,在大學期間必定要把一些基礎的課程學好,好比:計算機系統、算法、編譯原理等,這個對後期的學習會有很大的影響,最簡單的就是你在添加環境變量的時候,爲何要把路徑添加到 Path 下面,而不是添加到其它下面,計算機是如何去識別訪問這些東西。sql
我一開始學習 Java 的時候,是學長分享的視頻,這個視頻的好處就是在學習 Java 基礎的時候,徹底脫離一些集成的工具,就是用編輯器(notepad++)寫好程序,手動經過命令行去編譯,再執行,讓你可以瞭解其中的原理,以及鍛鍊本身的動手能力。若是一上來就上你用 Eclipse 或者其它工具,把一些底層的東西屏蔽掉,開始學習的時候你們可能連 class 文件都沒有見過,只是知道寫了這行代碼,運行以後它會出來什麼結果。數據庫
這裏給出我當初學習的視頻,有點老可是基礎知識都是同樣的。學習 Java 基礎知識的時候,應該多動手,多思考,不少時候,你想固然的事情,等你寫出來運行一下,你就會發現不是這麼一回事,不信你就試試。在學習視頻的時候,有兩種學習方法建議:方法一先把視頻過一篇,在看視頻的時候,記下知識點,看完視頻以後,本身對着知識點,本身敲代碼實現,實在想不出來的,回過頭來在看視頻。方法二邊看視頻邊跟着敲代碼,這樣會比第一種方法相對容易一些,可是若是是這種方法學習的話,要記得回頭多複習,否則很容易忘記。兩種方法各有好處,第一種方法一開始學習比較慢,可是後面基礎有了以後,就會上手很快,並且記得很牢固。第二種方法比第一種方法花的時間要相對的少一些,因此須要咱們反覆的去回顧。學習完以上內容以後,你應該對 Java 有了必定的瞭解,你可使用 Java 語言寫出來一些簡單的程序,而且是使用最簡單的編輯器。這個時候,能夠不用着急進入下個階段,給本身一兩天的時間,對學習過的知識進行下總結。編程
在學習的過程當中,你應該注重下面這些知識點,因爲是本身總結的,有可能會有不對的地方,如有不對之處,還請指出。後端
知識點梳理:網絡
概念:面向對象的三大基本特徵五大基本原則(當初讓學長考個人時候第一個問的就是這個)、面向對象、面向過程、什麼是多態、什麼是繼承、什麼是封裝。併發
集合:Collection 集合、List 集合、Set 集合、Map 集合
異常:Java 中異常處理機制和應用,自定義異常
IO:File 類,字符流、字節流、轉換流、緩衝流、遞歸
網絡編程:Socket
線程:線程的生命週期,Java 線程池,線程同步問題,線程死鎖問題
繼承和接口:Class,Interface
反射:動態代理
Mysql 和 JDBC 開發:Mysql 數據庫,JDBC,DBUtils,DBCP鏈接池
書籍推薦:Head First Java, Java核心技術
視頻獲取:後臺回覆「javaweb學習資料」包含後面三個階段。
Java 第二階段
Java 基礎學習完以後,我是開始學習 Javaweb,在一開始的幾天比較迷茫,由於感受本身寫的東西沒有用處,好比寫個計算器什麼的,生活中沒有什麼用,多是太過於看結果致使的。這個時候應該去作一些有趣的事情,學習新的知識,開發新的大陸,這就是咱們的 Web 開發了,主要包括前端頁面(HTML/CSS/JS),Servlet/JSP,以及 Mysql 相關的知識。這些視頻在上面分享的視頻裏面已經包括了。
關於頁面,這些內容對於 Java 後端來講,不是特別重要,可是你應該盡本身的最大能力讓它漂亮,最起碼能夠入眼,這樣的話,頁面就不是什麼問題了。接下來,就是學習的重頭戲了,學習 Servlet/JSP 部分,這也是 Java 後端開發必須很是精通的部分,在學習 Web 這三部分的時候,這個部分是最花時間的。這個階段學習的時候,要學會使用開發工具,好比 Eclipse 或者 IDEA 來學習。最後一部分,你就要學會使用數據庫,Mysql 數據庫是不錯的入門選擇,並且 Java 領域主流的關係型數據就是 Mysql,這部分其實你在學習 JDBC 的時候,就會接觸到,由於 JDBC 也是屬於數據庫的一部分。不只要學會使用 JDBC 操縱數據庫,並且還要學會使用數據庫客戶端工具,好比 sqlyog,navicat 等。
知識點梳理:
前端技術:HTML、CSS、JS、JQuery、Bootstrap
JavaWeb 核心內容:Servlet、JSP、XML、HTTP、Ajax、過濾器、攔截器等
Mysql 和 JDBC:複習
推薦書籍:相關的 Web 書籍均可以,能夠順帶着看 Java 編程思想
Java 第三階段
這個階段是在你掌握第二階段以後開始,若是學習了第二個階段以後想找工做的話,還須要在學習一些主流的框架知識。目前比較主流的框架是 SSM 框架,既 Spring,SpringMVC,Mybatis。要學會這些框架的搭建,以及用它們做出一個簡單的 WEB 項目,包括增刪改查的功能。在這裏一開始,你能夠不用太去關心那些配置文件,以及爲何會這樣配置,這個能夠留到後面慢慢了解,開始的時候先讓本身有個體驗,激勵本身學習的動力。
搭建這三個框架的時候,必定要記錄本身搭建的過程,這個在你工做以後確定會用到的。在搭建的過程,咱們經過網上查找資料或是跟着視頻學習,都會接觸到 Maven 這個工具,這個工具在你工做以後,也必定會用到的,能夠順帶着瞭解,你不必定要去徹底掌握,只要學會使用,知道基本原理就能夠。學會使用以後,本身要跟着老師或者從網上去理解更多的東西,好比那些配置文件等。
知識點梳理:
Spring 框架:配置文件、IoC 思想、DI 依賴注入、面向切面編程、事務等。
SpringMVC:框架原理、交互、攔截器等。
Maven:安裝使用、基本操做。
Mybatis:框架原理、Mybatis 開發 DAO 方式、與其它框架的整合。
推薦書籍:Spring 實戰,Effective Java,Java 編程思想
Java 第四階段
這個時候相信你已經可以完成獨立開發,而且也工做了,對付工做上面的時候,你的技術必定是能夠的。可是這個時候不要對本身進行鬆懈,你要繼續學習,而不是工做只是爲了應對工做,你應該提高本身的價值。這個時候能夠去看一些比較底層的書籍,好比《深刻理解Java虛擬機》,這本書就是全面幫助你瞭解 Java 虛擬機,這個時候想必你必定知道 Java 是運行在 JVM 上的,你沒有任何理由不去了解 JVM。另外,關於併發這方面,推薦《Java併發編程實戰》,這本書啃完以後,對併發的理解應該有必定的體會了。
這個階段要作的遠不止這些,咱們要去思考咱們以前使用的那些框架是怎麼回事,以及閱讀 Java 經典的一些源碼,看懂源碼的前提,就是你已經有了必定的基礎,固然有基礎也不必定一會兒就能看懂,看不懂就要去思考,在看源碼的過程當中,你可能有各類各樣的疑問,有疑問就是對的,問本身最多的應該是這裏問什麼會這樣寫,而不是那樣寫吧。這個階段須要本身對本身有很強的自律去學習,不要看了一半就放棄了。學會看源碼以後,本身能夠嘗試着模仿別人寫的比較好的開源項目,造屬於本身的輪子,雖然說不必定有用,可是對提高本身有必定的好處。
若是你想成爲優秀的人,你就要「能別人不能」,也就是說你要找到屬於本身的一個領域研究下去,以期在未來,你可以成爲這個領域的專家,創建起你的差別性。
最後,請記住,從你入行那一刻起,你就要比別人努力,就要不停的學習。每一個人在學習的過程當中都有本身的一種方式,在學習的過程當中,要學會本身去判斷。其實生活中也是同樣的,你身邊的人形形色色,有的人你喜歡,有的人你討厭,可是你喜歡的人身上也有缺點,你討厭的人身上也有其優勢,這個時候你要學會從他們身上學習他們的優勢,讓本身變的更優秀。
PS:若是以爲文章不錯的話,還請你們點贊分享下,算是對個人最大支持。