自己看源碼的一些方法和心得分享


步驟

先清楚宏觀: 干什么的,功能是什么

再研究微觀: debug一行行功能

之后圖解: 分析原理,轉換為容易理解的方式

最后提煉心得: 一定要總結一下看了源碼有什么收獲,尤其是設計思想和寫代碼的優雅方法(很重要)

個人心得:

debug前的准備

  1. 一直點容易點懵,就行迷路一樣,分岔路口太多了,典型的比如spring,但是spring是按照接口設計打造的,說白了就像房子時按照圖紙建造的一樣
  2. 首先把所有接口弄懂,搞清楚這個接口定義了哪些方法和功能,然后再看具體實現類,抽象類以及其子類等,這些類大都繼承了接口.
  3. 就好比先看一下樓盤的設計圖紙,這樣你拿着圖紙,到了哪個地方,你就知道這個地方是哪是怎么設計的,接下來想去哪該怎么走!!很有效
  4. 弄懂之后再debug一行一行看代碼,這個時候看到那個代碼或者方法就會知道是哪個接口定義的,想要實現什么功能
    思路就很清晰,好比你手里有張地圖,走到哪里都不怕,都知道這是哪里,接下來該怎么走,可以怎么走!!

不要期待一下子全弄懂

  1. 舉個例子,比如我看String類的時候里面涉及了很多其他類的知識,最簡單的流就比如 Integer.valueOf() 方法,
    這些類里面又調用了其他的設計實現,那么這個時候可以先放一放,等你后面弄懂了Integer類之后你再回來看這里就一下子就懂了,沒必要現在一下子就非得弄懂
    這樣子會打亂你的節奏,造成三天打魚兩天曬網的效果,還是按自己的計划,一個一個系統的來!

當然前期工作也得准備充分

  1. 舉個例子吧,String里面涉及了很多Unicode的知識,比如高代理,低代理,位移8位操作,10位操作等等,如果對Unicode和 UFT-16這些編碼不了解的話,那么是無法看懂的,所以這些前提知識是必須要掌握的
  2. 再比如spring用了很多設計模式,單例,工廠,組合,裝飾,代理等等,這些設計模式如果都不清楚的話,那么剛開始看肯定是比較吃力的,所以看之前一定要有基本功,才能達到預習的效果,事半功倍!

堅持最重要

  1. 不能一會搞這個一會搞那個,這個可能是最難辦到的事情了,因為實際生活中,都很忙,所以就得自己想辦法,提升學習效率,因為時間有限,別人學習一小時跟你學習一小時,很可能效率是完全不一樣的
    這樣那些效率高的人就完全會把你甩在身后, 所以我的一條建議就是--- 一定要記筆記!!!!
  2. 筆記很重要,博客也好,自己的筆記本也好,反正一定要精簡,凝練,除非你過目不忘!否則筆記這東西很有用,而且還有一點,一定要摸索出有效的記筆記方法,避免浪費大量時間! 這就好比,我學習不就行了,但是學習不一定進步,跟方法有很大關系
    有的時候學習反而會讓你進步不了也玩不好,白白浪費時間,所以找到好方法很重要,我這個筆記也是上大學時候就開始了,摸索了好一陣子,才慢慢找到適合自己的方式,包括開始記得筆記很繁瑣,后面就開始重點化,凝練化

多反思,多向別人取經

  1. 多問問自己這個月和下個月有什么變化,理論上說百分之99的人都不會有這個問題,我其實也不會問,但是這是一個理想的目標吧
    簡單的做法就是記錄日記,這樣不會忘記上個月我每天都在干什么,對比一下,我有進步嗎,這樣

  2. 還有一點,看看那些優秀的人在學什么,怎么學習的,很多時候能糾正自己的方向!
    做事要專注一點吧,該玩的時候玩,該學習的時候就學習!

  3. 當然還有一點是一定要有自己的習慣與計划,不能別人干什么我也干什么,這樣試最累的,就比如你看同事學習,你很慌,你也在學習,這個時候你是被動的,一旦同事不學習了,你也就不學習了,這樣其實很不好
    你自己沒有主動權,一定要有自我意識,比如我就計划那天晚上干什么,到了那天我就干什么,即使別人在玩或者在學習也影響不了我!
    我曾經就很受別人影響,所以現在基本都是自己一個人租房子了,舒服多了,有適合自己的習慣與計划!!!!

交流

最后,學習其實不一定有用,也可能你到了35歲甚至還不如那些沒學習的人混得好,但是你裝在肚子里的知識是受用終身的,一句話,反正沒壞處!!!
當然什么時候都是身體第一,健康永遠最重要,學習也要適可而止,該追劇玩游戲的時候也要適當休息,玩游戲可以愉悅心情,預防老年痴呆,追劇可以擴展你的視野,教給你很多生活道理
這些都是和學習不沖突的,千萬別成了只會學習的窗內人!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM