1. 程式人生 > >成為java架構師的技能

成為java架構師的技能

edi 中間件 主從 系統 線程安全 用戶 廣度 分布 gin

0: 數據結構算法

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

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

  排序查找

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

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

1: JAVA基礎:

  理解i/o、socket多, 線程、集合等基礎框架(Collection以及各種List、Set、Queue、Map的實現以及集成關系,實現原理CollectionsArrays);

  要熟練使用各種數據結構和算法,數組、哈希、鏈表、排序樹等等;

熟悉jvm運行機制及內存管理,Jvm虛擬機原理、調優,懂得jvm能寫出性能更好的代碼;JVM內存模型、類加載機制以及性能優化;

有多線程開發項目經驗(線程池,線程安全,線程鎖),對Java中concurrent包下的線程池、隊列、鎖有基本的了解和使用經驗;

網絡和並發編程有豐富的經驗;

池技術也是要掌握的,對象池、連接池、線程池都要會;

Java反射技術,寫框架必備的技術;

Java各種集合對象的實現原理,了解這些可以讓你在解決問題時選擇合適的數據結構,高效地解決問題,寫出代碼;

2: 框架

熟悉SpringMvc, Spring Boot, Spring Cloud ,Spring MVC ,mybatis,hibernate框架,並知道原理;

3:Linux

  Linux系統以及常見操作,shell等

4: 中間件:

熟悉分布式、緩存、消息、搜索等機制,有分布式系統、集群架構設計;

  熟悉常見的中間件、分布式解決方案及其原理:分布式緩存、SOA、消息中間件,負載均衡、連接池等;

還有隊列中間件也要會操作,如消息推送,可以先把消息寫入數據庫,推送放隊列服務器上,由推送服務器去隊列獲取處理
,這樣就可以將消息放數據庫和隊列裏後直接給用戶反饋,推送過程則由推送服務器和隊列服務器完成,好處異步處理、緩解服務器壓力,解藕系統。

5: web相關:

  比如tcp協議,創建連接三次握手和斷開連接四次握手的整個過程,不了解就沒法對高並發網絡應用做優化,
  http協議,session和cookie的生命周期與關聯;熟悉系統集群、負載均衡、反向代理、動靜分離,網站靜態化;
懂得分布式存儲系統nfs,fastdfs,tfs,Hadoop了解他們的優缺點,適用場景,以及分布式緩存技術memcached,redis,提高系統性能必備。

工具nginx必備技能超級好用,高性能,基本不會掛掉的服務器,功能多多,解決各種問題;

熟悉大並發量、高性能優化、大數據等處理技術;

熟悉Apache、Ngnix、Tomcat等主流Web服務器的基本配置和進程監控,熟悉集群及負載均衡技術,熟悉主流應用服務器的架構體系;
熟悉Hadoop、Spark等分布式計算框架,對開源機器學習,推薦系統有了解者優先;

熟悉apache、nginx、tomcat、redis、MQ 等服務器的配置和調優

了解TCP/IP、HTTP等協議

熟悉分布式系統的設計和應用,熟悉緩存、消息、負載均衡等機制和實現;

熟練使用Tomcat、Jetty、Nginx等應用服務器;
熟悉常用的互聯網技術,包括但不限於MySQL、NoSQL、RPC、MQ、緩存技術、微服務架構等;

6: 數據庫:

Mysql必備,最基礎的數據工具,主要是免費且好用,對它基本的參數優化,慢查詢日誌分析,主從復制的配置,至少要成為半個mysql dba;

   熟練掌握常見SQL、NoSQL數據庫原理、數據庫設計、查詢編寫和優化;

熟悉數據庫原理以及常用性能優化技術;

有在大數據、集群、復制和相關的數據訪問設計經驗;
在DB、系統和應用上有性能優化經驗;

7: 前端:

成為java架構師的技能