注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)Go語(yǔ)言編程之旅:一起用Go做項(xiàng)目

Go語(yǔ)言編程之旅:一起用Go做項(xiàng)目

Go語(yǔ)言編程之旅:一起用Go做項(xiàng)目

定 價(jià):¥108.00

作 者: 陳劍煜 徐新華 著
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787121390746 出版時(shí)間: 2020-07-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 500 字?jǐn)?shù):  

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

  全書(shū)共分為6章,分別是命令行應(yīng)用、HTTP應(yīng)用、RPC應(yīng)用、WebSocket 應(yīng)用、進(jìn)程內(nèi)緩存和 Go語(yǔ)言中的大殺器,其中前5章是Go語(yǔ)言開(kāi)發(fā)中最常見(jiàn)的項(xiàng)目類(lèi)型。本書(shū)對(duì)項(xiàng)目開(kāi)發(fā)、細(xì)節(jié)分析、運(yùn)行時(shí)分析等核心內(nèi)容進(jìn)行了較為深入的剖析,提供了相對(duì)完整的項(xiàng)目實(shí)踐經(jīng)驗(yàn)。在項(xiàng)目迭代過(guò)程中,難免會(huì)遇到問(wèn)題,因此本書(shū)針對(duì)Go語(yǔ)言的大殺器(分析工具)及常見(jiàn)問(wèn)題進(jìn)行了全面講解,幫助讀者對(duì)各類(lèi)問(wèn)題進(jìn)行排查。本書(shū)適合有一定Go語(yǔ)言基礎(chǔ)的讀者以及相關(guān)開(kāi)發(fā)人員閱讀。

作者簡(jiǎn)介

  陳劍煜(網(wǎng)名:煎魚(yú)) 微信公眾號(hào) “腦子進(jìn)煎魚(yú)了” 的作者,“Go夜讀” SIG小組成員,對(duì)Go語(yǔ)言有一定的興趣和經(jīng)驗(yàn)。在社區(qū)連載過(guò)一系列 Go 語(yǔ)言相關(guān)的技術(shù)文章,其中“跟煎魚(yú)學(xué)Go”系列廣受歡迎。 徐新華(網(wǎng)名:polaris) Go語(yǔ)言中文網(wǎng)站長(zhǎng),目前在北京一家創(chuàng)業(yè)公司擔(dān)任CTO。2011年北京大學(xué)碩士畢業(yè),先后在開(kāi)心網(wǎng)、奇虎360工作。一直從事服務(wù)端相關(guān)工作,有著豐富的經(jīng)驗(yàn)。在Go1.0正式發(fā)布時(shí)開(kāi)始接觸Go語(yǔ)言,并將其用于工作中,。8年來(lái)一直致力于推廣Go語(yǔ)言在國(guó)內(nèi)的發(fā)展,致力構(gòu)建國(guó)內(nèi)Go語(yǔ)言中文社區(qū)。

圖書(shū)目錄

