怎樣學(xué)習(xí)才能從一名Java初級(jí)程序員成長(zhǎng)為一名合格的架構(gòu)師虐拓,或者說一名合格的架構(gòu)師應(yīng)該有怎樣的技術(shù)知識(shí)體系沼沈,這是不僅一個(gè)剛剛踏入職場(chǎng)的初級(jí)程序員也是工作三五年之后開始迷茫的老程序員經(jīng)常會(huì)問到的問題丈冬。希望這篇文章會(huì)是你看到過的最全面最權(quán)威的回答嘱函。
一: 編程基礎(chǔ)
不管是C還是C++,不管是Java還是PHP埂蕊,想成為一名合格的程序員往弓,基本的數(shù)據(jù)結(jié)構(gòu)和算法基礎(chǔ)還是要有的疏唾。下面幾篇文章從思想到實(shí)現(xiàn),為你梳理出常用的數(shù)據(jù)結(jié)構(gòu)和經(jīng)典算法函似。?
1-1 常用數(shù)據(jù)結(jié)構(gòu)
數(shù)組槐脏、鏈表、堆缴淋、棧准给、隊(duì)列、Hash表重抖、二叉樹等
1-2 算法思想
算法時(shí)間復(fù)雜度和空間復(fù)雜度的分析計(jì)算
算法思想:遞推露氮、遞歸、窮舉钟沛、貪心畔规、分治、動(dòng)態(tài)規(guī)劃恨统、迭代叁扫、分枝界限
1-3 經(jīng)典算法
經(jīng)典排序:插入排序、冒泡排序畜埋、快排(分劃交換排序)莫绣、直接選擇排序、堆排序悠鞍、合并排序
經(jīng)典查找:順序查找对室、二分查找、二叉排序樹查找
1-4 高級(jí)數(shù)據(jù)結(jié)構(gòu)
B+/B-數(shù)咖祭、紅黑樹掩宜、圖等
1-5 高級(jí)算法
圖的深度優(yōu)先搜索、圖的廣度優(yōu)先搜索么翰、拓?fù)渑判蛭馈ijkstra算法(單源最短路徑)、霍夫曼編碼浩嫌、輾轉(zhuǎn)相除法檐迟、最小生成樹等
二:Java語言基礎(chǔ)
誕生不過二十余年的Java語言憑借其跨平臺(tái)、面向?qū)ο舐肽汀⑦m合于分布式計(jì)算的特性追迟,廣泛應(yīng)用于Web網(wǎng)站、移動(dòng)設(shè)備伐坏、桌面應(yīng)用中怔匣,并且已經(jīng)連續(xù)多年穩(wěn)居TOBIE編程語言排行榜前列握联,最近更是登上冠軍寶座桦沉。Java有哪些優(yōu)秀而又與眾不同的地方首先一定要清楚每瞒。
2-1 基礎(chǔ)語法
Java語法格式,常量和變量纯露,變量的作用域剿骨,方法和方法的重載,運(yùn)算符埠褪,程序流程控制浓利,各種基本數(shù)據(jù)類型及包裝類
2-2 重要:集合類
Collection以及各種List、Set钞速、Queue贷掖、Map的實(shí)現(xiàn)以及集成關(guān)系,實(shí)現(xiàn)原理
Collections和Arrays?
2-3 其他JavaAPI
String和StringBuffer渴语,System和Runtime類苹威,Date和DateFomat類
java.lang包
java.util包(集合類體系、規(guī)則表達(dá)式驾凶、zip牙甫,以及時(shí)間、隨機(jī)數(shù)调违、屬性窟哺、資源和Timer等)
java.math包
java.net包
java.text包(各種格式化類等)
java.security包
2-4 面向?qū)ο蟆⒚嫦蚪涌?/p>
對(duì)象的三大特性:封裝技肩、繼承和多態(tài)且轨,優(yōu)缺點(diǎn)
如何設(shè)計(jì)類,類的設(shè)計(jì)原則
this關(guān)鍵字亩鬼,final關(guān)鍵字殖告,static關(guān)鍵字
對(duì)象的實(shí)例化過程
方法的重寫和重載;方法和方法的參數(shù)傳遞過程
構(gòu)造函數(shù)
內(nèi)部類雳锋,抽象類黄绩,接口
對(duì)象的多態(tài)性(子類和父類之間的轉(zhuǎn)換、父類紙箱子類的引用)玷过,抽象類和接口在多態(tài)中的應(yīng)用
2-5 JVM內(nèi)存模型爽丹、垃圾回收
2-6 關(guān)于異常
Throwable/Error/Exception,Checked Exception vs. Unchecked Exception辛蚊,異常的捕捉和拋出粤蝎,異常捕捉的原則,finally的使用
2-7 多線程
線程和進(jìn)程的概念
如何在程序中創(chuàng)建多線程袋马,線程安全問題初澎,線程之間的通訊
線程的同步
死鎖問題的剖析
線程池
2-8 IO
java.io包,理解IO體系的基于管道模型的設(shè)計(jì)思路以及常用IO類的特性和使用場(chǎng)合。
File及相關(guān)類碑宴,字節(jié)流InputStream和OutputStream软啼,字符流Reader和Writer,以及相應(yīng)緩沖流和管道流延柠,字節(jié)和字符的轉(zhuǎn)化流祸挪,包裝流,以及常用包裝類使用
分析IO性能
2-9XML
熟悉SAX贞间、DOM以及JDOM的優(yōu)缺點(diǎn)并且能夠使用其中的一種完成XML的解析及內(nèi)容處理贿条;這幾種解析方法的原理
2-10 一些高級(jí)特性
反射、代理增热、泛型整以、枚舉、Java正則表達(dá)式
2-11 網(wǎng)絡(luò)編程
網(wǎng)絡(luò)通信協(xié)議原理及適用場(chǎng)景峻仇,Socket編程悄蕾,WEB服務(wù)器的工作原理
2-11 JDK1.5、JDK1.6础浮、JDK1.7帆调、JDK1.8每個(gè)版本都比前面一個(gè)版本添加了哪些新特性,進(jìn)行了哪些提升
三:數(shù)據(jù)庫(kù)相關(guān)
前面說到了數(shù)據(jù)結(jié)構(gòu)豆同,數(shù)據(jù)庫(kù)簡(jiǎn)單來說就像是電子化的檔案柜番刊,是按照一定的數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù)影锈。
3-1理論基礎(chǔ)
數(shù)據(jù)庫(kù)設(shè)計(jì)原則和范式
事務(wù)(ACID芹务、工作原理、事務(wù)的隔離級(jí)別鸭廷、鎖枣抱、事務(wù)的傳播機(jī)制)
3-2 各種數(shù)據(jù)庫(kù)優(yōu)缺點(diǎn)、使用場(chǎng)景分析
MySQL/SQLServer/Oracle以及各種NoSQL(Redis辆床、MongoDB佳晶、Memcached、HBase讼载、CouchDB等)
3-2 SQL語句
數(shù)據(jù)庫(kù)創(chuàng)建轿秧,權(quán)限分配,表的創(chuàng)建咨堤,增刪改查菇篡,連接,子查詢
觸發(fā)器一喘、存儲(chǔ)過程驱还、事務(wù)控制
3-3 優(yōu)化
索引原理及適用,大表查詢優(yōu)化,多表連接查詢優(yōu)化议蟆,子查詢優(yōu)化等
3-4 分庫(kù)灼伤、分表、備份咪鲜、遷移
導(dǎo)入、導(dǎo)出撞鹉,分庫(kù)疟丙、分表,冷備熱備鸟雏,主從備份享郊、雙機(jī)熱備、縱向擴(kuò)展孝鹊、橫向擴(kuò)展
3-5 JDBC
JDBC Connection炊琉、Statement、PreparedStatement又活、CallableStatement苔咪、ResultSet等不同類的使用
連接池(配置使用、實(shí)現(xiàn)原理)
ORM柳骄,DAO
四:JavaWeb核心技術(shù)(包括部分前端)
Html5/Css/JS原生/jQuery
Ajax(跨域等)
JSP/JavaBean/Servlet/EL/JSTL/TabLib
JSF
JSON
EJB
序列化和反序列化
規(guī)則引擎
搜索引擎
模板引擎
緩存
身份認(rèn)證
測(cè)試
集群
持久化
生成靜態(tài)頁技術(shù)
高性能
安全
事務(wù)JTA
其他需要了解的团赏,如:管理JMX、安全JCCA/JAAS耐薯、集成JCA舔清、通信JNDI/JMS/JavaMain/JAF、SSI技術(shù)
五曲初、主流框架及工具
Struts1/Struts2
Spring(IoC体谒、AOP等),SpringMVC
持久化:Hibernate/MyBatis
日志:Log4j
單元測(cè)試:JUnit
消息隊(duì)列:ActiveMQ臼婆、RabbitMQ等
負(fù)載均衡:Nginx/HaProxy
Web服務(wù)器:Tomcat抒痒、JBoss、Jetty颁褂、Resin评汰、WebLogic、WebSphere等
通信:WebService(cxf的soap痢虹、restful協(xié)議)
緩存:Redis被去、Memcached
工作流:Activity、JBPM
搜索引擎:lucene奖唯,基于lucene封裝的solr?
模板引擎:Velocity惨缆、FreeMaker
大數(shù)據(jù):Hadoop(HDFS和MapReduce)
構(gòu)建工具:Ant/Maven
六、JavaWeb系統(tǒng)設(shè)計(jì)與架構(gòu)
Java設(shè)計(jì)模式
JAVA與UML建模
面向服務(wù)架構(gòu):SOA/SCA/ESB/OSGI/EAI,微服務(wù)
面向資源架構(gòu):ROA/REST
面向云架構(gòu):COA/Saas/云計(jì)算
大型網(wǎng)站負(fù)載均衡坯墨、系統(tǒng)調(diào)優(yōu)等
七寂汇、More
排錯(cuò)能力:
應(yīng)該可以根據(jù)異常信息比較快速的定位問題的原因和大致位置
優(yōu)化能力
代碼規(guī)范、代碼管理:
有自己的代碼規(guī)范體系捣染,代碼可讀性好
知識(shí)面廣:
懂各種網(wǎng)絡(luò)產(chǎn)品及特性骄瓣,懂各種中間件,能夠知道坑在哪兒耍攘,深諳各種技術(shù)方案的優(yōu)缺點(diǎn)榕栏,懂整合各種資源并達(dá)到最優(yōu)....了解各種技術(shù)及應(yīng)用場(chǎng)景,有足夠的工作經(jīng)驗(yàn)解決集成中遇到的各種奇葩問題
技術(shù)管理/技術(shù)總監(jiān):
產(chǎn)品管理蕾各、項(xiàng)目管理扒磁、團(tuán)隊(duì)建設(shè)、團(tuán)隊(duì)提升
CTO:
發(fā)展戰(zhàn)略