我起了這麼一個奇奇怪怪的標題還能被你搜索到,又或者在冷冷清清的候選區裏留意到個人話,那就說明咱們頗有緣了,既然如此不妨留下來看一下個人碎碎唸吧 ————css
我我的在學習編程的過程當中,常常會遇到一種「升級突破」同樣的狀況html
相似於之前高中的時候,數學一直只能考100左右,難題都不會作,彷彿這就是你的天賦的極限。java
可是某天你忽然在考試中多作出幾道難題,一舉躍升到120分以上的門檻。你可能以爲只是本身此次運氣好而已,可是以後你就會發現,本身幾乎再也沒有掉下過120這個坎,明明以前不管怎麼刷題都沒有辦法提升,可是卻好像在此次考試中突破似的提升了。面試
這也是我以前在一篇文章裏看到的,不過文章出處我已經忘了,因此可能和實際內容有所誤差。算法
當時那我的最後對此歸於相似經驗值的積累,平時的努力當然十分重要,可是當經驗值夠了也須要一個契機來提高等級,提高了,我的能力天然也就獲得了大幅的提高。編程
因此在昨晚睡覺前,我忽然靈光一閃,想到要寫一篇水文來記錄一下本身學習編程中遇到的「升級突破」。網絡
固然這種碎碎念可能對你並無什麼幫助就是了 ( ´_ゝ`)旦數據結構
我以爲我本身的第一階段並非從上大學以後開始學習編程開始的,而是要追溯到小學初中的時候。併發
記得上小學的時候表姐上大學換了新電腦,因而把本身家裏不要的電腦給了我。那個時候的電腦仍是那種特別厚重的樣子,相似於圖中這種:框架
當時也沒有裝寬帶,因此這種電腦惟一能作到的,只有經過買校門口幾塊錢一張的盜版遊戲光盤來安裝遊戲。
而這些盜版遊戲有一個特色,那就是安裝常常有問題,又或者裏面有病毒。(當時用的仍是金山毒霸)
這時候我也只能不停的折騰,去嘗試安裝打開這些遊戲。而在這個過程當中,我彷佛也慢慢培養了本身解決各類電腦問題的能力。
而在上初中買了新電腦也裝了寬帶以後,一直比較喜歡ACG的我天然也少不了各類找資源,而這個過程當中也無形鍛鍊了我查找各類資料資源的能力,而不是作一個伸手黨。
我以爲這就算是我初出新手村的時候了,雖然這時候的我對編程沒有任何一點具體的概念,可是我已經有了基本的解決問題和查找資料的能力,起碼不至因而一個電腦白癡。
以後的第二階段就是剛剛上大學,開始學習計算機這個專業開始了。
剛上大一的時候,不少時候就是跟着老師學,學校教什麼,我就學什麼,最多就是在課餘會在各大論壇網站查一下 「學xxx還有什麼書籍推薦」,以後去圖書館借書來看。
這段時間雖然我學習熱情挺高,學習也比較積極(畢竟剛剛開始接觸新事物嘛),可是成長並非很快。我還記得我當時買的黑皮的《數據結構與算法分析》一學期只看了50頁不到,還有林林總總的一些其餘書也都沒翻幾頁,惟一看完的可能就是《head first html & css》了。
這一整個學期我都處於一種比較迷茫的狀態:
學習熱情是有的,可是明明好像學了不少東西,又好像什麼都沒學到 . . . . . .
以後又是一個新的學期,這時候的我聽一個已經畢業的師兄說,咱們學校有一個搞技術的實驗室,對學習頗有幫助,可是加入他們前須要經過幾輪考覈。
就像搖搖欲墜中的一葉小舟望見遠方的燈塔同樣,我也開始追尋着這個方向過去。
每一次考覈都是作一個小項目,在前兩次考覈中,個人策略一直都是翻書參考代碼 + 把百度上百度來的一小段一小段的代碼根據遇到的問題和須要,像補丁同樣一點一點的補到個人項目中去,直到它能跑起來,能順利的完成任務。
不管中間的過程如何,總之:
這一階段的我,開始可以作出東西了,開始脫離高中那種看書背書的模式了,而且利用搜索引擎解決那一個又一個的小問題。可是這個時候的我也有一個巨大的問題,就是不知因此然,只知道完成任務,有時候甚至不知道本身寫的代碼究竟是什麼。
到了大一的暑假,我開始完成第三個考覈的項目,這個時候的項目是作一個增刪改查的學生管理系統。
很顯然,靠學校發的jsp的書籍和百度代碼已經很難完成任務。一開始,我確確實實嘗試靠原來的方式去解決問題,可是在通過接近一個月的時間後,我發現本身仍是什麼也寫不出來。
直到某一天,我忽然想到要去找視頻學習,跟着視頻作項目。(我也忘記本身爲何會忽然想到這點)
其實我以前也嘗試過看視頻作項目,可是由於連本身要學的是什麼我都不知道,天然也不知道要看哪些視頻,因此就不了了之。
在這個假期我成功的經過跟着視頻作 + 查閱資料修改定製的方式完成了考覈。
這一階段的我,開始學會跟着視頻學習,跟着視頻作項目,知道本身寫的代碼是什麼,有什麼用。
你可能由於我差很少又要進入下一個階段了,然而生活總不可能這麼順利。要是一切都這麼天然而然,我也就不會把本身學習的過程稱之爲「突破」了,這個突破就像是武俠小說同樣,有可能你幾十年都沒有長進,但有可能像張無忌同樣掉下懸崖習得九陽神功同樣忽然就突破了。
而我在不停的看視頻學框架作項目的過程當中度過了整整一年。
時間推移到了大二放假前,在一次和師兄的交流中,聽着師兄口中jdk源碼,juc併發云云,我一臉茫然,可是心中仍是有一絲不相信,以爲本身會那麼多框架,不說天下無敵,起碼也有這麼個水平:
以後在假期的時候,我查了幾篇面經,證明了我心中的那一絲猜測:確實沒人會問你框架是怎麼用的,而你看的視頻裏面的所謂的原理,也只是很是淺的一些東西。
以後我開始照着面經的知識點惡補各類經典書目,先是在假期把《深刻理解jvm》和《實戰高併發程序設計》給看了,因爲歷來沒有接觸過這種類型的比較難的書籍,因此一開始也看的很是吃力,一個假期連兩本書都沒看完。
可是慢慢的,多是積累的量夠了,開始產生質變(也就是經驗值夠了),我在大三開學後不久看書的速度日新月異,邊看書邊作筆記,平均每個多星期甚至不用一星期就能看完一本書。
開始熟悉這些基礎原理,閱讀基礎的經典書目的能力也有所提高,對知識的理解再也不徹底流於表面。
到了大三上學期快結束以前,我幾乎讀完了基礎階段該讀的書目,恰好也看到周圍的人在找實習,因而我也面了兩家。
第一家是一家小公司,沒什麼太多感想,只能說很是感謝能獲得面試機會,面試過程也是中規中矩,就像別人面經裏面寫的那樣。
第二家是一家大公司,面試難度超出個人想象,讓我措手不及,也讓我發現了本身不少的問題,總的來講也沒有很失望,算是意料之中。因此很快就開始查漏補缺。
此次我遇到的問題主要是:沒有對書本里的知識繼續深挖。主要體如今併發部分和集合部分。
由於併發和集合部分書籍裏都沒有深刻到源碼去講解原理,而面試有。
在這以後的假期,也就是寒假,我開始狂看源碼,說實話一開始看得很是吃力,光幾個簡單的集合類都看了我一個多星期。
此次的突破在我接觸了https://www.javadoop.com/裏HongJie這位大佬的博客以後纔開始的,在我啃完他的SpringIOC容器源碼解析和aqs的源碼解析以後,我閱讀源碼以及源碼博客的速度愈來愈快,並在這以後陸陸續續把大佬博客裏的源碼解析部分都看了一遍。
這其中我很是喜歡他的一句話:
可是做爲過來人,我想告訴你們,對於 AQS 來講,形式真的不重要,重要的是把細節說清楚。
我我的以爲,若是流於背原理,爲了面試而背那些源碼流程圖,可能你的收穫並無想象中的那麼大,起碼我本身是這樣的。
在深刻每一行代碼,去理解它爲何要這麼作以後,慢慢的,個人閱讀速度和理解能力也就都上來了。這個過程也不是慢慢變化的,而是在我讀完aqs源碼以後忽然就突破了,我本身也不清楚爲何。
能快速閱讀和理解各類源碼,而且有必定的本身的理解。
在這以後,我又嘗試着去了解更深一些的東西。而挑選的對象則是IO部分,經過IO部分,我對知識開始有了更深一些的理解,不少知識都開始天然而然的聯想到網絡和操做系統層次上去,也所以有了那幾篇關於nio、aio的的博客。而且我還嘗試着在沒有任何資料的狀況下閱讀了jdk下httpserver的源碼,閱讀的過程比較順利,也帶來了不少啓發。
這個階段的我在學知識作東西的時候開始天然而然的閱讀官方文檔等資料,開始天然而然的經過閱讀一個接口的註釋來了解其使用方法,閱讀其源碼來了解其可能存在的問題。百度開的也不多了,偶爾開一下谷歌也是爲了看一下一些比較少見的知識點的英文資料。
還有一點是博客寫的多了,寫博客其實對我的的成長頗有幫助。我我的很是認同一段話:
我以爲,分享就是互聯網等存在的理由,但願本身分享的東西能幫助到遠在天邊的某個陌生人,而我分享的方式就是寫技術博客。
這個階段的我,開始可以將知識深刻到網絡底層及操做系統底層,能簡單查閱各類官方文檔,開始逐漸認識互聯網。
下一個階段在何時,或者說像我這樣進步緩慢的人到底還會不會有機會進階,我本身也不知道。
在每次進入下一個階段前,我都不知道本身的下一個階段究竟是什麼,在哪裏,畢竟我要是知道也就不會進步得這麼緩慢了,每一個階段的我都是迷茫的。不少人可能並無我這種感觸,我也曾經看到一些名校的大佬在大一的時候就已經有了我如今,又或者說遠超個人水平。(畢竟若是別人遠超我了,我也不太可能知作別人究竟是個什麼水平階段對吧,就算是交流,我也只能知作別人確實比我牛逼不少,僅此而已)
總之,本文只是碎碎念,也不是爲了教你們什麼。最後再附上我喜歡的一部漫畫: