yue-fang-readfog-go 

feeds.twtxt.net

No description provided.

Golang 中的隊列實戰:從入門到精通,打造你的併發利器
在後端開發中,隊列(Queue) 是一種常見又強大的數據結構,它就像排隊買奶茶一樣,先進先出(FIFO)的原則幫助我們有序處理任務。在 Golang 這個以併發著稱的語言中,隊列更是扮演了關鍵角色。今天我們就用通俗易懂的方式,帶你徹底掌握 Golang 中的隊列實現方式,以及如何在實際項目中運用它! 一、什麼是隊列?爲什麼需要它?—————隊列是一種先入先出的數據結構。想象一下 ⌘ Read more

⤋ Read More

用好 pprof,徹底搞懂 Go 併發性能瓶頸優化
在日常的 Go 開發中,性能問題常常令人頭疼。尤其是併發場景中,CPU 飆高、響應變慢,明明用上了 goroutine,卻沒得到預期的性能提升。這時候該怎麼辦?本文將手把手帶你用 pprof 工具定位性能瓶頸,找出根源並完成優化。通俗易懂,純實戰乾貨!一、什麼是 pprof?pprof 是 Go 自帶的性能分析工具,可以用來查看 CPU、內存、goroutine 等的運行情況。它的核心能力是生成程 ⌘ Read more

⤋ Read More

實用指南:使用 Go 語言實現分佈式鎖
分佈式鎖,作爲現代後端架構中維持資源一致性和避免混亂的關鍵基石,在電商搶購、任務調度和分佈式事務等場景中扮演 “隱形英雄” 的角色。當多個節點需要協同訪問某一資源時,分佈式鎖正如交通信號燈,維持秩序、保證一致。本文面向已具備 Go 語言基礎、熟練掌握 goroutine 和 sync.Mutex,但對分佈式系統仍感迷惑的開發者。本文將由淺入深,帶領大家瞭解分佈式鎖的原理,並用 Go 實現高效可靠的 ⌘ Read more

⤋ Read More

如何優雅的使用 GORM 進行分頁?
GORM[1] 是 Go 中使用最廣泛的 ORM 包,但儘管如此,它缺少一些 “基本” 功能。其中一個缺失的功能就是分頁(Pagination)。分頁是管理應用程序中大型數據集的一個重要功能。它是一種限制和顯示數據庫中部分總數據的方法,這樣就不需要一次性檢索整個表,這樣可以極大的提高接口性能,降低超時失敗的概率。雖然 GORM 提供了關於如何使用 scopes[2] 進行分頁的文檔,但在靈活性和可 ⌘ Read more

⤋ Read More

Go 無侵入實現讀寫分離
在高併發的現代應用中,數據庫往往成爲系統的瓶頸。讀寫分離作爲一種有效的數據庫優化策略,能夠顯著提升系統的性能和可用性。本文將深入講解讀寫分離的核心概念、實現原理,並通過 go-zero 框架提供詳細的實戰示例。讀寫分離的使用場景和必要性—————-1.1 什麼是讀寫分離讀寫分離是一種數據庫架構模式,它將數據庫操作分爲兩類:• 寫操作:INSERT、UPDATE、DELETE 等 ⌘ Read more

⤋ Read More

Go 服務註冊與發現筆記
概述–朋友們好啊,這篇筆記我們圍繞 Go 來記錄一下服務註冊與發現概述與流程,如註冊中心的機制 (心跳、時間間隔)、gRPC 接入註冊中心 (resolver 實現、etcd 租約、消費者服務發現等等),以etcd作爲註冊中心將上篇userservice grpc 服務註冊、自動續約,以 gin 作爲客戶端調用服務。服務註冊與發現概述———在分佈式架構中爲什麼需要服務註冊與發現?服務 ⌘ Read more

⤋ Read More

