从Java程序员进阶到架构师,6大核心技能要领详解
“
java架構師技能將分為如下6大環節:數據結構和算法,Java高級特性,Java web核心,數據庫,Java框架與必備工具,系統架構設計。
希望能真正幫助到從程序員進階到架構師之路的朋友。
 數據結構和算法
 
算法分析與計算
算法時間復雜度和空間復雜度的分析計算
算法思想
遞推、遞歸、窮舉、貪心、分治、動態規劃、迭代、分枝界限
常用數據結構
數組、鏈表、堆、棧、隊列、Hash表、二叉樹等
經典算法
排序
經典排序:插入排序、冒泡排序、快排(分劃交換排序)、直接選擇排序、堆排序、合并排序等
查找
經典查找:順序查找、二分查找、二叉排序樹查找
 java語言高級特性
 
深入理解面向對象
面向對象的基本思想是使用類、對象、繼承、封裝、消息等基本概念來進行程序設計。面向對象的方式實際上由OOA(面向對象分析)、OOD(面向對象設計)和OOP(面向對象編程)三個部分有機組成。
對象的三大特性:封裝、繼承和多態,優缺點
如何設計類,類的設計原則以及構造函數,內部類,抽象類,接口,對象的多態性,接口和抽象類的區別。
理解異常處理
Java 常見異常種類
Java Exception
Error
Runtime Exception 運行時異常
Exception
throw 用戶自定義異常
java標準里也提到過,希望能用異常來處理錯誤信息以及后續流程,所以異常不僅僅只是異常,而是一個標準錯誤處理機制,并且也鼓勵這樣使用錯誤信息。
多線程
java多線程5大狀態:
-  
新建狀態(New)
 -  
就緒狀態(Runnable)
 -  
運行狀態(Running)
 -  
阻塞狀態(Blocked)
 -  
死亡狀態(Dead)
 
Java多線程掌握
-  
創建與啟動
 -  
線程和進程的概念
 -  
線程安全
 -  
線程之間的通訊
 -  
線程的同步與鎖
 -  
死鎖問題的剖析
 -  
線程生命周期
 -  
線程池
 
輸入與輸出
標準輸入輸出,文件的操作,網絡上的數據流,字符串流,對象流,zip文件流等等,java中將輸入輸出抽象稱為流,就好像水管,將兩個容器連接起來。
Java I/O主要包括如下幾個層次,包含三個部分:
-  
流式部分――IO的主體部分
 -  
非流式部分――主要包含一些輔助流式部分的類,如:File類、RandomAccessFile類和FileDescriptor等類
 -  
其他類–文件讀取部分的與安全相關的類
 
反射
JAVA反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意方法和屬性;這種動態獲取信息以及動態調用對象方法的功能稱為java語言的反射機制。
涉及到類加載機制原理、反射構造方法、字段、方法、Properties配置文件等相關學習要領。
網絡編程
七層模型與協議的對應關系、Socket原理機制、UDP、TCP傳輸等知識點。
JVM
涉及到程序進階,除了工作中平常使用以外,一定要深入去理解使用之外的核心原理,JVM特別是重中之重,JVM內存劃分、class加載機制以及GC策略內存劃分,Young Generation(年輕代)、Old G/eneration(年老代)以及Perm Generation(永久代)等。
 java web開發
 
前段技術
如今H5特別火爆,上圖我截取了部分H5相關的重點掌握:html5、css3、js、以及對應的框架jquery、node等。
平時多掌握點web開發相關的,非常方便你今后后端調試等,前段知識還是要跟上。
Java Web核心
這里還是需要掌握整個java web從容器啟動到request、filter、listener的過程,最好自己設置斷點調試,把完整的生命周期都走一次。
模板引擎
上圖是常見的模板引擎,比如淘寶一直使用velocity,現在最新又出來了個新模板引擎:beetl,有興趣的同學也可以自己發掘。
高級特性
-  
SSI技術
 -  
安全JCCA/JAAS
 -  
通信JNDI/JMS/JavaMain/JAF
 -  
集成JCA
 -  
事務JTA
 
 數據庫
 
