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