tag go

標籤
貢獻242
357
05:15 PM · Oct 25 ,2025

@go / 博客 RSS 訂閱

tim_xiao - 併發控制-文件鎖

在以往的項目中,遇到高併發大流量需求做併發控制的時候一般都使用redis分佈式鎖或者mysql加鎖處理高併發情況。最近遇到一個php項目,沒有安裝redis,由於某種原因也不考慮使用mysql加鎖控制併發,所以採用文件鎖的方式控制併發,整理了下代碼 php版本 class FileLock { /** @var string 鎖名稱 唯一性 */ private string $k

高併發 , php , go

收藏 評論

tim_xiao - 微信支付API V3 簽名認證go版本

以 商户單號查詢轉賬單 為例演示 https://pay.weixin.qq.com/doc/v3/merchant/4012716437 package main import ( "crypto" "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/base64" "encoding/pe

微信支付 , go

收藏 評論

smile - golang的單元測試

基於代碼架構設計 + 第三方工具 -- 改善單測代碼質量 單元測試代碼難寫? 代碼架構設計不夠完善,從上到下的交互的邊界不夠清晰,可能在業務層存在調用第三方系統的地方 // bad package service func learnGo() { // ... // 針對業務代碼,認為第三方系統不穩定,輸出的結果不固定,系統內部的是穩定的 // 單元測試需要將不穩定的

單元測試 , go

收藏 評論

gvison - Sponge與DeepSeek協作:一種突破傳統開發後端服務的解決方案,打造高效後端開發新範式

背景介紹 技術演進背景 隨着 DeepSeek 等開源 AI 工具的崛起,智能編程助手正在重塑軟件開發流程。對於開發者而言,AI 輔助編碼已為生產力工具。雖然目前 AI 尚無法直接根據需求文檔和指定技術棧生成完整生產級項目,但在特定場景下已展現出驚人潛力:基於詳細邏輯描述生成代碼片段準確率可達 80%以上。目前AI 在項目的工程化能力方面仍顯不足,而Sponge框架則在工程化能力表現出色,兩者恰好

代碼生成 , deepseek , go , Web

收藏 評論

江湖十年 - Go 併發控制:sync.Map 詳解

我們知道,Go 中的 map 類型是非併發安全的,所以 Go 就在 sync 包中提供了 map 的併發原語 sync.Map,允許併發操作,本文就帶大家詳細解讀下 sync.Map 的原理。 使用示例 sync.Map 提供了基礎類型 map 的常用功能,使用示例如下: package main import ( "fmt" "sync" ) func main() {

面試 , 併發 , 併發編程 , go , 後端

收藏 評論

litao-2071 - GO單元測試&集成測試的 mock 方案

GO單元測試集成測試的 mock 方案 在單元測試或集成測試中,不希望依賴原始數據庫或者説給原始數據庫帶去髒數據,我們往往使用Mock的方式進行模擬, 當然單元測試和集成測試中的側重點同,下面會介紹 基於數據打樁、啓動模擬數據庫等解決方案。 我們通過下面這個案例來説明幾種mock方式的優劣勢和適用場景 案例: 需要mock 下面這個 數據庫操作接口 TestRepo // TestEntity

mock , 單元測試 , 集成測試 , go

收藏 評論

江湖十年 - Go 併發編程:如何實現一個併發安全的 map

上週發佈的文章「Go 併發控制:sync.Map 詳解」有讀者反饋説我寫的太難了,上來就挑戰源碼,對新手不夠友好。所以這篇文章算作補充,從入門到進階的順序講解一下在 Go 中如何自己實現一個併發安全的 map。 內置 map 首先,我們來測試一下 Go 語言內置 map 併發安全性,示例如下: https://github.com/jianghushinian/blog-go-example/tr

面試 , 併發 , 併發編程 , go , 後端

收藏 評論

Java陳序員 - 數據處理神器!一款強大的數據處理命令行工具!

大家好,我是 Java陳序員。 我們在日常開發中,經常會操作使用一些 JSON、YAML、XML 等格式的數據,對數據進行增刪改查和轉換操作。 今天,給大家分享一款強大的數據處理命令行工具,一行命令搞定數據操作! 關注微信公眾號:【Java陳序員】,獲取開源項目分享、AI副業分享、超200本經典計算機電子書籍等。 項目介紹 dasel —— 一款用於處理和操作多種數據格式的命令行工具,支持對

github , yaml , go , Json

收藏 評論

gvison - Sponge如何解決傳統Go開發Web和gRPC服務的五大痛點?

引言 在傳統的 Go 語言 Web 服務和微服務開發中,開發者常常面臨諸多痛點,這些問題不僅降低了開發效率,還增加了維護成本。為了解決這些問題,Go 開發框架 Sponge 應運而生。本文將詳細説明傳統開發的痛點,並闡述為何需要 Sponge 來應對這些挑戰。 傳統開發的痛點 1. 繁瑣的開發流程 Web 服務:例如使用 Gin 框架時,需要手動配置路由、處理 HTTP 請求、編寫中間件等,代

框架 , 低代碼 , go

收藏 評論

axiaoxin - Go 1.24 新特性一覽

Go 1.24震撼登場,帶來顯著性能提升與諸多新功能,如泛型類型別名、優化工具鏈及標準庫增強。可藉助os.Root實現安全文件系統操作,運用testing.B.Loop優化基準測試,利用runtime.AddCleanup完善資源管理,還有weak包優化內存、crypto包保障FIPS 140 - 3合規。速升級,提升Go應用效率與安全! 文章目錄 語言特性更新 泛

資訊 , 編程語言 , 程序員 , go

收藏 評論

axiaoxin - Go 語言泛型用法詳解

本文將帶你從零開始,理解Go 泛型的概念、語法、使用方式,並配有示例代碼,幫助你快速上手。 文章目錄 什麼是泛型? 1. 泛型函數 示例:一個求長度的泛型函數 2. 泛型結構體 示例:一個通用的盒子 3. 泛型集合(Set) 示例:一個通用的集合 4. 泛型通道(Channel) 示例

編程語言 , 泛型 , go , 後端

收藏 評論

江湖十年 - 如何基於 Go 語言設計一個簡潔優雅的分佈式任務系統

在當今雲計算與微服務盛行的時代,分佈式任務系統已成為支撐大規模業務的核心基礎設施。今天就來為大家分享下如何基於 Go 語言從零設計和實現一個架構簡潔且擴展性強的分佈式任務系統。 前置概念 本文會設計並實現一個分佈式任務系統,這裏我們要先明確兩個概念。 分佈式:在我們將要實現的分佈式任務系統中,分佈式是指我們的服務可以部署多個副本,這樣才能確保服務更加穩定。 任務:這裏的任務是指異步任務,可能

面試 , 架構設計 , 分佈式系統 , go , 後端

收藏 評論

江湖十年 - 在 Go 中如何使用分佈式鎖解決併發問題?

在分佈式系統中,協調多個服務實例之間的共享資源訪問是一個經典的挑戰。傳統的單機鎖(如 sync.Mutex)無法實現跨進程工作,此時就需要用到分佈式鎖了。本文將介紹 Go 語言生態中基於 Redis 實現的分佈式鎖庫 redsync,並探討其使用方法和實現原理。 分佈式鎖 首先我們來探討下為什麼需要分佈式鎖?當我們編寫的程序出現資源競爭的時候,就需要使用互斥鎖來保證併發安全。而我們的服務很有可能不

面試 , 分佈式鎖 , 併發 , go , 後端

收藏 評論

amc - 騰訊 tRPC-Go 教學——(8)通過泛 HTTP 能力實現和觀測 MCP 服務

最近 MCP 大火,其實 tRPC 也可以提供泛 HTTP 接入的能力。內網其實已經對 mcp-go 進行了封裝並支持,但是相關代碼還沒有同步到開源版上。 不過實際上,在 tRPC 框架也是可以接入各種泛 HTTP 能力的。本文就以 mcp-go 和 tRPC 結合作為引子,也介紹一下在 Cursor 等 AI 生產力工具中如何開發和使用 MCP 能力吧。 系列文章 騰訊 tRPC-Go 教學

llm , 騰訊 , cursor , rpc , go

收藏 評論

靦腆的拖把 - Golang領域Beego框架的中間件開發實戰:高效擴展與優化

隨着Go語言在開發領域的廣泛應用,越來越多的開發者選擇Beego框架來構建高效、靈活的Web應用。作為一款基於Go語言的MVC框架,Beego不僅提供了高性能的路由、ORM、會話管理等功能,還允許開發者自定義中間件來擴展框架的功能,提高應用的可維護性和靈活性。 中間件是Web應用中的核心組件之一,它能夠在請求處理的過程中對請求和響應進行攔截、處理、修改或記錄。通過使用中間件,開發者可以在不修改核

中間件 , beego , go

收藏 評論

江湖十年 - 使用 Uber automaxprocs 正確設置 Go 程序線程數

公眾號首發地址:https://mp.weixin.qq.com/s/5wrYaHXBpuN0WxKAaNNp-A 我們知道 Go 語言沒有直接對用户暴露線程的概念,而是通過 goroutine 來控制併發。不過,在 Go 程序啓動時,其背後的調度器往往是多線程運行的。在 Go 語言的 GMP 調度模型中,P 決定着同時運行的 goroutine 數,我們可以通過環境變量 GOMAXPROCS 或

面試 , 容器技術 , 併發編程 , go , 後端

收藏 評論

江湖十年 - Go 語言中你不知道的 io.Discard 妙用

公眾號首發:https://mp.weixin.qq.com/s/no995DjgiS3muyPSt2QhUg 在 Go 語言中,io.Discard 是一個實現了 io.Writer 接口的特殊變量,用於丟棄所有寫入的數據。 io.Discard 在 Go 1.15 及之前版本中是放在 io/ioutil 包中實現的。而在 Go 1.16 版本,得以正式轉正,被實現在 io 包中。本文我們來一起

goland , 編程技巧 , 面試 , go , 後端

收藏 評論

shendaowu - 傳下去,Visual Studio Code 中的 go 插件報 workspace 錯誤大概是因為沒有以文件夾的方式打開

大概是這樣的報錯: This file is within module "..\..\worktest2\modtest2", which is not included in your workspace. To fix this problem, you can add this module to your go.work file (file:///C:/Users/shen

vscode插件 , visual-studio-code , go

收藏 評論

user_zsXbv7Bi - 我所理解的 Go 的 CSP 併發控制機制

你一定聽説過 Go 語言所倡導的這個核心併發原則:“不要通過共享內存來通信,而要通過通信來共享內存 (Don't communicate by sharing memory; instead, share memory by communicating)”。這一理念深刻影響了 Go 的併發設計。 本文將具體討論 Go 中的 併發控制機制 (concurrency control mechanism

csp , 併發 , go

收藏 評論

自由自在像小鳥 - MongoDB必知必會

MongoDB的知識點梳理,內容有chatgpt4.1輔助完成,使用的提示詞(文章大致內容)如下,可按需“食用”😊: mongodb 定義 關鍵概念 如何增刪改查 如何持久化 如何用go語言操作他 是否支持事務,如果是實現原理,他相對於mysql他存儲數據的底層邏輯是? 1. MongoDB 定義 MongoDB 是一個開源的、面向文檔的 NoSQL 數據庫,以高性能、高可用、易擴展著稱。它用

mongodb , go

收藏 評論

Seven - Go語言極致性能優化實戰:生產級代碼優化完全指南

在微服務架構和高併發場景下,Go語言的性能優化直接決定了系統的吞吐量和資源利用率。本文基於大型互聯網公司的實踐經驗,提供可直接應用於生產環境的優化技巧和完整代碼實現。 1. 內存分配優化 1.1 對象池模式 (sync.Pool) 對象池是減少GC壓力的核心技術,特別適用於頻繁創建和銷燬的對象。 package main import ( "sync" "bytes" "

優化 , go

收藏 評論

江湖十年 - 在 Go 語言中如何實現協程池

公眾號首發:https://mp.weixin.qq.com/s/Xbk4QF7HFll102xaF5r_3Q 如果你熟悉 Java、Python 等編程語言,那麼你一定聽説或者使用過進程池或線程池。因為進程和線程不是越多越好,過多的進程或線程可能造成資源浪費和性能下降。所以池化技術在這些主流編程語言中非常流行,可以有效控制併發場景下資源使用量。 而 Go 語言則沒有提供多進程和多線程的支持,僅提

面試 , 協程 , 併發 , go , 後端

收藏 評論

user_zsXbv7Bi - 理解 Golang 中的最大/最小堆、`heap` 與優先隊列

最大堆、最小堆、 heap 、 優先隊列在數據結構算法題目裏都是一個東西。這裏討論 container/heap 的使用。 參考: https://pkg.go.dev/container/heap https://github.com/EndlessCheng/codeforces-go/blob/master/copypasta/heap.go 靈佬筆記,非常有用 在算法題目中,我們經

數據結構 , 數據結構和算法 , go

收藏 評論

江湖十年 - 一行命令統計代碼行數

公眾號首發:https://mp.weixin.qq.com/s/N1JxiRnr5c4pq0RBo3RGYA 我在網上衝浪時,在 GitHub 上發現了一個感興趣的開源項目 OneX ,我將其下載到本地,現在我該如何知道這個項目的體量呢?一個非常直觀的指標是看這個項目有多少行代碼。 我們可以使用如下命令,來統計 OneX 項目代碼行數: $ cd onex $ find . -name "*.g

命令行 , 面試 , 代碼質量 , go , 後端

收藏 評論