讀源碼學(xué)架構(gòu):系統(tǒng)架構(gòu)師思維訓(xùn)練之道
定 價(jià):69.9 元
- 作者:郝佳
- 出版時(shí)間:2022/6/1
- ISBN:9787115590558
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.5
- 頁碼:222
- 紙張:
- 版次:01
- 開本:16開
《讀源碼學(xué)架構(gòu):系統(tǒng)架構(gòu)師思維訓(xùn)練之道》以軟件架構(gòu)師的能力培養(yǎng)為切入點(diǎn),結(jié)合作者在過去10多年的工作中積累的經(jīng)驗(yàn),介紹了一名合格甚至優(yōu)秀的架構(gòu)師應(yīng)該具備的能力。
《讀源碼學(xué)架構(gòu):系統(tǒng)架構(gòu)師思維訓(xùn)練之道》分為4篇,總計(jì)9章,基本涵蓋了大部分生產(chǎn)環(huán)境下的系統(tǒng)設(shè)計(jì)原則以及方案。本書主要內(nèi)容有基本設(shè)計(jì)原則、輕松應(yīng)對(duì)后續(xù)的變化、優(yōu)雅地暴露內(nèi)部屬性、復(fù)雜邏輯的拆解與協(xié)同、復(fù)用的人性化設(shè)計(jì)、屏蔽外部依賴的防火墻設(shè)計(jì)、事件的分散性與協(xié)議化封裝、基于Reactor模式的系統(tǒng)優(yōu)化、代碼邊界的延伸——善用SDK。
《讀源碼學(xué)架構(gòu):系統(tǒng)架構(gòu)師思維訓(xùn)練之道》盡管內(nèi)容篇幅短小,但是信息量相當(dāng)密集。本書適合具有一定編程經(jīng)驗(yàn),在業(yè)務(wù)上仍然有追求,希望能晉升為軟件架構(gòu)師的軟件開發(fā)人員閱讀。同時(shí),對(duì)設(shè)計(jì)模式感興趣的初級(jí)開發(fā)人員,可以通過本書掌握與架構(gòu)設(shè)計(jì)相關(guān)的知識(shí)。
書《Spring源碼深度解析》作者新作品
每位軟件開發(fā)人員都希望成長為一名合格甚至優(yōu)秀的軟件架構(gòu)師,因?yàn)檫@意味著他們具有更強(qiáng)的能力、更大的責(zé)任、更多的信任、更高的收入,而且這個(gè)職級(jí)還可以給他們帶來滿足感。然而,真正能成為軟件架構(gòu)師的人卻少之又少。
作為一名合格的架構(gòu)師,其水平的高低取決于架構(gòu)能力。該能力體現(xiàn)為抽象能力、整體規(guī)劃能力以及設(shè)計(jì)能力。架構(gòu)能力決定了所開發(fā)項(xiàng)目的落地時(shí)間、穩(wěn)定性、靈活性與可維護(hù)性。
本書以架構(gòu)師的能力培養(yǎng)為切入點(diǎn),將作者在過去十多年的工作中遇到的問題進(jìn)行抽象,并作為示例呈現(xiàn)給讀者。本書以設(shè)計(jì)原則為基礎(chǔ),但是不強(qiáng)調(diào)對(duì)設(shè)計(jì)模式進(jìn)行死記硬背,而是偏重于對(duì)設(shè)計(jì)原則的理解以及運(yùn)用,并盡可能地接近實(shí)戰(zhàn),幫助讀者迅速掌握靈活運(yùn)用設(shè)計(jì)原則來處理各種問題的能力。
本書主要內(nèi)容
基礎(chǔ)篇
基本設(shè)計(jì)原則
主流程設(shè)計(jì)篇
輕松應(yīng)對(duì)后續(xù)的變化
優(yōu)雅地暴露內(nèi)部屬性
復(fù)雜邏輯的拆解與協(xié)同
組件篇
復(fù)用的人性化設(shè)計(jì)
對(duì)外篇
屏蔽外部依賴的防火墻設(shè)計(jì)
事件的分散性與協(xié)議化封裝
基于Reactor模式的系統(tǒng)優(yōu)化
代碼邊界的延伸——善用SDK
郝佳,前阿里巴巴高級(jí)架構(gòu)師,現(xiàn)碩磐智能首席架構(gòu)師,一直專注于中間件領(lǐng)域與數(shù)據(jù)服務(wù)領(lǐng)域的研究和開發(fā);擅長系統(tǒng)的性能優(yōu)化、系統(tǒng)設(shè)計(jì)與大數(shù)據(jù)服務(wù)處理,熱衷于研究各種優(yōu)秀的開源框架,尤其對(duì)Spring、MyBatis、JMS、Tomcat等源碼有深刻的理解和認(rèn)識(shí);擁有4項(xiàng)技術(shù)專利,寫作出版的書《Spring源碼深度解析》深受讀者好評(píng)。
第 1章 基本設(shè)計(jì)原則 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)對(duì)后續(xù)的變化 27
2.1 拋出問題 27
2.2 問題分析 32
2.3 Spring中的PostProcessor機(jī)制 33
2.3.1 示例 33
2.3.2 思路抽象 38
2.4 設(shè)計(jì)優(yōu)化 40
2.4.1 需求分析與設(shè)計(jì) 40
2.4.2 代碼實(shí)現(xiàn) 41
2.5 總結(jié) 49
第3章 優(yōu)雅地暴露內(nèi)部屬性 51
3.1 拋出問題 51
3.2 問題分析 58
3.2.1 違背設(shè)計(jì)原則 58
3.2.2 設(shè)計(jì)看似優(yōu)雅,實(shí)則不然 59
3.3 Spring中的Aware機(jī)制 61
3.3.1 Aware概述 64
3.3.2 ApplicationContextAware的實(shí)現(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模式的錯(cuò)誤選型 82
4.2.2 模板方法模式的錯(cuò)誤選型 83
4.3 Tomcat中的PipeLine機(jī)制 87
4.3.1 Tomcat容器結(jié)構(gòu)與協(xié)同處理 88
4.3.2 思路抽象 91
4.4 問題優(yōu)化 93
4.4.1 設(shè)計(jì)優(yōu)化 93
4.4.2 關(guān)鍵代碼 94
4.4.3 鏈表與for循環(huán)的區(qū)別 101
4.5 總結(jié) 104
第5章 復(fù)用的人性化設(shè)計(jì) 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è)計(jì) 128
5.4.2 定義切面邏輯 129
5.4.3 定義攔截器 134
5.5 總結(jié) 137
第6章 屏蔽外部依賴的防火墻設(shè)計(jì) 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)化對(duì)接層 151
6.4.2 構(gòu)建防腐層 152
6.5 總結(jié) 154
第7章 事件的分散性與協(xié)議化封裝 157
7.1 拋出問題 157
7.2 問題分析 160
7.2.1 擴(kuò)展類爆炸 160
7.2.2 擴(kuò)展機(jī)制與監(jiān)聽機(jī)制的錯(cuò)用 161
7.3 WebSocket事件的封裝與協(xié)議化 164
7.3.1 WebSocket 164
7.3.2 通信設(shè)計(jì) 166
7.3.3 思路抽象 171
7.4 問題優(yōu)化 174
7.4.1 生產(chǎn)者視角 174
7.4.2 消費(fèi)者視角 178
7.5 總結(jié) 182
第8章 基于Reactor模式的系統(tǒng)優(yōu)化 185
8.1 拋出問題 185
8.2 問題分析 187
8.2.1 加機(jī)器 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è)計(jì) 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缺點(diǎn)與解決 221