iT邦幫忙

concurrency相關文章
共有 41 則文章
鐵人賽 Software Development DAY 30

技術 並行程式的潛在問題 (三)

在介紹 Mutex lock 與 Spinlock 後,本篇文章同樣針對並行程式的 Synchronization 作探討,以保證並行程式的執行順序。 Sema...

鐵人賽 Mobile Development DAY 29

技術 day29 大量操作怎麼辦? 連volatile都救不了我QQ

我先講解法,再講為甚麼volatile沒用 那我會搭配文檔講,但其實不管情境怎麼會概念還是一樣的,這裡範例選用和文檔一樣的從1加到10萬 atomic原子性 前...

鐵人賽 Software Development DAY 30
Hey! Go Design Patterns 系列 第 30

技術 DAY30:Strategy Pattern,選定不同的策略來執行

什麼是 Strategy Pattern? 設計相同介面但不同實作的物件,再由使用端以此介面去選擇要使用何種物件 UML 圖如下: 問題情境 假設 PS5...

鐵人賽 Mobile Development DAY 28

技術 day28 等一下啦,會壞掉的/// Coroutine併發操作的重複請求

沒有要開車,參賽規定有寫不能污言穢語,等我有空再去其他平台寫個開車系列的coroutine 這裡給個快轉,android開發者從1開始看,ktor從2開始看...

鐵人賽 Software Development DAY 29
Hey! Go Design Patterns 系列 第 29

技術 DAY 29:Iterator Pattern,迭代各種不同的物件

什麼是 Iterator Pattern? 將不同資料物件透過一致的方式取得其中的元素 問題情境 string與[]string是兩種不同的資料型態,我們需...

鐵人賽 Software Development DAY 28
Hey! Go Design Patterns 系列 第 28

技術 DAY 28:Command Pattern,將動作已指令一個一個完成

什麼是 Command Pattern? 將建立指令與實際執行分離 問題情境 PS5 有特定操作 CPU 指令的實作.ACommand()、.BComman...

鐵人賽 Software Development DAY 27
Hey! Go Design Patterns 系列 第 27

技術 DAY 27:Chain of Responsibility,將實作透過串串樂串起來

什麼是 Chain of Responsibility? 將 if...else 的行為抽象成物件,將 if...else 行為以物件串接的方式來操作 問題...

鐵人賽 Software Development DAY 26
Hey! Go Design Patterns 系列 第 26

技術 DAY 26:Proxy Pattern,讓代理人操作實際的物件

什麼是 Proxy Pattern? 讓代理物件操作實際物件,讓代理物件處理與業務邏輯無關的事情 UML 圖如下: 在操作物件時,有時候我們有加上 log...

鐵人賽 Software Development DAY 25
Hey! Go Design Patterns 系列 第 25

技術 DAY 25:Flyweight Pattern,節省空間的好幫手

什麼是 Flyweight Pattern? 將可共用的物件共用以節省空間 問題情境 設計一個撲克牌遊戲,如果牌局在運行,每創建一個牌局就需要建立新的卡牌,...

鐵人賽 Software Development DAY 24
Hey! Go Design Patterns 系列 第 24

技術 DAY 24:Composite Pattern,管理有層次的物件們

什麼是 Composite Pattern? 將單一與多個物件的使用方式統一給使用者使用 UML 圖如下: 問題情境 假設 PS5 設計的測試階段,會以單...

鐵人賽 Software Development DAY 23
Hey! Go Design Patterns 系列 第 23

技術 DAY 23:Facade Pattern,由統一的入口介面來做事

