一起幫忙解決難題,拯救IT 人的一天

文章推薦指數: 80 %
投票人數:10人

Go Design Patterns. Hey! Go Design Patterns 系列第1 篇. 髒桶子York Lin. 3 個月前‧ 190 瀏覽. 2. 大家好,本系列文章探討經典Design Patterns 在現代語言Golang 的 ... 2021iThome鐵人賽 DAY 1 2 SoftwareDevelopment Hey!GoDesignPatterns系列第 1篇 DAY1:Hey!GoDesignPatterns 13th鐵人賽 golang designpattern concurrency software 髒桶子YorkLin 2021-09-1423:58:24208瀏覽 大家好,本系列文章探討經典DesignPatterns在現代語言Golang的演變。

雖然小弟是一位還在學習的小小碼農,但希望文章能夠以相對淺顯不高深的角度,讓各位對DesignPatterns更有感觸,也歡迎交流討論,謝謝~ 什麼是DesignPatterns? DesignPatterns是一種「經驗集成」。

ErichGamma、RichardHelm、RalphJohnson、JohnVlissides大師們將過往許多問題解決的實作方案整理,進而出了DesignPatterns:ElementsofReusableObject-OrientedSoftware一書,裡頭統整了23種Patterns。

除了此23種經典Patterns,在Web的世界由於對高併發(concurrency)需求相當高,也衍伸出了ConcurrencyPatterns,我選定圖解Java多線程設計模式來探討,裡頭有約10種patterns,來確保大量的併發不產生racecondition、deadlock等問題。

探討資料 書-Go語言並發之道 書-圖解Java多線程設計模式 良葛格大大-非關語言:設計模式 mohuishou大大-Go设计模式 Ressmix大大-透彻理解Java并发编程 lotusirous大大-go-concurrency-patterns 小弟會將這些資料內化了解,統整成Golang系列的文章。

大家可能會有些好奇,為什麼Golang參考了那麼多Java的文章,主要是文章開頭說的,DesignPatterns是解決問題的經驗集成,這些經典的問題在Java時代即存在,那面對這些問題現代語言Golang是怎麼設計的呢?是否使一些問題更易於解決?如良葛格大大-設計模式不死?一文中所說「我們真正該做的,是在傳達經典設計模式之後,多探討一些結合現代風格的實作」。

由於Patterns的寫法寫起來是都相似的,所以文章中有些Code的寫法幾乎與探討資料相同,會在相似的Code中標注來源,感謝。

(本系列對良葛格大大的文章有著大量的參考,受益良多,也很推薦大家看看大大的部落格!) 文章目錄 在此列出這次鐵人每天撰寫的目錄,也給自己一個目標讓自己不迷航XD。

由於對於高併發興趣挺大所以會先以ConcurrencyPatterns開始,再介紹經典DesignPatterns。

並且會把相關的Code放在此Github-go-design-patterns。

Concurrency併發模式:如何讓程式高併發,並足夠安全,不產生racecondition、deadlock等問題 DAY2:SingleThreadedExecutionPattern,門就只有一個大家好好排隊啊~ DAY3:Read-Write-LockPattern,三人成虎,一人打虎! DAY4:GuardedSuspensionPattern,你不會死的,因為我會保護你 DAY5:Thread-Per-MessagePattern,預備...發射! DAY6:FeaturePattern,我把未來託付給你了! DAY7:Fan-OutFan-InPattern,看吧世界!這就是多人解決的力量! DAY8:ProducerConsumerPattern,點菜了,三份穿褲子的豬,一盤熱空氣,把牛變成鱒魚 DAY9:WorkerPoolPattern,就。

很。

Pool。

