C的快速+Python的易學: Go語言全功能開發養成書 | 誠品線上

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

作者 晁岳攀 (@鳥窩)
出版社 聯合發行股份有限公司
商品描述 C的快速+Python的易學: Go語言全功能開發養成書:【新書簡介】本書分為四大部分。第1部分包括第1到13章,主要介紹Go標準函式庫的同步基本操作,包括互斥鎖Mutex、讀寫鎖RWM

內容簡介

內容簡介 【新書簡介】 本書分為四大部分。 第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 問題

商品規格

書名 / C的快速+Python的易學: Go語言全功能開發養成書
作者 / 晁岳攀 (@鳥窩)
簡介 / C的快速+Python的易學: Go語言全功能開發養成書:【新書簡介】本書分為四大部分。第1部分包括第1到13章,主要介紹Go標準函式庫的同步基本操作,包括互斥鎖Mutex、讀寫鎖RWM
出版社 / 聯合發行股份有限公司
ISBN13 / 9786267383773
ISBN10 /
EAN / 9786267383773
誠品26碼 / 2682584839009
頁數 / 528
裝訂 / P:平裝
語言 / 1:中文 繁體
尺寸 / 17X23X2.6CM
級別 / N:無

試閱文字

自序 : 歷時五年,本書終於和讀者見面了。
五年,不長也不短。五年,可以讓我有充足的時間來沉澱、挖掘和整理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 語言程式設計的程式設計師,建議都看一看本書。

勘誤與支持
由於作者水準有限,書中難免會出現一些錯誤或不準確的地方,懇請讀者們朋友批評指正。
大家可以在https://cpgo.colobu.com 網站上討論、留言,查看勘誤,獲取書中的連結。

最佳賣點

最佳賣點 : ☆和C一樣快,和Python一樣好學的新一代程式語言
★同步基本操作,互斥鎖Mutex、讀寫鎖RWMutex、WaitGroup
☆條件變數Cond、Once、Map、Pool、Context、Channel
★原子操作原理及實作

活動