C的快速+Python的易學 - Go語言全功能開發養成書
內容簡介
	本書分為四大部分。
	
	第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問題解決
目錄
	第 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 問題
序/導讀
	序
	
	歷時五年,本書終於和讀者見面了。
	
	五年,不長也不短。五年,可以讓我有充足的時間來沉澱、挖掘和整理Go並發相關知識,為讀者呈現一本全面且深入的Go 並發知識的書。五年來,相關的Go 並發知識也在不斷地更新,比如Go 記憶體模型的重新定義、atomic 套件更新,以及互斥鎖和讀寫鎖終於加上了TryLock 方法等,對這些同步基本操作內部的實現也有最佳化,相關的最新變動也都表現在本書中。
	
	從2018 年開始,我就有意地整理Go 並發程式設計的知識。2019 年,在GopherChina 大會上做了第一次分享,後來又在滴滴出行做過專門的研討課,再後來,我在「極客時間」上做了一個《Go 並發程式設計實戰課》專欄,大家反映也比較好。
	
	其實,我很早就想把「極客時間」上的專欄內容整理出來,再加上這幾年我對Go 並發程式設計的新的理解和總結,把它打造成一本全面且深入的Go 並發程式設計的書。Go 非常適合並發程式設計,學習Go 語言的人感受最深,但是熟練掌握並發程式設計並不是一件簡單的事情,比如知名的Go 生態圈的專案,包括Go 語言本身,也都出現過很多並發程式設計的錯誤。有些書也介紹了Go 標準函式庫的幾個同步基本操作,並簡單介紹了其使用方法,但是讀者覺得不過癮。所以,我很想儘快將這些內容整理成書,但是一拖就是三四年,「忙」是我用來解釋這本書現在才出版的藉口,「遲疑」才是我一拖再拖的原因。
	
	我有兩個遲疑的點:一是我一直在思考,當前我整理出來的Go 並發知識是否已經足夠全面?我不想出一本關於Go 並發程式設計的書,只是介紹Go 並發程式設計的部分知識,我想系統地覆蓋Go 並發程式設計的各個方面,讓想學習Go 並發程式設計的讀者看這一本書就足夠了。所以,這幾年我也一直在整理、分析和補充Go 並發程式設計的資料,現在終於到了它「出山」的時候。
	
	二是我有點個人化。我期望這本書讀者閱讀起來非常舒服、有條理。多年前我也出過書,這麼多年我也閱讀過很多電腦方面的書。我個人覺得書籍的排版、樣式、插圖、顏色非常影響讀者的讀書興趣,我期望這本書能夠有良好的排版、舒服的字型和間距、漂亮的插圖,並且彩色印刷。我夫人經常嘲笑我這是買櫝還珠,但是我還是期待能夠遇到與我的這種執念一致的「有緣人」,直到看到《Linux 網路內功修煉——徹底了解底層原理及高性能架構》這本書,透過作者彥飛認識了知名的出版策劃人姚新軍老師,一拍即合,本書才得以出版。我個人雖然沒有美術細胞,但是我從讀者的角度希望本書能夠以Gopher 卡通的形象,最好以傳統古典風格設計插圖。我看了相關的插圖和排版,我個人非常喜歡,相信讀者閱讀起來也會覺得妙趣橫生。
	
	當然,為避免「金玉其外,敗絮其中」的結局,本書還是致力於好料的介紹,也不枉讀者送我「鳥窩出品,必是好料」的稱號。本書內容經過仔細的設計,有清晰的脈絡可以遵循,內容由淺入深,適合各層次的Go 語言同好學習,甚至買回來當一本工具書備查也是不錯的。
	
	本書特色
	
	• 全面。本書詳細介紹了Go 標準函式庫中的每一個同步基本操作,並且補充介紹了Go 官方擴充函式庫的同步基本操作,以及很多第三方的並發函式庫。本書還全面介紹了基於etcd 的分散式同步基本操作,讀者在開發分散式程式的時候它很有參考價值。本書還整理了Go 並發模式,讀者可以系統性地了解採用並發模式要解決的問題。
	
	• 由淺入深。每個同步基本操作一開始都會介紹其使用場景和基本的使用方法,很多同步基本操作都會介紹其實現,讀者可以深入了解同步基本操作背後的原理。書中有作者多年開發經驗的總結和整理,讓讀者少走彎路。
	
	• 實戰。書中包含大量的範例,獨創性地整理了同步基本操作使用陷阱,還專門列出了知名專案如Kubernetes、Docker、gRPC 等專案中出現的並發錯誤,讓讀者切身感受到知名專案的有經驗的Go 程式設計師也會犯的錯。
	
	• 獨立。各章之間沒有依賴性,每一章都是獨立的,讀者可以從任意一章開始進行學習。正如「極客時間」的一位讀者所說,課程需要反覆學幾遍才能理解透,所以希望讀者也能勤翻一翻本書,多學習幾遍,把相關知識掌握透徹。
	
	目標讀者
	
	這是一本專門講解Go並發程式設計的書。雖然本書面對的是Go初級、中級、高級的程式設計師,但還是希望讀者有基本的Go 語言知識,至少要花半天時間先學習一下Go 語言的基本程式設計知識,因為我在一些場合聽到其他語言的程式設計師說半天就可以掌握Go 語言了(當然也可以看看其他程式語言的程式,和其他語言的並發程式設計做一個對比,很多知識都是相通的,可以參考)。
	
	任何想使用Go 語言進行程式設計的朋友,無論是在校的學生,還是企業中有志於使用Go 語言程式設計的程式設計師,建議都看一看本書。
	
	勘誤與支持
	
	由於作者水準有限,書中難免會出現一些錯誤或不準確的地方,懇請讀者們朋友批評指正。
	
	大家可以在cpgo.colobu.com 網站上討論、留言,查看勘誤,獲取書中的連結。
