Java程序員如何成長為架構師?

王佳冉


網站架構涉及許多技術,

Java程序員想要學習進階成為架構師,需具備與架構師相匹配的技術能力,這是前提和基礎。本篇列舉了架構師的必備技術能力,文末隨附詳細的架構師專題資料

一、計算機基礎

  1. 操作系統(推薦現代操作系統)
  2. 編譯原理
  3. 計算機網絡
  4. 互聯網協議
  5. TCP/IP(推薦《TCP/IP協議族》)
  6. HTTP1.1/2.0
  7. HTTPS
  8. OAauth 2.0
  9. REST

二、集合框架(源碼)

  1. List
  2. ArrayList
  3. LinkedList
  4. Set:HashSet、TreeSet
  5. Map:TreeMap、ConcurrentHashMap
  6. Queue:ConcurrentLinkedQueue
  7. Stack
  8. Collection的synchronized等方法

三、工具類

  1. Google guava(推薦)
  2. Apache common lang/BeanUtils/Collctions/IO
  3. JSON
  4. fastjson
  5. gson
  6. jackson

四、框架

  1. Spring:IOC、AOP、常用註解
  2. SpringMVC
  3. Mybatis
  4. Shiro
  5. Netty

五、遠程調用(RPC)

  1. rmi
  2. Thrift
  3. Dubbo(Dubbox)
  4. 服務器治理,也可以作為微服務
  5. gRPC

六、構建

  1. Maven:推薦《Maven實戰》
  2. Gradle

七、安全

  1. 單項散列算法:MD5、SHA
  2. 對稱加密:DES
  3. 非對稱加密:RSA、HTTPS

八、JVM

  1. Java虛擬機(Hotspot實現)
  2. 類加載機制
  3. 內存模型
  4. GC:回收算法、垃圾收集器
  5. 調優
  6. 工具:jstack、jmap、jconsole

九、併發編程

  1. Executor框架
  2. Fork/join
  3. happen-before
  4. 數據結構:ConcurrentHashMap
  5. 線程池:參數設置、原理、拒絕策略
  6. 線程狀態
  7. Lock/synchronized
  8. 原子操作類
  9. 併發工具類:CountDownLatch、Semaphore、CyclicBarrier、Exchanger
  10. IO、BIO、AIO、NIO

十、數據

  1. NoSQL:MongoDB

  2. 分佈式緩存:Memcached、Redis(推薦)

  3. 關係數據庫

  • MySQL
  • 引擎
  • InnoDB(支持事務)
  • 分庫分表
  • Cobar
  • Mycat

十一、SQL優化

  1. 索引
  2. 主鍵索引
  3. 組合索引
  4. explain
  5. 存儲過程

SQL注入:使用#而不使用$

十二、事務隔離級別(ACID)

  1. 原子性
  2. 一致性
  3. 隔離性
  4. 持久性

十三、鎖

  1. 表鎖
  2. 行鎖
  3. 悲觀鎖

數據庫設計

十四、範式

  1. 第一範式
  2. 第二範式
  3. 第三範式
  4. E-R圖

十五、搜索引擎

Luecene

Solr

ElasticSearch

十六、大數據

  1. Hadoop
  2. Hbase
  3. Spark
  4. Storm/JStorm

十七、算法與數據結構

  1. 數組
  2. 鏈表
  3. 隊列
  4. 二叉樹
  5. B Tree/B+ Tree
  6. 紅黑樹
  7. 哈希

十八、排序

  1. 內部排序
  2. 插入排序
  3. 直接插入排序
  4. 希爾排序
  5. 選擇排序
  6. 簡單選擇排序
  7. 堆排序
  8. 交換排序
  9. 冒泡排序
  10. 快速排序
  11. 歸併排序
  12. 基數排序
  13. 桶排序
  14. 外部排序

十九、分佈式系統

  1. 從集中到分佈式
  2. 分佈式Session:Session複製、Session綁定、Session服務器(靠譜)
  3. 分佈式緩存:Redis、一致性Hash算法
  4. 數據庫:讀寫分離、主從熱備、分庫分表、一致性
  5. 分佈式事務、CAP、BASE、2PC/3PC
  6. 分佈式鎖
  7. Redisson
  8. 負載均衡、硬件、F5、軟件、LVS、Nginx
  9. 消息隊列:RabbitMQ、ZeroMQ、ActiveMQ、Kafka(推薦)
  10. 服務化:服務註冊與發現、Zookeeper
  11. 架構
  12. 微服務
  13. Spring Boot
  14. Dubbo
  15. RPC
  16. SOA
  17. 虛擬化
  18. Docker

以上,是架構師必備的技術能力,以下,是架構師進階專題(已更新至80期),將關鍵詞【架構】私信給優知學院,全部秒收~


優知學院


一: 編程基礎

不管是C還是C++,不管是Java還是PHP,想成為一名合格的程序員,基本的數據結構和算法基礎還是要有的。下面幾篇文章從思想到實現,為你梳理出常用的數據結構和經典算法。

1-1 常用數據結構

數組、鏈表、堆、棧、隊列、Hash表、二叉樹等

1-2 算法思想

算法時間複雜度和空間複雜度的分析計算

算法思想:遞推、遞歸、窮舉、貪心、分治、動態規劃、迭代、分枝界限

1-3 經典算法

經典排序:插入排序、冒泡排序、快排(分劃交換排序)、直接選擇排序、堆排序、合併排序

經典查找:順序查找、二分查找、二叉排序樹查找

1-4 高級數據結構

B+/B-數、紅黑樹、圖等

1-5 高級算法

