買這商品的人也買了...
-
$680$537 -
$760TCP/IP 路由技術 (第一捲), 2/e
-
$179思科數據中心產品配置
-
$414$393 -
$1,015TCP/IP 路由技術 (第二捲), 2/e (Routing TCP/IP,Volume II:CCIE Professional Development, 2/e)
-
$834$792 -
$588$559 -
$594$564 -
$1,139$1,082 -
$216$205 -
$839$797 -
$611NGINX 經典教程
-
$650$507 -
$510$480 -
$880$695 -
$588$559 -
$1,853Rust Atomics and Locks: Low-Level Concurrency in Practice (Paperback)
-
$654$621 -
$556Go 程序開發實戰寶典
-
$594$564 -
$650$507 -
$431Vue.js 從入門到精通
-
$404Go語言從入門到精通
-
$479$455 -
$659$626
商品描述
隨著服務器硬件性能的提升,多核CPU已經很常見,充分利用硬件的多核運算優勢是很多開發者不斷探索和努力的方向。
相較於一些編程語言的框架在不斷地提高多核資源的使用效率,Go語言在多核並發上擁有原生的設計優勢,
其顯著的語言特徵是對並發編程的原生支持,目前在雲計算、容器領域應用廣泛。
Go語言總體來說上手簡單,但是到實際的開發中,僅僅掌握Go語言的語法遠遠不夠。
因此在理解Go語言語法的基礎上,深入瞭解Go語言的實現內幕、
高級特性以及實踐中的使用陷阱變得異常重要,
這也正是《深入Go語言:原理、關鍵技術與實戰》要向讀者詳細介紹的。
《深入Go語言:原理、關鍵技術與實戰》適合Go語言開發者,
尤其是想要深入瞭解或者轉型Go語言開發的進階犁開發者。
作者簡介
歷冰
開源愛好者;精耕於微服務、分佈式、高性能計算和性能調優等後端領域。
著有《SpringCloud微服務架構進階》,CSDN博客專家,公眾號“程序員歷小冰”作者。
朱榮鑫,微服務技術專家;對高並發、分佈式有多年深入的實踐經驗。掘金優秀作者,CSDN博客專家。
著有《Go語言高並發與微服務實戰》,公眾號“aoho求索”作者。
黃迪璇,服務端技術專家;就職於國內一線因特網公司,具有多年服務端開發經驗,對分佈式、高並發等後端領域有較深入瞭解。
技術極客,熱衷於新技術的研究和實踐。
目錄大綱
第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 使用De