今天來給大家談一談如何高效地學習編程,
無論什么時候,找到學習的目標,以及學習的套路都非常的重要,找不到的話,就只能事倍功半,付出了很多努力,卻遲遲得不到最好的回報,
三四年前,我特別喜歡收藏文章,覺得有些技術文寫得真好,忍不住收藏了!等過了一段時間后,閑得無聊,就去翻收藏夾,想著學一波,誰知道竟然找不到——不是微信給我刪了,而是收藏夾里躺的“尸體”實在是太多了,根本就找不到,
后來,我就總結了一個小竅門——每周收藏夾里最多躺五篇文章,如果想進來第六篇,之前的必須得清一篇,別小看這個小竅門,它真的有督促我去學習,去消化,
有句話說得好,學習的時候一定要把自己當成一臺計算機,既有輸入,也要有輸出,只輸入不輸出會堵塞,只輸入不輸出會枯竭,
我在網上看到有大佬列出 Java 工程師應該掌握的知識點,分了 5 個梯度,我覺得蠻有道理的,
第一梯度:作業系統、計算機組成原理、計算機網路、資料結構、演算法,這個我之前已經強調很多次了,也列了對應的學習資料,比如說《深入理解計算機系統》這本黑皮書是要必讀的,不管什么時候讀,
這第一梯度的知識還是挺龐大的,需要花很多時間去消化,科班的比較適合一上來就啃,啃不動的可以放到后面再去補,反正是不要繞過去,
第二梯度:Java 基礎、JVM 記憶體模型和 GC 演算法、JVM 性能調優、JDK 工具、設計模式,
Java 基礎方面我寫過《教妹學Java》,這部分內容目前處于斷更的階段,我在想后面的內容怎么繼續下去,在“沉默王二”這個號上寫感覺有點不太適合了,因為之前的反響一般;打算后面用我妹的那個號“程式員寶寶”來寫,然后這個號次條轉載一波,
除了《教妹學Java》,我推薦過另外一個 GitHub 上標星 115k+ 的 Java 教程,我自己從 GitHub 上下載到本地整理了一份 PDF,我看百度網盤下載的次數接近 1 萬次,還是挺受歡迎的,
Java 基礎里面有一塊內容,就是并發編程,需要花大力氣,我之前也推薦過這方面的資料,幾個阿里的朋友寫的,叫《深入淺出 Java 多執行緒》,
至于 JVM,一本書搞定,就是周志明老師的那本《深入理解 Java 虛擬機》,不過這書和《深入理解計算機系統》差不多,都挺難吃透的,需要花時間去讀,前后持續的時間會比較久,
然后是設計模式,這塊需要通過大量的實戰經驗才能有所感悟,設計模式玩得爐火純青,寫出的代碼就更優雅,閱讀起來也會更加舒服,可維護性、可擴展性就更強,推薦好朋友小傅哥重寫的 Java 設計模式,全網下載次數應該有 3 萬多次了,
第三梯度:Spring 系列、MyBatis、Dubbo 等主流框架,
Spring 系列的話,我之前推薦過松哥的視頻,在 B 站上有,大家可以去搜一下“江南一點雨”,質量我覺得還是挺不錯的,聽松哥說,今年還會錄一些新的視頻,
至于 Spring Boot 和 Spring Cloud,木得說,大家直接搜“純潔的微笑”,看他的博客就行了,雖然微笑哥現在不怎么寫這方面的教程了,但它之前寫的就足夠用來學習了,
MyBatis 其實很簡單,學起來不復雜,就是怎么在 XML 檔案里寫 SQL 的事,不難,直接看官網就行,
Dubbo 是阿里巴巴公司開源的一個高性能服務框架,使得應用可通過 RPC 實作服務的輸出和輸入功能,可以和 Spring 框架無縫集成,學習 Dubbo 的話,也推薦直接看官方檔案,
第四梯度:MySQL、Redis、RabbitMQ/RocketMQ/Kafka、ZooKeeper 等資料庫或者中間件,
MySQL 的話,推薦先看《SQL 必知必會》,再看《MySQL 必知必會》,然后是《高性能 MySQL》,
Redis 的話,推薦看老錢的《Redis 深度歷險:核心原理與應用實踐》,在業界的評價還是蠻高的,
Kafka 和 RabbitMQ 是兩款比較主流的訊息中間件,具備訊息傳遞的基本功能,但在一些特殊的功能方面存在差異,RocketMQ 在阿里集團內部有大量的應用場景,這部分的學習可以直接看官方檔案,然后通過實戰專案提升自己對這些訊息中間件的應用功底,
Zookeeper 是一個分布式的、開源的程式協調服務,可以到菜鳥教程上學習,
第五梯度:CAP 理論、BASE 理論、Paxos 和 Raft 演算法,
一個分布式系統最多只能同時滿足一致性(Consistency)、可用性(Availability)和磁區容錯性(Partition tolerance)這三項中的兩項——CAP 理論,
BASE 理論是對 CAP 理論的延伸,核心思想是即使無法做到強一致性(Strong Consistency,CAP 的一致性就是強一致性),但應用可以采用適合的方式達到最終一致性(Eventual Consitency),
Paxos 演算法是一種基于訊息傳遞且具有高度容錯特性的共識演算法,
Raft 演算法是一種用于替代 Paxos 的共識演算法,安全性更高,并能提供一些額外的特性,
這些都是一些比較難以理解的知識點,需要通過大量的實戰經驗(海量資料的前提下)才能很好的掌握,屬于中級、高級程式員應該掌握的內容,
大家在學習編程的時候,一定要形成自己的知識體系,建議大家通過思維導圖來梳理知識點,比如說并發編程這塊的知識點如下圖所示,

最后,提幾點建議吧,
- 試著去造個輪子,雖然我們常說,不要重復造輪子,為了開發效率,可以不造輪子,但必須得具備造輪子的能力,
- 多做技術分享,可以是寫博客這種面向大眾的,也可以是團隊的內部分享,新人培訓等,
- 重視英語,學好英語可能和掌握編程語言一樣重要,如果英語足夠好,可以直接閱讀一手的英語資料,接收知識的時間可能就比其他人早了不少,
- 及時溫習,網上說,人在一天后的記憶量只有 30%,所以我們上學的階段各種考試,月考,周考,其實就是用來加強記憶的,很多題都是做過的,換湯不換藥,
加油~
最后載送大家一本美團大佬手撕的 300 道 LeetCode 刷題筆記,純 Java 版,對于演算法薄榷訓者需要提高的同學都十分受用(提起碼:xs23):
https://pan.baidu.com/s/1xe3r8qDuKE99p2ZD9w2XrQ
我是沉默王二,我們下期見,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/277004.html
標籤:其他