什麼是 Facade Pattern? 實作不依賴多個類別,而是依賴介面,並把這些類別實作在此介面 問題情境 (相關的 code 在Github - go-...

鐵人賽 Software Development DAY 22
Hey! Go Design Patterns 系列 第 22

技術 DAY 22:Decorator Pattern,巧妙的在方法上增加新功能

什麼是 Decorator Pattern? 不以靜態繼承而是用動態組合的方式增加功能 UML 圖如下: ProductDecorator 與 Produ...

鐵人賽 Software Development DAY 21
Hey! Go Design Patterns 系列 第 21

技術 DAY 21:Bridge Pattern,橋接人間與魔界的次元門

什麼是 Bridge Pattern? 將抽像與實現分離,讓彼此變化互不影響 問題情境 PS5 有著 PS5WithCD 與 PS5WithDigital...

鐵人賽 Software Development DAY 20
Hey! Go Design Patterns 系列 第 20

技術 DAY 20:Adapter Pattern,統一不同產品的介面

Creational 建立相關的 patterns 已經告一段落,接下來要進入 Structural 結構模式相關的 patterns,主要目的在設計出低耦合的...

鐵人賽 Software Development DAY 19
Hey! Go Design Patterns 系列 第 19

技術 DAY 19:Prototype Pattern,創建物件不再從頭開始浪費時間

什麼是 Prototype Pattern? 將物件以拷貝的方式建立 如果某類物件在初始化時,會消耗大量的成本,例如:「對 DB 做 query、讀取 js...

鐵人賽 Software Development DAY 18
Hey! Go Design Patterns 系列 第 18

技術 DAY 18:Singleton Pattern,致獨一無二的你

什麼是 Singleton Pattern? 整個程式運作只會有此一個物件,不會創建第二個重複的物件 在實際情境中某些物件,比如連線 DB、與其他 ser...

鐵人賽 Software Development DAY 17
Hey! Go Design Patterns 系列 第 17

技術 DAY 17:Builder Pattern,一步一步的建造產品

什麼是 Builder Pattern? 將建造物件的實作拆開,由使用者覺得要選擇建造什麼,來一步一步建造 舉例來說,當創建 PS5 時, CreatePS...

鐵人賽 Software Development DAY 16
Hey! Go Design Patterns 系列 第 16

技術 DAY 16:Abstract Factory Pattern,膜拜那個工廠之神吧!

工廠模式主要有三種不同的實作: Simple Factory Pattern Factory Method Pattern Abstract Factory...

鐵人賽 Software Development DAY 15
Hey! Go Design Patterns 系列 第 15

技術 DAY 15:Factory Method Pattern,把複雜的邏輯拆分至小工廠中

工廠模式主要有三種不同的實作: Simple Factory Pattern Factory Method Pattern Abstract Factory...

鐵人賽 Software Development DAY 14
Hey! Go Design Patterns 系列 第 14

技術 DAY 14:Simple Factory Pattern,把複雜細節隱藏的小工廠

工廠模式主要有三種不同的實作: Simple Factory Pattern Factory Method Pattern Abstract Factory...

鐵人賽 自我挑戰組 DAY 17
後端工程師與圖的修練 系列 第 17

技術 有限狀態過程 Finite State Process

有限狀態過程 (FSP, Finite State Process) 是有限狀態機的一種表達方式,本篇文章提及關於 Concurrency 透過 FSP 建模的...

鐵人賽 Software Development DAY 12
Hey! Go Design Patterns 系列 第 12

技術 DAY 12:Concurrency Patterns 融會貫通+Graceful Shutdown,正確關閉各個宇宙的次元門

前 11 天已經將常見的 concurrency patterns 介紹完畢,今天我們要介紹的不是 patterns,而是在實務使用 concurrency p...

鐵人賽 Modern Web DAY 11
JavaScript Easy Go! 系列 第 11

技術 #11 Web Crawler 4

今天,來優化爬蟲的速度。 調查問題成因 回顧一下,我們的程式執行了以下步驟: 下載網頁 解析網頁 合併數據 儲存數據 我們先來記錄一下各步驟執行的時間。 /...

鐵人賽 Software Development DAY 11
Hey! Go Design Patterns 系列 第 11

技術 DAY 11:Thread-Specific Storage Pattern,高併發的多重宇宙空間

什麼是 Thread-Specific Storage Pattern? 為每個 goroutine 擁有自己的儲存空間,供不同的情境識別與使用 舉例來說,...

鐵人賽 Software Development DAY 10
Hey! Go Design Patterns 系列 第 10

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

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

鐵人賽 Software Development DAY 9
Hey! Go Design Patterns 系列 第 9

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

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

鐵人賽 Software Development DAY 8
Hey! Go Design Patterns 系列 第 8

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

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

鐵人賽 Software Development DAY 7
Hey! Go Design Patterns 系列 第 7

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

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

鐵人賽 Software Development DAY 6
Hey! Go Design Patterns 系列 第 6

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

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

鐵人賽 Software Development DAY 5
Hey! Go Design Patterns 系列 第 5

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

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