首先,數據庫設計的基本原則還是需要掌握
數據庫設計原則和范式
第一范式,確保每列保持原子性。
第二范式,確保表中的每列都和主鍵相關。
第二范式,在第一范式的基礎之上更進一層。
第三范式,確保每列都和主鍵列直接相關,而不是間接相關。
Sql與NoSql的優缺點以及使用場景分析
SQL 關系型數據庫:SQL Server,Oracle,MySQL(開源),PostgreSQL(開源)
NoSQL泛指非關系型數據庫 :MongoDB,Redis,Memcached,Hbase,CouchDB。
大型互聯網項目常用的數據庫選型方案:
采用MySQL + NoSQL的組合方案,根據業務場景和數據訪問量來分別采用。
關系式數據庫必備
事務(ACID、工作原理、事務的隔離級別、鎖、事務的傳播機制)
數據庫創建,權限分配,表的創建,增刪改查,連接,子查詢
索引、觸發器、存儲過程、事務控制等
數據庫性能優化
索引原理及適用,大表查詢優化,多表連接查詢優化,子查詢優化
分庫、分表、備份、遷移、導入,冷備熱備,主從備份、雙機熱備、縱向擴展、橫向擴展等這些都是屬于比較常見的數據庫方案,我在淘寶具體挑戰性的一次架構演變中一文中談到了數據庫縱向和橫向的發展策略,有興趣的同學可以翻看歷史查看。
 java框架與工具
 
web開發框架
Struts2、SpringMVC、spring、hibernate、myBatis
在搭建日志:Log4j
單元測試:JUnit
構建工具
推薦nexus搭建一套自己的代碼倉庫中心,采用maven管理,這些都是比較常見而且有效的構建方案。
Web服務器
-  
Tomcat
 -  
JBoss
 -  
Jetty
 -  
Resin
 -  
WebLogic
 -  
WebSphere等
 
通信協議
-  
RMI
 -  
Hessia
 -  
Burlap
 -  
Httpinvoker
 -  
Soap
 -  
WebService等
 
工作流
Activity、JBPM
搜索引擎
lucene,基于lucene封裝的solr
 大型網站架構設計
 
其實就是要很清楚整個技術架構的演變歷程,知道每個階段的瓶頸在哪里,以及對應的解決方案,大型網站架構設計一般包含如下:
搭建分布系統的基礎設施
緩存搭建
分布式緩存搭建 memcached ,redis(推薦),動態、靜態數據的緩存,以及配合單點登錄的使用等。
負載均衡
Nginx/HaProxy
CDN搭建
為了應付復雜的網絡環境和不同地區用戶的訪問,通過CDN和反向代理加快用戶訪問的速度,同時減輕后端服務器的負載壓力。CDN與反向代理的基本原理都是緩存。
分布式儲存搭建
常見的分布式文件系統有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等,比如GFS(Google File System),TFS(Taobao File System),tfs參考tfs而來,所以名字也直接參考了。
消息系統搭建
目前使用較多的消息隊列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ,優先推薦ActiveMQ。
消息系統使用四大場景
-  
異步處理
 -  
應用解耦
 -  
流量削鋒
 -  
消息通訊
 
常用的大數據方案
一般先分庫,如果分庫后查詢仍然慢,于是按照分庫的思想開始做分表。
比如淘寶中期數據庫壓力非常大了,于是數據庫端按照業務做垂直拆分:交易數據庫、用戶數據庫、商品數據庫、店鋪數據庫等進行拆分。
采用sql和nosql混搭搭建再配合搜索引擎
隨著業務越來越復雜,對數據存儲和檢索的需求也越來越復雜,系統需要采用一些非關系型數據庫如NoSQL和分數據庫查詢技術如搜索引擎。應用服務器通過統一數據訪問模塊訪問各種數據,減輕應用程序管理諸多數據源的麻煩。
除此之外,還要考慮安全以及機房容災以及系統運維監控等。
你可能也喜歡:
總結
以上是生活随笔為你收集整理的从Java程序员进阶到架构师,6大核心技能要领详解的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 2019 最新阿里中间件Java 4轮面
 - 下一篇: 常用的后端性能优化六种方式:缓存化+服务