如何才能成為java架構師?我為大家來分析一下?

JAVA架構


本人10年開發培訓經驗,期間經歷了Java Web,Android,H5,大數據,PHP等多個不同的方向的開發,也做過軟件培訓公司的金牌講師,很有興趣回答你這個問題。

可能每一個做開發的程序員,都有一個架構師的夢,雖然最後能夠成為架構師的也就是1%不到。

但是咱們既然有夢想了,該如何實現呢?

架構師作為一個走技術路線的工種,首先就得提升自己的技術能力,提高自己項目架構的能力,提高自己的業務水平。

1.業務能力

不管如何,程序員最起碼得解決自己項目中的業務問題,那作為架構師,你架構的項目,最起碼得面向自己的項目業務吧,脫離業務的架構,我覺得都是有點耍流氓。

2.技術能力

既然要成為Java架構師,那麼對Java中主流技術中,所有的主流技術應該都熟悉,知道該怎麼選擇技術才能更匹配自己的項目需求;

3.學習能力

新技術層出不窮,作為一個架構師,肯定要不停的學習,掌握最新的架構技巧,學習最新的架構經驗。


如果想學習開發,這是Java學習視頻,關注我免費領取。

我從事互聯網開發10年,主要的研究方向集中在Java web微服務架構領域,Android移動端研發,HTML5前端方向,我會陸續寫一些關於互聯網技術方面的文章,感興趣的朋友可以關注我,相信你一定會有所收穫。

如果有Java,Android,H5等開發方面的問題,或者是開發求職方面的問題,都可以在評論區留言,或者私信我。


一一哥Sun


作為一名從業多年的程序員,也出版過Java編程書籍,所以我來回答一下這個問題。

Java架構師是不少Java程序員的發展方向之一,也是從應用級程序員成長為研發級程序員所需要經歷的重要階段,所以瞭解Java架構師所需要的知識結構是比較重要的。

通常所說的編程語言架構師都是從應用角度出發的,也就是說,Java架構師帶領的開發團隊多以應用級開發為主,工作的主要內容是基於平臺進行的具體業務開發,比如採用Hadoop平臺進行大數據應用開發,採用Spring框架進行Web開發等等。

Java架構師主要的知識結構包括以下三個大的方面:

第一:對於Java整體解決方案有全面的認知。Java架構師一個重要的工作內容是進行技術選型,技術選型要考慮三個核心因素,其一開發團隊的技術能力;其二是否滿足項目的性能要求;其三是否能夠滿足開發週期的要求。所以,Java架構師通常需要具備豐富的技術方案積累,能夠了解不同的技術方案存在的優缺點。

第二:搭建項目的整體架構。Java架構師與平臺架構師一個重要的區別是,Java架構師往往需要自己完成技術驗證,同時需要根據項目需求完成整體框架的搭建,具體到代碼上就是進行模塊化劃分和接口定義。由於Java語言的抽象程度比較高,所以在接口定義的時候是比較考驗架構師設計能力的。

第三:行業認知能力。Java架構師對於行業的認知能力是比較重要的,不同行業具有不同的特點,需要根據行業的特點進行技術選型和架構設計。有的行業對於實時性要求比較高,有的行業對於併發性要求比較高,有的行業對於安全性要求比較高等等,行業特點如果把握不清楚往往會嚴重影響項目開發週期。

我從事互聯網行業多年,目前也在帶計算機專業的研究生,主要的研究方向集中在大數據和人工智能領域,我會陸續寫一些關於互聯網技術方面的文章,感興趣的朋友可以關注我,相信一定會有所收穫。

如果有互聯網、大數據、人工智能等方面的問題,或者是考研方面的問題,都可以在評論區留言!


IT人劉俊明


首先呢,我覺得工作3年左右開始考慮這個事兒是正常的,寫了一定的功能,接觸了一些框架了,可能遇到了不少坑,也加了不少班,但是忽然想起來做的東西零零散散,找不到精深的方法。

