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

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

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

定 價:¥159.00

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

購買這本書可以去


ISBN: 9787121460401 出版時間: 2023-08-01 包裝: 平裝-膠訂
開本: 128開 頁數(shù): 字數(shù):  

內(nèi)容簡介

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

作者簡介

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

圖書目錄

第1篇 項目準備
1 基礎(chǔ)知識:磨刀不誤砍柴工 2
1.1 Go語言的歷史與設(shè)計理念 2
1.1.1 Go語言的“祖先” 3
1.1.2 Go的特性 4
1.2 開發(fā)環(huán)境 5
1.3 基礎(chǔ)語法 6
1.4 語法特性 12
1.5 并發(fā)編程 18
1.6 項目組織與依賴管理 20
1.7 工具與庫 22
1.8 總結(jié) 27
2 大型項目的開發(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è)計階段 33
2.2.3 研發(fā)實現(xiàn)階段 34
2.2.4 聯(lián)調(diào)測試階段 38
2.2.5 上線部署階段 38
2.2.6 運維階段 39
2.2.7 運營階段 40
2.3 總結(jié) 40
第2篇 項目設(shè)計
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語言網(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è)計:自頂向下的高性能Go語言程序設(shè)計與優(yōu)化 51
4.1 系統(tǒng)級別 52
4.2 程序設(shè)計和組織級別 52
4.3 代碼實施級別 53
4.3.1 合理的代碼 53
4.3.2 刻意的優(yōu)化 53
4.3.3 冒險的嘗試 54
4.4 操作系統(tǒng)級別 54
4.5 硬件級別 56
4.6 總結(jié) 56
5 微服務(wù)探索:深度解析架構(gòu)演進與治理實踐 57
5.1 微服務(wù)架構(gòu)演進 57
5.1.1 單體服務(wù)與微服務(wù) 57
5.1.2 微服務(wù)的優(yōu)點 61
5.1.3 微服務(wù)的缺點 62
5.1.4 微服務(wù)的邊界 63
5.1.5 微服務(wù)的通信 63
5.1.6 服務(wù)發(fā)現(xiàn)與負載均衡 65
5.2 微服務(wù)治理體系與實踐 66
5.2.1 分布式日志與監(jiān)控 67
5.2.2 分布式Metric與監(jiān)控 68
5.2.3 分布式追蹤 68
5.2.4 微服務(wù)測試 69
5.2.5 微服務(wù)降級 71
5.2.6 微服務(wù)總體架構(gòu) 71
5.3 總結(jié) 72
6 協(xié)調(diào)之謎:深入剖析分布式一致性與共識算法 74
6.1 數(shù)據(jù)一致性 74
6.1.1 誕生背景 74
6.1.2 CAP定理 76
6.1.3 共識算法 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ǎng)絡(luò)中的共識問題 79
6.4 共識算法 80
6.4.1 Paxos算法 80
6.4.2 Raft算法 81
6.5 總結(jié) 85
7 謀定而動:爬蟲項目分析與設(shè)計 86
7.1 網(wǎng)絡(luò)爬蟲概述 86
7.1.1 網(wǎng)絡(luò)爬蟲合法嗎 86
7.1.2 網(wǎng)絡(luò)爬蟲的商業(yè)價值 87
7.1.3 網(wǎng)絡(luò)爬蟲的流程與技術(shù)棧 88
7.1.4 常見的反爬蟲措施 90
7.2 爬蟲項目需求分析與架構(gòu)設(shè)計 91
7.2.1 需求調(diào)研與分析 91
7.2.2 功能性模塊的設(shè)計 92
7.2.3 非功能性模塊的設(shè)計 93
7.2.4 架構(gòu)設(shè)計 94
7.3 總結(jié) 96
8 眾人拾柴:高效團隊的Go編碼規(guī)范 97
8.1 編碼規(guī)范的重要性 97
8.2 Go語言編碼規(guī)范 97
8.2.1 整潔一致 98
8.2.2 高效 103
8.2.3 健壯性 104
8.2.4 擴展性 105
8.2.5 工具 106
8.3 總結(jié) 106
第3篇 Worker開發(fā)
9 從正則表達式到CSS選擇器:4種網(wǎng)頁文本處理手段 108
9.1 項目啟動 108
9.1.1 初始化Git倉庫 108
9.1.2 抓取一個簡單的網(wǎng)頁 109
9.2 標準庫 110
9.3 正則表達式 112
9.4 XPath 115
9.5 CSS選擇器 116
9.6 總結(jié) 116
10 網(wǎng)絡(luò)爬蟲:HTTP請求的魔幻旅途 117
10.1 最簡單的HTTP服務(wù)器與請求 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標準庫底層原理 129
10.8 總結(jié) 133
11 采集引擎:接口抽象與模擬瀏覽器訪問實戰(zhàn) 134
11.1 接口實戰(zhàn) 134
11.2 模擬瀏覽器訪問 135
11.3 遠程訪問瀏覽器 138
11.3.1 瀏覽器驅(qū)動協(xié)議 138
11.3.2 谷歌開發(fā)者工具協(xié)議 139
11.4 總結(jié) 142
12 面向組合:接口的使用場景與底層原理 143
12.1 Go接口及其優(yōu)勢 143
12.2 Go接口的設(shè)計理念 143
12.3 接口的最佳實踐 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實踐 153
13.2.3 Go Modules最小版本選擇原理 157
13.2.4 驗證最小版本選擇原理 159
13.3 語義版本 161
13.3.1 v2版本 161
13.3.2 偽版本 162
13.4 總結(jié) 163
14 優(yōu)雅離場:Context超時控制與原理 164
14.1 為什么需要Context 164
14.2 context.Value 166
14.3 Context實踐 169
14.4 Context底層原理 172
14.5 總結(jié) 173
15 移花接木:為爬蟲安上代理的翅膀 174
15.1 代理的分類和實現(xiàn)機制 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 如何在實際項目中實現(xiàn)代理 179
15.2.1 如何訪問代理服務(wù)器 180
15.2.2 如何選擇代理地址 180
15.3 總結(jié) 182
16 日志處理:日志規(guī)范與最佳實踐 183
16.1 標準庫的log包 183
16.2 Zap 185
16.3 日志切割 186
16.4 日志分級 187
16.5 日志格式規(guī)范 187
16.6 構(gòu)建項目日志組件 188
16.7 總結(jié) 189
17 運籌帷幄:協(xié)程的運行機制與并發(fā)模型 190
17.1 進程與線程 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ù)爭用 193
17.4.1 原子鎖 193
17.4.2 互斥鎖 195
17.4.3 讀寫鎖 195
17.5 Go并發(fā)控制庫 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 掘地三尺:實戰(zhàn)深度與廣度優(yōu)先搜索算法 209
18.1 深度優(yōu)先搜索算法與實戰(zhàn) 209
18.2 廣度優(yōu)先搜索算法與實戰(zhàn) 211
18.3 用Cookie突破反爬封鎖 214
18.4 總結(jié) 215
19 調(diào)度引擎:負載均衡與調(diào)度器實戰(zhàn) 216
19.1 調(diào)度引擎實戰(zhàn) 216
19.2 函數(shù)式選項模式 219
19.3 總結(jié) 222
20 細節(jié)決定成?。呵衅c哈希表的陷阱與原理 223
20.1 切片的底層原理 223
20.1.1 切片的截取 224
20.1.2 切片的擴容 225
20.2 哈希表原理 226
20.3 總結(jié) 228
21 輔助任務(wù)管理:任務(wù)優(yōu)先級、去重與失敗處理 229
21.1 設(shè)置爬蟲最大深度 229
21.2 避免請求重復(fù) 230
21.3 設(shè)置優(yōu)先隊列 233
21.4 設(shè)置隨機User-Agent 234
21.5 進行失敗處理 235
21.6 總結(jié) 235
22 規(guī)則引擎:自定義爬蟲處理規(guī)則 236
22.1 靜態(tài)規(guī)則引擎 237
22.2 動態(tài)規(guī)則引擎 240
22.3 總結(jié) 245
23 存儲引擎:數(shù)據(jù)清洗與存儲 246
23.1 爬取結(jié)構(gòu)化數(shù)據(jù) 246
23.2 數(shù)據(jù)存儲 250
23.2.1 數(shù)據(jù)抽象 250
23.2.2 數(shù)據(jù)底層存儲 251
23.2.3 存儲引擎實現(xiàn) 254
23.3 存儲引擎驗證 256
23.4 總結(jié) 258
24 固若金湯:限速器與錯誤處理 259
24.1 限速器 259
24.2 隨機休眠 262
24.3 錯誤處理 263
24.3.1 基本的錯誤處理方式 264
24.3.2 錯誤鏈處理方式 266
24.3.3 減少錯誤處理的實踐 267
24.4 panic 268
24.5 總結(jié) 270
25 服務(wù)注冊與監(jiān)聽:Worker節(jié)點與etcd交互 271
25.1 GRPC與Protocol Buffers 271
25.2 go-micro與grpc-gateway 273
25.3 注冊中心與etcd 276
25.4 micro中間件 279
25.5 總結(jié) 280
第4篇 測試與分析
26 未雨綢繆:通過靜態(tài)掃描與動態(tài)掃描保證代碼質(zhì)量 282
26.1 靜態(tài)掃描 282
26.2 動態(tài)掃描 284
26.3 配置文件 285
26.4 Makefile 287
26.5 總結(jié) 288
27 測試的藝術(shù):從單元測試到集成測試 289
27.1 單元測試 289
27.1.1 表格驅(qū)動測試 291
27.1.2 子測試 293
27.1.3 依賴注入 296
27.1.4 猴子補丁 298
27.2 壓力測試 299
27.3 基準測試 299
27.4 代碼覆蓋率測試 300
27.4.1 cover的基本用法 301
27.4.2 測試環(huán)境下的代碼覆蓋率 302
27.4.3 cover工具的工作原理 302
27.5 模糊測試 303
27.6 集成測試 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實戰(zhàn) 309
28.4 使用Goland Delve進行本地調(diào)試 316
28.5 使用Goland Delve進行遠程調(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號 鄂公網(wǎng)安備 42010302001612號