買這商品的人也買了...
-
$474$450 -
$590$460 -
$594$564 -
$780$663 -
$980$774 -
$534$507 -
$880$695 -
$580$458 -
$505Go 語言底層原理剖析
-
$680$530 -
$580$458 -
$594$564 -
$811精通 Go 語言, 2/e
-
$594$564 -
$714$678 -
$607Go 語言高級開發與實戰
-
$2,146Introduction to Algorithms, 4/e (Hardcover)
-
$600$468 -
$780$616 -
$520$411 -
$510算法大爆炸:面試通關步步為營
-
$720$562 -
$600$468 -
$580$458 -
$780$616
相關主題
商品描述
本書基於在讀者之間廣為傳閱的同名開源電子書
《Go語言設計與實現》,是難得一見的Go語言進階圖書。
書中結合近200幅生動的全彩圖片,配上詳盡的文字剖析與精選源代碼段,
為讀者奉上了異彩紛呈、系統完善的Go語言解讀。
本書內容分為9章:
調試源代碼、編譯原理、數據結構、語言特性、常用關鍵字、並發編程、內存管理、
元編程和標準庫,幾乎涵蓋了Go語言從編譯到運行的方方面面。
書中的代碼片段基於Go 1.15。
通過閱讀本書,讀者不僅能夠深入理解Go語言的實現細節,
而且可以深刻認識設計背後的原理,同時提升閱讀源代碼的技能
作者簡介
左書祺(@Draven)
Kubernetes貢獻者、前調度器項目組成員、雲計算和資源調度架構師。
“面向信仰編程”博客作者,開源電子書《Go語言設計與實現》作者,
“真沒什麼邏輯”主理人。長期維護開源項目。
《Go語言設計與實現》有30多万讀者追更,全網閱讀量已經超過100萬。
目錄大綱
前言 iii
第 1章 調試源代碼 1
1.1 Go語言源代碼 1
1.2 編譯源代碼 2
1.3 中間代碼 3
1.4 小結 4
第 2章 編譯原理 5
2.1 編譯過程 5
2.1.1 預備知識 5
2.1.2 編譯四階段 7
2.1.3 編譯器入口 10
2.1.4 小結 11
2.1.5 延伸閱讀 12
2.2 詞法分析和語法分析 12
2.2.1 詞法分析 12
2.2.2 語法分析 17
2.2.3 小結 26
2.2.4 延伸閱讀 26
2.3 類型檢查 26
2.3.1 強弱類型 26
2.3.2 靜態類型與動態類型 27
2.3.3 執行過程 28
2.3.4 小結 34
2.4 中間代碼生成 34
2.4.1 概述 34
2.4.2 配置初始化 35
2.4.3 遍歷和替換 37
2.4.4 SSA生成 40
2.4.5 小結 44
2.5 機器碼生成 44
2.5.1 指令集架構 44
2.5.2 機器碼生成 45
2.5.3 小結 49
2.5.4 延伸閱讀 50
第3章 數據結構 51
3.1 數組 51
3.1.1 概述 51
3.1.2 初始化 52
3.1.3 訪問和賦值 55
3.1.4 小結 57
3.1.5 延伸閱讀 58
3.2 切片 58
3.2.1 數據結構 58
3.2.2 初始化 59
3.2.3 訪問元素 63
3.2.4 追加和擴容 64
3.2.5 複製切片 67
3.2.6 小結 68
3.2.7 延伸閱讀 68
3.3 哈希表 68
3.3.1 設計原理 69
3.3.2 數據結構 72
3.3.3 初始化 74
3.3.4 讀寫操作 77
3.3.5 小結 88
3.3.6 延伸閱讀 88
3.4 字符串 88
3.4.1 數據結構 89
3.4.2 解析過程 89
3.4.3 拼接 91
3.4.4 類型轉換 93
3.4.5 小結 95
3.4.6 延伸閱讀 95
第4章 語言特性 96
4.1 函數調用 96
4.1.1 調用慣例 96
4.1.2 參數傳遞 101
4.1.3 小結 104
4.1.4 延伸閱讀 104
4.2 接口 105
4.2.1 概述 105
4.2.2 數據結構 111
4.2.3 類型轉換 113
4.2.4 類型斷言 116
4.2.5 動態派發 118
4.2.6 小結 122
4.2.7 延伸閱讀 122
4.3 反射 123
4.3.1 三大法則 124
4.3.2 類型和值 127
4.3.3 更新變量 129
4.3.4 實現協議 130
4.3.5 方法調用 132
4.3.6 小結 135
4.3.7 延伸閱讀 135
第5章 常用關鍵字 136
5.1 for和range 136
5.1.1 現象 137
5.1.2 經典循環 140
5.1.3 範圍循環 141
5.1.4 小結 147
5.2 select 148
5.2.1 現象 148
5.2.2 數據結構 151
5.2.3 實現原理 151
5.2.4 小結 160
5.2.5 延伸閱讀 161
5.3 defer 161
5.3.1 現象 161
5.3.2 數據結構 163
5.3.3 執行機制 164
5.3.4 堆中分配 164
5.3.5 棧上分配 168
5.3.6 開放編碼 169
5.3.7 小結 173
5.3.8 延伸閱讀 174
5.4 panic和recover 174
5.4.1 現象 175
5.4.2 數據結構 177
5.4.3 程序崩潰 178
5.4.4 崩潰恢復 179
5.4.5 小結 181
5.4.6 延伸閱讀 181
5.5 make和new 181
5.5.1 make 182
5.5.2 new 183
5.5.3 小結 184
第6章 並發編程 185
6.1 上下文 185
6.1.1 設計原理 186
6.1.2 默認上下文 187
6.1.3 取消信號 188
6.1.4 傳值方法 192
6.1.5 小結 192
6.1.6 延伸閱讀 192
6.2 同步原語與鎖 193
6.2.1 基本原語 193
6.2.2 擴展原語 209
6.2.3 小結 218
6.2.4 延伸閱讀 218
6.3 計時器 219
6.3.1 設計原理 219
6.3.2 數據結構 222
6.3.3 狀態機 223
6.3.4 觸發計時器 229
6.3.5 小結 231
6.3.6 延伸閱讀 232
6.3.7 歷史變更 232
6.4 Channel 232
6.4.1 設計原理 232
6.4.2 數據結構 234
6.4.3 創建Channel 235
6.4.4 發送數據 237
6.4.5 接收數據 240
6.4.6 關閉Channel 245
6.4.7 小結 246
6.4.8 延伸閱讀 246
6.5 調度器 246
6.5.1 設計原理 247
6.5.2 數據結構 255
6.5.3 調度器啟動 260
6.5.4 創建Goroutine 261
6.5.5 調度循環 266
6.5.6 觸發調度 269
6.5.7 線程管理 274
6.5.8 小結 276
6.5.9 延伸閱讀 276
6.6 網絡輪詢器 276
6.6.1 設計原理 276
6.6.2 數據結構 280
6.6.3 多路復用 281
6.6.4 小結 288
6.6.5 延伸閱讀 289
6.7 系統監控 289
6.7.1 設計原理 289
6.7.2 監控循環 289
6.7.3 小結 296
第7章 內存管理 297
7.1 內存分配器 297
7.1.1 設計原理 297
7.1.2 內存管理組件 304
7.1.3 內存分配 317
7.1.4 小結 322
7.1.5 延伸閱讀 322
7.1.6 歷史變更 322
7.2 垃圾收集器 323
7.2.1 設計原理 323
7.2.2 演進過程 331
7.2.3 實現原理 334
7.2.4 小結 358
7.2.5 延伸閱讀 358
7.3 棧空間管理 358
7.3.1 設計原理 359
7.3.2 棧操作 363
7.3.3 小結 369
7.3.4 延伸閱讀 370
第8章 元編程 371
8.1 插件系統 371
8.1.1 設計原理 371
8.1.2 動態庫 373
8.1.3 小結 376
8.1.4 延伸閱讀 376
8.2 代碼生成 377
8.2.1 設計原理 377
8.2.2 代碼生成 377
8.2.3 小結 382
第9章 標準庫 383
9.1 JSON 383
9.1.1 設計原理 383
9.1.2 序列化 385
9.1.3 反序列化 389
9.1.4 小結 392
9.2 HTTP 392
9.2.1 設計原理 393
9.2.2 客戶端 395
9.2.3 服務端 402
9.2.4 小結 406
9.3 數據庫 406
9.3.1 設計原理 406
9.3.2 驅動接口 407
9.3.3 小結 410