這個問題不是你一個人的問題,也不是做程序才會遇到的問題,只不過軟件工程是實踐科學,基本都是反著來的,先做了,然後找資料再學原理,基於此,如果說你想利用空閒時間正向地梳理這些東西的話,還是先從基礎出發(以java web系來說,我最熟悉的):

1、java core,基礎,集合,多線程,jvm的基礎

2、框架方面:spring、springmvc(restful的請求原理)、spring boot(這裡只是配置和使用,不用急於求成,spring的東西很多)

3、數據庫方面(1、mysql、oracle;2、常用連接池:druid、hikari等)

4、rpc:httpclient,dubbo,thrift,grpc(使用沒啥難度、主要是學習這幾種典型rpc的架構和使用場景)

5、nosql:redis、mongodb、cassandra、memcache(使用場景、集群方式、常見的數據結構、使用場景、缺點很重要)

6、業務工具(1、POI:用來導入、出excel和word,功能強大~;2、javax mail發送郵件;等等)

7、總結一下常用的算法、不一定是面試常考的,基礎排序和查找算法、鏈表的操作、圖相關的操作等,實踐中可能遇到的少,但是思維要有

8、如果是後端工程師,建議適當做一些前端開發瞭解一些前端的技術,是你未來更好的架構和理解前端和協作打下基礎,這裡包括常見的前端框架(angular、vue、react)、打包工具(webpack、gulp等)、原生js的dom操作

9、瞭解一些大型架構的細節也是學習和成長的方式。

。。。

其他的東西還有很多,其實你自己列一列這些細節,再有幾年,就會有自己的體系了。


柳州北漂小馬鍋



Java程序員架構棧


如何成為Java架構師?學呀。不然無師自通嗎?

底層原理很重要。底層原理很重要。底層原理很重要。重要的說三遍。

如果你是Java小白,就先不要考慮如果成為Java架構師了,先把基礎打牢吧。如果是有一定開發經驗的話,主要是7個方面的技術進階。

①應用框架

spring5,mybatis,springboot2源碼

熱門框架,源碼你都要會。

②工程化管理

devops工具,提高工作效率。

③微服務

springcloud+docker容器化,K8S..,

④高併發分佈式

這個不用說了,劃重點。

⑤性能優化

另一種高手成就。

⑥搜索引擎

elasticsearch,solr

⑦項目實戰

要成為架構師,肯定是要有實戰經驗的。就算對於技術你都零散的學會了,但還是會缺乏一個系統的整體。所以項目經驗是必備。

如果是需要Java架構師詳細的技能提升內容的話,可以關注私信我。


lee哥說架構


作為IT行業的多年開發人員,個人可以提點建議僅供參考。

Java架構師是應用級軟件開發中的高精尖人才,市場上對於這部分人才一般都是高價聘請。

Java架構師一般都可以同產品經理對市場的需求做個透徹的分析,根據自己的想法從無到有去搭建出一個高質量、高水準的軟件產品。

搭建高質量高水準的軟件產品,需要自身具備足夠的項目、產品經驗,知道項目搭建過程中的重難點如何處理。瞭解整個產品的實現方案,可以對產品進行拆解,分配任務。把控任務的完成度。最後對各個代碼塊實現整合。創造出一個產品。

搭建高質量高水準的軟件產品,需要自身對行業背景足夠了解。不是說做技術就可以兩耳不聞窗外事,高技術人才一般都瞭解行業的走勢,可以精準的預測行業的痛點,分析出解決這種痛點的方案。同時每個行業對於軟件產品都有不同的要求,有的行業重視體驗,有的行業重視流暢,這些重難點都需要架構師瞭如指掌。

搭建高質量高水準的軟件產品,需要自身的技術深度達到一定的深度。Java架構師往往需要自己完成技術驗證,同時需要根據項目需求完成整體框架的搭建,具體到代碼上就是進行模塊化劃分和接口定義。對於一些孤僻的問題,可以根據其原理實現問題的解決。可以根據自身的技術水平提出相關高難度問題的解決方案。

其實Java架構師最重要的方面一個就是技術面。技術的深度。另一個是人事面。有經驗、會與人交流。