配送方式
- 
                                    台灣
- 國內宅配:本島、離島
 - 
                                                到店取貨:
不限金額免運費
                                                        
                                                        
                                                 
 - 
                                    海外
- 國際快遞:全球
 - 
                                                港澳店取:
                                                    
                                                     
 
詳細資料
詳細資料
- 
                                        
- 語言
 - 中文繁體
 - 裝訂
 - 紙本平裝
 
 - 
                                        
- ISBN
 - 9786267383773
 - 分級
 - 普通級
 
 - 
                                        
- 頁數
 - 528
 - 商品規格
 - 23*17*2.6
 
 - 
                                        
- 出版地
 - 台灣
 - 適讀年齡
 - 全齡適讀
 
 - 
                                        
- 注音
 - 級別
 
 
訂購/退換貨須知
退換貨須知:
**提醒您,鑑賞期不等於試用期,退回商品須為全新狀態**
- 
								依據「消費者保護法」第19條及行政院消費者保護處公告之「通訊交易解除權合理例外情事適用準則」,以下商品購買後,除商品本身有瑕疵外,將不提供7天的猶豫期:
								
- 易於腐敗、保存期限較短或解約時即將逾期。(如:生鮮食品)
 - 依消費者要求所為之客製化給付。(客製化商品)
 - 報紙、期刊或雜誌。(含MOOK、外文雜誌)
 - 經消費者拆封之影音商品或電腦軟體。
 - 非以有形媒介提供之數位內容或一經提供即為完成之線上服務,經消費者事先同意始提供。(如:電子書、電子雜誌、下載版軟體、虛擬商品…等)
 - 已拆封之個人衛生用品。(如:內衣褲、刮鬍刀、除毛刀…等)
 
 - 若非上列種類商品,均享有到貨7天的猶豫期(含例假日)。
 - 辦理退換貨時,商品(組合商品恕無法接受單獨退貨)必須是您收到商品時的原始狀態(包含商品本體、配件、贈品、保證書、所有附隨資料文件及原廠內外包裝…等),請勿直接使用原廠包裝寄送,或於原廠包裝上黏貼紙張或書寫文字。
 - 退回商品若無法回復原狀,將請您負擔回復原狀所需費用,嚴重時將影響您的退貨權益。
 
    
        
                  
                
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
		


商品評價