DAY10:Two-phaseTerminationPattern,我就跟你說不要亂拔電源! DAY11:Thread-SpecificStoragePattern,高併發的多重宇宙空間 DAY12:ConcurrencyPatterns融會貫通+GracefulShutdown,正確關閉各個宇宙的次元門 Creational建立模式:如何有效的生產與管理物件 AbstractFactory Builder FactoryMethod Prototype Singleton Structural結構模式:如何設計出低耦合的物件關係 Adapter Bridge Composite Decorator Facade Flyweight Proxy Behavioral行為模式:如何讓物件互動的更彈性、有效率,職責更清晰 ChainofResponsibility Command Interpreter Iterator Mediator Memento Observer State Strategy TemplateMethodbehavior. Visitor 留言 追蹤 檢舉 下一篇 DAY2:SingleThreadedExecutionPattern,門就只有一個大家好好排隊啊~ 系列文 Hey!GoDesignPatterns 共30篇 目錄 RSS系列文 訂閱系列文 18人訂閱 26 DAY26:ProxyPattern,讓代理人操作實際的物件 27 DAY27:ChainofResponsibility,將實作透過串串樂串起來 28 DAY28:CommandPattern,將動作已指令一個一個完成 29 DAY29:IteratorPattern,迭代各種不同的物件 30 DAY30:StrategyPattern,選定不同的策略來執行 完整目錄 尚未有邦友留言 立即登入留言 iT邦幫忙鐵人賽 參賽組數 1087組 團體組數 52組 累計文章數 20470篇 完賽人數 572人 鐵人賽最新文章 gotodie?那個goto到底能不能用啊? 2021/12/12更新 予焦啦!一夢終須醒...... 盤點清查與檢測掃描-資通安全健診 [13th][Day23]httpresponseheader(下) [13th][Day22]httpresponseheader(上) [13th][Day21]golangcontext 股票怎麼選?掌握這原則,你也能找到強勢股 Gitpush 盤點清查與檢測掃描-安全性檢測 前往鐵人賽 技術推廣專區 [Day2]抓取每日收盤價 [Day1]基本工具安裝 利用python取得永豐銀行API的Nonce [Day03]tinyML開發板介紹 永豐金融API測試員 [Day01]在享受tinyML這道美食之前 [Day3]使用ta-lib製作指標 [Day4]函數打包與買進持有報酬率試算 計算API所需要的參數:HashID 計算API所需要的參數:IV 前往鐵人賽 熱門問題 公司想要客製化一套ERP系統該選擇軟體開發?套裝系統?還是自行設立部門? 軟體工程師會被監控嗎 我有一個客戶中了mljx病毒勒索950美金我免費轉讓有人要接嗎? 訂房網站DB架構 (以解決)請問GMAIL群組.假如公司之前有業務群[email protected].有新職員收不到這個.如何把新業務加入 加班提醒視窗 想找PDF編輯工具,Adobe太貴了,請問還有其他推薦的替代方案嗎? 家中的網路配置 切割vlan網段方式 【已解決】如何安裝舊版本的VS2019 IT邦幫忙 站方公告 【2021iThome鐵人賽】登登登!究竟獎落誰家,2021iThome鐵人賽得獎名單正式揭曉 熱門tag 看更多 13th鐵人賽 12th鐵人賽 11th鐵人賽 鐵人賽 2019鐵人賽 2018鐵人賽 javascript 2017鐵人賽 windows php python windowsserver linux c# 程式設計 資訊安全 css vue.js sql 分享 熱門回答 公司想要客製化一套ERP系統該選擇軟體開發?套裝系統?還是自行設立部門? 軟體工程師會被監控嗎 想找PDF編輯工具,Adobe太貴了,請問還有其他推薦的替代方案嗎? 家中的網路配置 (以解決)請問GMAIL群組.假如公司之前有業務群[email protected].有新職員收不到這個.如何把新業務加入 RedhatEnterpriselinux5.5安裝Oracle問題 MYSQL如何將欄位中的json陣列資料拆分出來 防火牆如何設定DenyPolicy,以提高資安機制? 請問目前php8版本的問題 切割vlan網段方式 熱門文章 予焦啦!一夢終須醒...... gotodie?那個goto到底能不能用啊? 盤點清查與檢測掃描-資通安全健診 再增加五隻狗勾 自己在家接收來自飛機的ADS-B訊號! 2021/12/12更新 第七隻狗勾 第九隻狗勾 第六隻狗勾 第八隻狗勾 一週點數排行 更多點數排行 海綿寶寶(antijava) ㊣浩瀚星空㊣(yoching) 居然解出來了(partyyaya) raytracy(raytracy) ccenjor(ccenjor) mathewkl(mathewkl) japhenchen(japhenchen) 純真的人(jer5173) 小山丘(a243318490) fillano(fillano) × At 輸入對方的帳號或暱稱 Loading 找不到結果。

標記 {{result.label}} {{result.account}} 關閉



請為這篇文章評分?