注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)計(jì)算機(jī)科學(xué)理論與基礎(chǔ)知識(shí)聚沙成塔:Go語(yǔ)言構(gòu)建高性能、分布式爬蟲項(xiàng)目

聚沙成塔:Go語(yǔ)言構(gòu)建高性能、分布式爬蟲項(xiàng)目

聚沙成塔:Go語(yǔ)言構(gòu)建高性能、分布式爬蟲項(xiàng)目

定 價(jià):¥159.00

作 者: 鄭建勛
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買這本書可以去


ISBN: 9787121460401 出版時(shí)間: 2023-08-01 包裝: 平裝-膠訂
開本: 128開 頁(yè)數(shù): 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書是頗具創(chuàng)新性的 Go 語(yǔ)言實(shí)戰(zhàn)指南,巧妙地將理論知識(shí)與實(shí)踐案例串聯(lián)起來(lái),為讀者搭建了一套完整的知識(shí)體系和方法論。本書以爬蟲項(xiàng)目為基礎(chǔ),全面闡述了 Go 語(yǔ)言在網(wǎng)絡(luò)服務(wù)開發(fā)中的卓越性能,并深入探討了如何利用 Go 語(yǔ)言打造高并發(fā)的爬蟲系統(tǒng)、高性能的分布式系統(tǒng),以及可擴(kuò)展的領(lǐng)域驅(qū)動(dòng)的微服務(wù)系統(tǒng)。本書有助于 Go 語(yǔ)言開發(fā)者根據(jù)編碼規(guī)范,編寫出簡(jiǎn)潔、高效、健壯且易于擴(kuò)展的代碼。同時(shí),本書可以作為高等院校計(jì)算機(jī)和軟件工程等相關(guān)專業(yè)師生的參考資料。

作者簡(jiǎn)介

  成都慧眸科技創(chuàng)始人《Go語(yǔ)言底層原理剖析》作者極客時(shí)間專欄作家

圖書目錄

