yue-fang-readfog-go 

feeds.twtxt.net

No description provided.

kcp 協議的 Golang 實現庫
kcp-go 是 Golang 實現的 kcp 協議庫,它是可靠的 UDP 庫。該庫 kcp-go 旨在通過 UDP 數據包提供流暢、有彈性、有序、經過錯誤檢查和匿名的流傳遞。該庫和開源項目 kcptun 經過了戰鬥測試。從低端 MIPS 路由器到高端服務器,數以百萬計的設備在各種應用中部署了基於 kcp-go 驅動的程序。包括在線遊戲、直播、文件同步和網絡加速。我們介紹一下 kcp 協議,kcp ⌘ Read more

⤋ Read More

Go 併發控制:context 源碼解讀
context 是 Go 語言的特色設計之一,主要作用有兩個:控制鏈路和安全傳值,並且 context 是併發安全的。context 在 Go 1.17 版本被引入,經過數年的迭代,在設計和用法上已經趨於穩定,本文以最新的 Go 1.23.0 版本源碼爲基礎,帶你深入理解 context 的設計和實現。context 設計context 被設計爲一個接口,名爲Context。爲了支持不同特性,這個 ⌘ Read more

⤋ Read More

Borgo:像寫 typescript 一樣來寫 Go,爽飛了
最近,我發現了一個有趣的新編程語言——Borgo。如果你是一個對編程語言感興趣的開發者,或者在使用 Go 開發應用時曾想過 “如果 Go 能多點現代語言特性會怎樣”,那這篇文章一定值得你讀下去!Borgo 的定位非常清晰:它是一種以簡潔和高效爲核心的語言,最終編譯成 Go 代碼。這意味着什麼?你不僅能獲得 Go 語言的性能優勢,還能享受到現代編程語言帶來的靈活性和便捷性。今天我們來聊聊 Borgo ⌘ Read more

⤋ Read More

在 Go 中如果獲取 goroutine 的 id?
如果你使用過如 Python、Java 等主流支持併發的編程語言,那麼通常都能夠比較容易的獲得進程和線程的 id。但是在 Go 語言,沒有直接提供對多進程和多線程的支持,而是提供了 goroutine 來支持併發編程。不過在 Go 中,獲取 goroutine 的 id 並不像其他編程語言那樣容易,但依然有辦法,本文就來介紹下如何實現。獲取當前進程的 id首先,雖然 Go 沒有提供多進程編程,但啓 ⌘ Read more

⤋ Read More