第1章 命令行應(yīng)用:打造屬于自己的工具集 1
1.1 工具之旅 1
1.1.1 標(biāo)準(zhǔn)庫(kù)flag 1
1.1.2 初始化項(xiàng)目 1
1.1.3 示例 2
1.1.4 分析 4
1.1.5 定義參數(shù)類(lèi)型 7
1.1.6 小結(jié) 8
1.2 單詞格式轉(zhuǎn)換 8
1.2.1 安裝Cobra 8
1.2.2 初始化cmd和word子命令 8
1.2.3 單詞轉(zhuǎn)換 9
1.2.4 word子命令 11
1.2.5 驗(yàn)證 12
1.2.6 小結(jié) 13
1.3 便捷的時(shí)間工具 13
1.3.1 獲取時(shí)間 14
1.3.2 推算時(shí)間 14
1.3.3 初始化子命令 15
1.3.4 驗(yàn)證 17
1.3.5 時(shí)區(qū)問(wèn)題 17
1.3.6 參考時(shí)間的格式 20
1.3.7 小結(jié) 20
1.4 SQL語(yǔ)句到結(jié)構(gòu)體的轉(zhuǎn)換 20
1.4.1 需要轉(zhuǎn)換的數(shù)據(jù)結(jié)構(gòu) 21
1.4.2 生成結(jié)構(gòu)體 21
1.4.3 表到結(jié)構(gòu)體的轉(zhuǎn)換 24
1.4.4 初始化子命令 28
1.4.5 驗(yàn)證 30
1.4.6 小結(jié) 31
第2章 HTTP應(yīng)用:寫(xiě)一個(gè)完整的博客后端 32
2.1 博客之旅 32
2.1.1 gin 32
2.1.2 初始化項(xiàng)目 32
2.1.3 安裝gin 32
2.1.4 快速啟動(dòng) 33
2.1.5 驗(yàn)證 34
2.1.6 源碼分析 34
2.1.7 小結(jié) 38
2.2 項(xiàng)目設(shè)計(jì) 39
2.2.1 目錄結(jié)構(gòu) 39
2.2.2 數(shù)據(jù)庫(kù) 40
2.2.3 創(chuàng)建model 42
2.2.4 路由 43
2.2.5 處理程序 44
2.2.6 啟動(dòng)接入 45
2.2.7 驗(yàn)證 46
2.2.8 小結(jié) 46
2.3 公共組件 46
2.3.1 錯(cuò)誤碼標(biāo)準(zhǔn)化 47
2.3.2 配置管理 50
2.3.3 數(shù)據(jù)庫(kù)連接 55
2.3.4 日志寫(xiě)入 56
2.3.5 響應(yīng)處理 62
2.3.6 小結(jié) 65
2.4 接口文檔 65
2.4.1 Swagger簡(jiǎn)介 65
2.4.2 OpenAPI和Swagger 66
2.4.3 安裝 Swagger 66
2.4.4 寫(xiě)入注解 66
2.4.5 生成 68
2.4.6 路由 68
2.4.7 查看接口文檔 69
2.4.8 源碼分析 70
2.4.9 存在的問(wèn)題 72
2.4.10 小結(jié) 73
2.5 接口校驗(yàn) 73
2.5.1 validator介紹 73
2.5.2 業(yè)務(wù)接口校驗(yàn) 74
2.5.3 國(guó)際化處理 75
2.5.4 二次封裝 77
2.5.5 驗(yàn)證 78
2.5.6 小結(jié) 79
2.6 模塊開(kāi)發(fā):標(biāo)簽管理 80
2.6.1 新建model方法 80
2.6.2 處理model回調(diào) 81
2.6.3 新建dao方法 84
2.6.4 新建service方法 85
2.6.5 新增業(yè)務(wù)錯(cuò)誤碼 86
2.6.6 新增路由方法 87
2.6.7 驗(yàn)證接口 89
2.6.8 發(fā)現(xiàn)問(wèn)題 89
2.6.9 解決問(wèn)題 90
2.6.10 小結(jié) 91
2.7 模塊開(kāi)發(fā):文章管理 91
2.7.1 新建model方法 91
2.7.2 新建dao方法 95
2.7.3 新建service方法 98
2.7.4 新增業(yè)務(wù)錯(cuò)誤碼 100
2.7.5 新增路由方法 101
2.7.6 驗(yàn)證接口 103
2.7.7 發(fā)現(xiàn)問(wèn)題 103
2.7.8 解決問(wèn)題 104
2.8 上傳圖片和文件服務(wù) 105
2.8.1 新增配置 105
2.8.2 上傳文件 105
2.8.3 新建service方法 109
2.8.4 新增業(yè)務(wù)錯(cuò)誤碼 109
2.8.5 新增路由方法 110
2.8.6 驗(yàn)證接口 111
2.8.7 文件服務(wù) 111
2.8.8 源碼分析 111
2.8.9 小結(jié) 112
2.9 API訪(fǎng)問(wèn)控制 112
2.9.1 JWT簡(jiǎn)介 113
2.9.2 JWT的使用場(chǎng)景 115
2.9.3 安裝JWT 115
2.9.4 配置JWT 115
2.9.5 處理JWT令牌 116
2.9.6 獲取JWT令牌 118
2.9.7 處理應(yīng)用中間件 121
2.9.8 小結(jié) 123
2.10 常見(jiàn)應(yīng)用中間件 123
2.10.1 訪(fǎng)問(wèn)日志記錄 124
2.10.2 異常捕獲處理 125
2.10.3 服務(wù)信息存儲(chǔ) 130
2.10.4 接口限流控制 131
2.10.5 統(tǒng)一超時(shí)控制 134
2.10.6 注冊(cè)中間件 136
2.11 鏈路追蹤 137
2.11.1 OpenTracing規(guī)范 137
2.11.2 Jaeger的使用 138
2.11.3 在應(yīng)用中注入追蹤 139
2.11.4 驗(yàn)證跟蹤情況 141
2.11.5 實(shí)現(xiàn)日志追蹤 142
2.11.6 實(shí)現(xiàn)SQL追蹤 145
2.11.7 小結(jié) 146
2.12 應(yīng)用配置問(wèn)題 147
2.12.1 配置讀取 147
2.12.2 配置熱更新 151
2.12.3 小結(jié) 153
2.13 編譯程序應(yīng)用 153
2.13.1 編譯簡(jiǎn)介 154
2.13.2 交叉編譯 158
2.13.3 編譯緩存 158
2.13.4 編譯文件大小 159
3.13.5 編譯信息寫(xiě)入 160
2.13.6 小結(jié) 162
2.14 優(yōu)雅重啟和停止 163
2.14.1 遇到的問(wèn)題 163
2.14.2 解決方案 164
2.14.3 常用的快捷鍵 164
2.14.4 實(shí)現(xiàn)優(yōu)雅重啟和停止 165
2.14.5 小結(jié) 166
2.15 思考 167
2.15.1 總結(jié) 167
2.15.2 作業(yè) 167
第3章 RPC應(yīng)用:?jiǎn)?dòng)你的RPC服務(wù) 169
3.1 gRPC和Protobuf 169
3.1.1 gRPC簡(jiǎn)介 169
3.1.2 Protobuf簡(jiǎn)介 170
3.1.3 gRPC的優(yōu)點(diǎn)和缺點(diǎn) 172
3.1.4 小結(jié) 174
3.2 Protobuf的使用 174
3.2.1 安裝Protobuf 174
3.2.2 初始化Demo項(xiàng)目 175
3.2.3 編譯和生成proto文件 176
3.2.4 更多的數(shù)據(jù)類(lèi)型支持 178
3.2.5 小結(jié) 180
3.3 gRPC的使用 180
3.3.1 安裝gRPC 180
3.3.2 gRPC的調(diào)用方式 180
3.3.3 Unary和Streaming RPC 187
3.3.4 客戶(hù)端與服務(wù)端是如何交互的 188
3.3.5 小結(jié) 193
3.4 運(yùn)行一個(gè)gRPC服務(wù) 194
3.4.1 初始化項(xiàng)目 194
3.4.2 編譯和生成proto文件 194
3.4.3 編寫(xiě)gRPC方法 196
3.4.4 編寫(xiě)啟動(dòng)文件 198
3.4.5 調(diào)試gRPC接口 198
3.4.6 gRPC的錯(cuò)誤處理 199
3.4.7 源碼分析 204
3.5 gRPC服務(wù)間的內(nèi)調(diào) 205
3.5.1 進(jìn)行g(shù)RPC調(diào)用 206
3.5.2 grpc.Dial做了什么 206
3.6 提供HTTP接口 209
3.6.1 支持其他協(xié)議 209
3.6.2 另起端口監(jiān)聽(tīng)HTTP 209
3.6.3 在同端口監(jiān)聽(tīng)HTTP 211
3.6.4 同端口同方法提供雙流量支持 213
3.6.5 其他方案 221
3.7 接口文檔 221
3.7.1 安裝和下載 221
3.7.2 靜態(tài)資源轉(zhuǎn)換 221
3.7.3 Swagger UI的處理和訪(fǎng)問(wèn) 222
3.7.4 Swagger描述文件的生成和讀取 223
3.7.5 查看接口文檔 224
3.7.6 小結(jié) 224
3.8 gRPC攔截器 225
3.8.1 攔截器的類(lèi)型 225
3.8.2 客戶(hù)端和服務(wù)端攔截器 225
3.8.3 實(shí)現(xiàn)一個(gè)攔截器 226
3.8.4 實(shí)現(xiàn)多個(gè)攔截器 227
3.8.5 “用”多個(gè)攔截器 228
3.8.6 常用服務(wù)端攔截器 230
3.8.7 常用客戶(hù)端攔截器 232
3.8.8 演示 235
3.9 metadata和RPC自定義認(rèn)證 237
3.9.1 metadata介紹 237
3.9.2 metadata是如何傳遞的 239
3.9.3 對(duì)RPC方法做自定義認(rèn)證 240
3.9.4 小結(jié) 242
3.10 鏈路追蹤 242
3.10.1 注入追蹤信息 243
3.10.2 初始化Jaeger 243
3.10.3 metadata的讀取和設(shè)置 244
3.10.4 服務(wù)端 245
3.10.5 客戶(hù)端 246
3.10.6 實(shí)現(xiàn)HTTP追蹤 247
3.10.7 驗(yàn)證 248
3.10.8 小結(jié) 249
3.11 gRPC服務(wù)注冊(cè)和發(fā)現(xiàn) 249
3.11.1 服務(wù)注冊(cè)和發(fā)現(xiàn) 250
3.11.2 gRPC負(fù)載均衡策略 251
3.11.3 實(shí)現(xiàn)服務(wù)注冊(cè)和發(fā)現(xiàn) 254
3.11.4 其他方案 257
3.12 實(shí)現(xiàn)自定義的protoc插件 257
3.12.1 插件的內(nèi)部邏輯 258
3.12.2 generator.Plugin接口 259
3.12.3 FileDescriptor屬性 259
3.12.4 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的自定義插件 262
3.12.5 實(shí)現(xiàn)定制化的gRPC自定義插件 265
3.12.6 小結(jié) 272
3.13 對(duì)gRPC接口進(jìn)行版本管理 272
3.13.1 接口變更 273
3.13.2 可兼容性修改 273
3.13.3 破壞性修改 273
3.13.4 設(shè)計(jì)gRPC接口 273
3.13.5 版本號(hào)管理 274
3.14 常見(jiàn)問(wèn)題討論 274
3.14.1 Q&A 274
3.14.2 小結(jié) 276
第4章 WebSocket應(yīng)用:聊天室 277
4.1 基于 TCP 的聊天室 277
4.1.1 代碼實(shí)現(xiàn) 277
4.1.2 簡(jiǎn)單客戶(hù)端 281
4.1.3 演示 281
4.1.4 改進(jìn) 282
4.1.5 小結(jié) 283
4.2 認(rèn)識(shí) WebSocket 283
4.2.1 WebSocket簡(jiǎn)介 283
4.2.2 WebSocket 的優(yōu)點(diǎn) 284
4.2.3 選擇一個(gè)合適的庫(kù) 285
4.2.4 nhooyr.io/websocket的介紹和使用 287
4.2.5 抓包分析協(xié)議 289
4.2.6 小結(jié) 292
4.3 聊天室需求分析和設(shè)計(jì) 293
4.3.1 聊天室的主要需求 293
4.3.2 技術(shù)選擇 294
4.3.3 總體設(shè)計(jì)思路和流程 294
4.4 項(xiàng)目結(jié)構(gòu)組織和基礎(chǔ)代碼框架 295
4.4.1 項(xiàng)目結(jié)構(gòu)組織 295
4.4.2 基礎(chǔ)代碼框架 297
4.5 核心流程 299
4.5.1 前端關(guān)鍵代碼 299
4.5.2 后端流程關(guān)鍵代碼 303
4.5.3 小結(jié) 310
4.6 廣播器 311
4.6.1 單例模式 311
4.6.2 廣播器的實(shí)現(xiàn) 316
4.7 非核心功能 325
4.7.1 @ 提醒功能 325
4.7.2 敏感詞處理 328
4.7.3 離線(xiàn)消息處理 332
4.7.4 小結(jié) 341
4.8 關(guān)鍵性能分析和優(yōu)化 341
4.8.1 測(cè)試工具 341
4.8.2 性能測(cè)試 344
4.8.3 小結(jié) 350
4.9 Nginx部署 350
4.10 總結(jié) 351
第5章 進(jìn)程內(nèi)緩存 352
5.1 緩存簡(jiǎn)介 352
5.2 緩存淘汰算法 353
5.2.1 初始化項(xiàng)目 353
5.2.2 緩存接口 353
5.2.3 FIFO算法 354
5.2.4 LFU算法 360
5.2.5 LRU算法 366
5.3 進(jìn)程內(nèi)緩存 368
5.3.1 支持并發(fā)讀寫(xiě) 368
5.3.2 緩存庫(kù)主體結(jié)構(gòu)TourCache 369
5.3.3 測(cè)試 371
5.4 緩存的性能和優(yōu)化思路 373
5.4.1 基準(zhǔn)測(cè)試 373
5.4.2 優(yōu)化方案 376
5.4.3 小結(jié) 378
5.5 高性能緩存庫(kù)――BigCache 378
5.5.1 簡(jiǎn)單使用 378
5.5.2 優(yōu)化技巧 380
5.5.3 小結(jié) 386
5.6 進(jìn)程內(nèi)緩存的優(yōu)化版 386
5.6.1 分片技術(shù)的應(yīng)用 386
5.6.2 測(cè)試 390
5.6.3 GC耗時(shí)驗(yàn)證 391
5.6.4 小結(jié) 393
第6章 Go語(yǔ)言中的大殺器 394
6.1 Go大殺器之性能剖析PProf(上) 394
6.1.1 PProf簡(jiǎn)介 394
6.1.2 PProf的使用 395
6.1.3 通過(guò)測(cè)試用例做剖析 405
6.1.4 通過(guò)Lookup寫(xiě)入文件做剖析 407
6.1.5 為什么要初始化net/http/pprof 409
6.1.6 小結(jié) 409
6.2 Go大殺器之性能剖析PProf(下) 409
6.2.1 場(chǎng)景 410
6.2.2 措施 410
6.2.3 排查 410
6.2.4 發(fā)現(xiàn)根源、解決問(wèn)題 413
6.2.5 小結(jié) 414
6.3 Go大殺器之跟蹤剖析trace 414
6.3.1 trace簡(jiǎn)介 415
6.3.2 實(shí)戰(zhàn)演練 420
6.3.3 小結(jié) 422
6.4 用GODEBUG看調(diào)度跟蹤 422
6.4.1 GODEBUG基礎(chǔ)知識(shí) 423
6.4.2 GODEBUG 424
6.4.3 小結(jié) 429
6.5 用GODEBUG看GC 429
6.5.1 GC基礎(chǔ)知識(shí) 429
6.5.2 GODEBUG 430
6.5.3 案例 432
6.5.4 涉及術(shù)語(yǔ) 433
6.5.5 小結(jié) 433
6.6 Go進(jìn)程診斷工具gops 433
6.6.1 gops的基本使用 433
6.6.2 常規(guī)命令 434
6.6.3 源碼分析 437
6.6.4 需要注意的一點(diǎn) 439
6.6.5 小結(jié) 439
6.7 公開(kāi)和發(fā)布度量指標(biāo) 439
6.7.1 expvar標(biāo)準(zhǔn)庫(kù) 439
6.7.2 Prometheus技術(shù)棧 444
6.7.3 小結(jié) 446
6.8 逃逸分析 447
6.8.1 思考 447
6.8.2 堆和棧 447
6.8.3 逃逸分析簡(jiǎn)介 447
6.8.4 需要逃逸分析的原因 448
6.8.5 逃逸分析判斷 448
6.8.6 逃逸案例 448
6.6.7 小結(jié) 452
附錄A Go modules的入門(mén)和使用 453
附錄B goroutine與panic、recover的小問(wèn)題 469
附錄C Go在容器運(yùn)行時(shí)要注意的細(xì)節(jié) 477
附錄D 讓Go“恐慌”的十種方法 479

本目錄推薦

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