從JVM入手,聊聊Java的學習和複習!

我們在學習的時候,多多少少都會遇到這麼一個問題:

“學了就忘”

之前也聊過這個問題,在我看來,這個問題是個共性問題,尤其初學者,更是不知所措,倍受打擊,那麼,爲啥會學了就忘呢?

我根據自己的學習經驗,大致總結以下三點原因:

1、知識沒有用起來

2、沒有及時複習

3、沒有反饋輸出

當然,導致我們學了就忘的原因不止如此,而且根據每個人的學習狀況不同,可能遠遠不止如此,但是正如這個問題是個共性問題一樣,我們在這裏只說普遍性原因,可能很多人會因爲出現上面三個原因導致學習效果不理想。

在此之前,你可能聽過別人跟你說,學習編程要多實踐,不能只是看書或者聽視頻,要實際行動起來,動動手,敲敲代碼,很多初學者也都知道,你看明白或者聽明白跟你能上機自己敲出來完全是兩碼事,到了後期可能又會有跟你說,多多實戰,其實這些都是再告訴你:

“學了知識,如果不及時用起來,時間久了就會忘得差不多了,想要記得牢固,關鍵要把知識用起來”

說到這裏,可能有人會說了,這個我知道,比如說像框架類的知識,就拿Spring來說吧,這個框架很重要,我學了之後知道要實戰一下才會學的更好,事實上我也正是這麼做的,不過像一些其他的知識好像就不這麼回事,比如說Java虛擬機吧,這個屬於Java高階知識吧,初學者比較難啃,而且這類知識點找工作面試是常客啊,這個真的是學了忘,忘了學,我學的時候也想能不能找個實戰項目練習下,這樣學的更加牢固,可是這些知識初學感覺很多都是概念性的東西,找不到實際應用啊。

確實有這方面的問題,那麼像這樣的知識該怎麼學呢?學了總忘怎麼辦呢?

我也有這樣的困惑,但是通過我自己這樣的做法,我發現實際情況改善了很多,什麼方法呢?

先說下背景,我學過JVM,但是時間長了,自己感覺跟沒學一樣,忘得差不多了,相信很多人都有這樣的感受,那該怎麼做呢?

首先,我會新建一個空白思維導圖,然後就開始想,使勁的去回想關於Java虛擬機的知識,因爲之前學過這方面的知識,雖然猛地一想,感覺自己忘得差不多了,但是冷靜下來,細細回想還是能想起來很多的關鍵詞的,於是,我開始了思維導圖的創建。

就這樣的一步步的回想,首先從最簡單的,遇到Java虛擬機,那就是首先要搞明白什麼是Java虛擬機了,好,新建一個節點,寫上“什麼是JVM?”,有了這個問題之後,我就試着去回答這個問題,在去回答這個我問題的過程中,我突然又想到了Java的跨平臺的原理,緊接着又想到當時在解決這塊時,自己對編譯和解釋比較困惑,這些都是知識點,統統新建節點記下來。

然後我繼續回想,記得之前自己對這幾個概念很模糊:

1、Java內存結構

2、Java對象模型

3、jvm內存結構

4、jvm內存模型

於是又記下新的節點,對這幾個自己比較有印象的是jvm內存模型,當時花了很多力氣學習,經過自己的不斷努力,自己又想到了關於內存模型的一些知識點,比如說volatile關鍵字,重排序和鎖之類的。

就順着這個思路,一個知識點引起另外一個知識點,發現自己能夠回想起來的越來越多了,比如後續的堆棧問題,還有很重要的垃圾回收機制,也就是GC,GC又會牽涉出算法和收集器這些知識,然後還有類加載的問題,對,還有虛擬機的性能調優等等。

就這樣,經過自己的不斷回想,慢慢的,一張思維導圖就出現了

640?wx_fmt=png

看到這個導圖,我自己都驚訝了,本來覺得自己忘得差不多了,沒想到還能想起來那麼多,當然,這些只是關於Java虛擬機知識的冰山一角,不過,這些對我學習來說就足夠了,看着這個圖,我再試着去回想每一個知識點或者問題的答案,發現有些自己還能說出來個一二三四,但是有些就比較模糊了,於是乎,對於這塊的知識點,自己就發現了屬於自己的盲點或者難點。

人吶,最怕的就是不知道自己哪裏出了問題,因爲不知道所以即使想努力也不知道朝哪個方向使勁啊,既然現在知道自己在JVM這塊的薄弱之處,那就花時間去彌補,去學習吧。

當然,自己這樣回想出來的肯定是缺胳膊少腿的,不過我們可以找一些專業書籍來對照,或者網上搜搜相關面試題或者別人的總結,把那些是jvm的重點但是咱們沒想起來的添加上去,然後再重點去學習這些之前沒有想起來的。

這既是查漏補缺,也是強化記憶!

當你完成了上面的學習之後你就可以歇歇了,等過個幾天,有空了,再新建一個思維導圖,繼續來,你要相信,你回想的思維導圖會越來越好的。

這樣的方法好嗎?實際上現在很大一部分人的做法是覺得自己忘了,就拿出自己之前的筆記,翻翻看看,這就是很多人的複習,也算是學習吧!

倒也不是說這樣不好,只是效果偏差,在《知識大遷移》和《學習之道》中都有提過,不要過多的在書上標記內容,因爲很多人都是標記了重點,然後回過頭來看這些標記複習,經研究發現,這樣的效果並不好,在《學習之道》中花了很大的篇幅去解釋一個概念“提取練習”,它的核心就是推薦我們去回想內容,這樣的學習效率是比較高的,感興趣的可以去看看這兩本書。

以上就是我現在對Java的學習和複習採用的一個方法,靈感大多來源《學習之道》,其實不單單是Java虛擬機這類的知識,我發現很多知識的學習和複習都可以這樣來幹,如果你仔細想想,你會發現,它很好的間接的解決了以下的問題:

1、知識沒有及時複習

2、沒有反饋輸出

3、知識沒有用起來

可能有些人不明白了,這怎麼解決“沒有反饋輸出”這個問題了,當然啦,當你瞭解到自己的盲點和難點,你肯點會花時間去學習,然後會自己思考,會記筆記,說不定還會寫一些博客分享出去,這不就是你的輸出嘛。

那有些人又不明白了,“知識沒有用起來”呢?

大家可以看我回想的導圖左上角有一個關於Java內存泄漏的,有讓寫出會造成堆內存,棧內存和方法區溢出的程序,這個不就可以敲起來了嘛,然後就會牽涉到性能調優,像類加載這塊,也可以敲起來啊,這不都是“用”?

那麼,你再想,這不就是解決了我們“學了就忘”這個大問題嘛?

最後再說一句,其實有的時候你會發現,學習不難,你只是缺少一個好的方法和你的實際行動!

好了,就到這了,個人的一點小經驗,希望對你有用!轉發分享都是真愛!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章