1. 程式人生 > >Java進階之路——從初級程式設計師到架構師,從小工到專家

Java進階之路——從初級程式設計師到架構師,從小工到專家

文章首發在我的微信公眾號:Java北京(java_bj),歡迎關注。

怎樣學習才能從一名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 其他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等),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

排錯能力:

應該可以根據異常資訊比較快速的定位問題的原因和大致位置

優化能力

程式碼規範、程式碼管理:

有自己的程式碼規範體系,程式碼可讀性好

知識面廣:

懂各種網路產品及特性,懂各種中介軟體,能夠知道坑在哪兒,深諳各種技術方案的優缺點,懂整合各種資源並達到最優....瞭解各種技術及應用場景,有足夠的工作經驗解決整合中遇到的各種奇葩問題

技術管理/技術總監:

產品管理、專案管理、團隊建設、團隊提升

CTO:

發展戰略

我的文章會最先更新到我的微信訂閱號【Java北京】,微信搜尋java_bj或者掃描下面二維碼關注。

是時候關注一個只分享乾貨的公眾號了

長按二維碼 關注我

JAVA北京(java_bj)

相關推薦

Java——初級程式設計師架構

怎樣學習才能從一名Java初級程式設計師成長為一名合格的架構師,或者說一名合格的架構師應該有怎樣的技術知識體系,這是不僅一個剛剛踏入職場的初級程式設計師也是工作三五年之後開始迷茫的老程式設計師經常會問到的問題。希望這篇文章會是你看到過的最全面最權威的回答。 from:htt

Java——初級程式設計師架構小工專家

文章首發在我的微信公眾號:Java北京(java_bj),歡迎關注。 怎樣學習才能從一名Java初級程式設計師成長為一名合格的架構師,或者說一名合格的架構師應該有怎樣的技術知識體系,這是不僅一個剛剛踏入職場的初級程式設計師也是工作三五年之後開始迷茫的老程式設計師經常會問

Java——初級程序員到架構小工專家

類型 編程語言 fomat 基礎 color 使用場景 霍夫曼 ebsp cal 怎樣學習才能從一名Java初級程序員成長為一名合格的架構師,或者說一名合格的架構師應該有怎樣的技術知識體系,這是不僅一個剛剛踏入職場的初級程序員也是工作三五年之後開始迷茫的老程序員經常會問到的

Java——如何程式設計師架構碼農到專家

怎樣學習才能從一名Java初級程式設計師成長為一名合格的架構師,或者說一名合格的架構師應該有怎樣的技術知識體系,這是不僅一個剛剛踏入職場的初級程式設計師也是工作三五年之後開始迷茫的老程式設計師經常會問到的問題。希望這篇文章會是你看到過的最全面最權威的回答。一、 JAVA。要想

Java----程式設計師架構

怎樣學習才能從一名Java初級程式設計師成長為一名合格的架構師,或者說一名合格的架構師應該有怎樣的技術知識體系,這是不僅一個剛剛踏入職場的初級程式設計師也是工作三五年之後開始迷茫的老程式設計師經常會問到的問題。希望這篇文章會是你看到過的最全面最權威的回答。 一: 程式設計基

小白Java

      第一步 熟悉使用iReport       第二步 IO流的進階之路       第三步 儲存過程從入門到精通  &

java------困惑

https://blog.csdn.net/persistencegoing/article/details/84376427   1hashcode相等兩個類一定相等嗎?equals呢?相反呢? https://blog.csdn.net/z285692001/article

Java

一、導論 寫這篇文章的目的就是弄懂Java之路如何走?Java工作了三年多,有了一定的Java開發經驗,但關於以後如何走還是很迷茫,現在是大的事情做不了,小的事情做著煩。對於走這條路的人大概都有這樣的煩惱,想要努力往上走,但不知道方向,想努力卻不知道怎麼做。所以有必要知道J

java 》 上--推薦書籍

整整一月沒有更新部落格了,因為十月份和雙十一新入手的6本技術相關的書,這個月看完了3本,後面的3本還得慢慢肯。 下面我就介紹下進階高階工程師必須也是我自己都看的一些書和知識點。 1.深入理解Java虛擬機器 個人感覺想踏入高階工程師行列,第一本應瞭

Java~泛型

