導讀
怎樣學習才能從一名Java初級程序員成長為一名合格的架構師逝变,或者說一名合格的架構師應該有怎樣的技術知識體系基茵,這是不僅一個剛剛踏入職場的初級程序員也是工作三五年之后開始迷茫的老程序員經(jīng)常會問到的問題。希望這篇文章會是你看到過的最全面最權威的回答壳影。
一: 編程基礎
不管是C還是C++拱层,不管是Java還是PHP,想成為一名合格的程序員宴咧,基本的數(shù)據(jù)結構和算法基礎還是要有的根灯。下面幾篇文章從思想到實現(xiàn),為你梳理出常用的數(shù)據(jù)結構和經(jīng)典算法掺栅。
1-1 常用數(shù)據(jù)結構
數(shù)組烙肺、鏈表、堆氧卧、棧桃笙、隊列、Hash表沙绝、二叉樹等
1-2 算法思想
算法時間復雜度和空間復雜度的分析計算
算法思想:遞推搏明、遞歸、窮舉闪檬、貪心星著、分治、動態(tài)規(guī)劃粗悯、迭代虚循、分枝界限
1-3 經(jīng)典算法
經(jīng)典排序:插入排序、冒泡排序样傍、快排(分劃交換排序)邮丰、直接選擇排序、堆排序铭乾、合并排序
經(jīng)典查找:順序查找剪廉、二分查找、二叉排序樹查找
1-4 高級數(shù)據(jù)結構
B+/B-數(shù)炕檩、紅黑樹斗蒋、圖等
1-5 高級算法
圖的深度優(yōu)先搜索、圖的廣度優(yōu)先搜索笛质、拓撲排序泉沾、Dijkstra算法(單源最短路徑)、霍夫曼編碼妇押、輾轉相除法跷究、最小生成樹等
二:Java語言基礎
誕生不過二十余年的Java語言憑借其跨平臺、面向對象敲霍、適合于分布式計算的特性俊马,廣泛應用于Web網(wǎng)站丁存、移動設備、桌面應用中柴我,并且已經(jīng)連續(xù)多年穩(wěn)居TOBIE編程語言排行榜前列解寝,最近更是登上冠軍寶座。Java有哪些優(yōu)秀而又與眾不同的地方首先一定要清楚艘儒。
2-1 基礎語法
Java語法格式聋伦,常量和變量,變量的作用域界睁,方法和方法的重載觉增,運算符,程序流程控制翻斟,各種基本數(shù)據(jù)類型及包裝類
2-2 重要:集合類
Collection以及各種List逾礁、Set、Queue杨赤、Map的實現(xiàn)以及集成關系敞斋,實現(xiàn)原理
Collections和Arrays
2-3 其他JavaAPI
String和StringBuffer截汪,System和Runtime類疾牲,Date和DateFomat類
java.lang包
java.util包(集合類體系、規(guī)則表達式衙解、zip阳柔,以及時間、隨機數(shù)蚓峦、屬性舌剂、資源和Timer等)
java.math包
java.net包
java.text包(各種格式化類等)
java.security包
2-4 面向對象、面向接口
對象的三大特性:封裝暑椰、繼承和多態(tài)霍转,優(yōu)缺點
如何設計類,類的設計原則
this關鍵字一汽,final關鍵字避消,static關鍵字
對象的實例化過程
方法的重寫和重載;方法和方法的參數(shù)傳遞過程
構造函數(shù)
內部類召夹,抽象類岩喷,接口
對象的多態(tài)性(子類和父類之間的轉換、父類紙箱子類的引用)监憎,抽象類和接口在多態(tài)中的應用
2-5 JVM內存模型纱意、垃圾回收
2-6 關于異常
Throwable/Error/Exception,Checked Exception vs. Unchecked Exception鲸阔,異常的捕捉和拋出偷霉,異常捕捉的原則迄委,finally的使用
2-7 多線程
線程和進程的概念
如何在程序中創(chuàng)建多線程,線程安全問題腾它,線程之間的通訊
線程的同步
死鎖問題的剖析
線程池
2-8 IO
java.io包跑筝,理解IO體系的基于管道模型的設計思路以及常用IO類的特性和使用場合。
File及相關類瞒滴,字節(jié)流InputStream和OutputStream曲梗,字符流Reader和Writer,以及相應緩沖流和管道流妓忍,字節(jié)和字符的轉化流虏两,包裝流,以及常用包裝類使用
分析IO性能
2-9XML
熟悉SAX世剖、DOM以及JDOM的優(yōu)缺點并且能夠使用其中的一種完成XML的解析及內容處理定罢;這幾種解析方法的原理
2-10 一些高級特性
反射、代理旁瘫、泛型祖凫、枚舉、Java正則表達式
2-11 網(wǎng)絡編程
網(wǎng)絡通信協(xié)議原理及適用場景酬凳,Socket編程惠况,WEB服務器的工作原理
2-11 JDK1.5、JDK1.6宁仔、JDK1.7稠屠、JDK1.8每個版本都比前面一個版本添加了哪些新特性,進行了哪些提升
三:數(shù)據(jù)庫相關
前面說到了數(shù)據(jù)結構翎苫,數(shù)據(jù)庫簡單來說就像是電子化的檔案柜权埠,是按照一定的數(shù)據(jù)結構來組織、存儲和管理數(shù)據(jù)的倉庫煎谍。
3-1理論基礎
數(shù)據(jù)庫設計原則和范式
事務(ACID攘蔽、工作原理、事務的隔離級別呐粘、鎖满俗、事務的傳播機制)
3-2 各種數(shù)據(jù)庫優(yōu)缺點、使用場景分析
MySQL/SQLServer/Oracle以及各種NoSQL(Redis事哭、MongoDB漫雷、Memcached、HBase鳍咱、CouchDB等)
3-2 SQL語句
數(shù)據(jù)庫創(chuàng)建降盹,權限分配,表的創(chuàng)建谤辜,增刪改查蓄坏,連接价捧,子查詢
觸發(fā)器、存儲過程涡戳、事務控制
3-3 優(yōu)化
索引原理及適用结蟋,大表查詢優(yōu)化,多表連接查詢優(yōu)化渔彰,子查詢優(yōu)化等
3-4 分庫嵌屎、分表、備份恍涂、遷移
導入宝惰、導出,分庫再沧、分表尼夺,冷備熱備,主從備份炒瘸、雙機熱備淤堵、縱向擴展、橫向擴展
3-5 JDBC
JDBC Connection顷扩、Statement拐邪、PreparedStatement、CallableStatement屎即、ResultSet等不同類的使用
連接池(配置使用庙睡、實現(xiàn)原理)
ORM事富,DAO
四:JavaWeb核心技術(包括部分前端)
Html5/Css/JS原生/jQuery
Ajax(跨域等)
JSP/JavaBean/Servlet/EL/JSTL/TabLib
JSF
JSON
EJB
序列化和反序列化
規(guī)則引擎
搜索引擎
模板引擎
緩存
身份認證
測試
集群
持久化
生成靜態(tài)頁技術
高性能
安全
事務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協(xié)議)
緩存:Redis耘子、Memcached
工作流:Activity果漾、JBPM
搜索引擎:lucene,基于lucene封裝的solr
模板引擎:Velocity谷誓、FreeMaker
大數(shù)據(jù):Hadoop(HDFS和MapReduce)
構建工具:Ant/Maven
六绒障、JavaWeb系統(tǒng)設計與架構
Java設計模式
JAVA與UML建模
面向服務架構:SOA/SCA/ESB/OSGI/EAI,微服務
面向資源架構:ROA/REST
面向云架構:COA/Saas/云計算
大型網(wǎng)站負載均衡捍歪、系統(tǒng)調優(yōu)等
七户辱、More
排錯能力:
應該可以根據(jù)異常信息比較快速的定位問題的原因和大致位置
優(yōu)化能力
代碼規(guī)范、代碼管理:
有自己的代碼規(guī)范體系糙臼,代碼可讀性好
知識面廣:
懂各種網(wǎng)絡產(chǎn)品及特性焕妙,懂各種中間件,能夠知道坑在哪兒弓摘,深諳各種技術方案的優(yōu)缺點焚鹊,懂整合各種資源并達到最優(yōu)....了解各種技術及應用場景,有足夠的工作經(jīng)驗解決集成中遇到的各種奇葩問題
技術管理/技術總監(jiān):
產(chǎn)品管理韧献、項目管理末患、團隊建設、團隊提升
CTO:
發(fā)展戰(zhàn)略
最后
喜歡的就關注的我的公眾號“java小瓜哥的分享平臺”锤窑,每天都會給大家推送最新的java消息和技術文章