tag go

標籤
貢獻245
446
05:15 PM · Oct 25 ,2025

@go / 博客 RSS 訂閱

vistart - Golang 中保存通道的 map 在設為 nil 後不會回收元素,即通道依然有效

Golang 中,如果用一個 map 保存實例化的通道,並用在協程間發送和接收。當該 map 被賦值為 nil 時,管理的通道依然有效。 示例代碼如下: package main import ( "fmt" "time" ) func main() { // 創建一個map用於保存通道 channelMap := make(map[string]chan in

channel , 垃圾回收 , 協程 , map , go

收藏 評論

vistart - Golang 中使用通道構建協程間的依賴關係(工作流)

假設有一組任務有前後依賴關係,我們可以使用Go的通道特性,將前一個任務的執行結果(或結束信號)送入下一個任務,已達到自動化依次執行工作流的每個任務的目的。 為了模擬這一工作流,我們假設有五個通道和四個協程,每個協程監聽前一個通道的數據,並將接收到的數據送入下一個通道中。 當任務執行結束後,最好能夠主動回收通道,已達到節省內存開銷的目的。與執行工作流類似的是,應當能做到關閉首個通道後,按照依賴關係連

channel , 協程 , 工作流 , go

收藏 評論

amc - 騰訊 tRPC-Go 教學——(5)filter、context 和日誌組件

本文咱們來介紹一下在 tRPC 中的 filter 機制、context 用法,以及在相關機制上可以實現的 tracing log 能力。 説實話,這一部份是我個人最不喜歡的 tRPC 的實現模式,不過這不妨礙咱們使用它——只要把它封裝成讓人更為舒服的模式也未嘗不可。 系列文章 騰訊 tRPC-Go 教學——(1)搭建服務 騰訊 tRPC-Go 教學——(2)trpc HTTP 能力 騰

騰訊 , HTTP , rpc , go

收藏 評論

程序員新亮 - 如何基於 Gin 封裝出屬於自己 Web 框架?

思路 在基於 Gin 封裝出屬於自己的 Web 框架前,你需要先了解 Gin 的基本用法和設計理念。 然後,你可以通過以下步驟來封裝自己的 Web 框架: 封裝路由:Gin 的路由是通過 HTTP 方法和 URL 路徑進行匹配的,你可以根據自己的需求,封裝出符合應用的業務需求的路由。你可以考慮將路由進行分類,例如公共路由、私有路由等,以方便管理。 封裝中間件:Gin 提供了很多中間件,例如日

框架 , gin , go , 後端 , Web

收藏 評論

amc - 騰訊 tRPC-Go 教學——(6)服務發現

距離上一篇文章居然已經過去兩個月了,畢竟苦逼打工人忙得一點空都沒有…… 本文我們來講一講對於微服務架構來説,最重要的一個點了:服務發現及其對應的名字服務功能。 系列文章 騰訊 tRPC-Go 教學——(1)搭建服務 騰訊 tRPC-Go 教學——(2)trpc HTTP 能力 騰訊 tRPC-Go 教學——(3)微服務間調用 騰訊 tRPC-Go 教學——(4)tRPC 組件生態和使用

騰訊 , HTTP , rpc , go , 後端

收藏 評論

tekin - go語言控制goroutine協程退出的2種方法總結

我們知道,在go語言中,goroutine的執行會隨着main線程的退出而終結, 即如果main線程退出,則所有的goroutine都會被強制退出,不管你是否已經執行完畢。 如果我們希望main進程等待所有的goroutine執行完畢後再退出,則可以有3種方式來實現,具體如下: 1. 使用go標準庫sync中提供的 sync.WaitGroup裏面提供的Add, Done, Wait方法; pac

goroutine , 方法 , 協程 , go , 總結

收藏 評論

編程碼農 - 學習Go語言併發編程

關於併發 Go 語言的創始人Rob Pike 曾説過:並行關乎執行,併發關乎結構。他認為: • 併發是一種程序設計方法:將一個程序分解成多個小片段,每個小片段獨立執行;併發程序的小片段之間可以通過通信相互協作。 • 並行是有關執行的,它表示同時進行一些計算任務。 程序小片段之間通訊不同語言實現不同,比如:傳統語言Java使用共享內存方式達到線程之間通訊,而Go語言channel來進行通

併發 , 併發編程 , go

收藏 評論

從君華 - illegal base64 data at input byte

問題 d, err := base64.StdEncoding.DecodeString(param) if err != nil { panic(err) // illegal base64 data at input byte } golang從javascript請求的URL中讀出base64編碼的字符串參數param,在解碼時報錯。 通過對比javascript生成的參數和gola

request , base64 , go , Javascript , url

收藏 評論

amc - 騰訊 tRPC-Go 教學——(7)服務配置和指標上報

系列文章 騰訊 tRPC-Go 教學——(1)搭建服務 騰訊 tRPC-Go 教學——(2)trpc HTTP 能力 騰訊 tRPC-Go 教學——(3)微服務間調用 騰訊 tRPC-Go 教學——(4)tRPC 組件生態和使用 騰訊 tRPC-Go 教學——(5)filter、context 和日誌組件 騰訊 tRPC-Go 教學——(6)服務發現 騰訊 tRPC-Go 教學——

騰訊 , HTTP , rpc , go , 後端

收藏 評論

帽兒山的槍手 - Golang net/http標準庫常用方法(三)

大家好,針對Go語言 net/http 標準庫,將梳理的相關知識點分享給大家~~ 圍繞 net/http 標準庫相關知識點還有許多章節,請大家多多關注。 文章中代碼案例只有關鍵片段,完整代碼請查看github倉庫:https://github.com/hltfaith/go-example/tree/main/net-http 本章節案例,請大家以 go1.16+ 版本以上進行參考。

HTTP , 代理 , 編程語言 , go , 後端

收藏 評論

江湖十年 - 萬字解析 Go 官方結構化日誌包 slog

首發地址:https://mp.weixin.qq.com/s/v1nh_WnXq1V8z0WpICdcfA slog 日誌包是 Go 語言中的一個結構化日誌庫,旨在提供一個簡單而強大的日誌系統。因為標準日誌庫 log 過於簡陋,社區中經常有人吐槽,Go 官方也承認了這一點,於是 Go 團隊成員 Jonathan Amsterdam 操刀設計了新的日誌庫 slog,其放在 log/slog 目錄中

日誌 , go , 後端

收藏 評論

wujingquan - 用 Go 寫了個 Composer 版本管理器 CVM

Github:https://github.com/wujingquan/cvm 歡迎PR,各位巨佬使用。 CVM for Windows 消除了在Windows上的CLI中更改Composer 版本的麻煩。 這個包有一個比nvm更小眾的用例。當在Windows上開發並使用集成終端時,很難讓這些終端真正聽取PATH的變化。 這個實用程序改變了這一點。 安裝 到Github Releases

composer , php , cli , composer-php , go

收藏 評論

碼農先森 - PHP轉Go系列 | ThinkPHP與Gin框架之API接口簽名設計實踐

大家好,我是碼農先森。 回想起以前用模版渲染數據的歲月,那時都沒有 API 接口開發的概念。PHP 服務端和前端 HTML、CSS、JS 代碼混合式開發,也不分前端、後端程序員,大家都是全乾工程師。隨着前後端分離、移動端開發的興起,用後端渲染數據的開發方式效率低下,已經不能滿足業務對需求快速上線的要求了。於是為了前後端的高效協同開發引入了 API 接口,只要在開發需求之前約定好數據傳參,之後便可以

php , gin , go , thinkphp

收藏 評論

碼農先森 - PHP轉Go系列 | ThinkPHP與Gin框架之OpenApi授權設計實踐

大家好,我是碼農先森。 我之前待過一個做 ToB 業務的公司,主要是研發以會員為中心的 SaaS 平台,其中涉及的子系統有會員系統、積分系統、營銷系統等。在這個 SaaS 平台中有一個重要的角色「租户」,這個租户可以擁有一個或多個子系統的使用權限,此外租户還可以使用平台所提供的開放 API 「即 OpenApi」來獲取相關係統的數據。有了 OpenApi 租户可以更便捷的與租户自有系統進行打通,提

php , gin , go , thinkphp

收藏 評論

王中陽講編程 - 面試阿里,直呼太難了!

我發現一件事,今年的秋招比去年來的更早一些,像什麼小度、深信服、OPPO、科大訊飛、華夏銀行等等知名的公司都開始了,想問問要找工作的各位:你們準備好了嗎? 這真不是危言聳聽,需要參加今年秋招的小夥伴真的要抓緊時間準備了,八股、算法、項目都要按部就班地往前推進了,畢竟時間不等人,我在星球裏還遇到過秋招錯過、春招也錯過的球友,後續真的是十分被動。 今天分享一位粉絲投稿的阿里面經,這是他第一次約到阿里的

阿里巴巴 , 面試 , go

收藏 評論

碼農先森 - PHP轉Go系列 | ThinkPHP與Gin框架之打造基於WebSocket技術的消息推送中心

大家好,我是碼農先森。 在早些年前客户端想要實時獲取到最新消息,都是使用定時長輪詢的方式,不斷的從服務器上獲取數據,這種粗暴的騷操作實屬不雅。不過現如今我也還見有人還在一些場景下使用,比如在 PC 端掃描二維碼,然後使用長輪詢的方式從服務端獲取最新的掃碼信息,來判斷用户是否已經掃碼完成,諸如這種場景還有不少。其實大家都知道長輪詢的方式不好,那為什麼還有人使用呢? 我想最直接的原因就是「開發起來簡

php , gin , go , thinkphp

收藏 評論

碼農先森 - PHP轉Go系列 | ThinkPHP與Gin框架之Redis延時消息隊列技術實踐

大家好,我是碼農先森。 我們在某寶或某多多上搶購商品時,如果只是下了訂單但沒有進行實際的支付,那在訂單頁面會有一個支付倒計時,要是過了這個時間點那麼訂單便會自動取消。在這樣的業務場景中,一般情況下就會使用到延時隊列。 通常在客户下單之後,就會將訂單數據推送到延時隊列中並且會對該消息設置一個延時時長,比如設置五分鐘、十分鐘、或十五分鐘等,具體的時長應該還是要結合當前的業務進行衡量,然後消費端會在指定

php , gin , go , thinkphp

收藏 評論

探索雲原生 - ArgoWorkflow教程(四)---Workflow & 日誌歸檔

上一篇我們分析了argo-workflow 中的 artifact,包括 artifact-repository 配置以及 Workflow 中如何使用 artifact。本篇主要分析流水線 GC 以及歸檔,防止無限佔用集羣中 etcd 的空間。 !--more-- 1. 概述 因為 ArgoWorkflow 是用 CRD 方式實現的,不需要外部存儲服務也可以正常運行: 運行記錄使用 Wor

devops , 雲原生 , cicd , jenkins , go

收藏 評論

BioCrossCoder - 六邊形架構最佳實踐探索

在工作中,我接觸到的產品均採用了微服務架構,後端項目開發普遍採用了六邊形架構:六邊形架構提供了一套良好的設計思想,但它缺乏對項目代碼組織細節的指導;同時,項目中並沒有使用專門的微服務框架,而是普遍使用Gin框架,這使得代碼組織過於靈活,沒有提供充分的編碼約束,以致於在過去的業務需求實現中,後端服務的項目代碼組織充斥着各種各樣的問題;為了解決這些問題、提高開發效率、保障工程質量,基於工作一年的實踐和

架構設計 , 工程化 , 開發規範 , go , 後端

收藏 評論

soroqer - Rust 和 Go 在多線程的對比

1. Go 的 Goroutine:輕量且高效 Goroutine 是 Go 中非常核心的併發單元。它是 用户級線程,由 Go 的運行時調度器管理,而不是由操作系統的內核調度。 輕量性: 內存佔用:每個 goroutine 的棧內存只有 2KB 左右,遠小於傳統線程的棧大小(一般為幾 MB)。這使得你可以輕鬆地創建成千上萬的 goroutines,而不會造成明顯的內存壓力。

rust , 多線程 , go

收藏 評論

SyntaxError - golang 啓動3個協程交替打印abc10次

var ch1, ch2, ch3 = make(chan struct{}), make(chan struct{}), make(chan struct{}) var wg sync.WaitGroup wg.Add(3) go func(s string) { defer wg.Done() for i := 1; i = 10; i+

多線程 , go , 後端

收藏 評論

探索雲原生 - ArgoWorkflow教程(六)---無縫實現步驟間參數傳遞

之前我們分析了,Workflow、WorkflowTemplate 、template 3 者之間如何傳遞參數。 本文主要分析同一個 Workflow 中的不同 step 之間實現參數傳遞,比如將上一個步驟的輸出作為下一個步驟的結果進行使用(而非以文件方式傳遞)。 !--more-- 1. 概述 然後就是之前只分析了 Workflow、WorkflowTemplate 、template 3 者

devops , 雲原生 , cicd , jenkins , go

收藏 評論

雲觀秋毫 - 告別ELK,APO提供基於ClickHouse開箱即用的高效日誌方案——APO 0.6.0發佈

ELK一直是日誌領域的主流產品,但是ElasticSearch的成本很高,查詢效果隨着數據量的增加越來越慢。業界已經有很多公司,比如滴滴、B站、Uber、Cloudflare都已經使用ClickHose作為ElasticSearch的替代品,都取得了不錯的效果,實現了降本增效,費用節約大多在50%以上。但是目前使用ClickHose作為日誌方案,存在以下問題。 主流的Vector+Cl

日誌分析 , 日誌 , go

收藏 評論

codists - RabbitMQ的Overview Totals是空

一、問題描述 RabbitMQ 版本:4.0.2,Erlang 版本:26.2.5.4。 RabbitMQ 頁面管理(rabbitmq_management)的 Overview Totals 是空: 二、原因分析 RabbitMQ 的配置: management_agent.disable_metrics_collector = true 導致。將 management_agent.disa

rabbitmq , go

收藏 評論