告別混亂的 init–:Go 語言中更清晰的初始化策略
如何駕馭啓動複雜性並編寫更可測試、更顯式的 Go 代碼。相信許多 Go 開發者都曾遇到過這樣的場景:加入一個新項目,克隆代碼庫,開始探索代碼結構。打開一個包,映入眼簾的便是那個熟悉卻時而令人頭痛的函數:init()。緊接着,在另一個包裏又發現一個。再打開一個,赫然又是一個。很快,你便意識到,應用程序的核心啓動邏輯——數據庫連接、配置加載、服務註冊——分散在多個隱式的 init() 函數中。你不由得 ⌘ Read more

⤋ Read More

golang 每日一庫之磁盤鍵值存儲 diskv
diskv你有沒有想過,在某些時候,內存不是萬能的——比如你要存的東西多得像個大水庫,又或者你就想放心大膽地關掉程序然後下班回家。而這時你需要一個靠譜的、基於磁盤的鍵值存儲庫。所以你用 sqlite 嗎?筆者第一想法就是 sqlite.來,認識一下主角:diskv,一個簡單、強大、零依賴、沒有數據庫暴脾氣的 Go 鍵值存儲庫。它的核心理念很簡單:用磁盤做字典,鍵是路徑,值是文件內容。設計哲學— ⌘ Read more

⤋ Read More

go-nanoid:Go 短 ID 生成庫
“An amazing level of senseless perfectionism, which is simply impossible not to respect.“go-nanoid (github.com/matoous/go-nanoid) 是 JavaScript 知名庫 ai/nanoid (github.com/ai/nanoid) 的 Go 語言實現版本。原版 nanoi ⌘ Read more

⤋ Read More

Golang 的多任務調度系統:從 BaseJob 到 ProductJob 的 “泛型” 與 “繼承” 實現
突破 Go 語言限制! 揭祕如何用組合 + 接口實現類繼承效果,打造高擴展任務調度系統。以 BaseJob 泛型基類和 ProductJob 實戰爲例,深度解析:配置泛型化設計 方法重寫技巧 運行時多態實現 讓您的 Go 應用輕鬆處理百萬級定時任務!💪🚀 基礎架構:BaseJob 的 “泛型” 實現————————-在 lib/basejob.g ⌘ Read more

⤋ Read More

《Go 語言精進之路》筆記
最近看完了這本書,又想撿起來寫文這個輸出型的愛好,所以寫篇筆記整理一下閱讀這本書中的查漏補缺。目錄for range 的坑 & 閉坑方式 & go1.22 規避 defer 使用中的注意點 函數作爲一等公民的經典應用 變長參數函數在對象初始化時的妙用 接口在單測中的應用 for range 的坑 & 閉坑方式 & go1.22 規避for range 有兩個常見的坑, ⌘ Read more

⤋ Read More

終極真相:Go 中的參數傳遞
在 Go 社區常能聽到 “按值傳遞”“按引用傳遞” 兩種說法:基本類型、數組、結構體被稱爲 “按值”; 指針、切片、映射、通道則被稱爲 “按引用”。 然而,上述分類容易造成誤解。在 Go 語言中,一切函數實參都以 值 的形式被複制傳遞。區別僅在於:複製的是 “完整數據”(整數、數組等); 複製的是 “描述符” 或指針(切片、映射、字符串等)。 理解這一點後,再看各類示例便能 ⌘ Read more

⤋ Read More

Golang 異步日誌實戰:通道 - 中間件的完美組合
本文深入探討在 Golang Web 開發中如何利用通道和中間件實現高效異步日誌系統。通過 GRPC 和 Gin 中間件實現,結合項目實例代碼,展示如何在不阻塞主流程的情況下完成日誌記錄,大幅提升系統性能。一、異步日誌的核心思想在 Web 應用中,日誌記錄是必不可少的功能,但同步日誌會阻塞請求處理流程。異步日誌通過通道 (channel) 實現生產者 - 消費者模式:生產者 :中間件 ⌘ Read more

⤋ Read More

