怎麼學習才能從一名Java初級程式設計師成長為一名合格的架構師,或者說一名合格的架構師應該有怎樣的技術知識體系,這是不僅一個剛踏入職場的初級程式設計師也是工作三、五年後開始迷惘的老程式設計師常會問到的問題。希望這篇文章會是你所看到的最全面、最權威的回答。
一:程式設計基礎
不管是C或C++,不管是Java或PHP,想成為合格的程式設計師,基本的資料結構與演算法基礎還是要有的。以下幾篇文章從想法到實現,為你整理出常用的資料結構和經典演算法。
1-1 常用資料結構
陣列、鍊錶、堆疊、堆疊、佇列、Hash表、二元樹等
1-2 演算法想法
#演算法時間複雜度與空間複雜度的分析計算
演算法思想:遞推、遞歸、窮舉、貪心、分治、動態規劃、迭代、分枝界限
#1-3經典演算法
經典排序:插入排序、冒泡排序、快排(分劃交換排序)、直接選擇排序、堆排序、合併排序
經典查找:順序查找、二分查找、二元排序樹查找
1-4 進階資料結構
B+/B-數、紅黑樹、圖等
##1-5 進階演算法圖的深度優先搜尋、圖的廣度優先搜尋、拓樸排序、Dijkstra演算法(單源最短路徑)、霍夫曼編碼、輾轉相除法、最小生成樹等
#二:Java語言基礎
誕生不過二十餘年的Java語言憑藉其跨平台、物件導向、適合分散式運算的特性,廣泛應用於Web網站、在行動裝置、桌面應用程式中,並且已經連續多年穩居TOBIE程式語言排行榜前列,最近更是登上冠軍寶座。 Java有哪些優秀又與眾不同的地方首先一定要清楚。 2-1 基礎語法Java語法格式,常數和變量,變數的作用域,方法和方法的重載,運算符,程式流程控制,各種基本資料型別及包裝類別2-2 重要:集合類別Collection以及各種List、Set、Queue、Map的實作以及整合關係,實作原理Collections和Arrays 2-3 其他JavaAPIString和StringBuffer,System和Runtime類,Date和DateFomat類別java.lang套件#java.util套件(集合類別系統、規則表達式、zip,以及時間、隨機數、屬性、資源和Timer等)java.math套件java.NET套件##java .text套件(各種格式化類別等)
java.security套件
2-4 物件導向、物件導向
物件的三大特性:封裝、繼承和多態,優缺點
如何設計類,類別的設計原則
this關鍵字,final關鍵字,static關鍵字
物件的實例化過程
方法的重寫和重載;方法和方法的參數傳遞過程
建構子
#內部類,抽象類,介面
物件的多態性(子類別和父類別之間的轉換、父類別紙箱類別的引用),抽象類別和介面在多態中的應用
2-5 JVM記憶體模型、垃圾回收
2-6 關於異常
Throwable/Error/Exception,Checked Exception vs. Unchecked Exception,異常的捕捉和拋出,異常捕捉的原則,finally的使用
2-7多線程
線程和進程的概念
如何在程式中建立多線程,線程安全性問題,線程之間的通訊
線程的同步
#死鎖問題的剖析
線程池
2-8 IO
java.io包,理解IO體系的基於管道模型的設計思路以及常用IO類的特性和使用場合。
File及相關類,位元組流InputStream和OutputStream,字元流Reader和Writer,以及對應緩衝流和管道流,位元組和字元的轉換流,包裝流,以及常用包裝類使用
分析IO性能
2-9XML
熟悉SAX、DOM以及JDOM的優缺點並且能夠使用其中的一種完成XML的解析及內容處理;這幾種解析方法的原理
2-10 一些高階特性
#反射、代理、泛型、枚舉、Java正規表示式
2-11 網路程式設計
網路通訊協定原理及適用場景,Socket編程,WEB伺服器的工作原理
2-11 JDK1.5、JDK1.6、JDK1.7、JDK1.8每個版本都比前面一個版本增加了哪些新特性,進行了哪些提升
三:資料庫相關
前面說到了資料結構,資料庫簡單來說就像是電子化的檔案櫃,是依照一定的資料結構來組織、儲存和管理資料的倉庫。
3-1理論基礎
資料庫設計原則與範式
事務(ACID、運作方式、交易的隔離等級、鎖定、交易的傳播機制)
3-2 各種資料庫優缺點、使用場景分析
MySQL/SQLServer/Oracle以及各種NoSQL(Redis、MongoDB、Memcached、Hbase、CouchDB等)
3- 2 SQL語句
資料庫創建,權限分配,表的創建,增刪改查,連接,子查詢
觸發器、預存程序、事務控制
3-3最佳化
索引原理及適用,大表查詢最佳化,多表連接查詢最佳化,子查詢最佳化等
3-4 分庫、分錶、備份、遷移
##匯入、匯出,分庫、分錶,冷備熱備,主從備份、雙機熱備、縱向擴充、橫向擴充3-5 JDBCJDBC Connection、Statement、PreparedStatement、CallableStatement 、ResultSet等不同類別的使用連接池(設定使用、實作原理)ORM,DAO四:JavaWeb核心技術(包括部分前端)
HTML5/Css/js原生/jQueryAjax(跨域等)JSP/JavaBean/Servlet/EL/JSTL /TabLibJSFJSONEJB序列化與反序列化規則引擎#搜索引擎範本引擎快取身份認證#測試##叢集
## 持久化產生靜態頁技術高效能安全事務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協定)
快取:redis、Memcached
工作流程:Activity、JBPM
搜尋引擎:lucene,基於lucene封裝的solr
#範本引擎:Velocity、FreeMaker
大數據:Hadoop(HDFS和MapReduce)
建置工具:Ant/Maven
#六、JavaWeb系統設計與架構
Java設計模式JAVA與UML建模
面向服務架構:SOA/SCA/ESB/OSGI/EAI,微服務
面向資源架構:ROA/REST
面向雲端架構:COA/Saas/雲端運算
大型網站負載平衡、系統調優等
七、More
排錯能力:
應該可以根據異常訊息比較快速的定位問題的原因和大致位置
最佳化能力程式碼管理:
有自己的程式碼規格體系,程式碼可讀性好
知識面廣:懂各種網路產品及特性,懂各種中間件,能夠知道坑在哪兒,深諳各種技術方案的優缺點,懂得整合各種資源並達到最優....了解各種技術及應用場景,有足夠的工作經驗解決整合中遇到的各種奇葩問題
技術管理/技術總監:產品管理、專案管理、團隊建立、團隊提升
以上是Java進階之路的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!