“九章算術”有相關Java架構師的視頻以及學習資料。可以根據自身經濟情況購買學習。

希望回答對您有所幫助。

我本人從事多年互聯網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,微服務


成都朗沃教育


你該如何去做?我覺得可以從以下幾個步驟開始:

1: 紮實的JAVA 基礎,Think in java上介紹的內容都能理解,做到這一步恭喜成為了程序員。

2:熟練使用主流框架,如:mybatis,spring 等。

3:研究過至少一種以web框架的源碼,如spring mvc ,struts 等。

4:架構過或者參與過高併發系統設計,知道如何應對突發情況。

5:對自己所處的業務能夠根據自己的知識維度,提出優化建議或者預測其風險點。

其實能否成為架構師跟機遇有很大關係,比如一個程序員,以上都做到了,但是公司並沒有給他這個機會去做,一個真正架構的機會。因為之前的架構師不離職他就沒有機會,這就是現實!


Java架構師CAT


1 首先是一個合格的程序員。

2 真正懂軟件,懂軟件工程,而不知是考試做題。可以獨立完成一個產品,並服務客戶產生收益。

3 需要伯樂,給你一個超出一個人完成的項目,你兢兢業業險些在deadline前完成了產品。

4 不斷有新的挑戰。


jacins3


在Java程序員行業中,有不少Java開發人員的理想是成為一名優秀的Java架構師,Java架構師的主要任務不是從事具體的軟件程序的編寫,而是從事更高層次的開發構架工作。他必須對開發技術非常瞭解,並且需要有良好的組織管理能力。可以這樣說,一個Java架構師工作的好壞決定了整個軟件開發項目的成敗。那麼Java架構師需要掌握哪些知識點呢?

1、框架源碼分析

設計模式:Singleton單例模式,Factory工廠模式,Proxy代理模式,Template模板模式,Prototype原型模式等

Spring5:Spring提醒結構,IOC注入原理,AOP設計原理,Spring事務處理機制,SpringMVC,Spring源碼分析。

Mybatis:Mybatis體系結構,Mybatis核心應用與配置,Mybatis關聯查詢,與Spring集成,Mybatis源碼分析。

2、性能優化

JVM性能優化:剖析JVM整體結構,詳解垃圾回收機制GC,JVM性能調優與工具排查

Nginx調優:Nginx項目架構,Nginx核心配置,Nginx負載算法配置

Tomcat調優:Tomcat運行機制及框架,Tomcat線程模型,Tomcat性能調優

MySQL性能優化:SQL執行計劃,AQL優化,索引優化。

3、掌握池技術

對象池,連接池,線程池,Java反射技術,寫框架必備的技術,但是有嚴重的性能問題,替代方案Java字節碼技術。

4、掌握nio,值得注意的是“直接內存”的特點,使用場景。

5、掌握Java多線程同步異步。

6、掌握Java各種集合對象的實現原理,瞭解這些可以讓你在解決問題時選擇合適的數據結構,高效的解決問題。

7、熟練使用各種數據結構和算法,數組、哈希、鏈表、排序樹……就是一句話要麼是時間換空間要麼是空間換時間。

8、熟悉tcp協議,創建連接三次握手和斷開連接四次握手的整個過程,不瞭解的話,無法對高併發網絡應用做優化。

9、熟悉http協議,尤其是http頭,我發現好多工作五年以上的都弄不清session和cookie的生命週期以及它們之間的關聯。

10、熟悉系統集群、負載均衡、反向代理、動靜分離,網站靜態化。

11、掌握分佈式。

Java併發編程和網絡編程:Java線程狀態,線程池,線程通信,線程安全,Netty高性能原理

分佈式開發框架:分佈式系統口調用技術:RPC,Apache分佈式系統Zookeeper原理與應用,阿里Dubbo設計思想與應用

分佈式中間件:分佈式服務器治理,分佈式消息通信,分佈式數據緩存,MongoDB企業集群解決方案

12、掌握數據庫的設計能力,對它基本的參數優化,慢查詢日誌分析,主從複製的配置,至少要成為半個mysqldba。


分享到:


相關文章: