幫助中心 | 我的帳號 | 關於我們

深入Go語言(原理關鍵技術與實戰)/Go語言與雲原生系列

  • 作者:編者:歷冰//朱榮鑫//黃迪璇|責編:荊波
  • 出版社:中國鐵道
  • ISBN:9787113295738
  • 出版日期:2023/04/01
  • 裝幀:平裝
  • 頁數:408
人民幣:RMB 99 元      售價:
放入購物車
加入收藏夾

內容大鋼
    隨著伺服器硬體性能的提升,多核CPU已經很常見,充分利用硬體的多核運算優勢是很多開發者不斷探索和努力的方向。相較于一些編程語言的框架在不斷地提高多核資源的使用效率,Go語言在多核併發上擁有原生的設計優勢,其顯著的語言特徵是對併發編程的原生支持,目前在雲計算、容器領域應用廣泛。
    Go語言總體來說上手簡單,但是到實際的開發中,僅僅掌握Go語言的語法遠遠不夠。因此在理解Go語言語法的基礎上,深入了解Go語言的實現內幕、高級特性以及實踐中的使用陷阱變得異常重要,這也正是本書要向讀者詳細介紹的。
    本書適合Go語言開發者,尤其是想要深入了解或者轉型Go語言開發的進階型開發者。

作者介紹
編者:歷冰//朱榮鑫//黃迪璇|責編:荊波

目錄
第1章  高級編程語言以及Go語言基礎
  1.1  高級語言簡介
    1.1.1  程序設計語言的定義
    1.1.2  程序設計語言的發展歷史
    1.1.3  高級語言分類
  1.2  為什麼要研究編程語言
    1.2.1  當今流行編程語言的概況
    1.2.2  效率是程序語言流行的決定因素
    1.2.3  了解高級語言的重要性
  1.3  本書的主角:Go語言
    1.3.1  體現Go語言特性的五個關鍵詞
    1.3.2  Go語言基礎語法
第2章  數據結構源碼分析
  2.1  數組
    2.1.1  數組的基礎使用
    2.1.2  數組的底層數據結構
    2.1.3  數組的越界檢查
  2.2  字元串
    2.2.1  Go語言字元串的基礎操作
    2.2.2  Go語言字元串的底層數據結構
    2.2.3  Go語言字元串的拼接
    2.2.4  Go語言字元串的類型轉換
  2.3  切片
    2.3.1  切片的基礎操作
    2.3.2  切片的底層數據結構
    2.3.3  切片的追加操作
    2.3.4  切片的刪除操作
  2.4  哈希表
    2.4.1  哈希表的基礎操作
    2.4.2  哈希表底層數據結構
    2.4.3  哈希表的初始化
    2.4.4  哈希表的讀取操作
    2.4.5  哈希表的寫入操作
    2.4.6  刪除操作
    2.4.7  哈希表的擴容操作
第3章  Go語言的併發結構
  3.1  鎖控制
    3.1.1  互斥鎖Mutext
    3.1.2  讀/寫鎖RWMutext
  3.2  協程編排
    3.2.1  協同等待的WaitGroup
    3.2.2  只執行一次的Once
    3.2.3  請求合併的SingleFlight
  3.3  協程安全的數據結構
    3.3.1  讀寫鎖實現
    3.3.2  分片加鎖實現
    3.3.3  sync.Map實現
    3.3.4  性能評測實驗
第4章  Go語言內存分配和垃圾回收機制
  4.1  Linux內存空間布局

  4.2  Go語言內存分配機制
    4.2.1  Go語言內存空間的狀態機
    4.2.2  內存管理單元mspan
    4.2.3  內存線程緩存mcache
    4.2.4  內存中心緩存mcentral
    4.2.5  頁堆mheap
    4.2.6  內存分配函數newObject
    4.2.7  各級內存組件功能的實現
    4.2.8  實驗:列印內存分配相關日誌
  4.3  Go語言垃圾回收機制
    4.3.1  Go語言垃圾回收的基礎原理
    4.3.2  Go語言垃圾回收流程
    4.3.3  垃圾回收觸發時機
    4.3.4  清理終止階段和開啟標記階段
    4.3.5  標記階段
    4.3.6  標記終止階段
    4.3.7  內存清理
