Go 語言 fsm 源碼解讀,這一次讓你徹底學會有限狀態機
我在文章《在 Go 中如何使用有限狀態機優雅解決程序中狀態轉換問題》中講解了有限狀態機的概念,並介紹了 Go 中有限狀態機 fsm 包的使用。本篇文章,我將更進一步,直接通過解讀源碼的方式,讓你深刻理解 fsm 是如何實現的,這一次你將徹底掌握有限狀態機。源碼解讀廢話不多說,我們直接上代碼。結構體首先 fsm 包定義了一個結構體 FSM 用來表示狀態機。 https://github.com/l ⌘ Read more
Go 語言 fsm 源碼解讀,這一次讓你徹底學會有限狀態機
我在文章《在 Go 中如何使用有限狀態機優雅解決程序中狀態轉換問題》中講解了有限狀態機的概念,並介紹了 Go 中有限狀態機 fsm 包的使用。本篇文章,我將更進一步,直接通過解讀源碼的方式,讓你深刻理解 fsm 是如何實現的,這一次你將徹底掌握有限狀態機。源碼解讀廢話不多說,我們直接上代碼。結構體首先 fsm 包定義了一個結構體 FSM 用來表示狀態機。 https://github.com/l ⌘ Read more
Harpoom: of course the Apple Network Server can be hacked into running Doom
Of course you can run Doom on a $10,000+ Apple server running IBM AIX. Of course you can. Well, you can now. Now, let’s go ahead and get the grumbling out of the way. No, the ANS is not running Linux or NetBSD. No, this is not a backport of NCommander’s AIX Doom, because that runs on AIX 4.3. The Apple Network Server could run no version of AIX later than 4.1.5 and there are substan … ⌘ Read more
golang 每日一庫之 bsm-redislock
bsm/redislock 是一個用於 在 Go 語言中實現基於 Redis 的分佈式鎖(distributed lock) 的開源庫,由 bsm 組織開發和維護。它實現了基於 Redis 的 SET NX PX 命令模式的分佈式鎖,兼容 Redlock 算法的核心思想,但更簡單和輕量。簡介–基於 Redis 單實例實現分佈式鎖 遵循 Redis 官方推薦的 SET resource-na ⌘ Read more
golang 每日一庫之 bsm-redislock
bsm/redislock 是一個用於 在 Go 語言中實現基於 Redis 的分佈式鎖(distributed lock) 的開源庫,由 bsm 組織開發和維護。它實現了基於 Redis 的 SET NX PX 命令模式的分佈式鎖,兼容 Redlock 算法的核心思想,但更簡單和輕量。簡介–基於 Redis 單實例實現分佈式鎖 遵循 Redis 官方推薦的 SET resource-na ⌘ Read more
go 實現 - 性能逆天又免費的 IoT 開發神器 —
它解決了什麼痛點? 物聯網的開發往往讓人抓狂——設備協議不兼容、數據格式亂七八糟、傳輸不穩定,還得擔心安全問題和擴展性。Magistrala IoT 平臺正是以此爲背景,爲開發者打造了一個安全、高效、兼容性強且高度擴展的免費開源平臺,讓設備溝通、數據管理變得簡單可靠,從而輕鬆實現規模化部署。Magistrala IoT 是什麼? Magistrala IoT(由 Abstract Machin ⌘ Read more
go 實現 - 性能逆天又免費的 IoT 開發神器 —
它解決了什麼痛點? 物聯網的開發往往讓人抓狂——設備協議不兼容、數據格式亂七八糟、傳輸不穩定,還得擔心安全問題和擴展性。Magistrala IoT 平臺正是以此爲背景,爲開發者打造了一個安全、高效、兼容性強且高度擴展的免費開源平臺,讓設備溝通、數據管理變得簡單可靠,從而輕鬆實現規模化部署。Magistrala IoT 是什麼? Magistrala IoT(由 Abstract Machin ⌘ Read more
golang 每日一庫之 goflow
goflow 是一個基於 Go 語言的高性能、可擴展、分佈式的工作流框架。它允許開發者以編程方式將分佈式工作流定義爲任務的有向無環圖(DAG),並通過多個工作節點(Worker)均勻分配負載來執行任務。核心特性—-1. DAG 構建與任務編排goflow 允許用戶以 DAG 的形式定義工作流,每個節點代表一個任務,邊表示任務之間的依賴關係。這種結構使得任務的執行順序清晰,便於管理複雜的工作流程 ⌘ Read more
golang 每日一庫之 goflow
goflow 是一個基於 Go 語言的高性能、可擴展、分佈式的工作流框架。它允許開發者以編程方式將分佈式工作流定義爲任務的有向無環圖(DAG),並通過多個工作節點(Worker)均勻分配負載來執行任務。核心特性—-1. DAG 構建與任務編排goflow 允許用戶以 DAG 的形式定義工作流,每個節點代表一個任務,邊表示任務之間的依賴關係。這種結構使得任務的執行順序清晰,便於管理複雜的工作流程 ⌘ Read more
Happy one year post cancer diagnosis!! and going strong!! ⌘ Read more
TypeScript 推出原生 Go 編譯器,速度提升 10 倍
微軟 TypeScript 宣佈推出 TypeScript Native 原生預覽版,使用原生語言 Go 重寫編譯器,替代原有 Node.js 版的編譯器,編譯速性能高達到了 10 倍以上。TypeScript 相當於 JavaScript 的超集,加入了靜態類型檢查,大大提高了代碼安全和可維護性,現在很多桌面應用都是用 TypeScript 開發的,包括 VScode。隨着很多項目都是雲原生、A ⌘ Read more
golang 每日一庫之 go-workflow
go-workflow 是一個基於 Go 語言開發的超輕量級工作流引擎,設計靈感來源於 Java 的 Activiti,但進行了深度簡化和解耦,特別適用於微服務架構下的流程控制需求。特點微服務架構友好 :go-workflow 僅關注流程流轉邏輯,完全解耦用戶、組織等業務數據,便於與各類系統集成。 JSON 流程定義 :採用 JSON 數組替代傳統的 BPMN 模 ⌘ Read more
golang 每日一庫之 go-workflow
go-workflow 是一個基於 Go 語言開發的超輕量級工作流引擎,設計靈感來源於 Java 的 Activiti,但進行了深度簡化和解耦,特別適用於微服務架構下的流程控制需求。特點微服務架構友好 :go-workflow 僅關注流程流轉邏輯,完全解耦用戶、組織等業務數據,便於與各類系統集成。 JSON 流程定義 :採用 JSON 數組替代傳統的 BPMN 模 ⌘ Read more
@quark@ferengi.one Ah, I see. Hm, only problem is, IE 3 doesn’t seem to support this yet. 😅 Nah, I don’t think I’ll go down that road – seems like a slippery slope. 🤣
golang 每日一庫之 redsync
redsync 是一個用 Go 編寫的分佈式互斥鎖(Distributed Mutex)庫,基於 Redis 實現。其主要目標是在分佈式系統中爲多個進程或服務之間提供互斥訪問的機制,確保同一時間內只有一個客戶端可以訪問共享資源。核心功能—-redsync 實現了 Redlock 算法(由 Redis 創始人 antirez 提出),該算法旨在在分佈式環境中實現安全、健壯的鎖。基本原理使用多個獨 ⌘ Read more
golang 每日一庫之 redsync
redsync 是一個用 Go 編寫的分佈式互斥鎖(Distributed Mutex)庫,基於 Redis 實現。其主要目標是在分佈式系統中爲多個進程或服務之間提供互斥訪問的機制,確保同一時間內只有一個客戶端可以訪問共享資源。核心功能—-redsync 實現了 Redlock 算法(由 Redis 創始人 antirez 提出),該算法旨在在分佈式環境中實現安全、健壯的鎖。基本原理使用多個獨 ⌘ Read more
Goreleaser: 快速創建 Golang 項目發佈頁面
原文鏈接: https://typonotes.com/posts/2025/05/19/goreleaser-release-app-in-github/項目可以通過 renovate-bot 進行以來變更管理, 當依賴內容變化後, 可以幫助我們創建 PR。https://github.com/tangxin/k8s-image-syncer/pullsgoreleaser 可以爲 go 項 ⌘ Read more
Goreleaser: 快速創建 Golang 項目發佈頁面
原文鏈接: https://typonotes.com/posts/2025/05/19/goreleaser-release-app-in-github/項目可以通過 renovate-bot 進行以來變更管理, 當依賴內容變化後, 可以幫助我們創建 PR。https://github.com/tangxin/k8s-image-syncer/pullsgoreleaser 可以爲 go 項 ⌘ Read more
在 Go 中如何使用有限狀態機優雅解決程序中狀態轉換問題
在編程中,有限狀態機(FSM)是管理複雜狀態流轉的優雅工具,其核心在於通過明確定義狀態、事件和轉換規則,將業務邏輯模塊化。本文將探討在 Go 中如何使用有限狀態機。有限狀態機在介紹有限狀態機之前,我們可以先來看一個示例程序: https://github.com/jianghushinian/blog-go-example/blob/main/fsm/main.gopackage mainimp ⌘ Read more
在 Go 中如何使用有限狀態機優雅解決程序中狀態轉換問題
在編程中,有限狀態機(FSM)是管理複雜狀態流轉的優雅工具,其核心在於通過明確定義狀態、事件和轉換規則,將業務邏輯模塊化。本文將探討在 Go 中如何使用有限狀態機。有限狀態機在介紹有限狀態機之前,我們可以先來看一個示例程序: https://github.com/jianghushinian/blog-go-example/blob/main/fsm/main.gopackage mainimp ⌘ Read more
prologic@JamessMacStudio
Sun May 25 21:44:41
~/tmp/neurog
(main) 130
$ go build ./cmd/ttt/... && ./ttt
Generation 27 | Fitness: 0.486111 | Nodes: 44 | Conns: 82
… experimenting with building and training a tic-tac-toe game, which evolves a. neural net that learn to paly the game against the best evolved champions 😅
10 Games Milked for All Their Worth
Sticking with what works is nothing new, especially in gaming. New stories, characters, and mechanics are increasingly rare. Long development times and ballooning budgets only compound the issue, as studios must take a larger gamble with every project. Why take that risk when going with a guaranteed success is safer? That mindset prompts developers to […]
The post [10 Games Milked for All Their Worth](https://listverse.com/2025/05/25/10-games-milked-for-all-th … ⌘ Read more
@prologic@twtxt.net I remember going through your “introduction to Golang”, I don’t remember the URL, but I vividly remember going through it, and I was lost at chapter one. So, about that “mastering” the core in hours, “I don’t believe you.” (insert I don’t believe you meme animated GIF here). LOL.
Ultimately, Go sits in the sweet spot on the complexity vs performance chart:
- Minimal syntax & concepts → low learning curve
- Compiled speed → high throughput
- Built-in CSP concurrency → scalable by default
See Rob Pyke’s presentation on Expressiveness of Go
One of the nicest things about Go is the language itself, comparing Go to other popular languages in terms of the complexity to learn to be proficient in:
- Go:
25keywords (Stack Overflow); CSP-style concurrency (goroutines & channels)
- Python 2:
30keywords (TutorialsPoint); GIL-bound threads & multiprocessing (Wikipedia)
- Python 3:
35keywords (Initial Commit); GIL-bound threads,asyncio& multiprocessing (Wikipedia, DEV Community)
- Java:
50keywords (Stack Overflow); threads +java.util.concurrent(Wikipedia)
- C++:
82keywords (Stack Overflow);std::thread, atomics & futures (en.cppreference.com)
- JavaScript:
38keywords (Stack Overflow); single-threaded event loop &async/await, Web Workers (Wikipedia)
- Ruby:
42keywords (Stack Overflow); GIL-bound threads (MRI), fibers & processes (Wikipedia)
@bender@twtxt.net Here’s a short-list:
- Simple, minimal syntax—master the core in hours, not months.
- CSP-style concurrency (goroutines & channels)—safe, scalable parallelism.
- Blazing-fast compiler & single-binary deploys—zero runtime dependencies.
- Rich stdlib & built-in tooling (gofmt, go test, modules).
- No heavy frameworks or hidden magic—unlike Java/C++/Python overhead.
@kat@yarn.girlonthemoon.xyz I don’t like Golang much either, but I am not a programmer. This little site, Go by example might explain a thing or two.
@movq@www.uninformativ.de i feel like when i read go code i’m reading some algebra shit where every part is 1-5 letters long and then there’s weird symbols like := and it’s just infinitely harder for me to parse and infer meaning from lol. it’s such a me problem
i wish it was realistic for me to learn golang but every single time i try to comprehend any go code i’m like What the fuck am i looking at. why is all of this so short and condensed GIVE ME VERBOSE CODE
Goodbye Koeka, I’m going to miss you little girl😭. ?-04-2007 - 23-05-2025 ⌘ Read more
This is one of my attempts: 
$ go build ./cmd/xor/... && ./xor
Generation 95 | Fitness: 0.999964 | Nodes: 9 | Conns: 19
Target reached!
Best network performance:
[0 0] → got=0 exp=0 (raw=0.000) ✅
[0 1] → got=1 exp=1 (raw=0.990) ✅
[1 0] → got=1 exp=1 (raw=0.716) ✅
[1 1] → got=0 exp=0 (raw=0.045) ✅
Overall accuracy: 100.0%
Wrote best.dot – render with `dot -Tpng best.dot -o best.png`
一文了解 JWT Token
在實際開發中,使用令牌認證,還有其他很多好處。掌握令牌認證的原理和實現方法,是 Go 語言開發者,必備的核心技能之一。由於 miniblog 使用 JWT Token 進行身份認證,爲了降低學習難度併爲後續代碼實現奠定基礎,本節課將介紹 JWT 的核心內容。JWT 認證流程——–學習 JWT 的最佳方式是通過其認證流程理解其原理。認證流程如下圖所示。上圖展示了 JWT 的認證流程,具體流 ⌘ Read more
API 設計的 “Go 境界”:Go 團隊設計 MCP SDK 過程中的取捨與思考
大家好,我是 Tony Bai。作爲開發者,我們每天都在與 API 打交道——調用它們,設計它們,有時也會爲糟糕的 API 設計而頭痛不已。一個優秀的 API,如同一位技藝精湛的嚮導,能清晰、高效地引領我們通往復雜功能的彼岸;而一個蹩腳的 API,則可能像一座佈滿陷阱的迷宮,讓我們步履維艱。那麼,在 Go 語言的世界裏,一個 “好” 的 API 應該是什麼樣子的?它應該如何體現 Go 語言簡潔、高 ⌘ Read more
API 設計的 “Go 境界”:Go 團隊設計 MCP SDK 過程中的取捨與思考
大家好,我是 Tony Bai。作爲開發者,我們每天都在與 API 打交道——調用它們,設計它們,有時也會爲糟糕的 API 設計而頭痛不已。一個優秀的 API,如同一位技藝精湛的嚮導,能清晰、高效地引領我們通往復雜功能的彼岸;而一個蹩腳的 API,則可能像一座佈滿陷阱的迷宮,讓我們步履維艱。那麼,在 Go 語言的世界裏,一個 “好” 的 API 應該是什麼樣子的?它應該如何體現 Go 語言簡潔、高 ⌘ Read more
自制 ResponseWriter:Go 安全 HTTP
Go 的 http.ResponseWriter 會直接向套接字(socket)寫入數據,這可能會導致一些隱蔽的 bug,例如忘記設置狀態碼,或是在爲時已晚的時候意外修改了響應頭(header)。本文將展示如何通過包裝 ResponseWriter 來強制執行自定義規則,例如要求 WriteHeader() 以及在出錯後阻止寫入操作,從而讓你的處理器(handler)更安全、也更易於梳理邏輯。我用 ⌘ Read more
自制 ResponseWriter:Go 安全 HTTP
Go 的 http.ResponseWriter 會直接向套接字(socket)寫入數據,這可能會導致一些隱蔽的 bug,例如忘記設置狀態碼,或是在爲時已晚的時候意外修改了響應頭(header)。本文將展示如何通過包裝 ResponseWriter 來強制執行自定義規則,例如要求 WriteHeader() 以及在出錯後阻止寫入操作,從而讓你的處理器(handler)更安全、也更易於梳理邏輯。我用 ⌘ Read more
Go 語言實現優雅關機和重啓的示例很詳細
在生產環境中,服務的更新和維護是不可避免的。粗暴地終止服務會導致:正在處理的請求被中斷 數據庫事務未完成 緩存數據丟失 客戶端連接異常 本文將深入探討如何使用 Go 語言實現:優雅關機 :等待現有請求完成後再關閉服務 優雅重啓 :無縫切換新舊進程,實現零停機更新 優雅關機實現核心機制完整實現代碼package mainimport(” ⌘ Read more
Go 語言實現優雅關機和重啓的示例很詳細
在生產環境中,服務的更新和維護是不可避免的。粗暴地終止服務會導致:正在處理的請求被中斷 數據庫事務未完成 緩存數據丟失 客戶端連接異常 本文將深入探討如何使用 Go 語言實現:優雅關機 :等待現有請求完成後再關閉服務 優雅重啓 :無縫切換新舊進程,實現零停機更新 優雅關機實現核心機制完整實現代碼package mainimport(” ⌘ Read more
Gin 服務性能提升的最佳實踐
Gin 框架是在 Go 中構建網絡服務的首選。隨着應用程序複雜性和流量的增加,性能成爲不能忽視的因素。本文將介紹一系列使用 Gin 構建服務的有效技巧,涵蓋從路由優化到內存重用、請求和響應優化、異步處理以及性能分析,幫助你創建更穩定高效的 Web 服務。路由註冊優化:避免循環引用————-Gin 的路由器使用基於樹的高效路由實現,可以快速匹配請求路徑。但是,如果路由註冊不當,例如嵌 ⌘ Read more
Gin 服務性能提升的最佳實踐
Gin 框架是在 Go 中構建網絡服務的首選。隨着應用程序複雜性和流量的增加,性能成爲不能忽視的因素。本文將介紹一系列使用 Gin 構建服務的有效技巧,涵蓋從路由優化到內存重用、請求和響應優化、異步處理以及性能分析,幫助你創建更穩定高效的 Web 服務。路由註冊優化:避免循環引用————-Gin 的路由器使用基於樹的高效路由實現,可以快速匹配請求路徑。但是,如果路由註冊不當,例如嵌 ⌘ Read more
Streamlining application deployment on Kubernetes at RBC Capital Markets: A journey with FluxCD
As we learned from the first blog in our series, RBC has taken a holistic approach on our cloud journey, as it enables technologies across our enterprise. In today’s post, we’re going to share how Capital Markets… ⌘ Read more
代碼覆蓋率新玩法:Russ Cox 教你用差異化分析加速 Go 調試
大家好,我是 Tony Bai。調試,尤其是調試並非自己編寫的代碼,往往是軟件開發中最耗時的環節之一。面對一個失敗的測試用例和龐大的代碼庫,如何快速有效地縮小問題範圍?Go 團隊的前技術負責人 Russ Cox 近期分享了一個雖然古老但極其有效的調試技術——差異化覆蓋率 (Differential Coverage)。該技術通過比較成功和失敗測試用例的代碼覆蓋率,巧妙地 “高亮” 出最可能包含 B ⌘ Read more
代碼覆蓋率新玩法:Russ Cox 教你用差異化分析加速 Go 調試
大家好,我是 Tony Bai。調試,尤其是調試並非自己編寫的代碼,往往是軟件開發中最耗時的環節之一。面對一個失敗的測試用例和龐大的代碼庫,如何快速有效地縮小問題範圍?Go 團隊的前技術負責人 Russ Cox 近期分享了一個雖然古老但極其有效的調試技術——差異化覆蓋率 (Differential Coverage)。該技術通過比較成功和失敗測試用例的代碼覆蓋率,巧妙地 “高亮” 出最可能包含 B ⌘ Read more
Jwno: a highly customisable tiling WM for Windows built with Janet
Jwno is a highly customizable tiling window manager for Windows 10/11, built with Janet and ❤️. It brings to your desktop magical parentheses power, which, I assure you, is not suspicious at all, and totally controllable. ↫ Jwno documentation Yes, it’s a Lisp system, so open your bag of spare parentheses and start configuring and customising it, because you’re going to need it if you want to use Jwno … ⌘ Read more
@bender@twtxt.net @prologic@twtxt.net Jokes aside, I don’t think that’s the right approach either. We had spell checkers, since I can remember, as well as other tools, like the smart image select, used mostly to remove backgrounds. These are tools, that just simplify the process of either opening up a dictionary and looking up a word, you can’t remember the spelling of, or the process of placing a billion little dots around the part of an image you want to select - none of these are creative or enjoyable tasks, we already had tools for them, decades before AI. I don’t think we need to go back to cave paintings, to be free of AIs influence on our creative work.