1. 程式人生 > >2018-2019年度學習計劃

2018-2019年度學習計劃

參考連結:
https://www.zhihu.com/question/29581524/answer/44872235
https://juejin.im/post/586603be1b69e60063d08b7a

1. 初級階段:(1-2月)

技能:
1.掌握 Java。經典的《Java 核心技術:卷1 基礎知識》(或者《Java 程式設計思想》)必看,跳過其中的圖形和 applet 章節。

2.習慣查閱 Java API Doc。為了保證程式碼的質量,《Effective Java》、《Clean Code》和《重構》也需要至少通讀一遍。

3.熟悉 Linux 開發環境和 bashshell。Linux是我們的開發和部署環境,你最好儘快熟練它。					   
4.Linux 的基本使用可以通過《鳥哥的Linux私房菜:基礎學習篇(第三版)》學習

5.開發 bash shell 指令碼可以參考《Linux Shell指令碼攻略》。

6.掌握開發工具熟練使用一種 IDE。Intellij IDEA或者 Eclipse 都可以,推薦使用前者。至少熟悉常用的快捷鍵,會 debug(包括遠端 debug)專案。

7.熟悉一種編輯器。比如 Vim/Emacs/Sublime Text,至少學會搜尋/替換/程式碼補全。

8.掌握 JDK 以外的常用類庫和工具包。JDK原生 API在很多場景下使用並不方便。你需要掌握社群貢獻的優秀類庫和工具包,比如 apache commons、google guava
等,具體可以翻閱 服務端技術選型 的Utility 篇。

9.掌握 Web 開發框架。我們使用Spring(或Rose) + Ibatis(或Jade) 開發web服務,你需要熟練掌握它們。學習程式碼規範。我們大致上遵循 oracle 的 Java 語言編碼規範,你可以先閱讀並熟悉它。

10.Code Formatting 檔案在
[email protected]
/coding-standard.git,在編寫碼之前,請把它匯入到 IDE中。另外,確認 IDE 已經安裝 Findbugs 和 CheckStyle 外掛。熟悉開發流程。我們的開發流程大致如下:功能開發->單元測試->功能測試->Code Review->整合測試->釋出。確保你熟悉其中的每個環節。其他。需要熟練使用版本控制工具 Git(閱讀:《Git 權威指南》),以及專案構建工具 Maven(閱讀:《Maven實戰》)。另外,在這個階段可以嘗試 TDD 開發。

2. 進階(2-6月)

1.技能:掌握 web 開發最佳實踐,掌握 Restful API 設計,理解 Spring 原理。推薦閱讀《Spring揭祕》。

2.掌握專案分層、子模組劃分。推薦閱讀:《J2EE核心模式》。

3.掌握 web 架構設計。包括Http反向代理,資料快取,負載均衡,水平擴充套件和垂直擴充套件。推薦閱讀:《分散式Java應用:基礎與實踐》。

4.掌握關係型資料庫。包括設計MySQL表結構,根據業務特點分表分庫,於執行計劃的SQL分析優化,以及資料庫容量規劃。推薦閱讀:《MySQL必知必會》、《高效能MySQL》。瞭解NoSQL。我們大規模使用Hadoop、HBase、Hive,同時部分專案使用 Redis、Storm。你需要學會這些工具最基本的使用。學習 web 安全知識。

5.瞭解 web 前端安全問題。設計安全 web 服務,包括加解密、防偽造、防重放攻擊等。
    
6.掌握 Http (推薦閱讀:《圖解Http》、《http權威指南》)、Thrift 等協議。掌握服務容量規劃,效能調優,可靠性保證,以及故障處理。
    
7.學習容量規劃和效能調優知識,梳理業務監控點,熟練使用我們的監控報警系統。推薦閱讀:《深入理解 Java 虛擬機器》。其他。設計模式:從專案中學習,有時間可以看看《深入淺出設計模式》、《JDK 裡的設計模式》。
    
8.學習Java Socket 程式設計與多執行緒知識,可以看看《Java 併發程式設計實戰》,並翻翻併發程式設計網的文章。
       

3. 深入(6 個月-)

1.構建知識體系:《大型網站系統與 Java 中介軟體實踐》、《大型網站技術架構:核心原理與案例分析》。
2.原理與設計:《大規模儲存式系統、《UNIX 網路程式設計 卷1:套接字聯網API》、《How TomcatWorks》。學習開源專案:ApacheThrift、Zipkin、Netty、Rose、Jad、淘寶 RPC 系統 Dubbo等
3.分析專案中的設計思路。PC框架,Finagle 和有什麼異同。其他。根據參與的專案加深學習吧。比如,如果需要寫 DSL,可以讀一下《領域特定語言》,對 Redis   
感興趣推薦讀一下:《Redis 設計與實現》。
4.有兩本書,無論做什麼:《Unix 程式設計藝術》環境高階程式設計(第3版)》

書單

1.讀完《深入理解java虛擬機器》《架構探險》《大型網站技術架構》
2.刷完 牛客網 《演算法精品課》
3.《圖解http》 《敏捷軟體開發》《head First 設計模式》《java併發程式設計思想》
    coursera上普林斯頓《演算法 part2》
4.學習docket使用
5.《nginx》代理學習
6.《spring3.x企業開發實戰》《java多執行緒程式設計核心技術》程式碼實現一遍
7. 建立自己的部落格 git基本使用, 搭建hadoop環境
8. java基礎鞏固 javaweb 
9. 必看書籍

《Maven 實戰》
《Mysql 必知必會》
《Lucene In Action》
《演算法》(第四版)前半部分
《Java 多執行緒程式設計核心技術》
《Spring 3.x 企業開發實戰》
《圖解http》
《敏捷軟體開發》
《Head First 設計模式》
《Java 併發程式設計實戰》
《深入理解 Java 虛擬機器》
《架構探險》
《大型網站技術架構》
《Java 8 In Action》

先總結一下,後續再慢慢按照自己的情況制定計劃。