Go 語言中嘗試延遲執行一個函數
Go 編程語言提供了豐富的特性,使得像 Google 這樣的大型公司能夠高效地進行軟件開發。它爲許多雲服務提供商和分佈式服務的底層基礎設施提供支持,同時保持了簡單易學的特點。在 Go 中,我們可以根據需要使用指針類型和值類型。在本文中,我們將探討一個有趣的使用場景。函數調用中的切片和映射傳遞————-通常,在 Go 中調用函數時,切片(slice)和映射(map)並不是通過指針傳遞 ⌘ Read more
用 Option 模式和對接層簡化和管理 Go 項目的外部 API
在項目開發實現功能需求的過程中不可避免的要與外部第三方系統進行交互,這些交互大部分是通過請求 API 接口來完成的。前幾節提到但一直沒帶大家用代碼過一遍的 Lib 層就是負責寫第三方對接邏輯的,通過把跟第三方對接的邏輯限制在 Lib 層裏,讓項目的其他部分不需要關注第三方的邏輯,從而達到每部分都職責分明,這樣項目的代碼多起來後纔不會變得臃腫和雜亂。不過在演示 Lib 層的使用前我們需要先一起給項目 ⌘ Read more
Go 源碼是如何解決測試代碼循環依賴問題的?
最近我寫了一篇講解 context 包源碼的文章《Go 併發控制:context 源碼解讀》,在閱讀源碼的過程中,我在 context 包測試代碼中發現了一個解決循環依賴的小技巧,在此分享給大家。xtest.go 解決循環依賴context 包源碼目錄結構如下: https://github.com/golang/go/tree/go1.23.0/src/context$ tree contex ⌘ Read more
Go 語言五種實現 broadcaster 的方法,你喜歡哪一種?
昨天看到 Jaana Dogan 創建了一個 broadcaster 的庫, 話說美女 Jaana Dogan 又回到了 Google 了麼。她的實現我們就當做 broadcaster 的第一個實現吧。什麼是 broadcaster?就是村口的大喇叭,一播音,全村都知道了。Jaana Dogan 實現的這個 broadcaster 只有通知的功能,沒有傳遞消息,也不能重用。我們就以這個庫爲基準,看 ⌘ Read more
One benefit with bluesky is your username is also a website. And not a clunky URL with slashes and such. I wish twtxt adopted that. I have advocated for webfinger to for twtxt to let us do something like it with usernames. Nostr has something like it
By default the bsky.social urls all redirect to their feeds like: hmpxvt.bsky.social
Many custom urls will redirect to some kind of linktree or just their feed cwebonline.com or la.bonne.petite.sour.is or if you are a major outlet just to your web presence like https://theonion.com or https://netflix.com
Its just good SEO practice
Do all nostr addresses take you to the person if typed into a browser? That is the secret sauce.
No having to go to some random page first. no accounts. no apps to install. just direct to the person.
用 Go 實現 TCP 連接的雙向拷貝
在做網絡編程時,我們常常會遇到各種性能問題,尤其是在面對大量連接和高併發的情況下。今天,我就來聊聊如何用 Go 實現一個高效的 TCP 連接的雙向拷貝機制,幫助你減少延遲、提高吞吐量。這篇文章既適合對網絡編程有一定了解的開發者,也適合那些想要進一步提升性能的程序員。首先,給大家簡要介紹一下 “TCP 連接的雙向拷貝” 是什麼意思。簡單來說,這就是將來自一個連接的數據拷貝到另一個連接,通常這種操作是 ⌘ Read more
設計模式 in Go:Prototype
建造模式,處理與創建對象及對象實例化過程相關的問題,通常尋求以分離業務代碼和對象創建邏輯,或將複雜的構造邏輯封裝在可重用組件中的方式。讓我們來探討第四種創建模式——原型模式。問題背景: 我們有一個對象,你要創建它的一個拷貝。您可以採用什麼方法來實現這一點?也許您需要知道該對象所屬的類型,從而能夠創建新的同樣類型的對象,然後將原始對象中每個字段值複製到新對象中。該類包含一些隱藏字段,因此你無法複製 ⌘ Read more
asyncgo,純 Go 編寫的異步執行器
Asyncgo[1] 是純用 Go 編寫的零依賴異步任務執行器,優先考慮速度和易用性。特徵–異步任務執行:提交任務以異步執行並檢索結果。 無需手動管理 Goroutine :抽象化管理 Goroutine 的複雜性,並簡化代碼。 工作池管理:Asyncgo 仔細處理工作池創建和任務執行。 正常關閉:確保在關閉工作線程之前完成所有現有任務。 任務取消:支持終端終止任務。 ⌘ Read more
設計模式 in Go: Memento
行爲模式旨在解決對象間通信和交互相關的問題,專注於定義那些複雜到無法靜態設計的協作策略,這些協作策略使得程序可以在運行時動態地進行職責派遣以實現更好的擴展。今天我們開始第 3 個行爲模式的學習 —— Memento(備忘錄模式)。問題背景:在我們需要記錄和恢復對象的內部狀態,而又不希望破壞封裝原則時,可以使用備忘錄模式。有時,我們需要在特定時間點保存對象的狀態,並能夠在以後恢復該狀態。然而,直接暴 ⌘ Read more
No. 2025 Won’t Be The Year of The Linux Desktop.
Programmers banned. Bankruptcy & Funding problems. Lawsuits galore. 2024 was the worst year for Linux. Ever. And 2025 isn’t going to save us. ⌘ Read more
(#uipdbaa) @movq If it turns out alright, my daughter is going to do a few more designs for me! You’d be more than welcome to just click and pur …
@movq @www.uninformativ.de If it turns out alright, my daughter is going to do a few more designs for me! You’d be more than welcome to just click and purchase them of my portfolios when ready 🤣 ⌘ Read more
The Uniform
[Based on a story I wrote during upper-secondary school based on real
events. I translated it recently from Swedish and edited some of it. I
removed most (all?) elements of fiction.
Not a typical night, since it’s at an event in another city, but it
gives a taste of what partying in, say, 1989(?) was like. And yes, I
really usually drank two bottles of wine during a pre-party in those
days. Not unusual in the crowd I was hanging out with, I’m afraid.]
I was maybe 17 or 18. I was going to Härnösand, two train sto … ⌘ Read more
HeapMap: 一個混合功能的數據結構 Go 語言實現
今天在準備《祕而不宣》系列下一篇文章時,思緒飄散了,突然想到使用 Heap 的功能再加 HashTable (Map) 的功能,可以構造一種新的數據結構,然後把我聚合程序中的數據聚合數據結構替換掉,總之思緒翩翩。然後在網上搜了一下,這種數據結構其實早就有了,名字叫 HeapMap。HeapMap (也叫做 PriorityMap) 是一種結合了堆和哈希映射的數據結構,常用於需要按鍵排序並進行高效查 ⌘ Read more
Go 高級構建指南
本文將探索 Golang 高級構建技巧,從而有助於創建更高效的二進制文件。原文: Advanced Go Build Techniques[1]構建選項以下是 go build 命令最常用的一些選項:-o: 指定輸出文件名。默認輸出文件名是主軟件包的名稱,在 Windows 系統中會自動添加 .exe 後綴。 -v: 詳細輸出。該選項會在編譯時打印軟件包的名稱。 -work: 打印 ⌘ Read more
ROG:高性能 Go 實現
本文根據字節跳動服務框架團隊研發工程師在 CloudWeGo 技術沙龍暨三週年慶典中演講內容《ROG——高性能 Go 實現》整理。 作者|不願意透露姓名的小劉市民ROG 之緣起ROG 的誕生是因爲我們一部分業務使用 Rust 重寫之後,獲得了非常好的收益,比如 AVG、CPU、MEM、P99,這些數據表現非常好,大約節省了接近 50% 的 CPU,內存大大降低。這個性能數據讓人眼紅,因此 ⌘ Read more
Go - Ollama 在本地構建你的 RAG 應用
這篇文章會引導大家使用 Golang 設置本地大型語言模型 (LLM) 並與之交互,以此在本地構建你的 AI 應用。設置本地 LLM首先,我們需要在本地計算機上運行 LLM。爲此,我們將使用 Ollama(可在 GitHub ollama[1] 上獲取)。雖然本地加載模型有多種選擇,但我發現 Ollama 是相對容易使用的。Ollama 支持 macOS、Linux 和 Windows。本文的代碼 ⌘ Read more
從理論到實踐:Go 項目中的整潔架構設計
前言你維護的Go 項目代碼架構是什麼樣子的?六邊形架構?還是洋蔥架構?亦或者是DDD?無論項目採用的是什麼架構,核心目標都應是一致的:使代碼能夠易於理解、測試和維護。本文將從Bob 大叔的整潔架構(Clean Architecture)出發,簡要解析其核心思想,並結合go-clean-arch 倉庫,深入探討如何在Go 項目中實現這一架構理念。準備好了嗎?準備一杯你最喜歡的咖啡或茶,隨着本文一探究 ⌘ Read more
推薦一個 Go 版本的支付庫
gopay 是一個使用 Golang 編寫的支付庫。現在支持微信、支付寶、QQ、通聯支付、拉卡拉、PayPal。使用方法如下:引入 gopay 庫go get -u github.com/go-pay/gopay使用示例:import ( “github.com/go-pay/gopay” “github.com/go-pay/xlog”)func main() { xlog.I ⌘ Read more
kcp 協議的 Golang 實現庫
kcp-go 是 Golang 實現的 kcp 協議庫,它是可靠的 UDP 庫。該庫 kcp-go 旨在通過 UDP 數據包提供流暢、有彈性、有序、經過錯誤檢查和匿名的流傳遞。該庫和開源項目 kcptun 經過了戰鬥測試。從低端 MIPS 路由器到高端服務器,數以百萬計的設備在各種應用中部署了基於 kcp-go 驅動的程序。包括在線遊戲、直播、文件同步和網絡加速。我們介紹一下 kcp 協議,kcp ⌘ Read more
Go 併發控制:context 源碼解讀
context 是 Go 語言的特色設計之一,主要作用有兩個:控制鏈路和安全傳值,並且 context 是併發安全的。context 在 Go 1.17 版本被引入,經過數年的迭代,在設計和用法上已經趨於穩定,本文以最新的 Go 1.23.0 版本源碼爲基礎,帶你深入理解 context 的設計和實現。context 設計context 被設計爲一個接口,名爲Context。爲了支持不同特性,這個 ⌘ Read more
Borgo:像寫 typescript 一樣來寫 Go,爽飛了
最近,我發現了一個有趣的新編程語言——Borgo。如果你是一個對編程語言感興趣的開發者,或者在使用 Go 開發應用時曾想過 “如果 Go 能多點現代語言特性會怎樣”,那這篇文章一定值得你讀下去!Borgo 的定位非常清晰:它是一種以簡潔和高效爲核心的語言,最終編譯成 Go 代碼。這意味着什麼?你不僅能獲得 Go 語言的性能優勢,還能享受到現代編程語言帶來的靈活性和便捷性。今天我們來聊聊 Borgo ⌘ Read more
fullmetalScience submits CCS proposal for ‘NoShore’ project
fullmetalScience1 has submitted their first CCS proposal2 looking to complete work on NoShore, a project dedicated to on-the-go offline payments:
TL;DR The document proposes a shell-based environment that users can run to enable offline payments with supporting merchants, whereas the actual signing device will be developed separately in an upcoming iteration.
”`
Total funding: 45 XMR.
ETA: Read more”`
Easy: 7.08 miles, 00:10:03 average pace, 01:11:04 duration
nice cool run. well rested, and kept it mainly in zone 2 as intended. was not sure how my back was going to be after i tweaked it moving weights around yesterday, but it was fine. cushy mach 6s on and some ibuprofen just in case.
#running
在 Go 中如果獲取 goroutine 的 id?
如果你使用過如 Python、Java 等主流支持併發的編程語言,那麼通常都能夠比較容易的獲得進程和線程的 id。但是在 Go 語言,沒有直接提供對多進程和多線程的支持,而是提供了 goroutine 來支持併發編程。不過在 Go 中,獲取 goroutine 的 id 並不像其他編程語言那樣容易,但依然有辦法,本文就來介紹下如何實現。獲取當前進程的 id首先,雖然 Go 沒有提供多進程編程,但啓 ⌘ Read more
[ANN] [CCS Draft] NoShore: Groundwork for on-the-go offline payments
Please feel free to review the linked CCS-draft - any workable feedback is welcome!
Link: https://repo.getmonero.org/fullmetalScience/ccs-proposals/-/blob/noshore/fullmetalscience-noshore.md
u/fullmetalScience (monero.town) ⌘ Read more
My neighbour is always either coming in or going out
Monero Tech meeting scheduled for 16 December 2024 1800 UTC
The next Monero Tech meeting is scheduled to take place on Monday, December 16 2024 at 18:00 UTC, in the #no-wallet-left-behind 1 IRC-Libera/Matrix channels:
Based on the opinions given here2 I decided to go back to the No Wallet Left Behind Matrix room and IRC channel for the next i.e. coming Monday’s meeting, and to not contiune to hold meetings like the last one in the -dev Matrix room and IRC channel.
This meeting’s c … ⌘ Read more
(#skgn6ea) @bender@bender Already planning on going back to the same place again next year 🤣
@bender Already planning on going back to the same place again next year 🤣 ⌘ Read more
Go 語言中的併發模式
Go 語言以其併發性和輕量級的 goroutine 而聞名,學習如何使用和處理它們是最具挑戰性的任務。在本文中,我將展示一些併發模式及其使用場景,以幫助您識別所需場景的模式。Goroutine————package mainimport ( ”fmt” ”time”)func main() { go sayHello() // 啓動goroutine tim ⌘ Read more
Go sync-Pool 性能優化的利器
sync.Pool 簡介————sync.Pool 是什麼sync.Pool 是 Go 語言標準庫中提供的一個用於對象複用的工具,它具有以下特點:對象緩存:使用 Get、Put 方法可以獲取和歸還 sync.Pool 中的數據,從而減輕內存分配與垃圾回收的壓力; 自動回收:sync.Pool 中的對象可能會被自動回收。這意味着即使你將對象放入池中,也不能保證該對象會一直存在於 ⌘ Read more
Erlang Solutions: Advent of Code 2024
Welcome to Advent of Code 2024!Like every year, I start the challenge with the best attitude and love of being an Elixir programmer. Although I know that at some point, I will go to the “what is this? I hate it” phase, unlike other years, this time, I am committed to finishing Advent of Code and, more importantly, sharing it with you.
I hope you enjoy this series of December posts, where we will discuss the approach for each exercise. … ⌘ Read more
設計模式 in Go: Iterator
行爲模式旨在解決對象間通信和交互相關的問題,專注於定義那些複雜到無法靜態設計的協作策略,這些協作策略使得程序可以在運行時動態地進行職責派遣以實現更好的擴展。今天我們開始第 2 個行爲模式的學習 —— Iterator(迭代器模式)。問題背景:設想我們定義了一個新的數據類型,它包含了一系列數據元素,可能是以 list、array、set 或其他據結構進行存儲,重要的是我們後續會出於性能、功能方面 ⌘ Read more
理解 Go 協程調度的本質
作者:jiayan golang 的一大特色就是 goroutine,它是支持高併發程序的重要保障;通過 go 關鍵字我們就能輕易創建大量的輕量級協程,但它和我們認知中的線程有什麼區別呢,輕量在哪裏,具體是如何進行調度的….. 本文將從涉及到的一些基礎知識開始,逐步介紹到 go 協程調度的核心原理,希望你能有所收穫~ 函數調用棧進程在內存中的佈局首先回顧下進程的內存佈局~ 操作系統把磁盤上 ⌘ Read more
Go 開發者的密碼學導航:crypto 庫使用指南
Go 號稱 “開箱即用”,這與其標準庫的豐富功能和高質量是分不開的。而在 Go 標準庫中,crypto 庫(包括 crypto 包、crypto 目錄下相關包以及 golang.org/x/crypto 下的補充包) 又是 Go 社區最值得稱道的 Go 庫之一。crypto 庫由 Go 核心團隊維護,確保了最高級別的安全標準和及時的漏洞修復,爲開發者提供了可靠的安全保障。crypto 還涵蓋了從基 ⌘ Read more
精通 Go 併發:上下文傳播與取消的奧祕
Go 的併發模型堪稱一場革命,但管理複雜的併發操作並非易事。這時,context 的傳播與取消機制便成爲了強有力的工具。通過這些機制,我們可以構建健壯的、可取消的操作,甚至跨越多個 goroutine 和網絡邊界。基礎知識—-context 包提供了一種方法,用於在 API 邊界和進程之間傳遞截止時間、取消信號以及請求範圍的值。這是控制長時間運行操作和優雅關閉服務的關鍵。以下是一個使用 con ⌘ 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
**Problem 2: Your SSD-backed database has a usage-pattern that rewards you with a 80% page-cache hit-rate (i.e. 80% of disk reads are served d …**
Problem 2: Your SSD-backed database has a usage-pattern that rewards you with a 80% page-cache hit-rate (i.e. 80% of disk reads are served directly out of memory instead of going to the SSD). The median is 50 distinct disk pages for a query to gather its query results (e.g. InnoDB pages in MySQL). What is the expected average query time from your database?
Share your solution via Twtxt … ⌘ Read more
SNeedlewoods completes first part-time Monero dev work CCS
SNeedlewoods1 has posted a Monero dev update2 after working part-time on Monero development for 1 month (~65 hours) during their first CCS proposal3:
Thanks for all the support from CCS coordinators, upvoters, donors and dev colleagues. It’s an honor to be able to work with you. [..] Will continue to work on the wallet API and will try to solve review comments ASAP, but since I’ll go take some days off … ⌘ Read more
(#v72lwdq)
https://pkg.go.dev/go.mills.io/static ⌘ Read more
**(#dy3n2cq) @bender@bender Thanks! Also very interesting rid bits here 🤣
The author, parent hash, timestamp, and message values go into …**
@bender Thanks! Also very interesting rid bits here 🤣The author, parent hash, timestamp, and message values go into the hash. (see Message Hash for details) ⌘ Read more
5 分鐘搞懂 Golang 數據庫連接管理
本文介紹瞭如何在 Golang 中優化數據庫連接,通過有效管理連接來提高應用程序吞吐量。原文: Optimizing Database Connections in Go: Improving Throughput by Managing Open Connections Efficiently[1]Go 的 database/sql 軟件包提供了自動化數據庫連接池,能夠幫助開發人員有效管理連 ⌘ Read more
用 Go 寫 GUI?這套跨平臺工具箱真香:Tk9-0
大家好!今天我想聊聊用 Go 語言開發 GUI(圖形用戶界面)應用的一個輕量級工具 —— Tk9.0。如果你曾經嘗試用 Go 開發過桌面應用,可能會覺得有些難下手:傳統的工具太 “重”,需要額外安裝依賴,還經常跟操作系統深度綁定,跨平臺開發的成本也不低。而 Tk9.0 正好解決了這些痛點。什麼是 Tk9.0?Tk9.0 是一個 CGo-free(無 C 綁定)、跨平臺的 GUI 工具包,由 mod ⌘ Read more
GORM 分頁新方案
Gorm 是 Go 語言中最常用的 ORM(對象關係映射)包之一,但它在某些功能上仍有不足,其中之一就是分頁。分頁是管理 Web 應用程序中大數據集的基本功能。通過分頁,可以限制和顯示數據庫中的部分數據,而不必一次性檢索整個表的數據。雖然 Gorm 的文檔中介紹瞭如何使用 Scopes 來實現分頁,但在靈活性和可用性上仍有改進空間。本文介紹了一種利用 Gorm 的 Clauses 特性來簡化分頁並 ⌘ Read more
(#pldqlcq) Anyone had a chance to have a go at this problem yet? 🤔I’ll post my solution in a few hours…
Anyone had a chance to have a go at this problem yet? 🤔I’ll post my solution in a few hours… ⌘ Read more
設計模式 in Go: Builder
建造模式,處理與創建對象及對象實例化過程相關的問題,通常尋求以分離業務代碼和對象創建邏輯,或將複雜的構造邏輯封裝在可重用組件中的方式。讓我們繼續來學習第 3 種創建型模式——Builder 模式(建造者模式)。 問題背景: 創建的對象有時比較複雜,可能需要按照特定順序對所有依賴項進行逐一構建,創建依賴項後再最終構建期望的對象。創建這些最終對象及依賴對象,需要很多參數。如果通過構造函數的參數列表 ⌘ Read more
Go 協程正確用法基礎與進階
在 Go(Golang)的世界中,goroutines 是語言的瑰寶之一。它們輕量、高效,使開發者能夠輕鬆編寫併發和並行程序。但正如俗話所說,能力越大,責任越大。濫用 goroutines 可能導致內存泄漏、性能下降,甚至導致生產服務器崩潰。在這篇文章中,我們將介紹 goroutines 的基礎知識、最佳實踐,以及每個開發者應該瞭解的重要 “注意事項”。讓我們深入瞭解吧!Goroutines 概覽 ⌘ Read more
Monero Tech meeting scheduled for 9 December 2024 1800 UTC
The next Monero Tech meeting is scheduled to take place on Monday, December 9 2024 at 18:00 UTC, in the #no-wallet-left-behind 1 IRC-Libera/Matrix channels:
Based on the opinions given here2 I decided to go back to the No Wallet Left Behind Matrix room and IRC channel for the next i.e. coming Monday’s meeting, and to not contiune to hold meetings like the last one in the -dev Matrix room and IRC channel.
This meeting’s chai … ⌘ Read more
Pinellas County Running: 3.14 miles, 00:08:34 average pace, 00:26:55 duration
needed to get out. was going a bit crazy.
#running
Using CloudEvents in Go
1 points posted by Elton Minetto ⌘ Read more
設計模式 in Go: Decorator
結構模式關注代碼、組件以及接口的有效組織與調用,主要解決如對象間的關係管理、提供必要抽象與具體實現相分離,以及將多個不同的庫或框架集成爲一個統一且連貫的系統等問題。今天我們開始第 4 個結構模式的學習 —— Decorator(裝飾器)。問題背景:我們希望在運行時增強或修改特定對象的功能。由於對象存在一定的類繼承關係,所以開發者可能首先想到通過修改基類的功能來實現,以希望這些修改可以同時在所有 ⌘ Read more