Go 加密和解密:實踐指南
無論您是在構建 Web 應用、CLI 工具還是後端服務,加密和解密都是保護數據安全的核心。在 Go 語言中,標準庫和外部包使得實現安全加密變得簡單直接,無需重新發明輪子。本指南深入探討了 Go 中加密和解密的工作原理,並提供了可以編譯運行的實際示例。我們將涵蓋從對稱加密到非對稱加密的基礎知識,並提供清晰的代碼和解釋。爲什麼加密在 Go 中很重要————–加密通過將敏感數據(如用戶 ⌘ Read more

⤋ Read More

Gin 框架深度分析
Gin 是一個採用 Go 語言實現的 HTTP web 框架,提供了類似 Martini 的 API,但是性能遠強於 Martini,峯值性能是 Martini 的 40 倍。如果我們的項目需要高性能,毫無疑問採用 Gin。Gin 官網列舉了該項目的 8 個如下關鍵特性:高性能 中間件支持 防崩潰機制 JSON 校驗 路由分組 錯誤管理 內容渲染 示例 D ⌘ Read more

⤋ Read More

數據流的藝術:Go 語言中的 io-Pipe
在 Go 語言中,使用 io.Pipe() 來流式處理數據可以避免將所有數據一次性讀入內存。io.Reader 和 io.Writer 接口堪稱 Go 語言的藝術品,相關討論已有很多。它們簡潔而強大——正如 Go 本身。本文介紹 Go 標準庫中另一個同樣簡潔強大的存在:io.Pipe。// src/io/pipe.gofunc Pipe() (PipeReader, PipeWriter) { p ⌘ Read more

⤋ Read More

Go 語言開發技巧合輯,全網整理最全的一篇
一、Go 語言字符串切片排序要對 Go 語言中的字符串切片進行排序,可以使用 sort 包中的 Strings 函數。以下是對一個字符串切片進行升序排序的示例代碼:package mainimport (    ”fmt”    ”sort”)func main() {    fruits := []string{“banana”, ”apple”, ”orange”, ”pear”}    so ⌘ Read more

⤋ Read More

Go 開發實時推送太難?試試 Sponge SSE,一鍵搞定!
各位 Gopher 們!你們是否曾遇到過這樣的場景:• 你正在開發一個後臺監控系統,想讓 CPU 使用率、內存佔用這些數據實時展現在前端,但只能讓前端小哥每隔幾秒就發一次請求,把服務器累得夠嗆? • 你想做一個類似微博、Twitter 的信息流,當有新消息時,能立刻 “叮” 一下推送到用戶頁面上,而不是等用戶抓耳撓腮地手動刷新? • 或者,你只是想簡單地通知用戶:“您的外賣已由【帥哥張 ⌘ Read more

⤋ Read More

上手 MCP 官方 Go SDK:一份面向實戰的入門指南
大家好,我是 Tony Bai。隨着大型語言模型(LLM)的能力邊界不斷擴展,“function calling”或 “tool use” 已成爲釋放其潛力的關鍵。MCP(Model Context Protocol)正是爲此而生,它定義了一套標準的、與模型無關的通信規範,使得任何應用都能以 “工具” 的形式被 LLM 調用。長期以來,mcp 官方都沒有發佈 go-sdk,Go 社區也一直在使用像 ⌘ Read more

⤋ Read More

golang 反射 new?
今天來聊一個在 Golang 裏新手容易踩坑但高級用法又很關鍵的點:反射 + reflect.New。看上去很底層,實際在做框架開發、泛型模擬、動態構造對象的時候,全靠它撐場子!我前段時間折騰一個插件系統(Go 寫的),要從字符串配置動態構造 struct 對象實例,就必須用 reflect.New。這塊調試了好一陣,今天把經驗和注意事項總結一下,走一波實戰向的乾貨分享。1)reflect.New ⌘ Read more

⤋ Read More

golang 每日一庫之 rqlite
rqlite 是一個基於 SQLite 的輕量級、分佈式關係數據庫,旨在提供高可用性和容錯能力。它是一個 將 SQLite 封裝爲分佈式系統的項目,用 Go 編寫,後端使用 Raft 共識算法實現多節點數據複製與一致性。地址–GitHub: https://github.com/rqlite/rqlite文檔: https://rqlite.io目標–SQLite 是一個嵌入式的、本地文件型數 ⌘ Read more

⤋ Read More

Go 開發者必知:結構體方法接收器的選擇藝術
在 Go 語言開發中,結構體方法的定義方式直接影響程序的行爲和性能。本文將深入探討值接收器和指針接收器的區別,幫助開發者做出明智的選擇。一、結構體基礎回顧package mainimport”fmt”type User struct{    Name  string    Email string}funcmain(){// 值類型實例化    u1 := User{“張三”,“zhang@exa ⌘ Read more

⤋ Read More

基於泛型的輕量級依賴注入庫 do
在 Go 語言的開發實踐中,我們經常需要處理各種依賴關係,例如,一個 service 層可能依賴一個或多個 repository 層。如何優雅地管理這些依賴,是我們在項目開發中需要重點關注的問題。一個好的依賴管理方案,可以顯著提高代碼的可讀性、可維護性和可測試性。今天,我們就來介紹一個 Go 語言生態中非常受歡迎的輕量級依賴注入庫:samber/do。它基於 Go 1.18+ 的泛型特性,實現了一 ⌘ Read more

⤋ Read More

使用 Go - Redis 構建高性能排名系統
構建排名系統(排行榜)在各類應用中都具有實用價值:無論是遊戲中的玩家排名、電商平臺的熱銷商品展示。構建這類系統需要高速的讀寫操作、精準的排序能力以及可擴展的後端支持。Redis 的有序集合(Sorted Sets)正是實現這一需求的理想數據結構。現在我們開始構建一個實時排名系統,滿足以下核心需求:分數越高排名越靠前;同分情況下先達到該分數的用戶排名更高。構建複合分數實際分數越高,排名越靠前。 ⌘ Read more

⤋ Read More

Go 圖形庫: github-com-fogleman-gg
簡介:什麼是 gggg 是由 Fogleman 開發的一個用 Go 編寫的 2D 圖形繪製庫,靈感來源於 Python 的 Cairo 和 Processing 項目。gg 旨在提供簡潔、直觀的 API,以實現圖像繪製、文本渲染、圖形組合等操作,適用於圖像處理、數據可視化、圖像合成等多種用途。適用場景包括:圖像處理(添加水印、標識等) 數據可視化(繪圖、圖表生成) 自定義圖像合成(如生 ⌘ Read more

⤋ Read More

Go 語言延遲初始化 -Lazy Initialization- 最佳實踐
簡介—–在有些資源初始化成本很高,甚至在某些代碼路徑未觸發根本沒有必要初始化,可以將對象的創建、配置等耗時操作推遲到真正需要使用時才執行。延遲初始化實現———-2.1 sync.Oncesync.Once 是 Go 標準庫提供的線程安全初始化工具,確保初始化代碼只執行一次:var (    resource MyResource  // 需要延遲初始化的資源    once ⌘ Read more

⤋ Read More

golang 每日一庫之參數校驗工具 go-tagexpr
go-tagexpr 是字節跳動開源的一款輕量級 Go 標籤解析與表達式求值引擎。我一般用來校驗參數。它的主要功能是支持通過結構體標籤(struct tag)定義表達式,然後在運行時動態解析這些表達式,實現靈活的數據校驗、默認值設置等功能。核心特性VzBq9U示例type User struct {    Name string json:“name” tagexpr:“len(name) 0 ⌘ Read more

⤋ Read More

5 分鐘搞定 Go 自定義結構體標籤
本文介紹瞭如何通過自定義結構體標籤實現對結構體字段值的自定義處理,並討論了該方法的優缺點。原文:Struct Tags in Go: Implementing Custom Tag Functionality[1]Go 的 struct 標籤提供了一種爲 struct 字段定義元數據的方法,允許開發人員指定在序列化或驗證等操作期間如何處理這些字段。一個常見用例是 json 標籤,告訴 Go 的 ⌘ Read more

⤋ Read More

Golong 語言如何實現遞歸?
*說到遞歸函數這個東西,別看名字高大上,真要在 Golang(Go 語言)裏寫,其實一不小心就把自己繞暈了,我當年第一次寫遞歸找文件目錄的時候,腦殼都轉麻了。但話說回來,只要你把幾個關鍵點弄清楚,其實寫起來挺爽的,甚至有點 “優雅”!這篇就從我實戰經驗出發,帶你搞懂 “在 Golang 裏怎麼寫遞歸函數”,順帶踩幾個坑出來,保你一看就會、馬上能寫!啥是遞歸?簡單說下一句話:遞歸就是函數自己調自己! ⌘ Read more

⤋ Read More

golang 每日一庫之 goplantuml
goplantuml 是一個用 Go 編寫的工具,能夠 自動將 Go 語言項目的結構生成 PlantUML 類圖(Class Diagram),適合用於 代碼可視化、架構審查、文檔編寫、團隊溝通** 等場景。項目地址—-GitHub 地址:https://github.com/jfeliu007/goplantuml概述–goplantuml 解析你的 Go 源碼,識別其中的:結構體(st ⌘ Read more

⤋ Read More

golang 每日一庫之 picfit
thoas/picfit 是一個用 Go 語言編寫的圖片處理服務器,主要用於 動態圖像裁剪、縮放、格式轉換和緩存 等功能。它適合用於圖片 CDN、圖像代理服務或網站中的動態圖片展示,尤其適合現代化網站、媒體服務、電子商務平臺等場景。項目地址—-GitHub: https://github.com/thoas/picfit優點–支持多種操作 :裁剪(crop)、縮放(resize ⌘ Read more

⤋ Read More

sync-Cond :無需通道的高效 Goroutine 信號傳遞
介紹–Go 語言的併發通常讓我們想到通道(channels),但還有另一個同步原語可能在某些場景下是:sync.Cond。。文章結束時,我們將看到一個簡單的自定義實現,理解真正的 sync.Cond 如何在底層工作,並知道何時在自己的項目中選擇它。爲什麼使用 sync.Cond?—————-大多數 Go 開發者本能地使用通道來協調 goroutine:發送值、等待結果等。然而 ⌘ Read more

⤋ Read More

Golang MVC 和 DDD 分層架構的詳細比較
MVC 和 DDD 是後端開發中兩種流行的分層架構概念。MVC(Model-View-Controller)是一種設計模式,主要用於分離用戶界面、業務邏輯和數據模型,以便更容易解耦和分層;而 DDD(Domain-Driven Design,領域驅動設計)是一種架構方法論,旨在通過構建業務領域模型來解決複雜系統中的設計和維護難題。在 Java 生態系統中,許多系統已經逐漸從 MVC 過渡到 DDD ⌘ Read more

⤋ Read More

告別接口緩慢:在 Go Gin 應用中一鍵啓用 Gzip 壓縮
在當今追求極致用戶體驗的互聯網時代,網站和應用的加載速度是至關重要的。如果你正在使用 Go 語言和 Gin 框架開發後端服務,並且遇到了數據包過大導致接口響應緩慢的問題,那麼 gin-contrib/gzip 這個庫絕對是你的救星!本文將介紹如何利用 github.com/gin-contrib/gzip 這個 Gin 官方擴展庫,輕鬆爲你的 Go Web 應用啓用 Gzip 壓縮功能,顯著提升接 ⌘ Read more

⤋ Read More

Go 語言反射揭祕:獲取 Tag 易如反掌,爲何 json 包卻視而不見?
從詭異現象說起:JSON 爲何忽略私有字段?type User struct{    ID    intjson:“id”// 正常導出    Name  stringjson:“name”// 正常導出    email stringjson:“email”// 私有字段,JSON無視!}funcmain(){    u := User{1,“Tom”,“tom@example.com”} ⌘ Read more

⤋ Read More

go-rag: 突破 Python 壟斷的 Golang RAG 系統
💡 項目概述https://github.com/wangle201210/go-rag 是基於 Golang 實現的企業級知識庫檢索增強生成系統,打破 RAG 領域 Python 一家獨大的局面。集成多知識庫管理、智能文檔解析、QA 優化、查詢重寫、多路召回、重排序、MCP 協議等核心功能,爲 Golang 開發者提供開箱即用的 RAG 解決方案。🎯 解決的核心痛點痛點一:語言生態侷限現有開源 ⌘ Read more

⤋ Read More

golang 每日一庫之 urfave-negroni
urfave/negroni 是一個輕量級的、可擴展的 Go 中間件庫,專爲構建 HTTP 服務而設計。它的核心理念是中間件棧(Middleware Stack),可以像洋蔥一樣一層層包裹處理請求,非常適合構建具有清晰請求生命週期的 Web 應用或 API。GitHub 地址:https://github.com/urfave/negroni特點–中間件機制清晰簡潔 :支持多箇中間 ⌘ Read more

⤋ Read More

Go 項目開發中,遷移數據庫最佳方案
數據庫遷移是構建和維護 Go 應用的重要環節。它能保持數據庫模式與你的代碼庫同步,處理更新,並確保你的應用在演進過程中始終可靠。選擇合適的遷移工具可以節省時間、減少錯誤,並使部署更加順暢。本文將深入探討適用於 Go 的最佳數據庫遷移工具,通過示例、對比和實用見解,幫助你爲項目挑選合適方案。我曾經歷過手動遷移的繁瑣與模式不匹配的混亂,因此會以易於理解的方式剖析每款工具的優勢、特點和使用場景。讓我們一 ⌘ Read more

⤋ Read More

golang 每日一庫之 Zinx
Zinx 是一個用 Go 語言編寫的輕量級、併發 TCP 服務器框架,旨在幫助初學者深入理解 TCP 服務端開發的核心架構,同時具有生產級特性的模塊化設計 。倉庫地址https://github.com/aceld/zinx設計理念學習導向 :源碼精簡,框架和教程同步開發,分版本迭代,一步步構建功能,降低學習門檻 。 生產適用 :模塊化、擴展性強,已被用於遊戲服務 ⌘ Read more

⤋ Read More

上下文取消鏈:摧毀我們支付系統的 bug
一個看似無害的 Go 語言特性如何引發級聯故障,導致了 110,000 美元的交易損失。警報響起時,我們的支付處理系統已經癱瘓。信用卡交易失敗、訂閱無法續訂、客服聊天窗口被憤怒的消息淹沒。一次常規部署演變成了我們兩年內最嚴重的生產事故。罪魁禍首?對 Go 語言上下文取消的細微誤解,它引發了一連串我從未預料到的反應。背景:一次 “簡單” 的優化三週前,我接到了優化支付處理流程的任務。系統每分鐘處理數 ⌘ Read more

⤋ Read More

Go 定時任務筆記
Go Timer,Ticker,Sleep———————time.Timertime.Timer 是一個單次的定時器,在指定時間後觸發一次後就不再重複。雖然說觸發後不會再次觸發,但資源不會自己就釋放了,需要調用Stop()方法來釋放資源否則還在內存中。在 Timer 結束後可以用Reset()方法重置計時器 (要在 Stop() 之後或未觸發時使用)。基於這種特性 Ti ⌘ Read more

⤋ Read More

Golang 裏普通 map 不用鎖,咋解決協程安全?
在 Go 語言開發中,map 是常用的數據結構,但原生 map 在併發讀寫時會導致 panic。這是因爲 Go 的設計哲學是 “顯式優於隱式”,不自動處理併發安全問題,需要開發者根據場景選擇合適的併發控制策略。本文將深入探討三種主流解決方案,並分析它們的適用場景和性能特點。方案一:官方推薦的 sync.Map基本用法sync.Map是 Go 標準庫提供的線程安全 map 實現,適合讀多寫少的場景: ⌘ Read more

⤋ Read More

在 Go 中爲什麼推薦使用空結構體作爲 Context 的 key
使用 Context 進行傳值我們知道 Context 主要有兩種用法,控制鏈路和安全傳值。在此我來演示下如何使用 Context 進行安全傳值:package mainimport (    ”context”    ”fmt”)const requestIdKey = ”request-id”func main() {    ctx := context.Background()    // ⌘ Read more

⤋ Read More

Go 項目該擁抱 Monorepo 嗎?Google 經驗、etcd 模式及白盒交付場景下的深度剖析
大家好,我是 Tony Bai。在 Go 語言的生態系統中,我們絕大多數時候接觸到的項目都是遵循 “一個代碼倉庫(Repo),一個 Go 模塊(Module)” 的模式。這種清晰、獨立的組織方式,在很多場景下都運作良好。然而,當我們放眼業界,特別是觀察像 Google 這樣的技術巨頭,或者深入研究 etcd 這類成功的開源項目時,會發現另一種代碼組織策略——Monorepo(單一代碼倉庫)——也在 ⌘ Read more

⤋ Read More

golang 每日一庫之 DDD 框架 freedo
Freedom:自由不是亂來,而是架構有道———————你是不是寫 Go 寫得挺開心的,直到有一天產品說: “這個業務流程以後會變、會拆、可能還會上天。”於是你開始發愁:怎麼寫纔不會三個月後改到哭? 怎麼解耦、怎麼擴展、怎麼不踩坑? 這時候,Freedom 躍馬而來,大喊一句: “用我!讓你寫得自由、改得瀟灑、跑得像風!”什麼是 Freedom—– ⌘ Read more

⤋ Read More

golang 每日一庫之 GoAdmin
你是不是曾經想用 Go 寫個後臺系統,結果一不小心就寫成了 Bug 系統?是不是寫到權限控制的時候,感覺自己變成了權限受害者?是不是本來想安安心心做個 CRUD 工人,結果被前端 UI 折磨到懷疑人生?別怕,GoAdmin 來拯救你了!什麼是 GoAdmin簡單說,GoAdmin 就是 Go 語言界的 “萬能後臺神器”。它能幫你:三分鐘起飛 :快速搭出一個後臺系統; 一行不寫也 ⌘ Read more

⤋ Read More

golang 每日一庫之工作流引擎 cadence
Cadence 是由 Uber 開發並開源的分佈式工作流編排引擎,旨在幫助開發者構建可擴展、可靠且具備容錯能力的分佈式應用程序。這個 Uber 當前給我發了好多打車券,還是很厚道的。特點–1. 容錯的有狀態工作流Cadence 的工作流是 “容錯的有狀態工作流”,即使在進程崩潰或服務重啓的情況下,工作流的狀態(包括局部變量、調用棧、定時器等)也能自動恢復,確保業務流程不中斷。2. 異步任務與自動 ⌘ Read more

⤋ Read More

用 Go 語言實現用戶一鍵登錄,有哪些可靠的方案
一鍵登錄是現代應用中提升用戶體驗的關鍵功能,本文將深入探討 Go 語言實現一鍵登錄的幾種可靠方案,並提供完整的代碼實現和對比分析。方案一:短信驗證碼登錄(最常用)實現原理用戶輸入手機號 服務器發送短信驗證碼 用戶輸入驗證碼完成登錄 完整代碼實現package mainimport(“crypto/rand”“fmt”“math/big”“net/http”“time”“githu ⌘ Read more

⤋ Read More