手把手教你成为年薪60万的架构师
?
“
這篇文章是幫助你成為架構師系列文章其中一篇,偏向0-5年工作的IT程序員員、架構師同學。
如果你能掌握這個系列提到的內容的70%左右,去阿里拿個P7問題不大,阿里的P7基本能拿到60W左右的年薪。
提醒一點,不要小看和不重視基礎,就猶如高屋建瓴一個道理,地基有多深,樓才能建多高。
1.程序設計要求(全部精通)
1.常用數據結構和算法
?
性表,鏈表,哈希表是常用的數據結構,在進行Java開發時,JDK已經為我們提供了一系列相應的類來實現基本的數據結構。
Java提供了幾個能有效地組織和操作數據的數據結構,這些數據結構通常稱為Java集合框架。在平常的學習開發中,靈活熟練地使用這些集合框架,可以很明顯地提高我們的開發效率。但是,你要過關,這些都是精通,不是熟悉,下面的都是這樣,請切記。
?
?
2.面向對象編程(是精通不是熟悉)
面向對象
面向對象(Object Oriented)是一種新興的程序設計方法,或者是一種新的程序設計規范(paradigm),其基本思想是使用對象、類、繼承、封裝、多態等基本概念來進行程序設計。從現實世界中客觀存在的事物(即對象)出發來構造軟件系統,并且在系統構造中盡可能運用人類的自然思維方式。
對象
對象是系統中用來描述客觀事物的一個實體,它是構成系統的一個基本單位。一個對象由一組屬性和對這組屬性進行操作的一組服務組成。
類的實例化可生成對象,一個對象的生命周期包括三個階段:生成、使用、消除。
當不存在對一個對象的引用時,該對象成為一個無用對象。Java的垃圾收集器自動掃描對象的動態內存區,把沒有引用的對象作為垃圾收集起來并釋放。當系統內存用盡或調用System.gc( )要求垃圾回收時,垃圾回收線程與系統同步運行。
?
類
類是具有相同屬性和方法的一組對象的集合,它為屬于該類的所有對象提供了統一的抽象描述,其內部包括屬性和方法兩個主要部分。在面向對象的編程語言中,類是一個獨立的程序單位,它應該有一個類名并包括屬性和方法兩個主要部分。
Java中的類實現包括兩個部分:類聲明和類體。
?
類聲明
[public][abstract|final] class className [extends superclassName] [implements interfaceNameList]{……}
成員變量限定詞的含義:
static: 靜態變量(類變量)
final: 常量;transient: 暫時性變量,用于對象存檔,用于對象的串行化
volatile: 貢獻變量,用于并發線程的共享
方法的實現也包括兩部分內容:方法聲明和方法體。
?
方法聲明
方法聲明中的限定詞的含義:
static: 類方法,可通過類名直接調用
abstract: 抽象方法,沒有方法體
final: 方法不能被重寫
native: 集成其它語言的代碼
synchronized: 控制多個并發線程的訪問
方法聲明包括方法名、返回類型和外部參數。其中參數的類型可以是簡單數據類型,也可以是復合數據類型(又稱引用數據類型)。
?
方法體
方法體是對方法的實現,它包括局部變量的聲明以及所有合法的Java指令。方法體中聲明的局部變量的作用域在該方法內部。若局部變量與類的成員變量同名,則類的成員變量被隱藏。
為了區別參數和類的成員變量,我們必須使用this。this用在一個方法中引用當前對象,它的值是調用該方法的對象。返回值須與返回類型一致,或者完全相同,或是其子類。當返回類型是接口時,返回值必須實現該接口。
?
構造方法
構造方法是一個特殊的方法。Java 中的每個類都有構造方法,用來初始化該類的一個對象。
?
面向對象的基本特性
封裝
封裝最好理解了。封裝是面向對象的特征之一,是對象和類概念的主要特性。封裝,也就是把客觀事物封裝成抽象的類,并且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。
?
繼承
繼承是指這樣一種能力:它可以使用現有類的所有功能,并在無需重新編寫原來的類的情況下對這些功能進行擴展。通過繼承創建的新類稱為“子類”或“派生類”,被繼承的類稱為“基類”、“父類”或“超類”。
要實現繼承,可以通過“繼承”(Inheritance)和“組合”(Composition)來實現。
?
多態
多態性(polymorphisn)是允許你將父對象設置成為和一個或更多的他的子對象相等的技術,賦值之后,父對象就可以根據當前賦值給它的子對象的特性以不同的方式運作。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針。
實現多態,有兩種方式,覆蓋和重載。覆蓋和重載的區別在于,覆蓋在運行時決定,重載是在編譯時決定。并且覆蓋和重載的機制不同,例如在 Java 中,重載方法的簽名必須不同于原先方法的,但對于覆蓋簽名必須相同。
?
重載(Overloading)
方法重載是讓類以統一的方式處理不同數據類型的手段。
一個類中可以創建多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同參數個數和參數類型來決定具體使用哪個方法。
返回值類型可以相同也可以不相同,無法以返回型別作為重載函數的區分標準。
?
重寫(Overriding)
子類對父類的方法進行重新編寫。如果在子類中的方法與其父類有相同的的方法名、返回類型和參數表,我們說該方法被重寫 (Overriding)。
如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。
子類函數的訪問修飾權限不能低于父類的。
3.設計模式(加粗部分一定要掌握)
請注意加粗部分為需要精通掌握
?
創建型模式
-
工廠模式(Factory Pattern)
-
抽象工廠模式(Abstract Factory Pattern)
-
單例模式(Singleton Pattern)
-
建造者模式(Builder Pattern)
-
原型模式(Prototype Pattern)
結構型模式
這些設計模式關注類和對象的組合。繼承的概念被用來組合接口和定義組合對象獲得新功能的方式。
-
適配器模式(Adapter Pattern)
-
橋接模式(Bridge Pattern)
-
過濾器模式(Filter、Criteria Pattern)
-
組合模式(Composite Pattern)
-
裝飾器模式(Decorator Pattern)
-
外觀模式(Facade Pattern)
-
享元模式(Flyweight Pattern)
-
代理模式(Proxy Pattern)
行為型模式
這些設計模式特別關注對象之間的通信。
-
責任鏈模式(Chain of Responsibility Pattern)
-
命令模式(Command Pattern)
-
解釋器模式(Interpreter Pattern)
-
迭代器模式(Iterator Pattern)
-
中介者模式(Mediator Pattern)
-
備忘錄模式(Memento Pattern)
-
觀察者模式(Observer Pattern)
-
狀態模式(State Pattern)
-
空對象模式(Null Object Pattern)
-
策略模式(Strategy Pattern)
-
模板模式(Template Pattern)
-
訪問者模式(Visitor Pattern)
J2EE 模式
這些設計模式特別關注表示層。這些模式是由 Sun Java Center 鑒定的。
-
MVC 模式(MVC Pattern)
-
業務代表模式(Business Delegate Pattern)
-
組合實體模式(Composite Entity Pattern)
-
數據訪問對象模式(Data Access Object Pattern)
-
前端控制器模式(Front Controller Pattern)
-
攔截過濾器模式(Intercepting Filter Pattern)
-
服務定位器模式(Service Locator Pattern)
-
傳輸對象模式(Transfer Object Pattern)
4.建模語言和建模工具:UML(必須畫的溜溜的)
所有UML圖形
-
UML 基礎: 類圖
-
UML 基礎: 序列圖
-
UML 基礎: 組件圖
-
繪制整潔的 UML 圖
-
用例建模技巧
-
UML 序列圖簡介
-
養成良好的繪制 UML 序列圖的習慣
-
利用 UML 進行實體關系建模
UML建模工具
-
Rose
-
PowerDesigner
-
Edraw(我的選擇):我喜歡畫圖得漂亮
-
eclipse自帶..還有很多
-
在線UML畫圖工具:processon等
5.高質量編碼能力:重用性,低耦合,可擴展性,高性能,可維護性。
我們評價高質量代碼有三要素:可讀性、可維護性、可變更性。我們的代碼要一個都不能少地達到了這三要素的要求才能算高質量的代碼。
這些內容,需要你日常工作中不斷去總結和優化,先記好。
?
可讀性強
-
不要編寫大段的代碼
-
代碼如人,邏輯差的人都喜歡這樣干,如果你喜歡這樣寫代碼,你將很快被暴露,會被鄙視死的。
-
釋義名稱與注釋
-
按照我的話就是,要臉還是不要臉,你自己看著辦
可維護性
-
代碼不能寫死
-
預測可能發生的變化
可變更性
-
通過提高代碼復用提高可維護性
-
利用設計模式提高可變更性
-
職責驅動設計和領域驅動設計
以上是官方說明,我覺得就是這個意思。
6.集成開發,版本控制,構建等工具:eclipse, svn, git,maven 等
這些我相信每個人都使用的馬溜溜的,我會在稍后推薦大家我使用的開發必用開發工具。
?
7.java相關的基礎知識和高級知識
-
Java語言基礎:異常處理,泛型,reflection
-
Java高級特性和類庫:class loader,bytecode,nio, juc 等
-
Java多線程編程
-
Java網絡與服務器編程
-
開源產品和技術
-
JVM原理和調優
我已經寫過了一篇,java相關的必掌握的高級知識,里面更詳盡,從程序員進階到架構師,史上最全進階詳解(上篇)
?
架構設計要求
大型網絡應用結構:消息中間件,負載均衡,集群技術,數據同步…
可容災分布式系統設計能力………還有很多,如果需要掌握架構,請查看這篇文章從程序員進階到架構師,最全進階詳解(下篇)-大型網站架構篇
你可能也喜歡:
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的手把手教你成为年薪60万的架构师的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 技术动态 | eBay开源分布式知识图谱
- 下一篇: 阿里P8架构师谈:Docker简介、组成