第5章  Go語言協程
  5.1  進程與線程
    5.1.1  進程和線程的概念
    5.1.2  進程與線程的區別
    5.1.3  併發與並行
  5.2  協程的誕生
    5.2.1  協程誕生的背景
    5.2.2  協程的工作機制和優勢
    5.2.3  協程、線程、進程的差異
  5.3  Go語言的調度器goroutine
    5.3.1  Go context上下文
    5.3.2  Go語言併發模型
    5.3.3  Go調度模型概覽
    5.3.4  調度器的實現原理
  5.4  goroutine之間的通信:channel
    5.4.1  channel的設計與結構
    5.4.2  channel的使用
    5.4.3  解決channel阻塞:select
    5.4.4  goroutine與channel的結合案例
    5.4.5  併發問題是選Mutex還是選channel
第6章  Go語言網路併發處理
  6.1  網路併發處理的演變
    6.1.1  程序設計導致的C10K問題
    6.1.2  操作系統調優的C1000K問題
    6.1.3  更進一步的C10M問題
  6.2  Reactor請求處理模式
    6.2.1  Reactor模式簡介
    6.2.2  Getty網路庫介紹
  6.3  HTTP請求處理
    6.3.1  net/http包解析
    6.3.2  Go Fasthttp解析
第7章  Go語言錯誤處理機制
  7.1  代碼中的錯誤與異常

  7.2  Go語言的錯誤處理哲學
    7.2.1  Errors are values
    7.2.2  error介面
    7.2.3  對error進行編程
  7.3  處理異常並恢復
    7.3.1  基本使用方式
    7.3.2  defer延時執行的實現原理
    7.3.3  panic終止程序和recover從panic中恢復的原理
第8章  Go語言的類型系統
  8.1  編程語言類型系統簡介
    8.1.1  用戶自定義類型
    8.1.2  抽象數據類型
    8.1.3  面向對象編程
  8.2  Go語言類型底層實現
    8.2.1  Go語言結構體底層實現
    8.2.2  嵌入底層實現
    8.2.3  介面底層實現
    8.2.4  介面函數調用和動態派發
第9章  Go語言的泛型和反射
  9.1  Go語言的泛型
    9.1.1  Go語言泛型基礎理念
    9.1.2  泛型的必要性
  9.2  Go語言的泛型特性
    9.2.1  Go語言泛型的理念
    9.2.2  Go語言泛型語法
    9.2.3  Go語言泛型的實現
  9.3  Go語言反射機制
    9.3.1  Go語言反射技術簡介
    9.3.2  Go語言反射使用
  9.4  Go語言反射實現
    9.4.1  獲取反射對象
    9.4.2  更新變數
    9.4.3  調用函數
第10章  Go語言工程化實踐
  10.1  日誌
    10.1.1  日誌級別
    10.1.2  日誌格式
    10.1.3  日誌框架
  10.2  代碼測試
    10.2.1  單元測試
    10.2.2  基準測試
  10.3  Go語言調試
    10.3.1  GDB調試
    10.3.2  使用Delve進行調試
  10.4  Go語言性能分析
    10.4.1  普通應用程序的性能分析
    10.4.2  後台服務程序的性能分析
    10.4.3  利用go-torch生成火焰圖
第11章  etcd存儲原理與機制
  11.1  etcd整體架構

    11.1.1  etcd項目結構
    11.1.2  etcd整體架構
  11.2  etcd交互總覽
  11.3  讀/寫請求的處理過程
    11.3.1  讀操作的過程
    11.3.2  寫操作的過程
  11.4  WAL日誌與備份快照
    11.4.1  WAL日誌
    11.4.2  快照備份
    11.4.3  WAL存儲
    11.4.4  WAL日誌打開
    11.4.5  WAL文件讀取
  11.5  backend存儲
    11.5.1  BoltDB相關概念
    11.5.2  Backend與BackendTx介面
第12章  如何寫出更好的Go語言代碼
  12.1  Go語言的最佳實踐
    12.1.1  Go語言風格的命名方式
    12.1.2  相似相近原則
    12.1.3  儘早return
    12.1.4  善用零值
    12.1.5  結構體嵌入原則
    12.1.6  功能選項Option
  12.2  Go語言標準目錄結構
  12.3  Clean Architecture與DDD在Go語言項目中的應用
    12.3.1  整潔架構
    12.3.2  領域驅動設計
  12.4  綜合案例:貨運業務項目
    12.4.1  項目需求分析
    12.4.2&n