@go

动态 列表
@hunterxiong

Golang筆記之Redis

本文首發於公眾號:Hunter後端 原文鏈接:Golang筆記之Redis 這一篇筆記主要介紹 Golang 連接和使用 Redis,以下是本篇筆記目錄: 目錄 1、安裝模塊 2、連接 Redis 3、字符串 1. 字符串寫入 2. 字符串讀取 4、哈希 1. 寫入 1) 單字段寫入

hunterxiong 头像

@hunterxiong

昵称 XHunter

@apocelipes

下劃線字段在golang結構體中的應用

最近公司裏的新人問了我一個問題:這段代碼是啥意思。這個問題很普通也很常見,我還是個新人的時候也經常問,當然,現在我不是新人了但我也經常發出類似的提問。 代碼是長這樣的: type BussinessObject struct { _ [0]func() ID uint64 FieldA string FieldB *int64 ... }

apocelipes 头像

@apocelipes

昵称 apocelipes

@codechen8848

輕量神器!一款可替代 Postman 的 API 調試工具!

大家好,我是 Java陳序員。 在開發中,常常需要進行 API 調試,可以藉助 Postman 或者 curl 命令完成工作。但是 Postman 需要安裝,而 curl 命令參數又很複雜,不易操作。 今天給大家推薦一款極簡到極致的網頁版 API 調試神器,可替代 Postman! 關注微信公眾號:【Java陳序員】,獲取開源項目分享、AI副業分享、超200本經典計算機電子書籍等。 項目介紹

codechen8848 头像

@codechen8848

昵称 codechen8848

@muzhy

深度揭秘 sync.Pool:Go 高性能對象池的設計哲學與源碼實現

引言:從Gin的Context池化,揭開sync.Pool的神秘面紗 在編寫高性能的Go Web服務時,我們總是追求極致的效率。但在高併發場景下,頻繁的對象創建和銷燬是隱藏在背後的性能殺手。 在《Gin 框架核心架構解析》中,我們提到Gin會為每個HTTP請求分配一個Context對象。當你的服務每秒處理數千甚至上萬個請求時,這意味着海量的Context對象被創建,給Go的垃圾回收(GC)機制帶來

muzhy 头像

@muzhy

昵称 木章永

@codechen8848

輕量又安全!一款開源自託管的個人記賬工具!

大家好,我是 Java陳序員。 你是否會有這樣的困擾:手裏存款越來越多,反而成了甜蜜的負擔? 看着銀行卡里不斷上漲的數字,卻總説不清每筆錢的來龍去脈;想給資金做個分類管理,卻被各種理財 APP 的複雜界面勸退;更擔心把財務數據存在第三方平台,哪天就成了“透明人”~ 今天,給大家介紹一款開源自託管的個人記賬工具,輕量又安全! 關注微信公眾號:【Java陳序員】,獲取開源項目分享、AI副業分享、超

codechen8848 头像

@codechen8848

昵称 codechen8848

@phpnan

類型轉換

package _case import ( "fmt" "strconv" "time" "unsafe" ) // ConvertCase 類型轉換 func ConvertCase() { // 同類型轉換 數字和數字 字符串和字符和字節 // 不同類型轉換 數字和字符串 // 接口類型轉其他類型 // 數字類型轉換 var num1 int = 100 fmt.Pr

phpnan 头像

@phpnan

昵称 風動隨心

@apocelipes

Go 1.26 內置函數 new 新特性

目前golang 1.26的各種新特性還在開發中,不過其中一個在開發完成之前就已經被官方拿到枱面上進行宣傳了——內置函數new功能擴展。 每個新特性其實都有它的背景故事,沒有需求的驅動也就不會有新特性的誕生。所以在介紹這個新特性之前我們先來了解下是什麼樣的場景催生了這個功能。 如果你經常瀏覽一些大型的go項目,尤其是那些需要頻繁和JSON、GRPC或者yaml打交道的項目,比如k8s,你會發現這些

apocelipes 头像

@apocelipes

昵称 apocelipes

@xiaoqian01

《Go 單元測試從入門到覆蓋率提升》(一)

一、靜態代碼分析   靜態代碼分析是一種在不執行和運行程序的情況下檢查源代碼的方法。通過這種方法,自動化工具會掃描代碼查找潛在的問題,如bug、安全漏洞或與編碼標準的偏離。靜態代碼分析可以在執行或合併到main分支之前檢查源代碼中的問題。   動態代碼分析是在代碼被執行時,識別運行時的問題,例如性能瓶頸、內存泄露和邏輯缺陷。它輸出的內容是程序的實際運行時行為,包括日誌、跟蹤和性能指標。它在實際或

xiaoqian01 头像

@xiaoqian01

昵称 筱倩

@xiaoqian01

《Go 單元測試從入門到覆蓋率提升》(二)

