原文鏈接:https://github.com/frank-lam/fullstack-tutorial
前言
- 全棧修煉手冊:如何選擇自己的技術棧?
- 在編程的世界裡,該如何選擇自己的技術棧呢。學前端?學 APP 開發?對於 Java、C++、C#、Python、PHP 又如何選擇呢?人工智能現如今這麼火,是不是機器學習、深度學習更高級一些呢?那麼程序員又如何修煉內功呢?
- 全棧開發神兵利器
- 工欲善其事,必先利其器。這裡我將推薦開發過程中的提效工具、開發利器、協作工具、文檔技術等等。
一、數據結構與算法
- 數據結構與算法
排序算法、動態規劃、遞歸、回溯法、貪心算法等
- 海量數據處理
- 數據處理典型案例,逐漸更新
二、Java
- Java 基礎概念
基本概念、面向對象、關鍵字、基本數據類型與運算、字符串與數組、異常處理、Object 通用方法
- Java 集合框架
數據結構 & 源碼分析:ArrayList、Vector、LinkedList、HashMap、ConcurrentHashMap、HashSet、LinkedHashSet and LinkedHashMap
- Java 併發編程
線程狀態、線程機制、線程通信、J.U.C 組件、JMM、線程安全、鎖優化
- Java I/O
磁盤操作、字節操作、字符操作、對象操作、網絡操作、NIO
- Java 虛擬機
運行時數據區域、垃圾收集、內存分配機制、類加載機制、性能調優監控工具
- Java 設計模式
Java 常見的 10 餘種設計模式,全 23 種設計模式逐步更新
- Java Web
包含 Servlet & JSP、Spring、SpringMVC、Mybatis、Hibernate、Structs2 核心思想,如 IOC、AOP 等思想。SSM 更詳細請轉向:Spring | SpringMVC | MyBatis
三、Python
- Python 語言基礎
- Scrapy 爬蟲框架
- Flask
- Django
四、前端
- HTML(5)
- CSS(3)
- sass、scss、stylus
- CSS 框架
- BootStarp、LayUI
- JavaScript
- 基礎語法、進階、ES6
- JavaScript 框架
- Vue
- React
- Angular
- jQuery
- Node
- 常用 api、對象池、異常處理、進程通信、高併發
- 靜態編譯
- Flow
- TypeScript
- 打包工具
- webpack
- glup
- rollup
- 工具
- npm
- yarn
五、數據庫
- MySQL
- 存儲引擎、事務隔離級別、索引、主從複製
- Redis
- Redis 核心知識
- MongoDB
- 基於分佈式文件存儲的數據庫
- SQL
- 常用 SQL 語句
六、操作系統
- 操作系統原理
進程管理、死鎖、內存管理、磁盤設備
- Linux
基礎核心概念、常用命令使用
七、網絡通信
- 計算機網絡
傳輸層、應用層(HTTP)、網絡層、網絡安全
- RESTful API
- 軟件架構風格、格設計原則和約束條件
- Web網絡安全
- web前後端漏洞分析與防禦,XSS 攻擊、CSRF 攻擊、DDoS 攻擊、SQL 注入
- Socket 網絡編程
八、分佈式
- Docker
- 容器化引擎服務
- 微服務思想
- 服務拆分,持續集成、持續交付、持續部署
- Kubernetes(k8s)
- 容器化部署,管理雲平臺中多個主機上的容器化的應用
- 雲計算
- SaaS(軟件即服務) 、PaaS(平臺即服務) 、IaaS(基礎架構即服務)
- Zookeeper
- 分佈式協調服務
- Dubbo、Thrift(RPC 框架)
- 分佈式服務治理
- 分佈式事務解決方案
- ActiveMQ、Kafka、RabbitMQ
- 分佈式消息通信
- 熔斷,限流,降級機制
- Redis
- 分佈式緩存
- Mycat
- 數據庫路由
- Nginx
- 反向代理
- Tomcat
- Web Server 服務
- DevOps
- 自動化運維
- Go
- 併發的、帶垃圾回收的、快速編譯的語言
【說明】分佈式專題 筆者也在學習中,這裡列舉了一些技能列表,筆者將局部更新。敬請期待
九、機器學習
- 經典機器學習算法
- K 近鄰算法、線性迴歸、梯度下降法、邏輯迴歸、支持向量機、決策樹、集成學習
- 基礎框架
- Tensorflow,Scikit-learn
【說明】學習過一段時間算法,但一直未來得及整理。敬請期待
十、工具
- Git
- 基本概念,常見命令,速查表
- Git 工作流
- 集中式工作流,功能分支工作流, GitFlow 工作流,Forking 工作流,Pull Requests
- 正則表達式
- 常見符號含義,速查表
Learn
- LEARN_LIST
包含閱讀清單,學習課程兩部分
- web應用開發標準流程
Talking
本倉庫致力於成為一個全棧開發愛好者的學習指南,給初學者一個更明確的學習方向,同時也是對自己技能的強化和鞏固。在架構師這條路上,希望和大家一起成長,幫助更多的計算機愛好者能夠有一個明確的學習路徑。持續不間斷的維護本倉庫,也歡迎有更多的極客們加入。
都說好記性不如爛筆頭,定期的學習和整理必然對學習鞏固有所幫助,這裡通過索引的方式對全棧開發技術做一個系統分類,方便隨時鞏固和學習,當然還有面試。在學習這條路上難免會有很多盲點和學不完的知識。有道無術,術尚可求,掌握好思維能力才能應對千變萬化的技術。不要把大腦當成硬盤,也不要做高速運轉的 CPU,而修行自己的大腦成為一個搜索引擎,學會分析解決問題。
Since 20,May,2018
Reference
個人的能力有限,在編寫的過程中引用了諸多優秀的 GitHub 倉庫。本項目的啟發來自 @CyC2018 的學習筆記,是一個非常優秀的開源項目,在本倉庫中部分內容引用文字和圖例;引用了 @計算所的小鼠標 中對於 JCF 的源碼分析和理解;引用了 阿里面試題總結 中全部的面試題,並對面經進行了整理勘誤,並進行了知識拓展和修改;引用了 牛客網 上的面試經驗貼。也引用了知乎上的熱門回答和優秀博客的回答。在這裡特別鳴謝,我將每篇文章中做外鏈引用說明。
文中我也推薦了學習的書籍和學習課程,都將附著上最高清、最形象的配圖進行講解。在文中的配圖都來自自己繪製的、博客、Github、PDF書籍等等,這裡沒法一一感謝,謝謝你們。
推薦一些優秀的開源項目,供大家參考,reference。
Contributors
該項目還在萌芽起步階段,在編寫的過程中難免遇到錯誤和不足,你可以在 issue 中提出,或是提交你的 contribution。【開源貢獻】如何給我的倉庫貢獻?
感謝以下夥伴們對於本倉庫的貢獻,如想加入本開源項目,請聯繫筆者。
License
本作品採用 知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議 進行許可。使用者可以對本創作進行轉載、節選、混編、二次創作,但不得運用於商業目的,且使用時須進行署名,採用本創作的內容必須同樣採用本協議進行授權。
閱讀更多 流風不凍0205 的文章