日韩精品 中文字幕 动漫,91亚洲午夜一区,在线不卡日本v一区v二区丶,久久九九国产精品自在现拍

注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)深入理解Go并發(fā)編程

深入理解Go并發(fā)編程

深入理解Go并發(fā)編程

定 價(jià):¥158.00

作 者: 晁岳攀(@鳥窩)
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787121466465 出版時(shí)間: 2023-11-01 包裝: 平裝-膠訂
開本: 128開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書從標(biāo)準(zhǔn)庫的并發(fā)原語講起,循序漸進(jìn)的介紹擴(kuò)展庫、分布式的并發(fā)原語、并發(fā)模式和經(jīng)典并發(fā)問題。內(nèi)容從并發(fā)原語的使用場(chǎng)景、使用方法、常見錯(cuò)誤,內(nèi)部實(shí)現(xiàn)多層次的講解,全面的介紹Go并發(fā)的知識(shí)。全書分為三個(gè)部分,主要部分又分為四個(gè)層次。第一部分主要介紹Go標(biāo)準(zhǔn)庫提供的各種并發(fā)類型(并發(fā)原語)的知識(shí),方便初學(xué)Go語言的同學(xué)能夠掌握好Go語言的基礎(chǔ)能力,包括一些Go開發(fā)者都不熟悉的類型。第二部分屬于拔高的內(nèi)容,介紹積累優(yōu)秀的擴(kuò)展庫,幫助Go開發(fā)者擴(kuò)展思維,提高視野。這些擴(kuò)展庫如果能夠掌握,在工作中會(huì)大有裨益。第三部分介紹分布式并發(fā)原語。這部分內(nèi)容鮮有人介紹,但是屬于互聯(lián)網(wǎng)公司常用的一些場(chǎng)景,尤其是開發(fā)大型分布式項(xiàng)目。很多讀者缺乏這方面的經(jīng)驗(yàn)和機(jī)會(huì),通過閱讀此書,可以彌補(bǔ)這方面的知識(shí)的缺乏和實(shí)戰(zhàn)的機(jī)會(huì)。

作者簡(jiǎn)介

  晁岳攀(@鳥窩),rpcx微服務(wù)框架作者,Go語言布道師,技術(shù)專欄作家。

圖書目錄

