1. 程式人生 > >我的程式設計師之路:自學Java篇

我的程式設計師之路:自學Java篇

## 序章 時光疾馳,從事IT行業已兩年有餘。 16年11月開始自學Java,從此開啟自學之路,後來實習期自學大資料、python、爬蟲等,最終成長為一名平凡的程式設計師。回首望去,一路上的過往歷歷在目,有初學Java掌握皮毛後的沾沾自喜,也有遇到問題無法解決時的埋頭絕望。曾在學校的夜晚洋洋灑灑寫下筆記百十行,只為記住一個知識點。也曾實習期凌晨,走在公司到站牌昏暗燈光揮灑的馬路上,唱著自己喜歡的南山南慶祝著成長。 你問我自學累麼,我會告訴你不累,因為自學路上收穫了很多。你問我自學孤獨麼,我會告訴你不孤獨,感謝這條路上曾有那麼多幫助我的人。 很久之前就想以自己的經歷為題材,記錄一下關於自己的自學之路。在知乎和球球群裡,也遇到很多和我當初一樣對計算機充滿著渴望但又迷茫的童鞋。希望通過簡單的文字形式,可以幫助到一些人。 ## 誰的青春不迷茫 我不是學霸,曾只是沉溺遊戲之人。亦非出身名校,只是一名專升本的學生。大學之前雖是被老師寄予厚望的少年,但在大學生活裡最終活成了自己曾經最討厭的樣子。 我讀過三年專科、兩年本科。高考失利沒有選擇復讀,大一開學因病住院,回來跟不上學習節奏開始自暴自棄、隨波逐流。遊戲,荒廢了三年的青春。 後來為了逃避離校實習,報考了專升本。剛開始的日子敷衍了事,當有一天可能從學霸的一個眼神或著一句話裡,感受到了一種俯視。從那時,我開始自學數學、資料結構、作業系統、微機原理、C語言專升本科目,最後通過專升本。 專升本結束後的假期裡,試圖找過計算機相關的工作,皆無功而返,只能回家等待開學。那時的心裡,也不知道有沒有為以後埋下一顆渴望的種子。 *人生會讓你有想要保護的人,也會讓你有努力的動力,或許來源於別人對你的態度,亦或許是為了生活。* ## Java自學之路 **環境真的會影響到一個人。** 16年9月,正式開啟了本科兩年的生活。我曾以為我的舍友和我一樣,專科打打遊戲混混日子。後來才知道來自各個高校的舍友,皆為省賽免考入學。因為經常參加省賽,彼此之間也互相認識。從那時,我感到了來自身邊前所未有的壓力。 我本應該躲在角落,感受弱者的黑暗。但我的舍友,沒有因為我技術菜而孤立我。那時我對Java比較感興趣,他們給我找了Java視訊,教我做筆記。從那時,我開始晚上在宿舍自學Java。對於Java我算是零基礎,專科的Java課基本上都在玩手機,而且書上的知識不足以用於工作。所以自學是很好的一個選擇。 有時候也會一起網一開黑,但大多數的時候都是拒絕他們,他們也開玩笑說我不合群,說我偷偷學習不和他們打遊戲。我只會日常統一回復:我要是免考我早就不學了。其實,他們一直也在學習,一直參加比賽,一直考證,我也隨著他們的腳印一路向前。 就這樣,本科的第一年堅持看Java視訊,基本兩個小時以上,當然偶爾也會偷懶。同時跟著視訊敲程式碼,敲到自己理解為止。也一直在做筆記,什麼都記,只要能讓自己看懂。 看看剛開始做的Java筆記。 ![](https://img-blog.csdnimg.cn/20210113235813152.jpg) ![筆記](https://img-blog.csdnimg.cn/20210113235524716.jpg) 回過頭來看這些自學路上留下的腳印,雜亂無章,已然幫助不大,但那份初衷和努力,永遠激勵著自己。 時至今日,你問我是否停止了學習Java?沒有,一直在學習。 你問我自學給我帶來了什麼?一個好的學習習慣和一份收入尚可的工作。 ## 自學方法 **找一套系統的學習視訊 + 敲程式碼 + 做筆記 + 堅持** 視訊教程我看的是Java300集,做筆記之前用的是OneNote,現在用的**有道雲筆記**。在學習的過程中,要養成多問為什麼和獨立思考的習慣,形成一套完全屬於自己的程式設計思路。 堅持學習,堅持獲取新的知識。計算機是一條學無止境的路。 ## Java大家庭 在自學Java的過程中,我將Java簡單地分為以下幾類。 **Java基礎** 面向物件、資料型別、集合(List/Map/Set)、I/O、異常、反射、序列化、設計模式、JDBC資料庫、網路程式設計、設計模式等。 **JavaWeb** servlet、request、response、cookie、session、Ajax、資料庫連線池、檔案上傳下載等。 此刻就不得不提和JavaWeb配套的練手專案了,也是大家熟悉的,萬眾期待的:淘淘商城。商城類的練手專案集初學者寵愛於一身,是各大Java初學者web知識串燒的必備利器。 **Spring全家桶** Spring、SpringMVC、MyBatis、SpingBoot。 前三者就是傳說中SSM框架。Spring負責管理bean、SpringMVC負責處理請求,Mybatis負責資料庫操作。但是SSM框架配置檔案太多,Springboot簡化了很多配置,自從有了Springboot,我就再也不用SSM框架了,就是這麼喜新厭舊。 **微服務、分散式** springcloud、dubbo。我沒有系統地學過Springcloud和dubbo,只是搞過一次專案,瞭解了一下注冊中心、閘道器、熔斷降級、swagger等。 **深入理解JVM** <深入理解Java虛擬機器>這本書看了很多遍,別問多少遍,問就是三遍。 第一遍(剛開始學Java):感覺很NB,就是看不懂。 第二遍(剛開始實習):花非花,霧非霧,似懂非懂! 第三遍(工作一年):某一天我懂了!也會整理一些自己的理解寫出來。 **多執行緒、NIO** 買了