Java程序員如何成長為架構師
日期:2017-11-07
點擊:9225
?????? 一: 編程基礎
?????? 不管是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的實現以及集成關系,實現原理
?????? 2-3 其他JavaAPI
?????? String和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 JDBC
? ? ?? JDBC Connection、Statement、PreparedStatement、CallableStatement、ResultSet等不同類的使用
?????? 連接池(配置使用、實現原理)
? ? ?? ORM,DAO
?????? 四:JavaWeb核心技術(包括部分前端)
?????? Html5/Css/JS原生/jQuery
?????? Ajax(跨域等)
?????? JSP/JavaBean/Servlet/EL/JSTL/TabLib
?????? JSF
? ? ?? JSON
?????? EJB
? ? ?? 序列化和反序列化
?????? 規則引擎
? ???? 搜索引擎
?????? 模板引擎
?????? 緩存
?????? 身份認證
?????? 測試
?????? 集群
?????? 持久化
?????? 生成靜態頁技術
?????? 高性能
?????? 安全
?????? 事務JTA
?????? 其他需要了解的,如:管理JMX、安全JCCA/JAAS、集成JCA、通信JNDI/JMS/JavaMain/JAF、SSI技術
?????? 五、主流框架及工具
?????? Struts1/Struts2
?????? Spring(IoC、AOP等),SpringMV
?????? 持久化: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,微服務