C 的快速 + Python 的易學 - Go語言全功能開發養成書

晁岳攀(@鳥窩) 著

  • C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-1
  • C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-2
  • C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-3
  • C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-4
  • C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-5
  • C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-6
  • C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-7
  • C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-8
  • C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-9
  • C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-10
  • C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-11
  • C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-12
  • C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-13
  • C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-14
  • C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-15
  • C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-16
  • C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-17
C 的快速 + Python 的易學 - Go語言全功能開發養成書-preview-1

買這商品的人也買了...

相關主題

商品描述

【新書簡介】

本書分為四大部分。

第1部分包括第1到13章,主要介紹Go標準函式庫的同步基本操作,包括互斥鎖Mutex、讀寫鎖RWMutex、WaitGroup、條件變數Cond、Once、Map、Pool、Context、 channel等,以及最新的原子操作知識,主要的重點在channel身上,最後還介紹了Go的記憶體模型。

第2部分包括第14到18章,主要介紹Go官方的擴充函式庫和第三方的同步基本操作,包括訊號量、SingleFlight、CyclicBarrier、分組操作庫、限流庫等。

第3部分包括第19章,主要介紹基於etcd的分散式同步(並發)基本操作。

第4部分包括第20章和第21章,主要歸納總結Go的並發模式,並嘗試使用本書介紹的同步基本操作解決經典的併發問題。

 

【本書看點】

☆和C一樣快,和Python一樣好學的新一代程式語言

★同步基本操作,互斥鎖Mutex、讀寫鎖RWMutex、WaitGroup

☆條件變數Cond、Once、Map、Pool、Context、Channel

★原子操作原理及實作

☆Go的記憶體模式

★Go官方及擴充函式、第三方同步基本操作

☆訊號量、SingleFlight、CyclicBarrier、分組操作庫、限流庫

★Etcd的分散式同步操作

☆Go並發模式的實作

★經典Go問題解決

作者簡介

晁岳攀(@鳥窩)

rpcx微服務框架作者,Go語言布道師,技術專欄作家。

目錄大綱

第 1 章 分散式併發原語

1.1 Go 特別適合並發程式設計

1.2 並發 vs 平行

1.3 阿姆達爾定律:並發程式設計最佳化是有上限的

1.4 Go 並發並不一定最快

1.5 Go 執行時期排程器

 

第 2 章 互斥鎖 Mutex

2.1 競爭條件與資料競爭

2.2 Mutex 的用法

2.3 檢查程式中的資料競爭

2.4 Mutex 的歷史實現

2.5 Mutex 的使用陷阱

2.6 Mutex 的擴充

 

第 3 章 讀寫鎖 RWMutex

3.1 讀寫鎖的使用場景

3.2 讀寫鎖的使用方法

3.3 讀寫鎖的實現

3.4 讀寫鎖的使用陷阱

3.5 讀寫鎖的擴充

 

第 4 章 任務編排好幫手 WaitGroup

4.1 WaitGroup 的使用方法

4.2 WaitGroup 的實現

4.3 WaitGroup 的使用陷阱

4.4 WaitGroup 的擴充

4.5 noCopy:輔助 vet 檢查

 

第 5 章 條件變數 Cond

5.1 Cond 的使用方法

5.2 Cond 的實現

5.3 Cond 的使用陷阱

5.4 在實際專案中使用 Cond 的例子

 

第 6 章 單實體化利器 Once

6.1 Once 的使用方法

6.2 Once 的實現

6.3 Once 的使用陷阱

 

第 7 章 並發 map

7.1 內建map類型

7.2 sync.Map 的使用方法

7.3 sync.Map 的實現

7.4 分片加鎖:更高效的並發 map

7.5 lock-free map

 

第 8 章 池 Pool

8.1 sync.Pool 的使用方法

8.2 sync.Pool 的實現

8.3 sync.Pool 的使用陷阱

8.4 連接池

8.5 goroutine/worker 池

 

第 9 章 不止是上下文:Context

9.1 Context 的發展歷史

9.2 Context 的使用方法

9.3 Context 實戰

9.4 Context 的使用陷阱

9.5 Context 的實現

 

第 10 章 原子操作

10.1 原子操作的基礎知識

10.2 原子操作的使用場景

10.3 atomic 提供的函式和類型

10.4 uber-go/atomic 函式庫

10.5 lock-free 佇列的實現

10.6 原子性和可見性

 

第 11 章 channel 基礎:另闢蹊徑解決並發問題

11.1 channel 的歷史

11.2 channel 的應用場景

11.3 channel 的基本用法

11.4 channel 的實現

11.5 channel 的使用陷阱

 

第 12 章 channel 的內部實現和陷阱

12.1 使用反射操作 select 和 channel

12.2 channel 的應用場景

 

第 13 章 Go 記憶體模型

13.1 指令重排和可見性的問題

13.2 sequenced before、synchronized before 和 happens before

13.3 各種同步基本操作的同步保證

13.4 不正確的同步

 

第 14 章 訊號量 Semaphore

14.1 什麼是訊號量

14.2 訊號量的 channel 實現

14.3 Go 官方的訊號量實現

14.4 使用訊號量的常見錯誤

 

第 15 章 緩解壓力利器 SingleFlight

15.1 SingleFlight 的實現

15.2 SingleFlight 的使用場景

 

第 16 章 循環屏障 CyclicBarrier

16.1 CyclicBarrier 的使用場景

16.2 CyclicBarrier 的實現

16.3 使用 CyclicBarrier 的例子

 

第 17 章 分組操作

17.1 ErrGroup

17.2 其他實用的Group 同步基本操作

 

第 18 章 限流

18.1 基於權杖桶實現的限流函式庫

18.2 基於漏桶實現的限流函式庫

18.3 分散式限流

 

第 19 章 分散式併發原語

19.1 Leader 選舉

19.2 鎖 Locker

19.3 互斥鎖 Mutex

19.4 讀寫鎖 RWMutex

19.5 分散式佇列和優先順序佇列

19.6 分散式屏障

19.7 計數型屏障

19.8 軟體事務記憶體

 

第 20 章 並發模式

20.1 並發模式概述

20.2 半非同步 / 半同步模式

20.3 活動物件模式

20.4 斷路器模式

20.5 截止時間和逾時模式

20.6 回避模式

20.7 雙重檢查模式

20.8 保護式暫停模式

20.9 核子反應模式

20.10 排程器模式

20.11 反應器模式

20.12 Proactor 模式

20.13 percpu 模式

20.14 多處理程式模式

 

第 21 章 經典並發問題解析

21.1 哲學家就餐問題

21.2 理髮師問題

21.3 水工廠問題

21.4 fizz buzz 問題