iT邦幫忙

鐵人檔案

2021 iThome 鐵人賽
回列表
Software Development

Hey! Go Design Patterns 系列

Golang 是一個針對現今高併發 Web 而生的語言,擁有 Goroutine、Channel 讓其實現了簡單的 CPS(Communicating sequential processes),使得 Concurrency 更加安全、輕量、單純。
為什麼要這樣設計?是怎麼從過去的 Concurrency Patterns 獲得啟發的?而針對併發模式設計的 Golang 又會與 Gof 所說的經典 23 種 Design Patterns 有什麼碰撞磨合?
本系列文章希望能夠淺入深出,透過 Design Patterns 了解 Golang 設計的核心目標。

鐵人鍊成 | 共 30 篇文章 | 17 人訂閱 訂閱系列文 RSS系列文
DAY 1

DAY 1:Hey! Go Design Patterns

大家好,本系列文章探討經典 Design Patterns 在現代語言 Golang 的演變。雖然小弟是一位還在學習的小小碼農,但希望文章能夠以相對淺顯不高深...

DAY 2

DAY 2:Single Threaded Execution Pattern,門就只有一個大家好好排隊啊~

什麼是 Single Threaded Execution Pattern? 透過 lock,只會有一個 goroutine 執行此區段的程式碼 問題情境...

DAY 3

DAY 3:Read-Write-Lock Pattern,三人成虎,一人打虎!

什麼是 Read-Write-Lock Pattern? 多讀單寫。將 lock 分為 read 與 write 兩種,讓 lock 效能更佳,read 行為...

DAY 4

DAY 4:Guarded Suspension Pattern,你不會死的,因為我會保護你

什麼是 Guarded Suspension Pattern? 如果 thread 執行時條件不符,就停下等待,等到條件符合時再開始開始執行 問題情境 當設...

DAY 5

DAY 5:Thread-Per-Message Pattern,預備...發射!

在 DAY 2~DAY 4 我們使用到了 goroutine、lock、channel,主要目標在保護併發下的資料避免 race condition,接下來會以...

DAY 6

DAY 6:Feature Pattern,我把未來託付給你了!

什麼是 Future Pattern? 呼叫者將 task 交給 goroutine 執行,執行完畢後 goroutine 將 task 運行得到的結果傳回呼...

DAY 7

DAY 7:Fan-Out Fan-In Pattern,看吧世界!這就是多人解決的力量!

什麼是 Fan-Out Fan-In Pattern? 將 input 由一個 producer 分發多個 goroutine 運行,再將多個 task go...

DAY 8

DAY 8:Producer Consumer Pattern,點菜了,三份穿褲子的豬,一盤熱空氣,把牛變成鱒魚

什麼是 Producer Consumer Pattern? 多個 Producer(生產者)提供任 Job 任務,多個 Consumer(消費者)消費任務...

DAY 9

DAY 9:Worker Pool Pattern,就。很。Pool。

什麼是 Worker Pool Pattern? 設定好 pool 的 goroutine 數量,預先啟動多個 goroutine,把 job 傳給這些 go...

DAY 10

DAY 10:Two-phase Termination Pattern,我就跟你說不要亂拔電源!

什麼是 Two-phase Termination Pattern? 分兩個階段關閉 goroutine,第一階段先結束 goroutine 的程式邏輯,第二...