第1章 Go并發(fā)編程和調(diào)度器
1.1 Go特別適合并發(fā)編程
1.2 并發(fā) vs 并行
1.3 阿姆達(dá)爾定律:并發(fā)編程優(yōu)化是有上限的
1.4 Go并發(fā)并不一定最快
1.5 Go運(yùn)行時(shí)調(diào)度器
第2章 互斥鎖 Mutex
2.1 競(jìng)爭(zhēng)條件與數(shù)據(jù)競(jìng)爭(zhēng)
2.2 Mutex的用法
2.2.1 一個(gè)并發(fā)問題
2.2.2 Mutex的使用
2.2.3 地道的用法
2.3 檢查程序中的數(shù)據(jù)競(jìng)爭(zhēng)
2.4 Mutex的歷史實(shí)現(xiàn)
2.4.1 初始版本
2.4.2 多給新的 goroutine 一些機(jī)會(huì)
2.4.3 多給競(jìng)爭(zhēng)者一些機(jī)會(huì)
2.4.4 解決饑餓問題
2.4.5 TryLock
2.5 Mutex的使用陷阱
2.5.1 誤寫
2.5.2 死鎖
2.5.3 鎖重入
2.5.4 復(fù)制鎖
2.6 Mutex的擴(kuò)展
2.6.1 可重入鎖
2.6.2 支持并發(fā) map
2.6.3 封裝值
第3章 讀寫鎖 RWMutex
3.1 讀寫鎖的使用場(chǎng)景
3.2 讀寫鎖的使用方法
3.3 讀寫鎖的實(shí)現(xiàn)
3.3.1 RLock的實(shí)現(xiàn)
3.3.2 RUnlock的實(shí)現(xiàn)
3.3.3 Lock的實(shí)現(xiàn)
3.3.4 Unlock的實(shí)現(xiàn)
3.3.5 TryLock的實(shí)現(xiàn)
3.3.6 TryRLock的實(shí)現(xiàn)
3.4 讀寫鎖的使用陷阱
3.4.1 鎖重入
3.4.2 死鎖
3.4.3 發(fā)現(xiàn)死鎖
3.5 讀寫鎖的擴(kuò)展
第4章 任務(wù)編排好幫手 WaitGroup
4.1 WaitGroup的使用方法
4.2 WaitGroup的實(shí)現(xiàn)
4.3 WaitGroup的使用陷阱
4.3.1 Add 方法調(diào)用的時(shí)機(jī)不對(duì)
4.3.2 計(jì)數(shù)器的值為負(fù)數(shù)
4.3.3 錯(cuò)誤的調(diào)用 Add的時(shí)機(jī)
4.3.4 知名項(xiàng)目中關(guān)于 WaitGroup 使用的 bug
4.4 WaitGroup的擴(kuò)展
4.5 noCopy:輔助 vet 檢查
第5章 條件變量 Cond
5.1 Cond的使用方法
5.2 Cond的實(shí)現(xiàn)
5.3 Cond的使用陷阱
5.3.1 調(diào)用 Wait 時(shí)沒有加鎖
5.3.2 喚醒之后不檢查判斷條件
5.4 在實(shí)際項(xiàng)目中使用 Cond的例子
第6章 單例化利器 Once
6.1 Once的使用方法
6.2 Once的實(shí)現(xiàn)
6.3 Once的使用陷阱
6.3.1 死鎖
6.3.2 未初始化
第7章 并發(fā) map
7.1 線程安全的 map
7.1.1 使用 map的兩種常見錯(cuò)誤
7.1.2 加讀寫鎖:擴(kuò)展 map,支持并發(fā)讀/寫
7.2 sync.Map的使用方法
7.3 sync.Map的實(shí)現(xiàn)
7.3.1 Swap 方法
7.3.2 Load 方法
7.3.3 Delete 方法
7.4 分片加鎖:更高效的并發(fā)map
7.5 lock-free map
第8章 池 Pool
8.1 sync.Pool的使用方法
8.2 sync.Pool的實(shí)現(xiàn)
8.2.1 Get 方法的實(shí)現(xiàn)
8.2.2 Put 方法的實(shí)現(xiàn)
8.3 sync.Pool的使用陷阱
8.4 連接池
8.4.1 標(biāo)準(zhǔn)庫中的 HTTP Client 池
8.4.2 數(shù)據(jù)庫連接池
8.4.3 TCP 連 接池
8.4.4 Memcached Client 連接池
8.4.5 net/rpc 中的 Request/Response 對(duì)象池
8.5 goroutine/worker 池
第9章 不止是上下文:Context
9.1 Context的發(fā)展歷史
9.2 Context的使用方法
9.2.1 基本用法
9.2.2 傳遞上下文
9.2.3 可撤銷的上下文
9.2.4 帶超時(shí)功能的上下文
9.3 Context 實(shí)戰(zhàn)
9.4 Context的使用陷阱
9.5 Context的實(shí)現(xiàn)
9.5.1 WithValue的實(shí)現(xiàn)
9.5.2 WithCancel的實(shí)現(xiàn)
9.5.3 WithDeadline的實(shí)現(xiàn)
第10章 原子操作
10.1 原子操作的基礎(chǔ)知識(shí)
10.2 原子操作的使用場(chǎng)景
10.3 atomic 提供的函數(shù)和類型
10.3.1 AddXXX 函數(shù)
10.3.2 CompareAndSwapXXX 函數(shù)
10.3.3 SwapXXX 函數(shù)
10.3.4 LoadXXX 函數(shù)
10.3.5 StoreXXX 函數(shù)
10.3.6 Value 類型
10.3.7 Bool、Int32、Int64、Pointer、Uint32、Uint64、Uintptr
10.4 uber-go/atomic 庫
10.5 lock-free 隊(duì)列的實(shí)現(xiàn)
10.6 原子性和可見性
第11章 channel 基礎(chǔ):另辟蹊徑解決并發(fā)問題
11.1 channel的歷史
11.2 channel的應(yīng)用場(chǎng)景
11.3 channel的基本用法
11.4 channel的實(shí)現(xiàn)
11.4.1 channel的數(shù)據(jù)結(jié)構(gòu)
11.4.2 初始化
11.4.3 發(fā)送數(shù)據(jù)
11.4.4 接收數(shù)據(jù)
11.4.5 關(guān)閉 channel
11.5 channel的使用陷阱 / 224
11.5.1 panic 和 goroutine 泄漏
11.5.2 知名項(xiàng)目踩過的坑
第12章 channel的內(nèi)部實(shí)現(xiàn)和陷阱
12.1 使用反射操作 select 和 channel
12.2 channel的應(yīng)用場(chǎng)景