第1篇 項(xiàng)目準(zhǔn)備
1 基礎(chǔ)知識(shí):磨刀不誤砍柴工 2
1.1 Go語(yǔ)言的歷史與設(shè)計(jì)理念 2
1.1.1 Go語(yǔ)言的“祖先” 3
1.1.2 Go的特性 4
1.2 開發(fā)環(huán)境 5
1.3 基礎(chǔ)語(yǔ)法 6
1.4 語(yǔ)法特性 12
1.5 并發(fā)編程 18
1.6 項(xiàng)目組織與依賴管理 20
1.7 工具與庫(kù) 22
1.8 總結(jié) 27
2 大型項(xiàng)目的開發(fā)模式與流程 28
2.1 開發(fā)模式 28
2.1.1 瀑布模式 28
2.1.2 敏捷開發(fā) 29
2.1.3 其他開發(fā)模式 31
2.2 開發(fā)流程 31
2.2.1 需求階段 32
2.2.2 設(shè)計(jì)階段 33
2.2.3 研發(fā)實(shí)現(xiàn)階段 34
2.2.4 聯(lián)調(diào)測(cè)試階段 38
2.2.5 上線部署階段 38
2.2.6 運(yùn)維階段 39
2.2.7 運(yùn)營(yíng)階段 40
2.3 總結(jié) 40
第2篇 項(xiàng)目設(shè)計(jì)
3 冰川之下:深入Go高并發(fā)網(wǎng)絡(luò)模型 42
3.1 網(wǎng)絡(luò)的基本概念 42
3.1.1 阻塞與非阻塞 42
3.1.2 文件描述符與Socket 43
3.1.3 I/O模型 44
3.2 Go語(yǔ)言網(wǎng)絡(luò)模型 46
3.2.1 協(xié)程調(diào)度 46
3.2.2 同步編程模式 48
3.2.3 非阻塞I/O 48
3.2.4 I/O多路復(fù)用 49
3.3 總結(jié) 50
4 高性能設(shè)計(jì):自頂向下的高性能Go語(yǔ)言程序設(shè)計(jì)與優(yōu)化 51
4.1 系統(tǒng)級(jí)別 52
4.2 程序設(shè)計(jì)和組織級(jí)別 52
4.3 代碼實(shí)施級(jí)別 53
4.3.1 合理的代碼 53
4.3.2 刻意的優(yōu)化 53
4.3.3 冒險(xiǎn)的嘗試 54
4.4 操作系統(tǒng)級(jí)別 54
4.5 硬件級(jí)別 56
4.6 總結(jié) 56
5 微服務(wù)探索:深度解析架構(gòu)演進(jìn)與治理實(shí)踐 57
5.1 微服務(wù)架構(gòu)演進(jìn) 57
5.1.1 單體服務(wù)與微服務(wù) 57
5.1.2 微服務(wù)的優(yōu)點(diǎn) 61
5.1.3 微服務(wù)的缺點(diǎn) 62
5.1.4 微服務(wù)的邊界 63
5.1.5 微服務(wù)的通信 63
5.1.6 服務(wù)發(fā)現(xiàn)與負(fù)載均衡 65
5.2 微服務(wù)治理體系與實(shí)踐 66
5.2.1 分布式日志與監(jiān)控 67
5.2.2 分布式Metric與監(jiān)控 68
5.2.3 分布式追蹤 68
5.2.4 微服務(wù)測(cè)試 69
5.2.5 微服務(wù)降級(jí) 71
5.2.6 微服務(wù)總體架構(gòu) 71
5.3 總結(jié) 72
6 協(xié)調(diào)之謎:深入剖析分布式一致性與共識(shí)算法 74
6.1 數(shù)據(jù)一致性 74
6.1.1 誕生背景 74
6.1.2 CAP定理 76
6.1.3 共識(shí)算法 77
6.2 分布式協(xié)調(diào)服務(wù) 77
6.2.1 分布式鎖 78
6.2.2 配置管理 78
6.2.3 服務(wù)發(fā)現(xiàn) 78
6.3 無(wú)信網(wǎng)絡(luò)中的共識(shí)問題 79
6.4 共識(shí)算法 80
6.4.1 Paxos算法 80
6.4.2 Raft算法 81
6.5 總結(jié) 85
7 謀定而動(dòng):爬蟲項(xiàng)目分析與設(shè)計(jì) 86
7.1 網(wǎng)絡(luò)爬蟲概述 86
7.1.1 網(wǎng)絡(luò)爬蟲合法嗎 86
7.1.2 網(wǎng)絡(luò)爬蟲的商業(yè)價(jià)值 87
7.1.3 網(wǎng)絡(luò)爬蟲的流程與技術(shù)棧 88
7.1.4 常見的反爬蟲措施 90
7.2 爬蟲項(xiàng)目需求分析與架構(gòu)設(shè)計(jì) 91
7.2.1 需求調(diào)研與分析 91
7.2.2 功能性模塊的設(shè)計(jì) 92
7.2.3 非功能性模塊的設(shè)計(jì) 93
7.2.4 架構(gòu)設(shè)計(jì) 94
7.3 總結(jié) 96
8 眾人拾柴:高效團(tuán)隊(duì)的Go編碼規(guī)范 97
8.1 編碼規(guī)范的重要性 97
8.2 Go語(yǔ)言編碼規(guī)范 97
8.2.1 整潔一致 98
8.2.2 高效 103
8.2.3 健壯性 104
8.2.4 擴(kuò)展性 105
8.2.5 工具 106
8.3 總結(jié) 106
第3篇 Worker開發(fā)
9 從正則表達(dá)式到CSS選擇器:4種網(wǎng)頁(yè)文本處理手段 108
9.1 項(xiàng)目啟動(dòng) 108
9.1.1 初始化Git倉(cāng)庫(kù) 108
9.1.2 抓取一個(gè)簡(jiǎn)單的網(wǎng)頁(yè) 109
9.2 標(biāo)準(zhǔn)庫(kù) 110
9.3 正則表達(dá)式 112
9.4 XPath 115
9.5 CSS選擇器 116
9.6 總結(jié) 116
10 網(wǎng)絡(luò)爬蟲:HTTP請(qǐng)求的魔幻旅途 117
10.1 最簡(jiǎn)單的HTTP服務(wù)器與請(qǐng)求 117
10.2 分層網(wǎng)絡(luò)模型 118
10.2.1 應(yīng)用層 119
10.2.2 傳輸層 120
10.2.3 TLS協(xié)議 120
10.2.4 網(wǎng)絡(luò)層 121
10.2.5 網(wǎng)絡(luò)接入層 123
10.3 數(shù)據(jù)傳輸與路由協(xié)議 124
10.4 操作系統(tǒng)處理數(shù)據(jù)包流程 125
10.5 HTTP協(xié)議詳解 127
10.6 HTTP的困境 129
10.7 HTTP標(biāo)準(zhǔn)庫(kù)底層原理 129
10.8 總結(jié) 133
11 采集引擎:接口抽象與模擬瀏覽器訪問實(shí)戰(zhàn) 134
11.1 接口實(shí)戰(zhàn) 134
11.2 模擬瀏覽器訪問 135
11.3 遠(yuǎn)程訪問瀏覽器 138
11.3.1 瀏覽器驅(qū)動(dòng)協(xié)議 138
11.3.2 谷歌開發(fā)者工具協(xié)議 139
11.4 總結(jié) 142
12 面向組合:接口的使用場(chǎng)景與底層原理 143
12.1 Go接口及其優(yōu)勢(shì) 143
12.2 Go接口的設(shè)計(jì)理念 143
12.3 接口的最佳實(shí)踐 144
12.3.1 模塊解耦 144
12.3.2 依賴注入 146
12.4 接口原理 147
12.5 總結(jié) 147
13 依賴管理:Go Modules用法與原理 149
13.1 GOPATH 149
13.1.1 什么是GOPATH 149
13.1.2 GOPATH的落幕與依賴管理的歷史 151
13.2 Go Modules 151
13.2.1 Go Modules概述 151
13.2.2 Go Modules實(shí)踐 153
13.2.3 Go Modules最小版本選擇原理 157
13.2.4 驗(yàn)證最小版本選擇原理 159
13.3 語(yǔ)義版本 161
13.3.1 v2版本 161
13.3.2 偽版本 162
13.4 總結(jié) 163
14 優(yōu)雅離場(chǎng):Context超時(shí)控制與原理 164
14.1 為什么需要Context 164
14.2 context.Value 166
14.3 Context實(shí)踐 169
14.4 Context底層原理 172
14.5 總結(jié) 173
15 移花接木:為爬蟲安上代理的翅膀 174
15.1 代理的分類和實(shí)現(xiàn)機(jī)制 174
15.1.1 正向代理 174
15.1.2 HTTP隧道代理 175
15.1.3 MITM代理 177
15.1.4 透明代理 177
15.1.5 反向代理 178
15.2 如何在實(shí)際項(xiàng)目中實(shí)現(xiàn)代理 179
15.2.1 如何訪問代理服務(wù)器 180
15.2.2 如何選擇代理地址 180
15.3 總結(jié) 182
16 日志處理:日志規(guī)范與最佳實(shí)踐 183
16.1 標(biāo)準(zhǔn)庫(kù)的log包 183
16.2 Zap 185
16.3 日志切割 186
16.4 日志分級(jí) 187
16.5 日志格式規(guī)范 187
16.6 構(gòu)建項(xiàng)目日志組件 188
16.7 總結(jié) 189
17 運(yùn)籌帷幄:協(xié)程的運(yùn)行機(jī)制與并發(fā)模型 190
17.1 進(jìn)程與線程 190
17.2 線程與協(xié)程 190
17.2.1 調(diào)度方式 191
17.2.2 上下文切換速度 191
17.2.3 調(diào)度策略 191
17.2.4 棧的大小 192
17.3 從GM到GMP 192
17.4 協(xié)程的數(shù)據(jù)爭(zhēng)用 193
17.4.1 原子鎖 193
17.4.2 互斥鎖 195
17.4.3 讀寫鎖 195
17.5 Go并發(fā)控制庫(kù) 196
17.5.1 sync.WaitGroup 196
17.5.2 sync.Once 197
17.5.3 sync.Map 197
17.5.4 sync.Cond 198
17.6 Go并發(fā)模式 200
17.6.1 ping-pong模式 201
17.6.2 fan-in模式 202
17.6.3 fan-out模式 203
17.6.4 pipeline模式 205
17.7 總結(jié) 208
18 掘地三尺:實(shí)戰(zhàn)深度與廣度優(yōu)先搜索算法 209
18.1 深度優(yōu)先搜索算法與實(shí)戰(zhàn) 209
18.2 廣度優(yōu)先搜索算法與實(shí)戰(zhàn) 211
18.3 用Cookie突破反爬封鎖 214
18.4 總結(jié) 215
19 調(diào)度引擎:負(fù)載均衡與調(diào)度器實(shí)戰(zhàn) 216
19.1 調(diào)度引擎實(shí)戰(zhàn) 216
19.2 函數(shù)式選項(xiàng)模式 219
19.3 總結(jié) 222
20 細(xì)節(jié)決定成?。呵衅c哈希表的陷阱與原理 223
20.1 切片的底層原理 223
20.1.1 切片的截取 224
20.1.2 切片的擴(kuò)容 225
20.2 哈希表原理 226
20.3 總結(jié) 228
21 輔助任務(wù)管理:任務(wù)優(yōu)先級(jí)、去重與失敗處理 229
21.1 設(shè)置爬蟲最大深度 229
21.2 避免請(qǐng)求重復(fù) 230
21.3 設(shè)置優(yōu)先隊(duì)列 233
21.4 設(shè)置隨機(jī)User-Agent 234
21.5 進(jìn)行失敗處理 235
21.6 總結(jié) 235
22 規(guī)則引擎:自定義爬蟲處理規(guī)則 236
22.1 靜態(tài)規(guī)則引擎 237
22.2 動(dòng)態(tài)規(guī)則引擎 240
22.3 總結(jié) 245
23 存儲(chǔ)引擎:數(shù)據(jù)清洗與存儲(chǔ) 246
23.1 爬取結(jié)構(gòu)化數(shù)據(jù) 246
23.2 數(shù)據(jù)存儲(chǔ) 250
23.2.1 數(shù)據(jù)抽象 250
23.2.2 數(shù)據(jù)底層存儲(chǔ) 251
23.2.3 存儲(chǔ)引擎實(shí)現(xiàn) 254
23.3 存儲(chǔ)引擎驗(yàn)證 256
23.4 總結(jié) 258
24 固若金湯:限速器與錯(cuò)誤處理 259
24.1 限速器 259
24.2 隨機(jī)休眠 262
24.3 錯(cuò)誤處理 263
24.3.1 基本的錯(cuò)誤處理方式 264
24.3.2 錯(cuò)誤鏈處理方式 266
24.3.3 減少錯(cuò)誤處理的實(shí)踐 267
24.4 panic 268
24.5 總結(jié) 270
25 服務(wù)注冊(cè)與監(jiān)聽:Worker節(jié)點(diǎn)與etcd交互 271
25.1 GRPC與Protocol Buffers 271
25.2 go-micro與grpc-gateway 273
25.3 注冊(cè)中心與etcd 276
25.4 micro中間件 279
25.5 總結(jié) 280
第4篇 測(cè)試與分析
26 未雨綢繆:通過靜態(tài)掃描與動(dòng)態(tài)掃描保證代碼質(zhì)量 282
26.1 靜態(tài)掃描 282
26.2 動(dòng)態(tài)掃描 284
26.3 配置文件 285
26.4 Makefile 287
26.5 總結(jié) 288
27 測(cè)試的藝術(shù):從單元測(cè)試到集成測(cè)試 289
27.1 單元測(cè)試 289
27.1.1 表格驅(qū)動(dòng)測(cè)試 291
27.1.2 子測(cè)試 293
27.1.3 依賴注入 296
27.1.4 猴子補(bǔ)丁 298
27.2 壓力測(cè)試 299
27.3 基準(zhǔn)測(cè)試 299
27.4 代碼覆蓋率測(cè)試 300
27.4.1 cover的基本用法 301
27.4.2 測(cè)試環(huán)境下的代碼覆蓋率 302
27.4.3 cover工具的工作原理 302
27.5 模糊測(cè)試 303
27.6 集成測(cè)試 306
27.7 總結(jié) 307
28 調(diào)試程序:從日志打印到Delve調(diào)試器 308
28.1 常見的調(diào)試方法和技術(shù) 308
28.2 Delve的內(nèi)部架構(gòu) 309
28.3 Delve實(shí)戰(zhàn) 309
28.4 使用Goland Delve進(jìn)行本地調(diào)試 316
28.5 使用Goland Delve進(jìn)行遠(yuǎn)程調(diào)試 317
28.6 總結(jié) 318
29 性能分析利器:深入pprof與trace工具 319
29.1 pprof及其使用方法 319
29.1.1 pprof堆內(nèi)存分析 321
29.1.2 pprof協(xié)程棧分析 325
29.1.3 pprof CPU占用分析 326
29.2 trace及其使用方法 327
29.3

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)