1. 程式人生 > >做碼農八年,苦研技術終走向阿里架構師的分享

做碼農八年,苦研技術終走向阿里架構師的分享

進入Java這個行業也有8年了,通過8年的努力,現在在阿里任職一名高階架構師。下面我想跟大家分享一下。我認為,隨著你工作年限的增長、對生活對生命認識的深入,應當不斷思考三個問題:

1、我到底適不適合當一名程式設計師?

2、我到底應不應該一輩子以程式設計師為職業?

3、我對程式設計到底持有的是一種什麼樣的態度,是夠用就好呢還是不斷研究?

最終,明確自己的職業規劃,對自己的規劃負責併為之努力。

關於專業技能

我這裡要說明一下,以下列舉的內容不是都要會的東西—-但是如果你掌握得越多,最終能得到的評價、拿到的薪水勢必也越高。

 

基本語法

這包括static、final、transient等關鍵字的作用,foreach迴圈的原理等等

集合

基本上就是List、Map、Set,問的是各種實現類的底層實現原理,實現類的優缺點。

設計模式

知道常用設計模式的優缺點。

能畫出常用設計模式的UML圖。

多執行緒

Thread和Runnable的區別和聯 系、多次start一個執行緒會怎麼樣、執行緒有哪些狀態。

JDK原始碼

List、Map、Set實現類的原始碼

ReentrantLock、AQS的原始碼

AtomicInteger的實現原理,主要能說清楚CAS機制並且AtomicInteger是如何利用CAS機制實現的

執行緒池的實現原理

Object類中的方法以及每個方法的作用

框架

熟練使用三大框架

資料庫

SQL基礎和SQL優化的內容

Java虛擬機器

Java虛擬機器的記憶體佈局

GC演算法及幾種垃圾收集器

類載入機制,也就是雙親委派模型

Java記憶體模型

happens-before規則

volatile關鍵字使用規則

架構師是縱觀全域性的掌控者,這個層次很熟悉開發,有多年的開發工作經驗,並且也有架構設計經驗,熟悉架構理念,精通面向物件的設計思想,精通java語言,在高併發,高效能方面有相關開發經驗。

如果有正在學java的程式設計師,可來我們的java技術學習扣qun哦:72340,3928,小編花了近一個月整理了一份非常適合18年學習的java乾貨,加入就免費送java的視訊教程噢!而且我每天晚上都會在裡面直播講Java知識,從零基礎學習到有基礎進階,歡迎初學和進階中的小夥伴。

一、常用的設計模式

總體來說設計模式分為三大類:

建立型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。

結構型模式,共七種:介面卡模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。

行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式。

其實還有兩類:併發型模式和執行緒池模式。用一個圖片來整體描述一下:

 

 

二、開源框架原始碼分析

程式設計師每天都和程式碼打交道。經過數年的基礎教育和職業培訓,大部分程式設計師都會「寫」程式碼,或者至少會抄程式碼和改程式碼。但是,會讀程式碼的並不在多數,會讀程式碼又真正讀懂一些大專案的原始碼的,少之又少。這也造成了很多錯誤看原始碼的方式。

 

分散式架構

迎接高併發大資料的挑戰,從深度到廣度完善知識體系,成為下一個網際網路高薪人才。

理論結合實戰,透徹理解分散式架構及其解決方案。

面向人群

需要突破瓶頸;

傳統行業轉型進入網際網路行業的人群

分散式架構原理

1、分散式架構演進過程

2、如何把應用從單機擴充套件到分散式

3、CDN加速靜態檔案訪問

4、系統監控、容災、儲存動態擴容

5、架構設計及業務驅動劃分

6、CAP、Base理論以及其應用

分散式架構中介軟體

1、分散式架構網路通訊原理剖析

2、通訊協議中的序列化和反序列化

3、基於框架的RPC技術Webservice/RMI/Hessian

4、深入分析Zookeeper在disconf配置中心的應用

5、基於Zookeeper實現分散式伺服器動態上下線感知

6、深入分析Zookeeper Zab協議及選舉機制原始碼解讀

7、Dubbo管理中心及監控平臺安裝部署

8、基於Dubbo的分散式系統架構實戰

9、Dubbo容錯機制及高擴充套件性分析

分散式架構實戰

1、分散式全域性ID生成方案

2、Session跨域共享及企業級單點登入解決方案實戰

3、分散式事務解決方案實戰

4、高併發下的服務降級、限流實戰

5、基於分散式架構下分散式鎖的解決方案實戰

6、分散式架構下實現分散式定時排程

 

四、微服務架構

微服務架構是一項在雲中部署應用和服務的新技術

微服務不需要像普通服務那樣成為一種獨立的功能或者獨立的資源

微服務作為一項在雲中部署應用和服務的新技術已成為當下最新的熱門話題

微服務的基本思想在於考慮圍繞著業務領域元件來建立應用,這些應用可獨立地進行開發、管理和加速。在分散的元件中使用微服務雲架構和平臺,使部署、管理和服務功能交付變得更加簡單。

使用微服務構建現代化應用程式是很有意義的,因為它讓你既利用了擴充套件橫向擴充套件架構,也利用縱向擴充套件架構;還額外得到API的組合,且在整個業務中可重複利用。可能,每一分鐘構都在交付新服務,這樣你就必須擁有一個敏捷的且響應的應用程式平臺,這一平臺一直在不斷改進中。

五、工程化專題

Git

Maven

Jenkins

Sonar

 

六、專案實戰

要想立足於網際網路公司,且能在網際網路浪潮中不被淹沒,對於專案的開發實戰演練是不必可少的技能,也是對自身能力的一個衡量,有多少的量對等於獲得多少的回報。看似簡單的一個專案需求圖譜,其中的底層原理,實現原理又能知道多少?你搭建一個完整的B2C專案平臺到底需要多少知識?這一切都是需要我們考量的。