産品特色
編輯推薦
國內知名Go語言技術布道者的再造之作
李響、謝孟軍、劉奇、左玥、肖德時、Googol Lee、田琪等業內大咖傾心力捧
深入Go語言及其並發原理,挖齣並發編程*佳實踐,百樣示例助你成為多核計算時代的Go程序高手
內容簡介
本書首先介紹瞭Go語言的優秀特性、安裝設置方法、工程結構、標準命令和工具、語法基礎、數據類型以及流程控製方法,接著闡述瞭與多進程編程和多綫程編程有關的知識,然後重點介紹瞭goroutine、channel以及Go提供的傳統同步方法,最後通過一個完整實例——網絡爬蟲框架進一步闡述Go語言的哲學和理念,同時分享作者在多年編程生涯中的一些見解和感悟。
與上一版相比,本書不僅基於Go 1.8對上一版進行瞭全麵更新,而且更深入地描繪瞭Go運行時係統的內部機理,並且大幅改進瞭示例代碼。
本書適用於有一定計算機編程基礎的從業者以及對Go語言編程感興趣的愛好者,非常適閤作為Go語言編程進階教程。
作者簡介
郝林
從業12年有餘的軟件工匠,國內知名的Go語言技術布道者,Go語言北京用戶組和GoHackers社群的發起人和組織者,多套免費在綫Go語言教程的作者,深信Go語言在人工智能時代和機器人時代也能大放異彩的科技信徒。
目錄
第1章 初識Go語言 1
1.1 語言特性 1
1.2 安裝和設置 2
1.3 工程結構 3
1.3.1 工作區 3
1.3.2 GOPATH 4
1.3.3 源碼文件 5
1.3.4 代碼包 8
1.4 標準命令簡述 11
1.5 問候程序 13
1.6 小結 14
第2章 語法概覽 15
2.1 基本構成要素 15
2.1.1 標識符 15
2.1.2 關鍵字 16
2.1.3 字麵量 17
2.1.4 操作符 17
2.1.5 錶達式 19
2.2 基本類型 20
2.3 高級類型 22
2.3.1 數組 23
2.3.2 切片 23
2.3.3 字典 24
2.3.4 函數和方法 25
2.3.5 接口 28
2.3.6 結構體 29
2.4 流程控製 30
2.4.1 代碼塊和作用域 30
2.4.2 if語句 32
2.4.3 switch語句 32
2.4.4 for語句 34
2.4.5 defer語句 36
2.4.6 panic和recover 38
2.5 聊天機器人 40
2.6 小結 44
第3章 並發編程綜述 45
3.1 並發編程基礎 45
3.1.1 串行程序與並發程序 46
3.1.2 並發程序與並行程序 46
3.1.3 並發程序與並發係統 47
3.1.4 並發程序的不確定性 47
3.1.5 並發程序內部的交互 47
3.2 多進程編程 48
3.2.1 進程 48
3.2.2 關於同步 55
3.2.3 管道 60
3.2.4 信號 65
3.2.5 socket 74
3.3 多綫程編程 97
3.3.1 綫程 98
3.3.2 綫程的同步 107
3.4 多綫程與多進程 125
3.5 多核時代的並發編程 126
3.6 小結 130
第4章 Go的並發機製 131
4.1 原理探究 131
4.1.1 綫程實現模型 132
4.1.2 調度器 142
4.1.3 更多細節 158
4.2 goroutine 160
4.2.1 go語句與goroutine 160
4.2.2 主goroutine的運作 166
4.2.3 runtime包與goroutine 166
4.3 channel 169
4.3.1 channel的基本概念 169
4.3.2 單嚮channel 180
4.3.3 for語句與channel 184
4.3.4 select語句 185
4.3.5 非緩衝的channel 190
4.3.6 time包與channel 192
4.4 實戰演練:載荷發生器 198
4.4.1 參數和結果 199
4.4.2 基本結構 201
4.4.3 初始化 206
4.4.4 啓動和停止 212
4.4.5 調用器和功能測試 221
4.5 小結 231
第5章 同 步 232
5.1 鎖的使用 232
5.1.1 互斥鎖 232
5.1.2 讀寫鎖 236
5.1.3 鎖的完整示例 238
5.2 條件變量 244
5.3 原子操作 247
5.3.1 增或減 247
5.3.2 比較並交換 249
5.3.3 載入 250
5.3.4 存儲 251
5.3.5 交換 251
5.3.6 原子值 252
5.3.7 應用於實際 256
5.4 隻會執行一次 257
5.5 WaitGroup 258
5.6 臨時對象池 262
5.7 實戰演練——Concurrent Map 265
5.8 小結 280
第6章 網絡爬蟲框架設計和實現 281
6.1 網絡爬蟲與框架 281
6.2 功能需求和分析 283
6.3 總體設計 284
6.4 詳細設計 286
6.4.1 基本數據結構 286
6.4.2 接口的設計 293
6.5 工具的實現 309
6.5.1 緩衝器 309
6.5.2 緩衝池 311
6.5.3 多重讀取器 317
6.6 組件的實現 318
6.6.1 內部基礎接口 319
6.6.2 組件注冊器 321
6.6.3 下載器 323
6.6.4 分析器 325
6.6.5 條目處理管道 328
6.7 調度器的實現 329
6.7.1 基本結構 329
6.7.2 初始化 331
6.7.3 啓動 333
6.7.4 停止 343
6.7.5 其他方法 344
6.7.6 總結 345
6.8 一個簡單的圖片爬蟲 346
6.8.1 概述 346
6.8.2 命令參數 346
6.8.3 初始化調度器 348
6.8.4 監控調度器 354
6.8.5 啓動調度器 364
6.9 擴展與思路 365
6.10 本章小結 368
附錄A Go語言的學習資源 369
Go並發編程實戰(第2版) 下載 mobi epub pdf txt 電子書