Go 語言中的併發模式
Go 語言以其併發性和輕量級的 goroutine 而聞名,學習如何使用和處理它們是最具挑戰性的任務。在本文中,我將展示一些併發模式及其使用場景,以幫助您識別所需場景的模式。Goroutine————package mainimport (    ”fmt”    ”time”)func main() {    go sayHello() // 啓動goroutine    tim ⌘ Read more

⤋ Read More

Go sync-Pool 性能優化的利器
sync.Pool 簡介————sync.Pool 是什麼sync.Pool 是 Go 語言標準庫中提供的一個用於對象複用的工具,它具有以下特點:對象緩存:使用 Get、Put 方法可以獲取和歸還 sync.Pool 中的數據,從而減輕內存分配與垃圾回收的壓力; 自動回收:sync.Pool 中的對象可能會被自動回收。這意味着即使你將對象放入池中,也不能保證該對象會一直存在於 ⌘ Read more

⤋ Read More

GoLang 如何獲取用戶輸入
fmt.Scanln() 與 fmt.Scanf()  需求場景:數就非常有用。比如,創建一個任務管理工具,可能需要用戶輸入任務名稱、截止日期等信息,這時就可以使用 fmt.Scanln () 或 fmt.Scanf () 來接收用戶輸入。  對於一些需要用戶交互的小型應用程序,比如簡單的計算器程序,可能需要用戶輸入數字和運算符,fmt.Scanf () 可以按照指定的格式接收 ⌘ Read more

⤋ Read More

設計模式 in Go: Iterator
行爲模式旨在解決對象間通信和交互相關的問題,專注於定義那些複雜到無法靜態設計的協作策略,這些協作策略使得程序可以在運行時動態地進行職責派遣以實現更好的擴展。今天我們開始第 2 個行爲模式的學習 —— Iterator(迭代器模式)。問題背景:設想我們定義了一個新的數據類型,它包含了一系列數據元素,可能是以 list、array、set 或其他據結構進行存儲,重要的是我們後續會出於性能、功能方面 ⌘ Read more

⤋ Read More

理解 Go 協程調度的本質
作者:jiayan golang 的一大特色就是 goroutine,它是支持高併發程序的重要保障;通過 go 關鍵字我們就能輕易創建大量的輕量級協程,但它和我們認知中的線程有什麼區別呢,輕量在哪裏,具體是如何進行調度的….. 本文將從涉及到的一些基礎知識開始,逐步介紹到 go 協程調度的核心原理,希望你能有所收穫~ 函數調用棧進程在內存中的佈局首先回顧下進程的內存佈局~ 操作系統把磁盤上 ⌘ Read more

⤋ Read More

Go 開發者的密碼學導航:crypto 庫使用指南
Go 號稱 “開箱即用”,這與其標準庫的豐富功能和高質量是分不開的。而在 Go 標準庫中,crypto 庫(包括 crypto 包、crypto 目錄下相關包以及 golang.org/x/crypto 下的補充包) 又是 Go 社區最值得稱道的 Go 庫之一。crypto 庫由 Go 核心團隊維護,確保了最高級別的安全標準和及時的漏洞修復,爲開發者提供了可靠的安全保障。crypto 還涵蓋了從基 ⌘ Read more

⤋ Read More

精通 Go 併發:上下文傳播與取消的奧祕
Go 的併發模型堪稱一場革命,但管理複雜的併發操作並非易事。這時,context 的傳播與取消機制便成爲了強有力的工具。通過這些機制,我們可以構建健壯的、可取消的操作,甚至跨越多個 goroutine 和網絡邊界。基礎知識—-context 包提供了一種方法,用於在 API 邊界和進程之間傳遞截止時間、取消信號以及請求範圍的值。這是控制長時間運行操作和優雅關閉服務的關鍵。以下是一個使用 con ⌘ Read more

⤋ Read More

使用 Go 開發 AI Agent 的選擇:Genkit for Go
什麼是 Genkit———-Genkit[1] 是一個 Google Firebase 團隊開發的 AI Agent 開發框架,用於構建現代、高效的 AI 應用。它目前包含一個 Node.js 的實現 [2] 和一個 Go 語言的實現 [3]。之所以注意到這個框架是因爲 Go 團隊在他們的十五週年博客 [4] 中提到了它。Go 團隊在博客中提到,他們正在努力使 Go 成爲構建生產 AI ⌘ Read more

⤋ Read More

golang 批量執行任務的通用模板
需求一個接口調用時,接收到一個列表,十個元素,需要併發執行十個任務,每個任務都要返回執行的結果和異常,然後對返回的結果裝填到一個切片列表裏,統一返回結果。需要協程處理的結構體type Order struct { Name string json:“name” Id int json:“id” }確定通道數量一般按入參的需要處理的元素數量爲準taskNum := 10 初始化通道or ⌘ Read more

⤋ Read More

5 分鐘搞懂 Golang 數據庫連接管理
本文介紹瞭如何在 Golang 中優化數據庫連接,通過有效管理連接來提高應用程序吞吐量。原文: Optimizing Database Connections in Go: Improving Throughput by Managing Open Connections Efficiently[1]Go 的 database/sql 軟件包提供了自動化數據庫連接池,能夠幫助開發人員有效管理連 ⌘ Read more

⤋ Read More

用 Go 寫 GUI?這套跨平臺工具箱真香:Tk9-0
大家好!今天我想聊聊用 Go 語言開發 GUI(圖形用戶界面)應用的一個輕量級工具 —— Tk9.0。如果你曾經嘗試用 Go 開發過桌面應用,可能會覺得有些難下手:傳統的工具太 “重”,需要額外安裝依賴,還經常跟操作系統深度綁定,跨平臺開發的成本也不低。而 Tk9.0 正好解決了這些痛點。什麼是 Tk9.0?Tk9.0 是一個 CGo-free(無 C 綁定)、跨平臺的 GUI 工具包,由 mod ⌘ Read more

⤋ Read More

GORM 分頁新方案
Gorm 是 Go 語言中最常用的 ORM(對象關係映射)包之一,但它在某些功能上仍有不足,其中之一就是分頁。分頁是管理 Web 應用程序中大數據集的基本功能。通過分頁,可以限制和顯示數據庫中的部分數據,而不必一次性檢索整個表的數據。雖然 Gorm 的文檔中介紹瞭如何使用 Scopes 來實現分頁,但在靈活性和可用性上仍有改進空間。本文介紹了一種利用 Gorm 的 Clauses 特性來簡化分頁並 ⌘ Read more

⤋ Read More

設計模式 in Go: Builder
建造模式,處理與創建對象及對象實例化過程相關的問題,通常尋求以分離業務代碼和對象創建邏輯,或將複雜的構造邏輯封裝在可重用組件中的方式。讓我們繼續來學習第 3 種創建型模式——Builder 模式(建造者模式)。 問題背景: 創建的對象有時比較複雜,可能需要按照特定順序對所有依賴項進行逐一構建,創建依賴項後再最終構建期望的對象。創建這些最終對象及依賴對象,需要很多參數。如果通過構造函數的參數列表 ⌘ Read more

⤋ Read More

站內信消息未讀 - 已讀數據表設計 如何用 Golang 實現
今天我們來聊一個經常在後臺開發中遇到的話題——站內信消息的未讀 / 已讀狀態數據表設計,以及如何用 Golang 來實現這個功能。對於很多做過後臺開發的程序員來說,站內信系統幾乎是每個系統都會涉及到的功能之一。無論是用戶通知、系統提醒,還是訂單更新,站內信的使用都非常廣泛。不過,在實際的開發過程中,關於站內信消息的存儲、管理以及查詢等,往往會讓我們花上一些時間去設計和優化。特別是當我們需要處理未讀 ⌘ Read more

⤋ Read More

Go 協程正確用法基礎與進階
在 Go(Golang)的世界中,goroutines 是語言的瑰寶之一。它們輕量、高效,使開發者能夠輕鬆編寫併發和並行程序。但正如俗話所說,能力越大,責任越大。濫用 goroutines 可能導致內存泄漏、性能下降,甚至導致生產服務器崩潰。在這篇文章中,我們將介紹 goroutines 的基礎知識、最佳實踐,以及每個開發者應該瞭解的重要 “注意事項”。讓我們深入瞭解吧!Goroutines 概覽 ⌘ Read more

⤋ Read More

設計模式 in Go: Decorator
結構模式關注代碼、組件以及接口的有效組織與調用,主要解決如對象間的關係管理、提供必要抽象與具體實現相分離,以及將多個不同的庫或框架集成爲一個統一且連貫的系統等問題。今天我們開始第 4 個結構模式的學習 —— Decorator(裝飾器)。問題背景:我們希望在運行時增強或修改特定對象的功能。由於對象存在一定的類繼承關係,所以開發者可能首先想到通過修改基類的功能來實現,以希望這些修改可以同時在所有 ⌘ Read more

⤋ Read More

Go 協程與通道
在談論 goroutines 時,我們需要記住 Go 語言的簡潔性,並且它非常強調併發處理。併發是指能夠獨立地處理多個任務,一項接一項地進行,這與並行不同,後者是指任務同時執行。我在之前的文章中已經討論過併發和並行的區別,所以這裏不再深入探討。Goroutines 的基本概念—————-讓我們直接進入 Go 中 goroutines 的主題,這是在代碼中實現併發處理的一種方式。 ⌘ Read more

⤋ Read More

Go 1-23 Timer Channel 的改變
官方的介紹。https://go.dev/wiki/Go123Timer Go 1.23 引入了一個新的實現方案,用於由 time.NewTimer、time.After、time.NewTicker 和 time.Tick 創建的基於通道的定時器。這個新實現帶來了兩項重要改變:未停止但不再被引用的定時器和週期計時器現在可以被垃圾回收。在 Go 1.23 之前,未停止的定時器在觸發之前無法被垃圾回 ⌘ Read more

⤋ Read More

Go 語言高性能協程池實現與原理解析
前言—–在 Go 語言中, 雖然協程的創建成本相對較低, 但在高併發場景下, 無限制地創建協程仍可能導致系統資源耗盡。協程池通過複用一組預創建的協程來處理任務, 可以有效控制協程數量, 提升系統性能和穩定性。協程池的核心原理———–協程池的核心思想是維護一個固定大小的協程隊列, 這些協程會持續從任務隊列中獲取任務並執行。主要包含以下組件:任務隊列: 存儲待執行的任務 工 ⌘ Read more

⤋ Read More

設計模式 in Go: Flyweight
結構模式關注代碼、組件以及接口的有效組織與調用,主要解決如對象間的關係管理、提供必要抽象與具體實現相分離,以及將多個不同的庫或框架集成爲一個統一且連貫的系統等問題。今天我們開始第 6 個結構模式的學習 —— Flyweight(享元模式)。問題背景:程序執行時會創建太多相似的對象副本,所以內存消耗會非常高。觀察這些這些對象定義發現,它們包含了若干的共同屬性(字段值相同),而其他字段則不同。這些 ⌘ Read more

⤋ Read More

認識一下 Golang 定時框架
cron,相信玩過 Linux 的朋友應該都對這個很熟悉吧,這不就是計劃任務嘛,當你需要某個時間段去執行某一件事的時候,普通的執行方式已經不能滿足我們的需求了,這個時候就需要一個定時任務了,那麼下面我就來介紹一個 Go 的開源定時任務框架。一、安裝—- 下載go get github.com/robfig/cron/v3@v3.0.0 導入:這裏後面加個v3意味着這是v3版本,注意不要搞錯 ⌘ Read more

⤋ Read More

一文搞懂如何在 Go 包中支持 Hash-Based Bisect 調試
bisect 是一個英文動詞,意爲 “二分” 或“分成兩部分”。在數學和計算機科學中,通常指將一個區間或一個集合分成兩個相等的部分。對於程序員來說,最熟悉的 bisect 應用莫過於下面兩個:算法中的二分查找 (binary search) 二分查找是一個經典且高效的查找算法,任何一本介紹數據結構或計算機算法的書都會包含對二分查找的系統說明。所謂二分查找就是通過不斷將搜索區間一分爲二來找到目 ⌘ Read more

⤋ Read More

Go 併發控制:singleflight 詳解
singleflight 是 Go 官方擴展庫 x 中提供的擴展併發原語,能夠將多個併發請求合併爲一個,降低服務端壓力。本文就來介紹下它的用法和實現原理。請求合併singleflight 主要用於抑制重複的併發調用,從而避免對同一資源進行重複操作,提升系統性能。比如,當我們有多個 goroutine 併發調用一個同一個函數時,singleflight 能夠實現只讓一個 goroutine 發起調用 ⌘ Read more

⤋ Read More

Go 中祕而不宣的數據結構 maphash:性能之王
哈希算法 (也稱散列算法) 是一種將任意長度的輸入數據轉換成固定長度輸出的數學算法。Hash 算法的應用場景Hash 算法常常用在以下的場景中:數據完整性驗證 可以爲文件生成唯一的哈希值,用於檢測文件是否被篡改 常見場景如軟件下載時的 MD5 校驗、區塊鏈中的數據驗證 密碼存儲安全 不直接存儲用戶密碼原文, 而是存儲密碼的哈希值 即使數據庫被攻破, 黑客也無法直接獲取 ⌘ Read more

⤋ Read More

Gin 框架 JSON 格式返回結果的使用方式
大家好,我是 frank。「Golang 語言開發棧」公衆號作者。01 介紹Gin 框架爲 JSON、XML 和 HTML 渲染提供了易用的 API。本文我們主要介紹 JSON 的使用方式。02 JSON在 Go 項目開發中,當開發 HTTP API 時,我們通常提供 JSON 格式的返回結果。Go 框架爲 JSON 渲染提供了易用的 API。普通 JSON示例代碼:func main() { ⌘ Read more

⤋ Read More

應用性能優化:如何有效地分析和優化 pprof CPU 性能分析數據
pprof 是一個用於分析 Go 程序性能數據的工具,幫助開發者找出 CPU、內存和其他瓶頸。本文提供了一個詳細的分步指南,介紹如何分析 .pprof 文件,包括設置、生成文件和解釋結果。第一步:安裝必要工具———-要分析 .pprof 文件,請確保安裝以下工具:Go 編程語言: 從官方網站安裝 Go。 驗證安裝:go version pprof 工具: ppr ⌘ Read more

⤋ Read More

爲 Nintendo Switch™ 編譯 Go 程序
之前,我們將 Go 程序編譯爲 WebAssembly,然後轉換爲 C++ 文件以在 Nintendo Switch 上運行。現在,我已成功將 Go 程序編譯爲 Nintendo Switch 的原生二進制文件,並在那裏運行遊戲。我使用-overlay選項用 C 函數調用替換系統調用。此外,我開發了一個新的包 Hitsumabushi[2] 來生成此內容的 JSON。注意–本文及文中的開源項目僅 ⌘ Read more

⤋ Read More

Go 包構建:專家也未必瞭解的文件選擇細節
在 Go 語言開發中,包(package)是代碼組織的基本單位 [1],也是基本的構建單元。Go 編譯器會將每個包構建成一個目標文件 (.a),然後通過鏈接器將這些目標文件鏈接在一起,形成最終的可執行程序。儘管 Go 包的構建過程看似簡單,但實際上蘊含着許多值得深入瞭解的細節。例如,當我們執行 go build 命令時,Go 編譯器是如何選擇需要編譯的源文件的?你可能會回答:“不就是通過文件名中的 ⌘ Read more

⤋ Read More

Gin 框架怎麼使用自定義驗證器?
大家好,我是 frank。「Golang 語言開發棧」公衆號作者。01 介紹Gin 框架自定義驗證器,分爲字段級別驗證器和結構體級別驗證器。其中結構體級別驗證器,可以用於跨字段驗證,也可以用於和字段級別驗證器結合使用。需要注意的是,結構體級別驗證器的優先級小於字段級別驗證器。02 字段級別自定義驗證器定義字段級別驗證器示例代碼:var userValidator validator.Func ⌘ Read more

⤋ Read More

Go 語言實現守護進程的技術詳解
引言–在後端開發中, 守護進程 (Daemon) 是一個非常重要的概念。它是一個在後臺運行的長期存在的進程, 不受終端控制。本文將詳細介紹如何使用 Go 語言實現守護進程, 並探討其中的關鍵技術點。什麼是守護進程?——–守護進程具有以下特徵:在後臺運行 與終端會話無關 通常在系統啓動時啓動, 在系統關閉時關閉 沒有控制終端 作爲服務運行 守護進程的啓 ⌘ Read more

⤋ Read More

Go sync-Cond:最容易被忽視的同步機制
引言在探討 Go 語言中的同步機制時,大多數開發者都熟悉 sync.Mutex 和 sync.RWMutex。然而,還有一個強大但經常被忽視的同步原語:sync.Cond。本文將詳細介紹 sync.Cond,解釋它的工作原理,並通過實際示例說明其應用場景。什麼是 sync.Cond?當一個 goroutine 需要等待一些特定的事情發生時,例如一些共享數據發生變化,它就會 “阻塞”,這意味着它只是 ⌘ Read more

⤋ Read More

eBPF on Go
本篇內容是根據 2021 年 10 月份#201 eBPF and Go[1] 音頻錄製內容的整理與翻譯eBPF(已有 7 年曆史)是一個可以在 Linux 內核中運行代碼的沙箱。它最初是一種構建防火牆的技術,隨着時間的推移不斷髮展,包含一系列新功能。本期大家討論了 eBPF 的起源及其工作原理,並深入研究了一些實際用例。雖然 eBPF 程序本身不是用 Go(更像 C)編寫的,但我們將瞭解如何從 ⌘ Read more

⤋ Read More

使用 go-jsonstruct 快速生成 Go 結構體,支持 JSON 或 YAML!
在 Go 語言開發中,我們經常需要處理 JSON 或 YAML 格式的數據。爲了方便地解析和操作這些數據,通常會定義相應的 Go 結構體與之對應。然而,手動編寫這些結構體定義可能會非常繁瑣,尤其是在處理複雜數據結構時。go-jsonstruct 工具應運而生!它可以幫助我們自動生成 Go 結構體定義,從而節省時間和精力,提高開發效率。本文將深入探討 go-jsonstruct 的功能、使用方法以及 ⌘ Read more

⤋ Read More

一個強大可靠的 Golang 池化庫 ants
ants 是 golang 語言的一個強大的、可靠的池化解決方案庫。ants 是一個高性能的 goroutine 池,實現了對大規模 goroutine 的調度管理、goroutine 複用,允許使用者在開發併發程序的時候限制 goroutine 數量,複用資源,達到更高效執行任務的效果。它可以自動調度海量的 goroutine,複用 goroutine,以及定期清理過期的 goroutine,可 ⌘ Read more

⤋ Read More

Go 項目實戰 - API 路由的分模塊管理
隨着項目開發的迭代,我們寫的接口往往會越來越多,如果都把 API 的路由寫到一個文件裏,那麼整個路由文件就會變得又亂又長,所以我們最好在項目開始階段就給路由的分模塊管理做好規劃。今天這個文章給大家介紹一下 Web 項目 API 路由的分模塊管理,我們的項目使用的是 Gin 框架,但基本上所有的 Web 框架都能按照這個方式來分模塊管理 API 接口的路由。 一些路由管理混亂的例子——– ⌘ Read more

⤋ Read More

Go 併發控制:sync-Once 詳解
在 Go 語言的併發編程中,常常會遇到需要確保某個操作僅執行一次的場景。sync.Once 是 Go 標準庫中的一個簡單而強大的工具,專門用於解決這種需求。本文將深入解析 sync.Once 的使用方法和原理,幫助你更好地理解 sync.Once 在併發控制中的用法。sync.Oncesync.Once 是 Go 語言 sync 包中的一種同步原語。它可以確保一個操作(通常是一個函數)在程序的生命 ⌘ Read more

⤋ Read More

Go 編譯的幾個細節,連專家也要停下來想想
在 Go 開發中,編譯相關的問題看似簡單,但實則蘊含許多細節。有時,即使是 Go 專家也需要停下來,花時間思考答案或親自驗證。本文將通過幾個具體問題,和大家一起探討 Go 編譯過程中的一些你可能之前未曾關注的細節。 注:本文示例使用的環境爲 Go 1.23.0、Linux Kernel 3.10.0 和 CentOS 7.9。Go 編譯默認採用靜態鏈接還是動態鏈接?————— ⌘ Read more

⤋ Read More

Go 中祕而不宣的數據結構 CacheLine:精細優化
在現代多核處理器中,高效的緩存機制極大地提升了程序性能,而 “僞共享” 問題卻常常導致緩存機制的低效。背景----- cacheline 本文中有時又叫做 緩存行在現代多核處理器中,三級緩存通常分爲三級:L1、L2 和 L3,每一級緩存的大小、速度和共享方式都不同:L1 緩存:這是速度最快的緩存,通常每個 CPU 核心都有獨立的 L1 緩存。L1 緩存分爲兩個部分:一個用於存儲指令(L1I),另 ⌘ Read more

⤋ Read More

用 Go 語言如何實現將中文轉化爲拼音
有這麼一個需求:新用戶入職 創建一系列賬號比較麻煩,打算通過接口傳入姓名進行初始化。想把姓名轉化成拼音。因爲有些賬號即需要中文也需要英文。下面看看用 Go 語言如何去解決的。要將用戶的姓名轉換爲拼音,可以使用 Go 語言的第三方庫,比如 github.com/mozillazg/go-pinyin,這是一個流行的庫,專門用來將漢字轉換爲拼音。你可以通過它生成拼音格式的英文名稱,用於初始化賬戶時的多 ⌘ Read more

⤋ Read More

只改變一個字符就能使 Golang 程序提速 42-
虎哥來聊聊怎麼用一個小小的改動,給你的 Golang 代碼提速 42%!很多時候,程序性能優化就是這樣:只要動一個字符,就可能帶來出人意料的提升。今天咱們就從切片傳遞優化、變量聲明優化和字符串拼接優化入手,看看怎麼改動這麼一個字符能讓 Golang 飛起來!🚀切片傳遞優化先來說說切片。切片在 Go 語言中用得特別多,因爲它們既靈活又方便。然而,切片的傳遞會帶來性能問題,尤其是當切片非常大時。原始代 ⌘ Read more

⤋ Read More

Gin 框架怎麼驗證綁定到結構體的字段?
大家好,我是 frank。「Golang 語言開發棧」公衆號作者。01 介紹在使用 Gin 框架開發項目時,通常我們選擇模型綁定的方式接收請求參數,我們在上一遍文章中,已經介紹過使用 Gin 框架接收請求參數的常用方式。本文我們主要介紹怎麼驗證綁定到結構體的字段,順便補充關於模型綁定的一些內容。02 模型綁定關於 Gin 框架的模型綁定,我們在上一篇文章中介紹了 ShouldBind 方法,該 ⌘ Read more

⤋ Read More

使用 Go 構建 Web 應用:MVC 模式、Gin 框架、GORM 和 JWT
在本文中,我們將使用 Go 編程語言構建一個 Web 應用程序,利用 Gin 框架進行路由,GORM 進行數據庫交互,並使用 JWT(JSON Web Tokens)進行身份驗證。應用程序將採用 MVC(模型 - 視圖 - 控制器)設計模式,以促進關注點的清晰分離。前置條件—-在開始之前,請確保您具備以下條件:已在您的計算機上安裝 Go(版本 1.16 或更高)。 已設置 Postgre ⌘ Read more

⤋ Read More

一文帶你看懂 Golang 最新特性
作者:騰訊 PCG 代碼委員會 經過十餘年的迭代,Go 語言逐漸成爲雲計算時代主流的編程語言。下到雲計算基礎設施,上到微服務,越來越多的流行產品使用 Go 語言編寫。可見其影響力已經非常強大。一、Go 語言發展歷史介紹Go 語言起源於 2007 年的 Google;創始人有三位,分別是 Ken Thompson、Rob Pike、Robert Griesemer;他們可謂是大佬中的大佬。最初的構 ⌘ Read more

⤋ Read More

Golang 編譯:靜態鏈接和動態鏈接
本文介紹了 Go 語言中靜態鏈接和動態鏈接的概念,解釋了它們的區別和各自優勢。通過示例,展示瞭如何生成靜態或動態鏈接的二進制文件,以及使用工具進行檢查。文章還討論了內部和外部鏈接器的區別,如何在編譯時選擇鏈接方式,以及在交叉編譯時處理 cgo 的方法。最後,提到了減小二進制文件大小的技巧和安全性方面的考慮。概述–Go 語言最大的優勢之一就是它的編譯器,它爲程序員抽象了許多細節,讓你可以輕鬆地爲幾 ⌘ Read more

⤋ Read More

性能測試:流量回放工具 - GoReplay
介紹GoReplay 是一個開源網絡監控工具,可以將實時 HTTP 流量捕獲並重放到測試環境。應用成熟的過程中,測試所需的工作量往往會成倍增長。針對這個問題,GoReplay 爲使用者提供了重用現有通信量進行測試的簡單方法。它可以在不改動產品基礎結構、且不影響現有流量的情況下,對這些流量進行分析和記錄,從而增強使用者對代碼部署、配置和基礎結構進行更改的信心。下載及安裝下載地址:https://giRead more

⤋ Read More

Go 語言 bufio 包入門:10 分鐘掌握高性能 I-O 操作
大家好,今天我們來聊一個 Go 語言中非常實用的包 - bufio。不管你是剛入門的新手還是有經驗的開發者,這篇文章都能幫你快速掌握 bufio 的使用!🌟 什麼是 bufio?————-bufio 是 Go 語言提供的一個帶緩衝的 I/O 包,它像是給 I/O 操作加了一個 “加速器”,通過減少系統調用次數來提升性能。想象一下:不用緩衝:每次讀寫都直接操作硬盤,就像我們一次只買一 ⌘ Read more

⤋ Read More