Day 12:R2DBC,讓資料庫存取也不阻塞執行緒 結尾留下一個問題:資料庫存取這一段的非阻塞問題解決了,但真實的訂單查詢與扣庫存流程往往不只跟資料庫打交道,...
Day 12:Dispatchers,協程實際跑在哪條執行緒上 結尾留下一個問題:啟動協程時指定的 Dispatcher,具體是用什麼方式跟著協程一起被攜帶著走...
Day 11:WebFlux 是什麼,協程與反應式模型的分工 停在一個尚未回答的風險上:即使應用程式用 WebFlux 搭配協程,整條請求處理鏈路理論上可以是非...
Day 11:小結:Scope、Structured Concurrency、Job、取消如何協同運作 結尾留下一個還沒碰過的問題:這幾天建立的框架,回答的都是...
在上一篇文章 Day 10:在 Spring MVC 裡寫 suspend function,能動但有代價 最後留下一個問題:如果限制的源頭是底層容器骨架,有沒...
Day 10:協程取消不是強制中斷,是一場合作 結尾提到一件事:Job 樹負責把取消訊號傳遞到每個角落,Structured Concurrency 界定子協程...
Day 09:小結:四個核心觀念如何在一次請求中協同運作 結尾留下一個還沒正面回答的問題:協程終究要活在一個真實的 Spring Boot 應用程式裡,它要接...
Day 09:Job,協程生命週期的控制把手 結尾留下一個問題:透過 Job 對協程發出取消要求之後,這個協程接下來會怎麼樣,是像拔掉電源一樣說停就停,還是中間...
Day 08:Coroutine Context 與例外處理,協程出錯了誰負責 結尾把 Coroutine Scope、Structured Concurren...
Day 08:coroutineScope 與 supervisorScope,兩種收斂行為的差異 結尾留下一個問題:coroutineScope 與 supe...
《Day 07:Dispatchers,協程實際跑在哪條執行緒上》 結尾留下一個問題:Dispatcher 其實只是協程隨身攜帶的其中一項設定,那協程執行時還帶...
《Day 07:Structured Concurrency,為什麼協程不能亂長亂放》 建立了一個標準規則:子協程失敗,預設會向上影響整個父範圍,導致父協程與其...
Day 06:Structured Concurrency,為什麼協程不能亂長亂放 結尾留下一個問題:確立了協程之間誰該對誰負責之後,這些協程實際上到底是在哪一...
Day 06:Coroutine Scope,協程住在哪裡、活多久 結尾留下一個問題:同一個 Scope 裡同時養著好幾個協程,其中一個出事,會不會連累其他協程...
Day 05:Coroutine Scope,協程住在哪裡、活多久 結尾留下一個問題:同一個 Scope 裡如果同時養著好幾個協程,其中一個先執行完,或者其中一...
《Day 05:把暫停機制與啟動方式放在一起跑一次》結尾留下一個問題沒有回答:協程數量一多,誰該負責統一管理它們,確保這些協程不會各自失控地一直跑下去。今天要正...
《Day 04:小結:把 Thread 模型與協程模型放在一起比一次》 結尾留下一個疑問:訂單查詢與扣庫存服務裡,有些步驟適合同時發起,一旦一個請求裡需要同時或...
《Day 04:launch、async、runBlocking,三種 Coroutine Builder 該選誰》 結尾留下一個約定:把這幾天分別認識的東西,...
《Day 03:第一個 suspend function,協程到底暫停了什麼》結尾留下一個疑問:一個函式暫停了,那一整串呼叫呢。今天先不回答這個疑問,而是往回看...
《Day 03:Continuation 是什麼,編譯器在背後偷偷做了什麼事》留下一個問題。suspend function 內部已經具備暫停與恢復的能力,這套...
《Day 02:Thread-per-Request 模型的極限,搞懂你原本在用什麼》 結尾停在一個問句上:如果執行緒能在等待的時候先被借走,去處理別的請求,等...
《Day 02:第一個 suspend function,暫停到底暫停了什麼》 留下一個還沒解開的疑問。suspend function 暫停的時候,一定需要某...
《Day 01:為什麼高併發後端需要協程,從一個會卡住的 API 說起》結尾留下一個看似簡單卻很少人真正答得出來的問題:你的 Spring Boot 應用程式收...
《Day 01:為什麼你需要協程,從一個會卡住主執行緒的下載函式說起》 停在一個問題上:如果一段程式碼能看起來依序寫下去,遇到等待卻不會卡住主執行緒,那麼它在等...
昨天在 Day 00 的地圖裡,我們先按下不表那個會卡住的 API,只留下一句預告:今天要把它攤開來看清楚,它到底卡在哪裡。現在就從這個畫面開始。 開場,一個會...
你按下取消鍵,畫面上的轉圈圈圖示卻還在轉。你確定自己呼叫了取消,Log 也印出了取消的訊息,但那個背景工作就是不肯停下來,畫面卡在那裡,好像根本沒聽到你說了什麼...
如果你是一個習慣寫 Java 後端的工程師,大概對這個畫面不陌生。系統上線初期流量還小,每個 API 都反應飛快,Controller 收到請求,Service...
你大概寫過這樣的程式碼。一個 viewModelScope.launch 包住一段網路請求,一個 async 搭配 awaitAll 平行抓了好幾筆資料,跑起來...
時光飛逝,距離去年的鐵人賽也已經過了一年,鐵人賽重新開始啦!這一年之中在軟體開發的變化宛如天翻地覆(蛤?),現在已經沒有人在寫程式了,但沒關係。 我們似乎活在...
「null 啊⋯⋯」小孩托著下巴思考,慢慢解釋道:「當問號成立,那就是 null 的狀態;反過來,就是非 null 的狀態。非 null 的時候,有時候會用驚嘆...