因爲疫情的影響,最近在家辦公盛行。有同窗跟我抱怨,說他們公司某某員工穿着睡衣就開視頻會議了。html
![image-20200213124914811](http://static.javashuo.com/static/loading.gif)
而後開完會議就躺在沙發上面辦公,越躺越低,而後不當心睡着了。起來就發現到了下班的點了。內心那個虛呀,因而晚上加班繼續完成任務。我以爲這是在家辦公效率低的緣由之一吧…java
言歸正傳,今天我想分享一點關於學習方法的內容,順便引出一些乾貨給你們。因而早早洗漱精心打扮一番坐在電腦前開始幹活了。事實證實,即便是在家,這個儀式感對效率的提高頗有效果呀:面試
![image-20200213124822268](http://static.javashuo.com/static/loading.gif)
這兩天有位帥氣的小哥哥跟我交流一些學習的方法。思索了一下,除了學習以外,記憶方法也是比較重要的,因此我今天重點跟你們分享下學習和記憶方法相關的內容。算法
一、高效學習方法
隨着知識碎片化時代的來臨,微博微信公衆號、各個社交網站、視頻教程、在線教育盛行,看起來好像咱們想要學的東西,網上都有,如今這個時代,對於學生來是愈來愈友好了。數據庫
但是,內容多了,咱們卻迷茫了,不知道從何時開始感受網上的內容本身都看過,可是就是不知道細節,也沒動力去了解。咱們的大腦被各類攝取成本低的信息流佔據着(表情包,段子,視頻),對於真正枯燥卻有用的知識自動屏蔽了。編程
爲何?由於咱們缺乏一個學習計劃,促使咱們主動搜尋知識,有別於那種被動的灌輸。後端
先來說講提高效率您不得不瞭解的一些祕密。安全
舉個學習的例子,談到JVM,相信作Java開發的同事都有了解過,咱們也能夠看到網上的文章教程,視頻教程,五花八門,各有特點,可是大部分看下來感受並不能打通個人任督二脈,彷佛少了點什麼。我琢磨了好一下子這個問題。性能優化
1.一、提高學習效率的祕密
1.1.一、圖片勝於文字
正所謂一圖勝千文,這不是沒有科學依據的,肯尼思·希格比
的《如何高效記憶》
一書中就作過相似實驗證實圖片交流的記憶有效性更好。微信
1.1.二、領悟透徹
學而不思則罔,思而不學則殆,只有在良好的瞭解了知識背後的含義以後,記憶的效果更好。
就好比說,個人名字:arthinking你以爲很難記憶,那是由於不理解他,若是你知道這是我自創的詞,意思是:
art + thinking(thinking artistically)
你就會恍然大悟,馬上記住了。
若是你是個代碼界裏面的音樂狠人,那麼你能夠給本身的知識編一個有押韻的曲子,那學習效果但是卓羣的。
1.1.三、啓發性學習
有目的性的學習效果會更好。好比,我在寫博客的時候,每篇文章開頭或者文中,都會寫一些問題留給你們思考。帶着問題去閱讀,這樣就能夠有目的的記住內容了。設想一下,若是沒有專門去留意,誰會記得交通訊號燈最上面的那個是什麼顏色呢?
有些小夥伴喜歡面試前臨時抱佛腳拼命灌輸知識,其實這種灌輸產生的記憶是比較死板的。
我的建議在系統掌握了知識以後,按期經過思惟導圖或者其餘有意義的圖片回顧,與新的知識產生聯結,這樣除了可以更好記住所學知識,最重要的是能讓知識活起來,真正讓本身所用。
1.二、知識碎片化與學習的衝突
如今隨着社交網絡的普及,產生了大量的碎片知識,販賣焦慮的文章或者動態真的是太多了。
如下標題是否似曾相識:
三十五歲後的那些人都去哪了?
閨蜜買了三套房?
工做一年深圳買房是一種怎樣的體驗?
同齡人已經開始拋棄你了...
…
實驗發現:事實上,焦慮會干擾記憶,你越是焦慮地去學習一些知識,你學習的記憶效果就越差,這真是一個負向循環的過程呢。
我大筆一揮,不由想畫個圖來表達下,加深你們對這個理論的印象,不是說圖像的記憶效果更佳嘛:
也許你在社交網絡上匆匆看完了文章,而後次日就忘了前一天看到什麼了,表面上看起來花了不少時間學習,可是這種碎片化的學習並不可以讓你真正的吸取太多內容。
因此我通常在網絡上面會花費比較多的時間去篩選知識,過濾掉信息噪音,真正讓本身慢下來學習。
那麼咱們知道這些問題以後,如何作到不緊不慢地學習呢,下面我講下我認爲比較高效的學習法。
1.三、高效學習法
天才真的是太少了,若是你想學完一項技能就立刻達到巔峯水平
,那麼,兄弟,請你醒一醒(使勁兒搖)。
通常個人學習過程是這樣的:
一、定義學習目標
學什麼,什麼時間內完成。
二、學習內容 + 作筆記 + 分享
把學到的內容表述出來,表述的方式能夠是:
作筆記,記錄下任何你想記住的東西。另外,爲了方便你隨時記錄遇到的知識或想法,可使用雲筆記隨時分類記錄知識,按期去整理分類目錄裏面的內容;
寫博客,結構化知識(根據本身定製的各類維度去收集信息,思考,總結,系統化);
團隊分享,這個是我最推薦的,你能夠與更多人交流,思想碰撞可能會讓你發現本身的一些認知盲點;
這個過程當中,須要儘可能總結出本身的領悟到的內容,最好經過圖片,動畫,或者思惟導圖的方式列出來,增強記憶。
三、二次複習:簡化知識,融匯貫通
以高度歸納的方式總結你所學知識,把相關知識點串起來,能夠整理相關思惟導圖,對全部筆記複習一遍。
整理思惟導圖的目的就是讓本身的知識結構網狀化,造成本身的私人知識庫。
這一點很重要,有了這個知識結構網,而且有這種結構化整理知識的能力後。那麼你就不會被網上各類碎片化知識迷惑了。
梳理除告終構網並不意味着你就萬事大吉了,你可能還會進一步深刻了解各個知識點,有一個昇華的認識,或者想到兩個領域的知識原來能夠聯結起來,因此你須要不斷的去反思總結,進一步概括知識,讓知識庫更加豐富,聯結的更加緊密,就像那個什麼來的:高內聚
。
四、反覆複習,實際應用,產生更多知識聯結
在實際工做中,多發掘應用場景,結合其餘技術一塊兒思考,挖掘類似與關聯之處。在實際場景中使用技術。讓本身的知識組成一張網。這個過程當中,你應該常常性的去複習學過的內容。
若是用思惟導圖去總結,你的這張網應該是愈來愈大的。
![image-20200214150032719](http://static.javashuo.com/static/loading.gif)
二、高效記憶法
根據艾賓浩斯遺忘曲線
[2]規律,咱們的知識點久久不用或者不回顧是會逐漸遺忘的。因此如今咱們弄懂了,並不表明未來也懂。因此須要咱們對照着思惟導圖,或者概覽圖,問題列表逐個去回顧知識點,努力回顧知識細節。若是有發現遺忘的,那麼能夠從新學習鞏固下。遺忘曲線(https://www.csustan.edu/sites/default/files/groups/Writing Program/forgetting_curve.pdf)[1] 這篇文章跟咱們介紹了知識遺忘的規律。下面是文中提供的一個遺忘曲線圖:
![image-20200214111526993](http://static.javashuo.com/static/loading.gif)
也就是說,在學習完以後,你須要按期的進行復習,加深印象,複習時間點:學完10分鐘
,24小時
,1周
,1個月
。
總的來講就是:學習+筆記 -> 總結 -> 回顧-> 延伸 -> 串聯 -> 回顧 -> 回顧…
遺忘曲線由德國心理學家艾賓浩斯(H.Ebbinghaus)研究發現,描述了人類大腦對新事物遺忘的規律。人體大腦對新事物遺忘的按部就班的直觀描述,人們能夠從遺忘曲線中掌握遺忘規律並加以利用,從而提高自我記憶能力。
另外若是有發現知識點有新的認識,或者其餘領域知識能夠交織起來,能夠從新整理,把咱們的知識梳理成一個體系。
爲了更好的進行學習與幫助記憶,我在這裏精心梳理了JVM相關的系列文章,儘可能以圖片方式進行闡述內容,方便增強記憶。同時每篇文章會以拋出疑問的形式激發你們的思考,讓你們帶着問題去閱讀,達到更好的效果。最後把一系列文章經過一張概覽圖串起來,方便你們總體性的去思考和學習。
三、JVM速成手冊
不管你是跟同事、同窗、上下級、同行、或者面試官討論技術問題的時候,很容易捲入JVM大型撕逼現場。爲了可以讓你們從大型撕逼現場中脫穎而出,最近我苦思冥想着如何把知識點儘量呈現的容易理解,方便記憶。因而就開啓了這一系列文章的編寫。爲了讓JVM相關知識點可以造成一個體系,arthinking將編寫整理一系列的專題,以儘可能以圖片的方式描述相關知識點,而且最終把全部相關知識點串成了一張圖。
點擊查看大圖
![image-20200214154250907](http://static.javashuo.com/static/loading.gif)
另外把文章列表和關鍵信息寫到表格裏面去了。
章節 | 關鍵詞 | 相關思考 |
---|---|---|
Java運行時數據區域是如何工做的 |
JVM內存佈局 對象訪問定位 |
1. JVM內存佈局是怎麼劃分的? 2. JVM裏面各個區直接是怎麼配合工做的? 3. 對象在內存中是如何佈局的? 4. 什麼是操做數棧和局部變量表?能否在class文件中展現下? 5. 運行時常量和字符串常量有什麼區別? 6. 對象訪問定位方式有哪些?各有什麼優勢 |
Java對象歷險記與垃圾回收機制 |
可達性分析 垃圾收集算法 垃圾收集器 |
1. 一個對象的一輩子經歷了什麼? 2. 如何判斷對象是否可用? 3. 引用計數法和可達性分析算法各有什麼優缺點? 4. 哪些對象能夠做爲GC ROOT? 5. 垃圾回收的時候如何快速尋找到根節點?(安全點和OopMap) 6. 垃圾回收算法有哪些?各有什麼優缺點? 7. 有哪些垃圾收集器,各有什麼優缺點,適用什麼場景 8. 什麼時候觸發MinorGC和MajorGC 9. 什麼是空間分配擔保 |
Java對象歷險記與垃圾回收機制 | 分配擔保 空間分配 |
1. Java對象進入堆以後,它的一輩子都經歷了什麼? |
Class文件16進制數字背後的祕密 |
Class文件 反彙編 堆棧原理 |
1. 運行時常量池和靜態常量池有什麼區別? 2. Class文件裏面都有什麼內容? 3. Class文件反彙編以後的格式裏面分別有什麼,嘗試解讀裏面方法中的彙編指令 4. 本地變量表和操做數棧是如何工做的 |
一篇圖文完全弄懂Class文件是如何被加載進JVM的 | 類加載器 加載 鏈接 初始化 |
1. Class.forName到底是怎麼獲取Class對象的Class對象又是什麼? 2. Class文件是如何被加載到JVM裏面的? 3. 類變量是存在堆中仍是存在方法區中? 4. 類構造器 <clinit> 方法何時執行? |
一篇圖文完全弄懂類加載器與雙親委派機制 |
類加載器 雙親委派機制 |
1. 類加載器是怎麼被建立出來的? 2. 什麼是雙親委派機制?爲何要有這種機制? 3. Class實例和類加載器到底是在Java Heap中,仍是在方法區中? 4. 爲什麼要有線程上下文類加載器 |
Java最大棧深度有多大 | 堆棧 |
1. Java最大棧深度多大 2. 程序中如何調優 |
Java代碼編譯方式和JVM三種執行模式 | JIT javac |
1. Java代碼編譯方式有哪些? 2. JVM執行方式有哪些? |
深刻思考:JVM是如何進行方法調用的 |
靜態分派 動態分派 |
1. JVM裏面是如何進行方法調用的? 2. 什麼是靜態分派? 3. 什麼是動態分派? 4. 怎麼保證動態分派的執行效率? 5. 重寫和重載的執行原理? |
10分鐘教你如何hack掉Java編譯器 |
編譯流程 javac JIT 註解處理器 |
1. 編譯器通常編譯流程 2. javac的編譯流程是怎樣的 3. 如何hack掉Java編譯器 4. 運行時DI和編譯期DI的區別 |
深刻探索Java泛型的本質 |
泛型 |
1. 爲何須要泛型 2. Java代碼在編譯後是如何保存泛型信息的 3. Java泛型與C++、Python中的有何區別 4. 如何動態獲取泛型類型 |
Java界的性能優化高手 |
編譯器 解釋器 JIT |
1. javac作了什麼優化 2. Java後端編譯器的發展史 3. JIT是如何工做的 4. 效率與質量的衡量 |
您也能夠點擊查看原文進入個人博客進行閱讀。
四、學習記憶以外
其實記憶知識幫助咱們更好的學習知識。咱們學習知識的本質是要把它用起來,若是隻是記下來了,並無常常去使用,那麼對知識的理解深度確定是不會增長的。
因此咱們最重要要作的就是:應用
使用過程當中自己就是在不斷幫咱們複習加深記憶的過程,期間可能會引入一些新的東西,不斷增強加深咱們對知識點認知。爲了加深認知,你能夠:
多閱覽大神們的相關
博客文章
;項目中思考使用場景並進行
實際運用
;跟進相關開源項目,查看業界
最新進展
;某一天興致來了,pull下
源碼
,debug看看代碼。
好了關於高效學習方法就介紹到這裏了。
其實無論目前經濟大環境如何,咱們目前處境是艱難仍是如往常同樣,咱們都應該保持持續學習,不斷提高本身的競爭力。JVM高效記憶專題
是我整理的一個爲了幫助你們學習JVM相關內容的而輸出的,後續我將輸出更多其餘方面的技術專題。但願你們早日成爲本身心目中的大牛,無論到哪裏均可以實現本身的編程夢
。
「消除勝利的最好辦法就是堅持恐懼!!!」 —— 奧利給
你們一塊兒加油,也請大神們看到有錯漏之處高擡貴手幫忙指點一二。
一些研究代表,人們在學習以後立刻去睡覺,相比同時間段內保持清醒,可以記住更多的內容。這不是睡覺的藉口,好了,我該去休息了。
![image-20200213231701497](http://static.javashuo.com/static/loading.gif)
References
[1]: The Forgetting Curve
https://www.csustan.edu/sites/default/files/groups/Writing Program/forgetting_curve.pdf
[2]: Forgetting curve
https://en.wikipedia.org/wiki/Forgetting_curve
[3]: JVM速成手冊
https://www.itzhai.com/jvm/jvm-quick-learning-manual.html
本文爲arthinking基於相關技術資料和官方文檔撰寫而成,確保內容的準確性,若是你發現了有何錯漏之處,煩請高擡貴手幫忙指正,萬分感激。
你們能夠關注個人博客:itzhai.com 獲取更多文章,我將持續更新後端相關技術,涉及JVM、Java基礎、架構設計、網絡編程、數據結構、數據庫、算法、併發編程、分佈式系統等相關內容。
若是您以爲讀完本文有所收穫的話,能夠關注個人帳號,或者點個贊吧,碼字不易,您的支持就是我寫做的最大動力,再次感謝!
關注個人公衆號,及時獲取最新的文章。
·END·
訪問IT宅(itzhai.com)查看個人博客更多文章
掃碼關注及時獲取新內容↓↓↓
Java後端技術架構 · 技術專題 · 經驗分享
本文分享自微信公衆號 - Java架構雜談(itread)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。