關(guān)于我們
書單推薦
新書推薦
|
分布式系統(tǒng)開發(fā)實戰(zhàn)
本書從原理和實踐角度全面介紹如何設(shè)計分布式系統(tǒng)。內(nèi)容包括節(jié)點、通信、并發(fā)與并行、面向?qū)ο蟮姆植际郊軜?gòu)、面向服務(wù)的分布式架構(gòu)、面向消息的分布式架構(gòu)、 EST 風(fēng)格的架構(gòu)、微服務(wù)架構(gòu)、 Serverless 架構(gòu)、 Cloud Native 架構(gòu)、虛擬化與容器技術(shù)、分布式計算、分布式存儲、分布式監(jiān)控、分布式版本控制、數(shù)據(jù)一致性、分布式事務(wù)、安全性、可用性等,內(nèi)容豐富、案例新穎,相關(guān)理論與技術(shù)實踐較為前瞻。本書最后還提供了一個綜合實戰(zhàn)案例,手把手教讀者如何來基于Spring Cloud 技術(shù)來實現(xiàn)微服務(wù)架構(gòu)。
(1)新。符合當(dāng)今云架構(gòu)發(fā)展現(xiàn)狀的開發(fā)技術(shù),無論是大型企業(yè)還是個人開發(fā)者,都或多或少地采用了分布式的方式來開發(fā)和部署應(yīng)用。
(2)全。涵蓋REST設(shè)計、測試、服務(wù)注冊、服務(wù)發(fā)現(xiàn)、安全、數(shù)據(jù)管理、消息通信、批處理、任務(wù)調(diào)度、運營、容器部署、持續(xù)發(fā)布等方面的知識。
(3)細。實戰(zhàn)案例輔以大量理論知識,讓讀者透徹理解每一個知識點。
在多家知名 IT 公司擔(dān)任項目經(jīng)理、架構(gòu)師、高級開發(fā)顧問等職位,具有多年軟件開發(fā)管理及系統(tǒng)架構(gòu)經(jīng)驗。負責(zé)過多個省、國家級大型分布式系統(tǒng)的設(shè)計與研發(fā),參與了多個大型項目的微服務(wù)架構(gòu)的技術(shù)改造,在實際工作中,積累了大量的分布式系統(tǒng)及微服務(wù)架構(gòu)經(jīng)驗。業(yè)余時間創(chuàng)建了 waylau.com 網(wǎng)站,用于分享個人技術(shù)心得。喜歡開源,長期躍于各大開源社區(qū),是 CSDN、 開源中國、云棲社區(qū)等技術(shù)社區(qū)專家。為開源社區(qū)無私編著了《Spring Framework 4.x參考文檔》、《Netty 實戰(zhàn)(精髓)》、《REST 實戰(zhàn)》、《分布式 Java》、《Spring Boot 教程》、《Spring Security 教程》、《Thymeleaf 教程》等近30余篇技術(shù)教程,廣受網(wǎng)友好評。其中出版了《分布式系統(tǒng)常用技術(shù)及案例分析》、《Spring Boot 企業(yè)級應(yīng)用開發(fā)實戰(zhàn)》、《Spring Cloud 微服務(wù)架構(gòu)開發(fā)實戰(zhàn)》等專著。
第 1章 分布式系統(tǒng)概述 1
1.1 什么是分布式系統(tǒng) 1
1.2 分布式系統(tǒng)常用術(shù)語 2
1.3 集中式系統(tǒng)與分布式系統(tǒng) 3
1.4 分布式系統(tǒng)特征 4
1.5 設(shè)計分布式系統(tǒng)所面臨的挑戰(zhàn) 5
1.6 本章小結(jié) 6
1.7 習(xí)題 6
第 2章 節(jié)點 7
2.1 什么是線程 7
2.2 進程和線程 8
2.3 線程和纖程 8
2.4 編程語言中的線程對象 9
2.4.1 定義和啟動一個線程 9
2.4.2 暫停線程執(zhí)行 9
2.4.3 中斷線程 10
2.4.4 等待另一個線程完成 11
2.5 節(jié)點之間的通信 11
2.5.1 消息丟失 11
2.5.2 消息亂序 12
2.5.3 數(shù)據(jù)錯誤 12
2.5.4 不可靠的TCP 12
2.6 本章小結(jié) 12
2.7 習(xí)題 13
第3章 通信 14
3.1 本地過程調(diào)用 14
3.1.1 本地過程調(diào)用的概念 14
3.1.2 本地過程調(diào)用的實現(xiàn) 14
3.2 遠程過程調(diào)用 16
3.2.1 遠程過程調(diào)用原理 16
3.2.2 如何實現(xiàn)遠程過程調(diào)用 18
3.2.3 遠程過程調(diào)用API 20
3.2.4 遠程過程調(diào)用發(fā)展歷程 20
3.3 常用網(wǎng)絡(luò)I/O模型 21
3.3.1 阻塞I/O模型 21
3.3.2 非阻塞I/O模型 22
3.3.3 I/O復(fù)用模型 22
3.3.4 信號驅(qū)動I/O模型 23
3.3.5 異步I/O模型 23
3.3.6 幾種I/O模型的比較 24
3.4 I/O操作中的常用術(shù)語 25
3.4.1 阻塞和非阻塞 25
3.4.2 同步與異步 25
3.4.3 總結(jié) 25
3.5 實戰(zhàn):在Java中實現(xiàn)常用網(wǎng)絡(luò)I/O模型 26
3.5.1 Java OIO 26
3.5.2 Java NIO 29
3.5.3 Java AIO 33
3.6 事件驅(qū)動 37
3.6.1 事件驅(qū)動編程 37
3.6.2 事件循環(huán)的實現(xiàn) 38
3.6.3 Reactor模型 38
3.6.4 Proactor模型 40
3.7 本章小結(jié) 41
3.8 習(xí)題 41
第4章 并發(fā)與并行 42
4.1 并發(fā)與并行的區(qū)別 42
4.2 線程與并發(fā) 43
4.3 并發(fā)帶來的風(fēng)險 43
4.3.1 死鎖 44
4.3.2 饑餓 45
4.3.3 活鎖 45
4.4 解決并發(fā)風(fēng)險 45
4.4.1 同步 45
4.4.2 原子訪問 49
4.5 提升系統(tǒng)并發(fā)能力 49
4.5.1 無鎖化設(shè)計提升并發(fā)能力 49
4.5.2 緩存提升并發(fā)能力 49
4.5.3 更細顆粒度的并發(fā)單元 50
4.6 本章小結(jié) 50
4.7 習(xí)題 50
第5章 面向?qū)ο蟮姆植际郊軜?gòu) 51
5.1 基于對象的分布式架構(gòu) 51
5.2 常用的分布式對象系統(tǒng) 52
5.2.1 微軟DCOM 52
5.2.2 CORBA 53
5.2.3 Java RMI 54
5.3 分布式對象系統(tǒng)優(yōu)缺點 57
5.4 實戰(zhàn):基于Java RMI實現(xiàn)分布式對象通信 57
5.4.1 示例概述 57
5.4.2 編寫RMI服務(wù)器 58
5.4.3 編寫RMI客戶端 60
5.4.4 運行 61
5.5 本章小結(jié) 61
5.6 習(xí)題 62
第6章 面向服務(wù)的分布式架構(gòu) 63
6.1 什么是面向服務(wù)的架構(gòu) 63
6.2 SOA的基本概念 64
6.3 基于Web服務(wù)的SOA 65
6.3.1 XML-RPC 66
6.3.2 SOAP 66
6.3.3 Microsoft .NET Remoting 69
6.3.4 Java中的XML Web服務(wù) 75
6.3.5 超越SOAP 75
6.3.6 SOA的演變 76
6.4 Web服務(wù)的分類 76
6.4.1 “大”Web服務(wù) 76
6.4.2 RESTful Web服務(wù) 77
6.4.3 Web服務(wù)技術(shù)選型 77
6.5 實戰(zhàn):基于JAX-WS實現(xiàn)Web服務(wù) 78
6.5.1 JAX-WS概述 78
6.5.2 創(chuàng)建Web服務(wù)器和客戶端的基本步驟 78
6.5.3 JAX-WS終端要求 79
6.5.4 創(chuàng)建基于JAX-WS的服務(wù)器 79
6.5.5 創(chuàng)建基于JAX-WS的客戶端 80
6.5.6 運行 80
6.6 本章小結(jié) 82
6.7 習(xí)題 82
第7章 面向消息的分布式架構(gòu) 83
7.1 什么是面向消息的分布式架構(gòu) 83
7.1.1 常用術(shù)語 83
7.1.2 使用場景 83
7.1.3 常用技術(shù) 84
7.2 常見消息中間件產(chǎn)品介紹 84
7.2.1 Apache ActiveMQ 84
7.2.2 RabbitMQ 85
7.2.3 Apache RocketMQ 86
7.3 消息通信常用模式 88
7.3.1 工作隊列 88
7.3.2 發(fā)布/訂閱 89
7.3.3 路由 90
7.3.4 主題 91
7.3.5 RPC 92
7.4 了解JMS規(guī)范 94
7.4.1 JMS消息風(fēng)格 94
7.4.2 JMS接口 95
7.5 實戰(zhàn):基于JMS的消息發(fā)送和接收 96
7.5.1 項目概述 96
7.5.2 項目配置 97
7.5.3 編碼實現(xiàn) 99
7.5.4 運行 104
7.6 本章小結(jié) 107
7.7 習(xí)題 108
第8章 REST風(fēng)格的架構(gòu) 109
8.1 什么是REST 109
8.2 REST設(shè)計原則 110
8.3 成熟度模型 111
8.3.1 第0級:使用HTTP作為傳輸方式 111
8.3.2 第 1級:引入了資源的概念 113
8.3.3 第 2級:根據(jù)語義使用HTTP動詞 113
8.3.4 第3級:使用HATEOAS 114
8.4 REST API管理 116
8.5 常用技術(shù) 118
8.5.1 JAX-RS規(guī)范 118
8.5.2 Jersey 123
8.5.3 Apache CXF 123
8.5.4 Spring Web MVC 124
8.6 實戰(zhàn):基于Java實現(xiàn)REST API 124
8.6.1 基于Jersey來構(gòu)建REST服務(wù) 124
8.6.2 基于Apache CXF來構(gòu)建REST服務(wù) 131
8.6.3 基于Spring Web MVC來構(gòu)建REST服務(wù) 140
8.7 本章小結(jié) 145
8.8 習(xí)題 145
第9章 微服務(wù)架構(gòu) 146
9.1 什么是微服務(wù)架構(gòu) 146
9.2 微服務(wù)架構(gòu)與SOA架構(gòu)的區(qū)別 147
9.2.1 單體架構(gòu)的例子 147
9.2.2 微服務(wù)架構(gòu)的例子 148
9.3 何時采用微服務(wù)架構(gòu) 150
9.4 常用技術(shù) 150
9.4.1 Jetty HTTP Server 151
9.4.2 構(gòu)建REST程序 151
9.4.3 運行 153
9.5 實戰(zhàn):基于Spring Boot實現(xiàn)微服務(wù) 153
9.5.1 配置環(huán)境 153
9.5.2 REST API設(shè)計 154
9.5.3 編寫程序代碼 155
9.5.4 安裝REST客戶端 159
9.5.5 運行、測試程序 160
9.6 微服務(wù)與通信 160
9.6.1 HTTP通信 161
9.6.2 消息通信 161
9.6.3 事件驅(qū)動的通信 161
9.7 了解CQRS 162
9.7.1 CQRS概述 162
9.7.2 CQRS與Event Sourcing的關(guān)系 163
9.7.3 CQRS好處 164
9.8 實戰(zhàn):基于CQRS微服務(wù)通信 164
9.8.1 配置 165
9.8.2 Aggregate 165
9.8.3 Command 168
9.8.4 Event 169
9.8.5 測試 170
9.9 本章小結(jié) 171
9.10 習(xí)題 171
第 10章 Serverless架構(gòu) 172
10.1 什么是Serverless架構(gòu) 172
10.2 Serverless架構(gòu)的典型應(yīng)用 173
10.2.1 UI驅(qū)動的應(yīng)用 173
10.2.2 消息驅(qū)動的應(yīng)用 174
10.3 常見的Serverless架構(gòu) 175
10.3.1 AWS Lambda 175
10.3.2 Google Cloud Functions 175
10.3.3 Iron.io 175
10.3.4 IBM OpenWhisk 175
10.3.5 Serverless Framework 176
10.3.6 Azure WebJobs 176
10.4 Serverless架構(gòu)原則 176
10.4.1 根據(jù)需要使用計算服務(wù)執(zhí)行代碼 177
10.4.2 編寫單一用途的無狀態(tài)函數(shù) 177
10.4.3 設(shè)計基于推送的、事件驅(qū)動的管道 177
10.4.4 創(chuàng)建更粗實、更強大的前端 177
10.4.5 擁抱第三方服務(wù) 178
10.5 實戰(zhàn):使用AWS平臺實現(xiàn)Serverless架構(gòu) 178
10.6 本章小結(jié) 182
10.7 習(xí)題 182
第 11章 Cloud Native架構(gòu) 183
11.1 Cloud Native概述 183
11.1.1 軟件需求的發(fā)展 183
11.1.2 開發(fā)方式的巨變 184
11.1.3 云是大勢所趨 185
11.2 Cloud Native特性 185
11.2.1 以云為基礎(chǔ)架構(gòu) 186
11.2.2 云服務(wù) 186
11.2.3 無服務(wù) 186
11.2.4 可擴展 187
11.2.5 高可用 189
11.2.6 敏捷 190
11.2.7 云優(yōu)先 190
11.3 12-Factor 191
11.3.1 基準(zhǔn)代碼 192
11.3.2 依賴 192
11.3.3 配置 193
11.3.4 后端服務(wù) 193
11.3.5 構(gòu)建、發(fā)布、運行 193
11.3.6 進程 194
11.3.7 端口綁定 194
11.3.8 并發(fā) 195
11.3.9 易處理 196
11.3.10 開發(fā)環(huán)境與線上環(huán)境等價 196
11.3.11 日志 196
11.3.12 管理進程 197
11.4 Cloud Native成功案例分析 197
11.4.1 Amazon 197
11.4.2 Netflix 198
11.4.3 淘寶網(wǎng) 199
11.5 Cloud Native與微服務(wù)架構(gòu)的關(guān)系 201
11.6 Cloud Native與Serverless架構(gòu)的關(guān)系 201
11.7 Cloud Native的優(yōu)點及面臨的挑戰(zhàn) 201
11.7.1 Cloud Native優(yōu)點 201
11.7.2 Cloud Native不是“銀彈” 202
11.7.3 面臨的挑戰(zhàn) 203
11.8 本章小結(jié) 203
11.9 習(xí)題 203
第 12章 虛擬化與容器技術(shù) 204
12.1 虛擬化技術(shù) 204
12.2 容器與虛擬機 204
12.2.1 成熟度方面的比較 205
12.2.2 啟動速度的比較 205
12.2.3 安全方面的比較 205
12.2.4 性能方面的比較 206
12.3 基于容器的持續(xù)部署 206
12.3.1 持續(xù)部署管道 207
12.3.2 測試 207
12.3.3 構(gòu)建 208
12.3.4 部署 209
12.3.5 藍-綠部署 209
12.3.6 運行預(yù)集成以及集成后測試 210
12.3.7 回滾與清理 211
12.3.8 決定每個步驟的執(zhí)行環(huán)境 212
12.3.9 完成整個持續(xù)部署流 212
12.4 容器技術(shù)與微服務(wù)架構(gòu) 212
12.4.1 基于Google Kubernetes架構(gòu) 213
12.4.2 基于DaoCloud DCE架構(gòu) 213
12.5 容器技術(shù)與Cloud Native架構(gòu) 213
12.6 實戰(zhàn):基于Docker發(fā)布微服務(wù) 214
12.6.1 創(chuàng)建微服務(wù) 214
12.6.2 微服務(wù)容器化 214
12.6.3 使用Gradle來構(gòu)建Docker image 215
12.6.4 運行image 216
12.6.5 訪問應(yīng)用 217
12.6.6 關(guān)閉容器 217
12.6.7 Docker發(fā)布微服務(wù) 217
12.7 本章小結(jié) 217
12.8 習(xí)題 217
第 13章 分布式計算 218
13.1 分布式計算概述 218
13.2 分布式計算應(yīng)用場景 218
13.3 分布式計算常用技術(shù) 219
13.3.1 MapReduce 219
13.3.2 Apache Hadoop 221
13.3.3 Apache Spark 222
13.4 實戰(zhàn):基于Spark詞頻統(tǒng)計 223
13.4.1 項目概述 224
13.4.2 項目配置 224
13.4.3 編碼實現(xiàn) 224
13.4.4 運行 225
13.5 本章小結(jié) 227
13.6 習(xí)題 227
第 14章 分布式存儲 228
14.1 分布式存儲概述 228
14.2 分布式存儲應(yīng)用場景 228
14.3 分布式存儲常用技術(shù) 229
14.3.1 Bigtable 229
14.3.2 Apache HBase 231
14.3.3 Apache Cassandra 233
14.3.4 Memcached 235
14.3.5 Redis 237
14.3.6 MongoDB 237
14.4 實戰(zhàn):基于MongoDB文件服務(wù)器 239
14.4.1 文件服務(wù)器的需求 239
14.4.2 所需技術(shù) 239
14.4.3 文件服務(wù)器的實現(xiàn) 241
14.4.4 運行 247
14.4.5 其他配置項 247
14.5 本章小結(jié) 248
14.6 習(xí)題 248
第 15章 分布式監(jiān)控 249
15.1 分布式監(jiān)控概述 249
15.2 分布式監(jiān)控應(yīng)用場景 249
15.3 分布式監(jiān)控常用技術(shù) 249
15.3.1 Nagios 250
15.3.2 Zabbix 250
15.3.3 Consul 253
15.3.4 ZooKeeper 255
15.4 實戰(zhàn):基于ZooKeeper的服務(wù)注冊和發(fā)現(xiàn) 258
15.4.1 項目概述 258
15.4.2 項目配置 258
15.4.3 編碼實現(xiàn) 259
15.4.4 運行 262
15.5 本章小結(jié) 264
15.6 習(xí)題 264
第 16章 分布式版本控制 265
16.1 版本控制系統(tǒng)簡史 265
16.2 集中式與分布式版本控制系統(tǒng) 265
16.3 常用技術(shù) 266
16.3.1 Bazaar 266
16.3.2 Mercurial 266
16.3.3 Git 267
16.4 了解Git Flow 269
16.4.1 分支定義 269
16.4.2 新功能開發(fā)工作流 269
16.4.3 Bug修復(fù)工作流 270
16.4.4 版本發(fā)布工作流 270
16.5 本章小結(jié) 271
16.6 習(xí)題 271
第 17章 數(shù)據(jù)一致性 272
17.1 什么是CAP理論 272
17.2 為什么CAP只能三選二 273
17.3 CAP常見模型 274
17.3.1 犧牲分區(qū)容錯性(CA模型) 274
17.3.2 犧牲可用性(CP模型) 274
17.3.3 犧牲一致性(AP模型) 274
17.4 CAP的意義及發(fā)展 275
17.4.1 CAP最新發(fā)展 275
17.4.2 BASE 275
17.5 以數(shù)據(jù)為中心的一致性模型 276
17.5.1 嚴(yán)格一致性 276
17.5.2 持續(xù)一致性 276
17.5.3 順序一致性 276
17.5.4 因果一致性 276
17.5.5 入口一致性 276
17.6 以客戶為中心的一致性模型 277
17.6.1 單調(diào)讀一致性 277
17.6.2 單調(diào)寫一致性 277
17.6.3 讀寫一致性 277
17.6.4 寫讀一致性 277
17.7 本章小結(jié) 278
17.8 習(xí)題 278
第 18章 分布式事務(wù) 279
18.1 本地事務(wù) 279
18.1.1 一個銀行轉(zhuǎn)賬的例子 279
18.1.2 事務(wù)隔離級別 280
18.2 分布式事務(wù)面臨的挑戰(zhàn) 282
18.3 節(jié)點復(fù)制 283
18.3.1 Master-Slave復(fù)制 283
18.3.2 Master-Master多主復(fù)制 283
18.4 兩階段提交 283
18.4.1 準(zhǔn)備階段 284
18.4.2 提交階段 284
18.4.3 兩階段提交狀態(tài)機 284
18.4.4 兩階段提交的缺陷 285
18.5 三階段提交 285
18.5.1 CanCommit 285
18.5.2 PreCommit 286
18.5.3 DoCommit 286
18.5.4 三階段提交狀態(tài)機 286
18.5.5 三階段提交的缺陷 287
18.6 Paxos算法 287
18.6.1 問題描述 287
18.6.2 提案的選定 288
18.6.3 獲取被選定的提案值 289
18.6.4 進展性 290
18.6.5 實現(xiàn) 290
18.6.6 總結(jié) 291
18.6.7 缺陷 292
18.7 Raft算法 292
18.7.1 Raft概述 293
18.7.2 復(fù)制狀態(tài)機 293
18.7.3 Raft算法基礎(chǔ) 294
18.7.4 Raft算法Leader選舉 296
18.7.5 Raft算法日志同步 297
18.7.6 Raft算法安全性 299
18.7.7 處理Follower和Candidate異!302
18.7.8 時間要求及可用性 302
18.7.9 集群成員關(guān)系變更 303
18.7.10 日志壓縮 305
18.7.11 客戶端交互 306
18.7.12 總結(jié) 307
18.8 消息 307
18.8.1 本地消息表 308
18.8.2 事務(wù)消息 308
18.8.3 如何保障冪等性 309
18.8.4 總結(jié) 310
18.9 本章小結(jié) 310
18.10 習(xí)題 310
第 19章 安全性 311
19.1 基本概念 311
19.1.1 安全威脅、策略和機制 311
19.1.2 密碼與數(shù)字簽名 312
19.2 加密算法 313
19.2.1 對稱加密 313
19.2.2 使用對稱密鑰加密的數(shù)字簽名 313
19.2.3 非對稱加密 314
19.2.4 使用公鑰加密的數(shù)字簽名 315
19.3 安全通道 315
19.3.1 SSL/TLS 315
19.3.2 SSL握手過程 316
19.3.3 HTTPS 318
19.4 訪問控制 318
19.4.1 防火墻 319
19.4.2 堡壘機 319
19.4.3 拒絕服務(wù) 319
19.4.4 訪問控制的模型 320
19.5 實戰(zhàn):基于Spring Security實現(xiàn)安全認證 320
19.5.1 添加依賴 321
19.5.2 添加業(yè)務(wù)代碼 322
19.5.3 配置消息轉(zhuǎn)換器 322
19.5.4 配置Spring Security 323
19.5.5 創(chuàng)建應(yīng)用配置類 324
19.5.6 創(chuàng)建內(nèi)嵌Jetty的服務(wù)器 324
19.5.7 應(yīng)用啟動器 325
19.5.8 運行應(yīng)用 326
19.6 本章小結(jié) 327
19.7 習(xí)題 327
第 20章 可用性 328
20.1 故障不可避免 328
20.2 使用冗余提升系統(tǒng)可用性 328
20.3 常用副本控制協(xié)議 329
20.3.1 中心化副本控制協(xié)議 329
20.3.2 primary-secondary協(xié)議 329
20.3.3 去中心化副本控制協(xié)議 331
20.4 負載均衡技術(shù) 332
20.4.1 客戶端發(fā)現(xiàn)模式 332
20.4.2 服務(wù)端發(fā)現(xiàn)模式 333
20.5 實戰(zhàn):基于NGINX實現(xiàn)服務(wù)高可用 334
20.5.1 配置負載均衡 334
20.5.2 負載均衡常用算法 335
20.5.3 實現(xiàn)Web服務(wù)的高可用 336
20.5.4 運行 336
20.6 本章小結(jié) 337
20.7 習(xí)題 337
第 21章 綜合實戰(zhàn):基于Spring Cloud的微服務(wù)架構(gòu)設(shè)計與實現(xiàn) 338
21.1 Spring Cloud概述 338
21.1.1 什么是Spring Cloud 338
21.1.2 Spring Cloud與Spring Boot的關(guān)系 339
21.2 Spring Cloud入門配置 339
21.2.1 Maven配置 339
21.2.2 Gradle配置 340
21.2.3 聲明式方法 340
21.3 Spring Cloud的子項目介紹 341
21.3.1 Spring Cloud子項目的組成 341
21.3.2 Spring Cloud組件的版本 342
21.4 實現(xiàn)微服務(wù)的注冊與發(fā)現(xiàn) 343
21.4.1 服務(wù)發(fā)現(xiàn)的意義 343
21.4.2 如何集成Eureka Server 343
21.4.3 如何集成Eureka Client 347
21.4.4 實現(xiàn)服務(wù)的注冊與發(fā)現(xiàn) 347
21.5 本章小結(jié) 348
21.6 習(xí)題 348
附錄 本書所涉及的軟件及相關(guān)版本 349
參考文獻 350
你還可能感興趣
我要評論
|