近來有一些小夥伴私信問我 「怎麼提升學習效率」, 「怎麼看源碼」,「如何進大廠」...mysql
我...我有些語塞。。這類和綜合因素有關的問題我很差回答,也不以爲能回答好。git
我會試着從我我的的角度扯一扯 我轉行來,從小廠渣渣變大廠渣渣(進過阿里某個BU,姑且算吧:)的 一些「學習方法」和「技術學習路線」。扯的很差的地方還請你們見諒:)github
所謂對症下藥,指的是 醫生針對患者病症用藥。比喻針對事物的問題所在,採起有效的措施。出自《三國志·魏志·華陀傳》。面試
小夥伴們配合下啊,阿姨在講笑話。。但大致也可按這個思路來思考。不論是什麼樣的問題,咱們都得先理解問題是什麼,想要的結果是什麼。而後才能針對訴求制定一些解決方法,執行起來,並不斷反思,總結,改進。sql
提問編程
有時候咱們並不知道問題是什麼。tomcat
好比爲啥個人tomcat起不來啦,爲啥...這類問題在技術羣裏不少,固然大多隻有問題,沒有回答...網絡
並非大佬們特別不肯意回答,而是一個寬泛沒有重點的問題讓人沒法回答。你說我原本就不知道問題在哪啊?併發
兄弟,不清楚問題,不要加工,不要寬泛描述問題,原封不動的用報錯信息搜索,用問題的關鍵字搜索,用google搜索(用了就回不去了:)框架
任何問題都同樣,提問以前先搜索。網上的專業回答大多時候更香。
咱們有時也不知道怎麼分析問題。沒辦法。一層層問下去,一層層解析下去,直到觸碰本身的知識盲點,學起來,經過問題由淺入深的搭建本身的知識體系。剛入行時我就買了《編譯原理》,我是個憨憨。。
辦法
瞭解了問題,知道了想要的結果。解決辦法就知道了,不知道就仍是一個新的問題,接着搜,接着問,接着分析。
好比說如何提升學習效率? 重點是 「提升」 「學習」 「效率」。
首先你明確你想要的學習結果了嗎?你細化每一個結果了嗎?你知道結果的二八原則部分是哪些嗎?好吧,阿姨扯不下去了,意會之。。
行動力
道理不難懂,行動了嗎。。
反思總結
要知道咱們想要的結果是什麼,若是目標沒有達到,就必定要反思總結其餘階段哪些地方出錯了,並不斷改進。不要本身騙本身,作無用功。
「學習方法」總算扯完了,我相信你們和小姐姐同樣都不笨 :D,更多的是思想上
和行動上
的偷懶。固然偷懶也沒什麼很差,但必定要言行一致 :)
小姐姐以前的目標很明確,面向 「大廠面試」 學習。
單從技術知識儲備角度說,我以爲大廠面試既要深度,又要廣度。可是不要怕,Java碼農深又能深到哪...
若是你以爲深,問題不大,只是如今還太菜的緣由,三年工做經驗足夠學習深刻了:)
我比較實在的學習主要是一年時間,當時結合工做內容和打工市場上問到的技術棧,學習了Java併發包/Java IO/JVM/Spring系列/Mysql/Redis/ZooKeeper/Kafka/Canal/Netty等源碼知識,而且寫了一些博客文章思考總結。
這裏求生一下,我並非以爲學習源碼就必定是更深刻的學習方式。在我看來,學習知識要先從概念,理念這些思想上理解是解決了什麼樣的問題,源碼只是具體的實現方式。透過源碼要能明白前者,而後面試纔好扯淡。
併發
操做系統類的書籍總有一章是講併發編程的,這是一個通用問題。在啃J.U.C包前不妨先理解一下什麼是臨界區,什麼是競態條件...
這裏推薦看《深刻理解計算機系統》和MOOC網上南京大學駱斌老師的《計算機操做系統》視頻課程,好吃免費。。
啃J.U.C包的話,也能夠先看看《Java併發編程實戰》和《Java併發編程的藝術》這兩本書。前者是國外一堆領域大牛(包括做者Doug Lea大神)的譯做,後者是國內「併發編程網」的發起人方騰飛的著做。
看源碼時,能夠參考網上一些源碼分析文章,如小明哥的死磕Java併發系列。最重要的是看源碼註釋!!!做者的設計思想都寫在上面了,Doug Lea會和你隨便扯淡嗎。。
Java IO
一樣支撐起它的仍是計算機基礎知識。說來慚愧,阿姨還沒看過《TCP/IP協議詳解》這類經典書籍。不過我卻是用極客時間劉超老師的《趣談網絡協議》課程催眠了許久:)
無論經過什麼途徑,在對網絡知識有了必定了解後,才能恰好的理解Unix IO模型,epoll機制,Reactor模型...
學習Java NIO時,能夠找一些github上的NIO Server框架模仿着實現下。閱讀Netty/ZooKeeper等框架的NIO實現,也能夠類比學習Redis的實現。會加深對這塊知識的理解。
JVM
話很少說。我的是沒有深刻啃這塊內容的,也以爲深刻啃這個不如啃其餘的,好比計算機基礎知識(僅表明我的想法,不噴:)這塊能夠看周志明的《深刻理解Java虛擬機:JVM高級特性與最佳實踐》(第三版),極客時間鄭雨迪的《深刻拆解Java虛擬機》,網上JVM調優的文章也很多,如R大,你假笨,佔小狼...
Spring系列
基礎仍是IOC和AOP,網上的文章實在是太多了,好比芋道源碼整理並寫了不少源碼分析文章。另外,太過龐大無從下手時,能夠學習最初的版本,github的interface21,小而香。
Mysql
這裏吹爆 掘金小冊 小孩子4919 的《MySQL 是怎樣運行的:從根兒上理解 MySQL》。看了四五遍這個,基本瞭解mysql的單機原理了,我也不想再看什麼其餘Mysql書籍了。多說一句,如今全民知識付費的環境下,這個付費質量實在過高了。都買了N年了,羣裏每一個Mysql的問題,做者幾乎都會回答。我懷疑29.9元是筆鉅款。極客時間林曉斌的《MYSQL實戰45講》也很香,更偏向從實戰問題出發,講解原理。
Redis
《Redis開發與運維》,《Redis設計與實現》和 掘金小冊 老錢的《Redis 深度歷險:核心原理與應用實踐》均可以看看。源碼系列的話能夠參考張鐵蕾,我叫尤加利 的源碼分析。
ZooKeeper
我在學習時主要參考了《從Paxos到ZooKeeper分佈式一致性原理與實踐》一書,本身試着寫了這個系列的源碼分析文章,雖然寫的一言難盡。但本身輸出思考總結的收穫是最大的。
Kafka
廝大的《深刻理解Kafka:核心設計與實踐原理》。
Netty
網上的源碼分析文章實在太多了,如永順 ,閃電俠,佔小狼...
Canal
官方文檔和Issue,夠擼源碼了。
.....
阿姨實在寫不動了。。。
一開始啥也不會,囿於英文不利索等問題,傾向於搜索非官方權威的書籍,博客等。後來慢慢發現權威資料大多時候是最高效的,包括不限於做者參與的書籍,官方文檔,博客,repo....
從使用-》原理-》設計不斷獲取經驗,有了必定積累。從設計角度更多思考問題,更容易加深理解,提升本身。
小馬過河同樣,以上言論僅表明我的一時觀點,好壞由人。
最後,小姐姐把文中提到或沒提到的我的認爲不錯的資料連接放一下,感興趣的能夠進一步瞭解。
喜歡就關注我吧,小姐姐在這裏等你~
[1].https://www.icourse163.org/course/NJU-1001571004?tid=1003590008
[2].https://www.icourse163.org/course/ZJU-93001?tid=1003997005
[3].https://www.jianshu.com/p/4351e70b3ae6
[4].https://github.com/yongshun/learn_netty_source_code
[5].https://space.bilibili.com/33807709?from=search&seid=15582060153103700302