讀源碼學(xué)架構(gòu):系統(tǒng)架構(gòu)師思維訓(xùn)練之道
定 價:69.9 元
- 作者:郝佳
- 出版時間:2022/6/1
- ISBN:9787115590558
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.5
- 頁碼:222
- 紙張:
- 版次:01
- 開本:16開
《讀源碼學(xué)架構(gòu):系統(tǒng)架構(gòu)師思維訓(xùn)練之道》以軟件架構(gòu)師的能力培養(yǎng)為切入點,結(jié)合作者在過去10多年的工作中積累的經(jīng)驗,介紹了一名合格甚至優(yōu)秀的架構(gòu)師應(yīng)該具備的能力。
《讀源碼學(xué)架構(gòu):系統(tǒng)架構(gòu)師思維訓(xùn)練之道》分為4篇,總計9章,基本涵蓋了大部分生產(chǎn)環(huán)境下的系統(tǒng)設(shè)計原則以及方案。本書主要內(nèi)容有基本設(shè)計原則、輕松應(yīng)對后續(xù)的變化、優(yōu)雅地暴露內(nèi)部屬性、復(fù)雜邏輯的拆解與協(xié)同、復(fù)用的人性化設(shè)計、屏蔽外部依賴的防火墻設(shè)計、事件的分散性與協(xié)議化封裝、基于Reactor模式的系統(tǒng)優(yōu)化、代碼邊界的延伸——善用SDK。
《讀源碼學(xué)架構(gòu):系統(tǒng)架構(gòu)師思維訓(xùn)練之道》盡管內(nèi)容篇幅短小,但是信息量相當密集。本書適合具有一定編程經(jīng)驗,在業(yè)務(wù)上仍然有追求,希望能晉升為軟件架構(gòu)師的軟件開發(fā)人員閱讀。同時,對設(shè)計模式感興趣的初級開發(fā)人員,可以通過本書掌握與架構(gòu)設(shè)計相關(guān)的知識。
書《Spring源碼深度解析》作者新作品
每位軟件開發(fā)人員都希望成長為一名合格甚至優(yōu)秀的軟件架構(gòu)師,因為這意味著他們具有更強的能力、更大的責(zé)任、更多的信任、更高的收入,而且這個職級還可以給他們帶來滿足感。然而,真正能成為軟件架構(gòu)師的人卻少之又少。
作為一名合格的架構(gòu)師,其水平的高低取決于架構(gòu)能力。該能力體現(xiàn)為抽象能力、整體規(guī)劃能力以及設(shè)計能力。架構(gòu)能力決定了所開發(fā)項目的落地時間、穩(wěn)定性、靈活性與可維護性。
本書以架構(gòu)師的能力培養(yǎng)為切入點,將作者在過去十多年的工作中遇到的問題進行抽象,并作為示例呈現(xiàn)給讀者。本書以設(shè)計原則為基礎(chǔ),但是不強調(diào)對設(shè)計模式進行死記硬背,而是偏重于對設(shè)計原則的理解以及運用,并盡可能地接近實戰(zhàn),幫助讀者迅速掌握靈活運用設(shè)計原則來處理各種問題的能力。
本書主要內(nèi)容
基礎(chǔ)篇
基本設(shè)計原則
主流程設(shè)計篇
輕松應(yīng)對后續(xù)的變化
優(yōu)雅地暴露內(nèi)部屬性
復(fù)雜邏輯的拆解與協(xié)同
組件篇
復(fù)用的人性化設(shè)計
對外篇
屏蔽外部依賴的防火墻設(shè)計
事件的分散性與協(xié)議化封裝
基于Reactor模式的系統(tǒng)優(yōu)化
代碼邊界的延伸——善用SDK
郝佳,前阿里巴巴高級架構(gòu)師,現(xiàn)碩磐智能首席架構(gòu)師,一直專注于中間件領(lǐng)域與數(shù)據(jù)服務(wù)領(lǐng)域的研究和開發(fā);擅長系統(tǒng)的性能優(yōu)化、系統(tǒng)設(shè)計與大數(shù)據(jù)服務(wù)處理,熱衷于研究各種優(yōu)秀的開源框架,尤其對Spring、MyBatis、JMS、Tomcat等源碼有深刻的理解和認識;擁有4項技術(shù)專利,寫作出版的書《Spring源碼深度解析》深受讀者好評。
第 1章 基本設(shè)計原則 1
1.1 單一職責(zé)原則 2
1.1.1 簡述 2
1.1.2 示例 3
1.1.3 小結(jié) 8
1.2 開閉原則 8
1.2.1 簡述 8
1.2.2 示例 10
1.2.3 小結(jié) 13
1.3 依賴倒置原則 14
1.3.1 簡述 14
1.3.2 示例 15
1.3.3 小結(jié) 17
1.4 里氏替換原則 17
1.4.1 簡述 17
1.4.2 示例 18
1.4.3 小結(jié) 20
1.5 迪米特法則 20
1.5.1 簡述 20
1.5.2 示例 21
1.5.3 小結(jié) 22
1.6 接口隔離原則 22
1.7 總結(jié) 24
第 2章 輕松應(yīng)對后續(xù)的變化 27
2.1 拋出問題 27
2.2 問題分析 32
2.3 Spring中的PostProcessor機制 33
2.3.1 示例 33
2.3.2 思路抽象 38
2.4 設(shè)計優(yōu)化 40
2.4.1 需求分析與設(shè)計 40
2.4.2 代碼實現(xiàn) 41
2.5 總結(jié) 49
第3章 優(yōu)雅地暴露內(nèi)部屬性 51
3.1 拋出問題 51
3.2 問題分析 58
3.2.1 違背設(shè)計原則 58
3.2.2 設(shè)計看似優(yōu)雅,實則不然 59
3.3 Spring中的Aware機制 61
3.3.1 Aware概述 64
3.3.2 ApplicationContextAware的實現(xiàn)邏輯 65
3.3.3 思路抽象 67
3.3.4 優(yōu)勢分析 68
3.4 問題優(yōu)化 71
3.5 總結(jié) 75
第4章 復(fù)雜邏輯的拆解與協(xié)同 77
4.1 拋出問題 77
4.2 問題分析 81
4.2.1 PostProcessor模式的錯誤選型 82
4.2.2 模板方法模式的錯誤選型 83
4.3 Tomcat中的PipeLine機制 87
4.3.1 Tomcat容器結(jié)構(gòu)與協(xié)同處理 88
4.3.2 思路抽象 91
4.4 問題優(yōu)化 93
4.4.1 設(shè)計優(yōu)化 93
4.4.2 關(guān)鍵代碼 94
4.4.3 鏈表與for循環(huán)的區(qū)別 101
4.5 總結(jié) 104
第5章 復(fù)用的人性化設(shè)計 105
5.1 拋出問題 105
5.2 問題分析 112
5.2.1 大量冗余代碼 112
5.2.2 AOP切割原子邏輯 114
5.3 Spring中事務(wù)的封裝與復(fù)用 118
5.3.1 Spring的事務(wù)處理 118
5.3.2 思路抽象 123
5.4 問題優(yōu)化 125
5.4.1 注解設(shè)計 128
5.4.2 定義切面邏輯 129
5.4.3 定義攔截器 134
5.5 總結(jié) 137
第6章 屏蔽外部依賴的防火墻設(shè)計 139
6.1 拋出問題 139
6.2 問題分析 140
6.2.1 服務(wù)雪崩 140
6.2.2 邏輯入侵 146
6.3 思路抽象 149
6.4 問題優(yōu)化 151
6.4.1 優(yōu)化對接層 151
6.4.2 構(gòu)建防腐層 152
6.5 總結(jié) 154
第7章 事件的分散性與協(xié)議化封裝 157
7.1 拋出問題 157
7.2 問題分析 160
7.2.1 擴展類爆炸 160
7.2.2 擴展機制與監(jiān)聽機制的錯用 161
7.3 WebSocket事件的封裝與協(xié)議化 164
7.3.1 WebSocket 164
7.3.2 通信設(shè)計 166
7.3.3 思路抽象 171
7.4 問題優(yōu)化 174
7.4.1 生產(chǎn)者視角 174
7.4.2 消費者視角 178
7.5 總結(jié) 182
第8章 基于Reactor模式的系統(tǒng)優(yōu)化 185
8.1 拋出問題 185
8.2 問題分析 187
8.2.1 加機器 187
8.2.2 串行調(diào)用改為并發(fā)調(diào)用 187
8.2.3 預(yù)處理 188
8.3 Netty中的Reactor模式 188
8.3.1 Netty概述 188
8.3.2 BIO與NIO 189
8.3.3 Reactor編程模型 192
8.3.4 思路抽象 197
8.4 問題優(yōu)化 199
8.4.1 方案設(shè)計 199
8.4.2 代碼優(yōu)化 201
8.5 總結(jié) 216
第9章 代碼邊界的延伸——善用SDK 217
9.1 拋出問題 217
9.2 問題分析與優(yōu)化 217
9.2.1 SDK與API的區(qū)別 218
9.2.2 SDK可以解決的問題 219
9.2.3 SDK缺點與解決 221