Golang相關測試框架   在 Go 語言裏,最常用的測試框架有:自帶的 testing 包、GoConvey 和 testify。 1、Go自帶的testing包   testing包是官方內置的,無需額外安裝,也是大多數項目的首選。   (1)單元測試 測試文件必須以 _test.go 結尾,例如:calc_test.go 測試函數必須以 Test 開頭(推薦寫成 T

xiaoqian01 头像

@xiaoqian01

昵称 筱倩

@xiaoqian01

如何有效提升代碼覆蓋率:從單元測試到集成測試的實踐指南

Go語言代碼覆蓋率實現 一、什麼是代碼覆蓋率   代碼覆蓋率是軟件測試中的一種白盒測試度量指標,表示程序源代碼中被執行的比例。簡單來説,就是“我的測試到底跑過多少代碼”。 覆蓋率常見的幾種標準: 語句覆蓋(段覆蓋、基本塊覆蓋):每一行代碼是否至少執行過一次 分支覆蓋:程序中的每個判斷(if/else)是否都執行過true和false兩種結果 條件覆蓋:判斷語句中的每個子條件是否都覆蓋到tr

xiaoqian01 头像

@xiaoqian01

昵称 筱倩

@codechen8848

免費開源的百度文庫平替!支持多格式文檔預覽與存儲!

大家好,我是 Java陳序員。 想必大家都用過百度文庫,常常因為沒有會員而不能複製或者下載文檔而被勸退,但是又不得不用。 今天,給大家介紹一個可以平替百度文庫的文檔管理系統,免費開源! 關注微信公眾號:【Java陳序員】,獲取開源項目分享、AI副業分享、超200本經典計算機電子書籍等。 項目介紹 DocHub 使用 Go 語言的 Beego 框架開發實現的類百度文庫解決方案,支持 Offic

codechen8848 头像

@codechen8848

昵称 codechen8848

@ahfuzhang

[源碼閲讀][vmselect] 從promql 到一條曲線,計算過程是怎麼樣的?

作者:張富春(ahfuzhang),轉載時請註明作者和引用鏈接,謝謝! cnblogs博客 zhihu Github 公眾號:一本正經的瞎扯 以最經典的計算 qps 的曲線為例,vmselect 內部是如何計算的? 1 grafana 通過 query_range 接口發起請求 通常會在 grafana 中配置一個 line chart,然後使用以下的 promql 表達

ahfuzhang 头像

@ahfuzhang

昵称 ahfuzhang

@codechen8848

簡單好用!一款針對 IT 團隊開發的文檔管理系統!

大家好,我是 Java陳序員。 在 IT 團隊協作中,接口文檔散亂、版本混亂、權限管理複雜等問題常常困擾着 IT 從業者。 今天,為大家推薦一款簡單好用的文檔管理系統,尤其適合 IT 中小團隊高效管理各類文檔! 關注微信公眾號:【Java陳序員】,獲取開源項目分享、AI副業分享、超200本經典計算機電子書籍等。 項目介紹 MinDoc —— 一款針對 IT 團隊開發的文檔管理系統,基於 Go

codechen8848 头像

@codechen8848

昵称 codechen8848

@apocelipes

golang unique包和字符串內部化

最近在做老系統優化,正好遇到了需要使用字符串內部化的場景,所以今天就來説説字符串內部化這種優化技巧。 什麼是字符串內部化 熟悉Java或者python的開發者應該對“內部化”這種技術不陌生。內部化指的是對於內容完全相同的字符串變量,內存中只保留一份數據,所有的變量都引用同一份數據,從而節約內存。 舉個Java的例子: public class StringInternDemo { publ

apocelipes 头像

@apocelipes

昵称 apocelipes

@jianghushinian

萬字解析 Go 官方結構化日誌包 slog

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

jianghushinian 头像

@jianghushinian

昵称 江湖十年

@kindlingx

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

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

kindlingx 头像

@kindlingx

昵称 雲觀秋毫

@donnie4w

go-logger v0.27.0 - 併發性能為官方庫 10 倍

go-logger 是一個高性能的 golang 日誌庫,旨在提供快速、輕量級的日誌記錄功能 Github 使用文檔 v0.27.0 更新內容 優化內存分配 優化寫數據性能 增加日誌屬性自定義函數 增加各個日誌級別格式化打印函數 説明 性能優化是該版本最重要的更新內容。性能優化的結果: 極高併發性能:極高的併發寫數據性能,比官方庫或同類型日誌庫高10倍以上。特別在Linux環境中,

donnie4w 头像

@donnie4w

昵称 donnie4w

@headofhouchang

go 通道-channel、協程-routine、sync

go 通道-channel、協程-routine、sync golang 裏不需要學習如何創建維護進程池/線程池,也不需要分析什麼情況使用多線程,什麼情況使用多進程,因為你沒得選。 當然,也不需要選。 go原生的 goroutine(協程)已足夠優秀,能自動幫你處理好所有事情,而你要做的只是執行它,so easy... goroutine 也是go天生支持高併發的底氣。 g

headofhouchang 头像

@headofhouchang

昵称 後廠村村長

@vistart

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

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

vistart 头像

@vistart

昵称 vistart

@vistart

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

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

vistart 头像

@vistart

昵称 vistart

@tekin_cn

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

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

tekin_cn 头像

@tekin_cn

昵称 tekin

@muzijun_68c14af5563a2

帶緩存的Timsort排序算法 golang實現

帶緩存的 Timsort 排序算法(Go 實現) 在標準 Timsort 基礎上顯式加入 L2-blocking + 軟件預取 + 無分支批量合併, 使 L3 大數據 仍保持 內存帶寬上限;實測 1e8 int 比 sort.Slice 再快 ~25%,內存峯值仍 O(n)。 1 緩存痛點(Go 原生剖面) 熱點 剖面佔比 緩存問題

muzijun_68c14af5563a2 头像

@muzijun_68c14af5563a2

昵称 木子君_求贊