第13章 Go內(nèi)存模型
13.1 指令重排和可見性的問題
13.2 sequenced before、synchronized before 和 happens before
13.3 各種同步原語的同步保證
13.3.1 初始化
13.3.2 goroutine的運(yùn)行
13.3.3 channel
13.3.4 鎖(Mutex 和 RWMutex)
13.3.5 Once
13.3.6 WaitGroup
13.3.7 atomic操作
13.3.8 Finalizer、sync.Cond、sync.Map 和 sync.Pool
13.4 不正確的同步
第14章 信號(hào)量 Semaphore
14.1 什么是信號(hào)量
14.1.1 P/V 操作
14.1.2 信號(hào)量和互斥鎖的區(qū)別與聯(lián)系
14.2 信號(hào)量的 channel 實(shí)現(xiàn)
14.3 Go官方的信號(hào)量實(shí)現(xiàn)
14.4 使用信號(hào)量的常見錯(cuò)誤
第15章 緩解壓力利器 SingleFlight
15.1 SingleFlight的實(shí)現(xiàn)
15.2 SingleFlight的使用場(chǎng)景
第16章 循環(huán)屏障 CyclicBarrier
16.1 CyclicBarrier的使用場(chǎng)景
16.2 CyclicBarrier的實(shí)現(xiàn)
16.3 使用 CyclicBarrier的例子
第17章 分組操作
17.1 ErrGroup
17.1.1 ErrGroup的基本用法
17.1.2 ErrGroup 使用示例
17.2 其他實(shí)用的 Group 同步原語
17.2.1 SizedGroup/ErrSizedGroup
17.2.2 gollback
17.2.3 Hunch
17.2.4 schedgroup
第18章 限流
18.1 基于令牌桶實(shí)現(xiàn)的限流庫
18.1.1 x/time/rate
18.1.2 juju/ratelimit
18.2 基于漏桶實(shí)現(xiàn)的限流庫
18.3 分布式限流
第19章 Go并發(fā)編程和調(diào)度器
19.1 Leader 選舉
19.1.1 選舉
19.1.2 查詢
19.1.3 監(jiān)控
19.2 鎖 Locker
19.3 互斥鎖 Mutex
19.4 讀寫鎖 RWMutex
19.5 分布式隊(duì)列和優(yōu)先級(jí)隊(duì)列
19.6 分布式屏障
19.7 計(jì)數(shù)型屏障
19.8 軟件事務(wù)內(nèi)存
第20章 并發(fā)模式
20.1 并發(fā)模式概述
20.2 半異步/半同步模式
20.3 活動(dòng)對(duì)象模式
20.4 斷路器模式
20.5 截止時(shí)間和超時(shí)模式
20.6 回避模式
20.7 雙重檢查模式
20.8 保護(hù)式掛起模式
20.9 核反應(yīng)模式
20.10 調(diào)度器模式
20.11 反應(yīng)器模式
20.12 Proactor模式
20.13 percpu模式
20.14 多進(jìn)程模式
第21章 經(jīng)典并發(fā)問題解析
21.1 哲學(xué)家就餐問題
21.1.1 模擬哲學(xué)家就餐問題
21.1.2 解法一:限制就餐人數(shù)
21.1.3 解法二:奇偶處理方法
21.1.4 解法三:資源分級(jí)
21.1.5 解法四:引入服務(wù)生
21.2 理發(fā)師問題
21.2.1 使用 sync.Cond 解決理發(fā)師問題
21.2.2 使用 channel 實(shí)現(xiàn)信號(hào)量
21.2.3 有多個(gè)理發(fā)師的情況
21.3 水工廠問題
21.4 fizz buzz 問題
21.4.1 將并發(fā)轉(zhuǎn)為串行
21.4.2 使用同一個(gè)channel
21.4.3 使用CyclicBarrier

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) rgspecialties.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)