个人学习方法分享
hi,大家好,今天來分享一下,我的一些學(xué)習(xí)經(jīng)驗,希望對大家學(xué)習(xí)有幫助。
我的學(xué)習(xí)方法
學(xué)習(xí)計劃
核心思想:把自己像產(chǎn)品一樣打造,就像張一鳴經(jīng)典語錄:run company as a product
制定目標(biāo)
首先學(xué)習(xí)需要明確學(xué)習(xí)目標(biāo),學(xué)習(xí)之前,要把目標(biāo)制定下來,一個月,三個月,半年,一年,三年等不同周期目標(biāo)。
迭代計劃
分解目標(biāo),然后建立特定周期的迭代計劃,最終形成多個迭代,?不斷迭代自己。
每天學(xué)習(xí)安排
每一天時間安排,就像高中一樣,制定出一個時間表,心里有數(shù),用來指導(dǎo)學(xué)習(xí),不需要嚴(yán)格執(zhí)行,大致就好,留一些緩沖時間,具體時間安排可以參考番茄工作法,一般每天至少盡量留一個小時給自己充電。
迭代計劃
之前用的一個敏捷開發(fā)工具 trello來實現(xiàn)迭代計劃,我設(shè)置10天為一個迭代周期,每個月結(jié)束后會進行總結(jié)復(fù)盤,是否達到迭代的目標(biāo)。
這里tc是指什么,大家可以猜一下?
具體迭代看板:
每個卡片為一個具體任務(wù),可以設(shè)置開發(fā)時間,設(shè)置任務(wù)狀態(tài),check list是用來驗收任務(wù)-閉環(huán):
trello軟件,在手機和電腦都可以用,是我最喜歡的軟件迭代工具(任務(wù)管理,團隊協(xié)作工具),知乎評價非常高,同樣可以用來迭代自己。
學(xué)習(xí)資料
書籍
很多經(jīng)典書籍(后面有經(jīng)典書單推薦),經(jīng)典書籍可以讓我們更容易理解知識的本質(zhì),學(xué)習(xí)作者對技術(shù)的理解,和作者進行精神交流,有些章節(jié)我都會反復(fù)看幾遍,然后敲代碼去實現(xiàn)驗證。
博客網(wǎng)站
大多數(shù)知識點都需要上網(wǎng)查看,翻看各種博客網(wǎng)站,主要是看一下該知識點的內(nèi)涵和外延,看一下別人是怎么理解的,后面有經(jīng)典博客網(wǎng)站推薦。
極客時間
極客時間課程, 有些很經(jīng)典,質(zhì)量很高,我會選我想看的章節(jié), 查缺補漏, 加強理解, 看一下其他大佬對這個知識點是怎么理解的, 有助于加深理解。
總結(jié)沉淀
我目前用來記筆記的工具 mindmaster 腦圖 比較好分類, 查找比較方便。之前有用文本記錄比較亂,看個人愛好, 這款軟件支持手機和電腦端同步使用。
比如學(xué)習(xí)TCP/IP協(xié)議后,就需要總結(jié)如下:
由于展開太大,這里取TCP節(jié)點展示看(由于導(dǎo)出圖片有大小限制,完整版更詳細(xì)):
不知不覺中總結(jié)很多知識:
這些其實可以算是個人知識財富,希望大家多總結(jié)。????????????????????????
????????????????????????????
讀過一些經(jīng)典書單
1.? 深入理解計算機系統(tǒng)
計算機界的神書,底層開發(fā)的圣經(jīng),計算機基礎(chǔ)知識神作,建議多讀幾遍。
2.具體數(shù)學(xué)
計算機科學(xué)的神奇書籍,幫你建立計算機獨有數(shù)學(xué)思維,比如遞歸,組合,動態(tài)規(guī)劃等。
3. 編譯原理
本書作者Alfred V.Aho、Ravi Sethi和Jeffrey D.Ullman是世界著名的計算機 科學(xué)家,他們在計算機科學(xué)理論、數(shù)據(jù)庫等很多領(lǐng)域都做出了杰出貢獻。本書是編譯領(lǐng)域無可替代的經(jīng)典著作,被廣大計算機專業(yè)人士譽為“龍書”。
4 . 計算機程序的構(gòu)造和解釋
書中使用程序設(shè)計語言Lisp的方言Scheme來解釋計算機科學(xué)的核心概念,包括抽象、遞歸、解釋器以及元語言抽象。具體而微地由宏觀到微觀給出清楚地輪廓與脈絡(luò)。
5 .?The C Programming Language
到今天仍然是C語言入門的首選,書非常簡潔優(yōu)美,就像C語言本身一樣。
6.??深度探索C++對象模型
C++對象內(nèi)存模型,從語法上看編譯器實現(xiàn),學(xué)習(xí)C++必須要掌握的。
7.??深入理解LINUX內(nèi)核
如果你想深入學(xué)習(xí)Linux內(nèi)核,這本書是個很好選擇。
8.??深入理解LINUX網(wǎng)絡(luò)內(nèi)幕
對Linux網(wǎng)絡(luò)子系統(tǒng)有深入分析,如果你要深入學(xué)習(xí)網(wǎng)絡(luò),這本書是很好的選擇。
9.??UNIX編程藝術(shù)
本書主要介紹了Unix系統(tǒng)領(lǐng)域中的設(shè)計和開發(fā)哲學(xué)、思想文化體系、原則與經(jīng)驗,而這些經(jīng)驗對于理解Linux系統(tǒng)有非常大的益處。
10. 程序員的自我修養(yǎng)
了解程序編譯,連接,庫等程序運行原理,包含windows和linux系統(tǒng),加強基本功修煉。
11.? 刻意練習(xí)
這本書深刻分析刻意練習(xí)背后的原理,用科學(xué)方法論證如何從新手到大師。
推薦好的博客
1.https://blog.csdn.net/dog250
dog250的文章都比較深刻,屬于網(wǎng)絡(luò)進階,可能不太適合入門,建議入門后,再看這里文章,會讓你醍醐灌頂。
2. https://blog.csdn.net/gatieme
操作系統(tǒng)優(yōu)質(zhì)博客,可以學(xué)習(xí)linux 調(diào)度相關(guān)內(nèi)核知識;
3.http://www.wowotech.net
蝸窩科技,博客專注分享linux內(nèi)核知識(偏嵌入式方向), 很多文章都非常精華和透徹,值得內(nèi)核學(xué)習(xí)者學(xué)習(xí);
4. http://bbs.chinaunix.net/
bbs.chinaunix的內(nèi)核板塊,第一代內(nèi)核程序員聚集地,很多大佬在這里分享內(nèi)核知識,現(xiàn)在應(yīng)該都是各大公司技術(shù)專家或者負(fù)責(zé)人了。
5.https://coolshell.cn
耗子叔個人技術(shù)網(wǎng)站,早期我喜歡的技術(shù)blog博主,一個樂于分享技術(shù)的大牛,尤其是分享的基礎(chǔ)知識,本人也很喜歡基礎(chǔ)知識;
6. https://blog.codingnow.com/
云風(fēng)的blog,大多數(shù)和游戲相關(guān),可以學(xué)習(xí)很多高性能編程技巧。
?
7.?C++博客
7.1 https://www.stroustrup.com
Bjarne Stroustrup,不認(rèn)識的可以去面壁了,沒有他,就沒有我們現(xiàn)在的飯碗。Bjarne Stroustrup是丹麥人,目前任教于TAMU。他的Homepage和他的書籍The C++ Programming Language一樣,都是百科全書級的,如果你認(rèn)真研究,你也會成為你同事或周圍人的C++之父。
7.2 https://www.fluentcpp.com
博客作者Jonathan Boccara是C++軟件工程負(fù)責(zé)人、博客作者和作家,專注于如何使代碼具有表現(xiàn)力,頂級C++高手。
7.3 http://scottmeyers.blogspot.com
Scott Meyers,不多介紹,世界上幾乎每個C++程序員都應(yīng)該知道的名字,暢銷書:Effective C++,?More Effective C++的作者。博客長期更新,就憑Scott Meyers這個名字,就值得一讀。
7.4 http://www.modernescpp.com/index.php
現(xiàn)代C++編程大神,文章主打modern C++,讓你與時俱進;
7.5 http://purecpp.org/
應(yīng)該是算國內(nèi)頂級C++社區(qū),舉辦多屆C++大會。博主為C++委員會成員
個人博客 https://www.cnblogs.com/qicosmos,也非常值得C++開發(fā)者學(xué)習(xí)。
8.http://www.yinwang.org/
王垠大佬博客,對編程語言理解深刻,如果還在學(xué)習(xí)編程語言語法,可以看一下這個博客一些文章;
個人學(xué)習(xí)經(jīng)驗總結(jié)
此處為個人學(xué)習(xí)經(jīng)驗總結(jié),可能不一定適合你,但或許對你有些幫助,希望你取長補短,協(xié)助你找到自己的方向。
1. 學(xué)習(xí)一定要有目標(biāo),目標(biāo)一定要有計劃(排期),計劃一定要有落地執(zhí)行方案(迭代),迭代一定要有check list(結(jié)果驗證),最后根據(jù)結(jié)果進行復(fù)盤總結(jié),這樣才能形成學(xué)習(xí)的閉環(huán),然后不斷按照這個流程迭代自己,同時整個流程可能也會發(fā)現(xiàn)一些問題,比如拖延,比如時間估算不準(zhǔn)等,這時候流程也需要不斷調(diào)整優(yōu)化。
2. 學(xué)習(xí)中,真正困難的地方,是習(xí)慣問題,可能存在一些不好的習(xí)慣,導(dǎo)致不能專心學(xué)習(xí),比如玩手機等,改變自己習(xí)慣是一件很困難的事情,如果你已經(jīng)走投無路,或者你很想完成你的目標(biāo),做夢都想,那你必須對自己狠心一點,改掉自己不好習(xí)慣,學(xué)習(xí)的時候最好專注,找個安靜的地方學(xué)習(xí),盡量不要被打擾。
3. 學(xué)習(xí)中,多去和別人交流,很多心中疑惑,很可能別人一句話就讓你悟道解開,和大神交流(可以書本,視頻演講,直播,線下技術(shù)講座等等),要學(xué)會虛心請教,大神對一些基礎(chǔ)概念的本質(zhì)理解,會讓人醍醐灌頂,勝讀十年書。
4. 學(xué)習(xí)要有耐心,很多時候是需要花很多時間去學(xué)習(xí)一個知識點,一些知識點需要反復(fù)來回多看幾遍,要刻意去練習(xí),大腦才會加深影響,慢慢地把各個點串起來,很多時候看代碼就是這樣,需要時間,我會慢慢在大腦中試圖關(guān)聯(lián)起來,最后才能恍然大悟。
5. 學(xué)習(xí)最重要就是堅持,這個比任何技能都重要,很多知識是需要花很多時間才能吃透的,而這個過程并不是循序漸進,很可能是某一天靈感爆發(fā),或者悟道,而這個爆發(fā)又是你之前慢慢積累結(jié)果,所以很多時候,我們可能百思不得其解,很多人中途可能放棄了,覺得太難了,?如果我們非常想完成我們的目標(biāo),就要突破這些難點,咬牙堅持,總有一天會撥開迷霧,獲得真知,你會感謝當(dāng)初堅持下來的你,這個過程是痛并快樂著。
6. 要學(xué)會思考,要學(xué)會多總結(jié)(輸出),對知識的透徹理解,才是我們最終的目標(biāo),而不是死記硬背,背概念,這需要我們不斷思考,不斷總結(jié),所謂智慧就是這些思考的成果,這也是社會進步源泉;
7. 要學(xué)會分清重點,逐個攻破重點知識,時間有限,需要掌握28定律,了解一個系統(tǒng),先要明白什么才是它的核心技術(shù),其他只是輔助或者實現(xiàn)細(xì)節(jié)。
8. 要學(xué)會各種搜索技能(google,bing,百度,知乎等),學(xué)會查找各種經(jīng)典資源,包括付費資源(csdn下載,百度文檔,購買課程),有時候不要舍不得,好的資料,猶如武林秘籍,可以助你一臂之力。
總之,要建立自己的知識體系,不斷迭代,查缺補漏, 把其他資源融入到自己計劃中 。
技術(shù)思考總結(jié)
多年工作經(jīng)驗和學(xué)習(xí)經(jīng)驗,分享一些技術(shù)思考,可能不一定準(zhǔn)確,但希望對熱愛技術(shù)人有一些幫助。
1. 很多開源軟件,其實并不是很難,只要花時間,有耐心啃代碼,都會水落石出,源碼面前,了無秘密,這是進大廠的一個快速路徑。
2. 上層技術(shù)都是都是基于底層技術(shù)構(gòu)建,找到底層原子操作,你也可以構(gòu)建上層應(yīng)用,比如docker基于Linux三大件(namespace,cgroup,ufs),不管上層應(yīng)用如何變化,這些技術(shù)都不會過時,掌握這些核心技術(shù),會讓你走得更遠,即使是開發(fā)應(yīng)用,也會比其他人做得更好。
3. 計算機基礎(chǔ)知識(內(nèi)存,CPU,緩存,網(wǎng)絡(luò),文件系統(tǒng)),基礎(chǔ)思想(二分思想,緩存思想, ?面向?qū)ο?#xff0c;流水線,批量,遞歸,延后處理等),都非常重要,這些是決定你技術(shù)上限,只有深刻理解基礎(chǔ)知識,才能看問題看到本質(zhì),才能擁有強悍的實戰(zhàn)能力,才能在技術(shù)之路上走得更遠:
一類是解決問題的高手,保證業(yè)務(wù)可以穩(wěn)定持續(xù)運行,基本功非常扎實,可以解決很多技術(shù)難題,最終這類人會成為技術(shù)牛人和專家,比如阿里的多隆大神,謝寶友大神,耗子叔-陳皓,Dog250,TK教主,Kevin David Mitnick等;
一類是代碼和軟件設(shè)計高手,輸出機器,保證產(chǎn)品可以快速上線,這類人最終會成為架構(gòu)師或者負(fù)責(zé)人,比如求伯君,章文嵩,章亦春,張小龍,比爾蓋茨,Ken Thompson,Fabrice Bellard,Linus Torvalds,Jeff Dean等;
4. 學(xué)會把大系統(tǒng)分解成子系統(tǒng),按專項逐個攻破每個子系統(tǒng),收集子系統(tǒng)相關(guān)的資料,吸收他人的精華,有時候勝讀十年書,加快自己成長;每個專家大神,都是從菜鳥過來的,向大佬看齊,快速吸收他們的經(jīng)驗,總有一天你也會修煉成功。
5. 團隊都需要各種人才,我們不可能樣樣精通,5v5團戰(zhàn)是需要大家一起配合的,一定要找到自己的位置,就算是輔助,也是世界級輔助,照樣讓人刮目相看,比如我在我們團隊,基本上算是疑難問題解決,輔助(各種環(huán)境搭建,資源建設(shè),自動化,協(xié)助他人解決問題)和攻關(guān)隊長,但不是很擅長寫大段代碼(純輸出)。
6. 有一些技術(shù)難點,是必現(xiàn)要去攻破的,比如之前在外企的時候,我寫了多年的C++業(yè)務(wù)框架代碼,一直對模板元編程感到力不從心,后面決心攻破這個問題, 并總結(jié)了C++這三座大山:
C++內(nèi)存管理全景指南
C++模版的本質(zhì)
C++的面向?qū)ο?/p>
同時業(yè)務(wù)框架代碼講究就是代碼和架構(gòu)設(shè)計,對設(shè)計能力要求很高,我又重新學(xué)習(xí)很多設(shè)計模式(大話設(shè)計模式等):
經(jīng)典永不過時!重溫設(shè)計模式
7. 不設(shè)邊界,之前在華為的時候,主要是做無線通信產(chǎn)品(USB上網(wǎng)卡,無線模塊,車載模塊,家庭CPE網(wǎng)關(guān)),需要對3G,4G等協(xié)議非常熟悉,我是從來沒有搞過,使用是高通modem芯片,這些都是高通專利,一些重要的代碼沒有開放給我們,只能通過查看log和有限資料學(xué)習(xí),通過提case和高通技術(shù)支持交流(悄悄學(xué)習(xí)),慢慢熟悉了高通設(shè)計,最終我們寫了很多經(jīng)典文章,比如無線傳輸性能白皮書等;我們開發(fā)分兩波人,一波是主協(xié)議,屬于上層應(yīng)用,一波是主驅(qū)動,屬于底層架構(gòu),我一年后差不多掌握了無線協(xié)議開發(fā),包括熟悉理解高通芯片設(shè)計,后面主動學(xué)習(xí)USB協(xié)議和驅(qū)動相關(guān)的,1年半后,我可以一個人包攬從上層到底層全部任務(wù),后面很多項目PL都叫我來主導(dǎo),每一年幾乎都是優(yōu)秀員工,但也有很多不足,需要學(xué)習(xí)。
最后
學(xué)習(xí)技術(shù),還是要有一點情懷(我知道大部分都是為掙錢,這個很正常),很多時候技術(shù)是枯燥無味的,需要長時間做冷板凳,如果內(nèi)心不喜歡,很可能會非常痛苦,但調(diào)通代碼或者找到某個疑難bug的根本原因帶來的快樂,是其他人無法理解的,那種成就感會激勵我們繼續(xù)前行,希望大家都能朝著自己的目標(biāo)努力,終有一天,有所收獲。
想要獲取"經(jīng)典完整版TCP/IP協(xié)議總結(jié)PDF",只要三連截圖給我,我發(fā)給你。
- END -
看完一鍵三連在看,轉(zhuǎn)發(fā),點贊
是對文章最大的贊賞,感謝你
推薦閱讀
圖解Linux 內(nèi)核TCP/IP 協(xié)議棧實現(xiàn)|Linux網(wǎng)絡(luò)硬核系列
大廠的面試官是如何挑人的?
一個奇葩的網(wǎng)絡(luò)問題
如何成為一名大廠的優(yōu)秀員工?
總結(jié)
- 上一篇: Linux网络新技术基石 |eBPF
- 下一篇: TCP/IP协议精华指南pdf发布