圖的深度優先搜索、圖的廣度優先搜索、拓撲排序、Dijkstra算法(單源最短路徑)、霍夫曼編碼、輾轉相除法、最小生成樹等

二:Java語言基礎

誕生不過二十餘年的Java語言憑藉其跨平臺、面向對象、適合於分佈式計算的特性,廣泛應用於Web網站、移動設備、桌面應用中,並且已經連續多年穩居TOBIE編程語言排行榜前列,最近更是登上冠軍寶座。Java有哪些優秀而又與眾不同的地方首先一定要清楚。

2-1 基礎語法

Java語法格式,常量和變量,變量的作用域,方法和方法的重載,運算符,程序流程控制,各種基本數據類型及包裝類

2-2 重要:集合類

Collection以及各種List、Set、Queue、Map的實現以及集成關係,實現原理

Collections和Arrays

2-3 其他JavaAPI

String和StringBuffer,System和Runtime類,Date和DateFomat類

java.lang包

java.util包(集合類體系、規則表達式、zip,以及時間、隨機數、屬性、資源和Timer等)

java.math包

java.net包

java.text包(各種格式化類等)

java.security包

2-4 面向對象、面向接口

對象的三大特性:封裝、繼承和多態,優缺點

如何設計類,類的設計原則

this關鍵字,final關鍵字,static關鍵字

對象的實例化過程

方法的重寫和重載;方法和方法的參數傳遞過程

構造函數

內部類,抽象類,接口

對象的多態性(子類和父類之間的轉換、父類紙箱子類的引用),抽象類和接口在多態中的應用

2-5 JVM內存模型、垃圾回收

2-6 關於異常

Throwable/Error/Exception,Checked Exception vs. Unchecked Exception,異常的捕捉和拋出,異常捕捉的原則,finally的使用

2-7 多線程

線程和進程的概念

如何在程序中創建多線程,線程安全問題,線程之間的通訊

線程的同步

死鎖問題的剖析

線程池

2-8 IO

java.io包,理解IO體系的基於管道模型的設計思路以及常用IO類的特性和使用場合。

File及相關類,字節流InputStream和OutputStream,字符流Reader和Writer,以及相應緩衝流和管道流,字節和字符的轉化流,包裝流,以及常用包裝類使用

分析IO性能

2-9XML

熟悉SAX、DOM以及JDOM的優缺點並且能夠使用其中的一種完成XML的解析及內容處理;這幾種解析方法的原理

2-10 一些高級特性

反射、代理、泛型、枚舉、Java正則表達式

2-11 網絡編程

網絡通信協議原理及適用場景,Socket編程,WEB服務器的工作原理

2-11 JDK1.5、JDK1.6、JDK1.7、JDK1.8每個版本都比前面一個版本添加了哪些新特性,進行了哪些提升

三:數據庫相關

前面說到了數據結構,數據庫簡單來說就像是電子化的檔案櫃,是按照一定的數據結構來組織、存儲和管理數據的倉庫。

3-1理論基礎

數據庫設計原則和範式

事務(ACID、工作原理、事務的隔離級別、鎖、事務的傳播機制)

3-2 各種數據庫優缺點、使用場景分析

MySQL/SQLServer/Oracle以及各種NoSQL(Redis、MongoDB、Memcached、HBase、CouchDB等)

3-2 SQL語句

數據庫創建,權限分配,表的創建,增刪改查,連接,子查詢

觸發器、存儲過程、事務控制

3-3 優化

索引原理及適用,大表查詢優化,多表連接查詢優化,子查詢優化等

3-4 分庫、分表、備份、遷移

導入、導出,分庫、分表,冷備熱備,主從備份、雙機熱備、縱向擴展、橫向擴展

3-5 JDBC

JDBC Connection、Statement、PreparedStatement、CallableStatement、ResultSet等不同類的使用

連接池(配置使用、實現原理)

ORM,DAO

四:JavaWeb核心技術(包括部分前端)

Html5/Css/JS原生/jQuery

Ajax(跨域等)

JSP/JavaBean/Servlet/EL/JSTL/TabLib

JSF

JSON

EJB

序列化和反序列化

規則引擎

搜索引擎

模板引擎

緩存

身份認證

測試

集群

持久化

生成靜態頁技術

高性能

安全

事務JTA

其他需要了解的,如:管理JMX、安全JCCA/JAAS、集成JCA、通信JNDI/JMS/JavaMain/JAF、SSI技術

五、主流框架及工具

Struts1/Struts2

Spring(IoC、AOP等),SpringMVC

持久化:Hibernate/MyBatis

日誌:Log4j

單元測試:JUnit

消息隊列:ActiveMQ、RabbitMQ等

負載均衡:Nginx/HaProxy

Web服務器:Tomcat、JBoss、Jetty、Resin、WebLogic、WebSphere等

通信:WebService(cxf的soap、restful協議)

緩存:Redis、Memcached

工作流:Activity、JBPM

搜索引擎:lucene,基於lucene封裝的solr

模板引擎:Velocity、FreeMaker

大數據:Hadoop(HDFS和MapReduce)

構建工具:Ant/Maven

六、JavaWeb系統設計與架構

Java設計模式

JAVA與UML建模

面向服務架構:SOA/SCA/ESB/OSGI/EAI,微服務


成都朗沃教育


1 首先是一個合格的程序員。

2 真正懂軟件,懂軟件工程,而不知是考試做題。可以獨立完成一個產品,並服務客戶產生收益。

3 需要伯樂,給你一個超出一個人完成的項目,你兢兢業業險些在deadline前完成了產品。

4 不斷有新的挑戰。


分享到:


相關文章: