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部分包括第113章,主要介紹Go標準函式庫的同步基本操作,包括互斥鎖Mutex、讀寫鎖RWMutexWaitGroup、條件變數CondOnceMapPoolContext channel等,以及最新的原子操作知識,主要的重點在channel身上,最後還介紹了Go的記憶體模型。

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

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

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

 

【本書看點】

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

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

☆條件變數CondOnceMapPoolContextChannel

★原子操作原理及實作

Go的記憶體模式

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

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

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 beforesynchronized 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 問題