Go JSON

Read More

Go Concurrent Part.2 Pipeline

Go Concurrency Patterns: Pipelines and cancellation

首先,這篇主要以 pipeline 方式,將工作拆分成 N 個階段。

在第K個階段中使用 fan out pattern 產生多個 worker 運作

並且在接下來的階段中使用 fan in pattern 將資訊收集起來處理


但是在實際狀況,stage 不會每次都把所有資料接收完。

可能上個階段發生 error 提早結束,又或者下個階段不需要那麼多資料

問題1:如果 下游 stage 沒有成功消費完所有資料的話,會導致 上游 goroutine block, Resource Leak

解法:上游 outbound channel 使用 channel buffer。


問題2:上游 channel buffer 數量取決於下游狀況,所以當上個階段多送,或下個階段少接,還是會造成 block

解法:使用 Explicit cancellation(Done channel)


於是使用 Done Channel 告知個階段拋棄資料。(發送一次 Done 訊號 處理一個 潛在 Block)

問題3:下游接收者得要知道上游的潛在 Block 數量

解法:將 Done Channel defer close,用 closed channel 拿出來的 zero value 處理 N 個 潛在 Block

Read More

Go Concurrent Timing out, moving on

這篇我主要看中的 time.After 的實作想法 以及…

Read More

Go Concurrent Part.3 Context

讀這篇之前最好先看完 Pipelines and cancellation 補完一些前提知識。


Go Concurrency Patterns: Context

Read More

Go Concurrent Part.1 (基礎 channel & select)

開始玩 Go Concurrent 部分,最好還是先 channel & select 先弄清楚點。

Read More

Open Swift

等待許久,終於等到 Swift Open Source

Read More

Swagger

Swagger 規格

一個 API Design 相關的東東,找時間補完它。

Read More

Metal

尚未讀完~~

Read More

Category Theory

抽空看了 Category Theory 有一種我到底看了什麼感覺

有點蛋疼 有點懂 有點不懂 有點有趣 有點WTF

反正整個五味雜成就是哩!

Read More

Chatwork API

API 文件 -> 目前是 Preview 版本申請網址

Read More