源碼的閱讀,意識的覺醒

引言

開篇

本篇沒有幹活,只有水貨;不談技術,只談“風閱”。講的是思想上的覺悟,也是意識的覺醒。雖然很水,但是也是相對比較重要。作爲一名中級碼農,想要提升(獲取更高的薪水)享受編程的樂趣,不僅僅是橫向發展(即浮於更多技能的學習瞭解和使用更多的框架),更應該縱向發展,而且縱向發展更加重要。縱發展就是技術深度的挖掘,就需要了解技術的本質,能明白框架設計者的思想。

舉個栗子

生活中最簡單的一個利息計算公式:利息=本金×利率×存款期限。本金是現有的積累這個無法改變,當利率越高時,存款時間越長我們收穫的利息越多(利息是央行規定我們無力改變( ̄(工) ̄),時間嗎也只有一生,因此這個提高利息嘛,我們只能另想法啦。
但是對於我們的薪水來說,總薪水=時薪×時間,這兩個變量都可由我們來控制。時薪嘛,增加單位時間的產出,提升對公司的貢獻價值,拿到更高的薪水;時間嘛,你可以996再不行就007╮( ̄▽  ̄)╭)。哈哈第二條這個是不可能啦也不現實,畢竟是大部分都是普通人,我們不是機器不可能一天24小時幹活,我們總是還要生活的。所以,我們還是重點就是要提升時薪啦。提升薪水小技巧,和老闆反饋加薪,加薪不行就換工作(據說,換工作後工資翻一番,你可以試一試٩( ´︶)( ´︶ )۶),但能力不提升,薪水終究提升有限,除非你再換行業:-P。
最後的最後,我們就朝着只能提升自身的技能方向發展啦。

學習方向

作爲java開發人員,我就簡單說下從什麼方面去提升並如何去提升java的能力。

1.精通java編程,熟悉java sdk提供的主要能力;
2.理解java運行時工作原理,熟悉jvm性能調優,能夠充分利用java特性支持框架與程序庫的設計開發;
3.熟悉多線程編程,熟練使用java併發包下的各項常用基礎設施;
4.熟悉網絡編程,能夠熟練使用java nio開發高併發、高吞吐量的服務;
5.熟悉常用網絡協議,如TCP/IP, HTTP;
6.能夠熟練使用linux,能夠利用常用的工具對程序進行跟蹤診斷;
7.對消息服務、負載均衡、高可用機制等有深入理解;

仔細看看,是不是很熟悉,沒錯就是網易社招上的一則java招聘信息,大公司的招聘要求,就是可以作爲我們的提升方向。看要求,“精通”、“熟練”兩個關鍵詞很重要,熟練掌握所運用技術的原理也是是提及最多的,而非知道了解。大部分比如我大多停留在"瞭解知道"層面,在小公司工作,不知道學習什麼,公司也不會用到dubbo、spring cloud等分佈式框架,碰到的問題也是增、刪、改、查,修修補補,代碼也沒有任何規範性可言,設計模式也可能只是知道,很少去運用,架構可能也是前輩搭好的,遇到報錯或困難首先想到的就是Google,如果一直持續這種態度,可能永遠無法提升。

學習方式

提升的方式很多,如網絡課程、各種技術論壇、以及看像java,spring這些官方文檔。但都有其侷限性,不可能指望在網絡課程上學習到一門技術的方方面面,那樣課程體系就變的很龐大;而官方文檔介偏重的是使用方面,而不是降級其原理,如spring框架,因爲框架本身的目的就是給大家提供便利性,封裝一些複雜底層操作。

閱讀源碼

因此還一種更好的學習方式就是jdk以及優秀框架源碼的閱讀,閱讀jdk和框架的源碼不僅能夠讓我們更好的掌握jdk和框架的使用,更能讓我們學習到框架設計者的思想,以及有優秀的編碼風格。當問題的時候,以後解決問題的方式也多了一種,就是看源碼,而不是第一時間想到Google。

多米諾骨牌效應

剛剛開始看源碼時,應該遵守幾條原則:
1.不能爲看源碼而看源碼,應該掌握閱讀源碼的方式;
2.源碼的通讀在精不再多;
3.找一種舒服的姿勢看源碼。
前兩點是因爲框架很多,現有成百上千,新框架也在不停的推出,我們沒有精力去把所有源碼都閱讀一遍,應該在初期的找準目標,先從一個最熟悉框架開始閱讀,比如我們的Spring或Netty;第三點了是爲了讓自己有興趣和毅力堅持下去,可以參考現有的源碼解析的書籍或資料,模仿別人閱讀源碼的思路,因爲我們直接從源代碼開始,可能無從下手,直接迷失,最終放棄,歸於平淡。當我們能真正堅持閱讀完一個框架的源碼,並培養出自己的源碼閱讀姿勢時,這是就一個好的開始,這將形成多米諾骨牌效應,讓自己有質的提升。

參考

小白

如果選擇從spring開始,推薦一個本書《Spring源碼深度解析》,另外也可以參考"寫出高級bug"的blog(點擊直接訪問),他的blog也是結合《Spring源碼深度解析》來分析Spring 5.0.6版本的源代碼的,如果對看書沒趣,可直接看他的blog。

進階

當層次更高點,我們就可以脫離書和文檔,看看帶中文說明的源碼,例如網易雲課堂的Tony老師的附中文說明的netty源碼Githu地址https://github.com/crazyFeng/netty/tree/netty-4.1.32.final-remark,也可直接訪問碼雲上的鏡像地址https://gitee.com/xxyi/nettyTony

登堂入室

一步一步一個腳印直至我們不借助輔助接觸一個新的框架時,直接可以通讀源碼時,恭喜你成爲一代“武林高手”,草木皆可爲兵٩(*Ӧ)و。同時也恭喜你進入新坑,再接再厲,往更高的層次發展。

發佈了7 篇原創文章 · 獲贊 0 · 訪問量 418
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章