一 泛型標識著集合中儲存的元素<泛型(型別)> eg: ArrayList<String>好處:1.操作資料更加安全(規範集合中能儲存的資料)2.可以避免向下轉型(強轉型別)的麻煩3.將執行時的出錯 轉到編譯時報錯二 正向遍歷與逆向遍歷public s

JavaScript的(二)函數簡介變量、作用域和內存問題

ret 優化 person get 簡介 web瀏覽器 都是 add 是把 <h3>ECMAScript中函數不存在函數簽名的概念,沒有重載</h3><h3>無需指定返回值,可以在任何時候返回任何值。未指定返回值的函數,返回的是一個特殊

C++到Python一個遊戲程式設計師

我的第一份工作是一加國內知名遊戲公司的邏輯程式設計師,必須技能是C++,但是一開始只是寫語法和C++很類似的一種指令碼(後來知道是從一個開源指令碼引擎AngelScript修改而成的)。學習遊戲開發的流程,填資料,用指令碼定製各種任務、副本等等。第一年還很有興致,第二年開始就意興闌珊了。 後來熟悉了整個

java程式設計師需要的學習過程

其實本來真的沒打算寫這篇文章,主要是LZ得記憶力不是很好,不像一些記憶力強的人,面試完以後,幾乎能把自己和麵試官的對話都給記下來。LZ自己當初面試完以後,除了記住一些聊過的知識點以外,具體的內容基本上忘得一乾二淨,所以寫這篇文章其實是很有難度的。 但是,最近問LZ的人實

JAVA-程式設計師

       自己大學期間學習的是軟體工程,從需求分析到專案上線整套流程都接觸過,大二就開始接觸java,但是沒有好好把握。大把時間虛度在lol裡面了。已經在工作的我,作為一個菜鳥程式設計師,自己也有一

程式設計師(C、C++、Java、Python經典書籍及學習順序)

程式設計師進階之路 初級: 《計算機程式的構造和解釋》 C語言: 1.《C語言程式設計:現代方法:第2版》 2.《C Primer Plus 第五版》 3.《C程式設計語言(第2版·新版)》 4.《C和指標》 5.《C專家程式設計》 6.《C 陷阱與缺陷》 7.《資料結構C

Java 入門到(一)

寫在前面:從本片文章開始,將記錄自己學習 Java 的點滴路程,目標定的並不是讓自己成為一個 Java 高手,而是讓自己多掌握一門語言,使自己的知識面更廣一些,在學習 Java 的過程中如有不對的地方還請各位大佬批評指教。 在之前看過一些文章,說網際網路知識到底要學到什麼程度,有人認為不在多而在精,有人認為

Java 入門到(二)

之前的文章我們介紹了一下用 IDEA 編輯器建立一個 Java 專案並輸出 HelloWorld,本章我們來看一下 Java 中的變數和基本資料型別。 在這之前我們先來看一下 Java 中的關鍵字,這些關鍵字不能被用作變數名稱。 類別關鍵字說明 訪問控制 private 私有的

Java 入門到(三)

之前的文章我們介紹了 Java 中的變數和基本資料型別,本章我們來看一下 Java 的運算子和表示式。 計算機的最基本用途之一就是執行數學運算,作為一門計算機語言,Java也提供了一套豐富的運算子來操縱變數。我們可以把運算子分成以下幾組: 算術運算子 關係運算符 位運算子 邏輯運算子 賦值運算

Java 入門到(四)

之前的文章我們介紹了 Java 的運算子和表示式,本章我們來看一下 Java 的迴圈結構。 迴圈是程式設計語言中反覆執行某些程式碼的一種計算機處理過程,是一組相同或相似語句被有規律的重複性進行。 迴圈的要素:   - 迴圈變數的初始化   - 迴圈條件(以迴圈變數為基礎)   - 迴圈變數的改變(向

Java 入門到(五)

之前的文章我們介紹了 Java 的迴圈結構,本章我們來看一下 Java 的陣列 陣列對於每一門程式語言來說都是重要的資料結構之一,當然不同語言對陣列的實現及處理也不盡相同。 陣列   - 相同資料型別的元素組成的集合   - 元素按線性順序排列。所謂線性順序是指除第一個元素外,每一個元素都有唯一的前驅