@prologic@twtxt.net hm, I installed latest go (vps did not have that intalled), I then did make deps, then make server, when I use the last command it said minify was not installed, I assumed minify package was the one to get, but it fails with that. (debian).
@lyse@lyse.isobeef.org hm, that’s weird, not sure what’s going on there to be honest.
Emilia was so excited about this, and this woman brought her pony so that they could go for a stroll along the river in the forest.
Go 語言定時任務 time-Sleep 和 time-Tick 的優劣對比分析
golang 寫循環執行的定時任務,常見的有以下三種實現方式 1、time.Sleep 方法:for { time.Sleep(time.Second) fmt.Println(“我在定時執行任務”)}2、time.Tick 函數:t1:=time.Tick(3time.Second)for { select { case <-t1: fmt.Println(“t1定時 ⌘ Read more
Golang - range 迭代器揭祕
簡介我們正在使用 Go 語言編寫 Dolt[1] ,這是世界上第一個版本控制的 SQL 數據庫。像大多數大型 Go 代碼庫一樣,我們有很多需要迭代的集合類型。 Go 1.23 的新特性 [2] 中,你現在可以使用 range 關鍵字來迭代自定義集合類型。這是如何工作的? 這是個好主意嗎? 讓我們深入探討一下。如果你想運行本教程中的任何代碼,你需要 安裝 Go 1.23 發佈候選版 [3] ,或者在 ⌘ Read more
使用 Go 語言創建你的第一個 2D 遊戲
Pixel 是一個用 Go 語言編寫的 2D 遊戲開發庫, 它爲開發者提供了一套簡潔而強大的工具, 讓創建像素風格的遊戲變得輕而易舉。本文將深入探討 Pixel 庫的核心特性, 並通過豐富的示例來展示如何使用它來構建引人入勝的 2D 遊戲。Pixel 的誕生與理念————Pixel 誕生於開發者對簡單而高效的 2D 遊戲開發工具的渴望。它的設計理念是 “手工打造”, 這意味着庫的每 ⌘ Read more
Genkit:新一代基於 Go 的 AI 應用開發框架
Google 推出了 Genkit for Go,這是一個開源框架,用來以 Go 語言原生構建 AI 應用與雲服務。該項目是 Google Firebase 和 Go 團隊聯手合作的最新成果。Genkit for Go 於 7 月 17 日正式推出,目前版本處於 alpha 階段。Gophers 能夠通過它將 Go 的性能和併發優勢與 Genkit 的庫和工具相結合,從而來構建生成式 AI 應用程 ⌘ Read more
(I don’t really trust Android, though, and I suspect that apps can still install background services that are always active. Pure speculation and paranoid on my part, but still.)
Which is fair, but I would say the GrapheneOS devs in particular are also quite paranoid about this stuff and go to great pains to make sure this stuff can be controlled by the user.
docker build
without any --build-arg VERSION=
or --build-arg COMMIT=
there was no version information in the built binary and bundled assets. Therefore cache busting would not work as expected. When introducing htmx and hyperscript to create a UI/UX SPA-like experience, this is when things fell apart a bit for you. I think....
@prologic@twtxt.net Yeah that is probably what was happening. I wish that go build
could embed the values that go install
does.
CrowdStrike
⌘ Read more
Go 語言的 Lodash 風格庫
在 JavaScript 的世界裏,Lodash 是一個家喻戶曉的工具庫,它提供了豐富的函數,方便開發者操作數組、對象、字符串等等。Lodash 極大地提高了 JavaScript 開發者的效率,也讓代碼更加簡潔易讀。在 Go 語言 1.18 版本之前,由於缺乏泛型,我們很難實現像 Lodash 這樣功能強大且類型安全的工具庫。然而,隨着 Go 1.18 泛型的引入,這一切都發生了改變。sambe ⌘ Read more
Golang 實現坦克世界
Golang 實現坦克世界項目地址: https://github.com/gofish2020/tankgame 歡迎 Fork && Star遊戲效果—-本項目基於遊戲引擎 Ebitengine 開發,這裏有很多的實例 https://ebiten-zh.vercel.app/examples/ 便於邊學邊用程序下載到本地,直接 go run main.go即可看效果。開發使用的go1.2 ⌘ Read more
Review: Ugreen Nexode 100W 20000mAh Power Bank Offers Ample Juice to Go
Popular accessory brand Ugreen has built up a veritable lineup of portable power banks and chargers in the last few years, with several options to serve the needs of gadget users on the road. It can be hard to work out what kind of unit will meet your particular requirements, but if you are looking for a compact USB-C/A bank that has enough juice to fully recharge your smartphone and laptop a … ⌘ Read more
在 Go 中如何使用 go:embed 指令嵌入靜態文件
有時候,將配置文件、模板甚至整個前端應用直接嵌入到 Go 二進制文件中,是一種提高應用部署效率和簡化操作的有效方法。自從 Go 1.16 版本起,Go 語言官方引入了 //go:embed 指令,這使得嵌入靜態資源變得異常簡單而直接。本文將詳細介紹如何在你的 Go 應用中使用這一強大的特性。什麼是 go:embed//go:embed 在 Go 1.16 版本中被加入,這也是我接觸 Go 語言的第 ⌘ Read more
理解並使用 Golang 的 “omitempty” 特性
在使用 Go (Golang) 並將數據編碼爲 JSON 時,您可能會遇到這樣的情況:如果某些字段的值爲空,則需要從編碼輸出中省略這些字段。這就是 Golang 的 omitempty 功能發揮作用的地方。struct 字段標記中的 omitempty 選項會告訴編碼器,如果字段爲空值,則跳過該字段。什麼是 “Empty Value”?在 Go 中,Empty Value 的定義是:布爾類型爲 ⌘ Read more
How to Install the macOS Sequoia Public Beta
Apple has made a macOS 15 Sequoia beta available for its public beta testing group, letting public beta testers try out the software before it launches this fall. Keep reading to learn whether you should install it on your Mac, and if so, how to go about it.
Signing up to get the macOS Sequoia beta is simple, and can be done by enrolling a Mac in Apple’s free … ⌘ Read more
Kubestronaut in Orbit: Eleni Grosdouli
Get to know Eleni This week’s Kubstronaut in Orbit, Eleni Grosdouli, brings diverse experiences to her role as a DevOps Consulting Engineer at Cisco Systems. She’s the go-to person for DevOps and Kubernetes Automation, with a passion for… ⌘ Read more
通過實例理解 Go 訪問和操作數據庫的幾種方式
關係數據庫操作是 Go 應用開發中的重要一環,尤其是 Go Web 應用、微服務等。作爲 Gopher,我們需要了解幾種主流的數據庫訪問和操作方法,以便在項目中做出適當的選擇。我個人在日常開發中較少涉及 CRUD 類應用,因此使用 Go 訪問和操作數據庫的機會並不多,在這方面也算是有一些 “短板”。通過在這篇文章中對數據庫訪問方式進行全面的梳理,我也算是補全一下技能樹,同時也能爲讀者小夥伴提供一些 ⌘ Read more
Go 語言的 Web 開發利器:Templ - HTMX 打造交互式體驗
在 Web 開發領域,Go 語言以其簡潔、高效和強大的併發能力著稱。Templ 和 HTMX 則是與 Go 完美契合的工具,它們分別負責頁面的渲染和交互邏輯,共同打造出現代化的 Web 應用。本文將深入探討 Templ 和 HTMX 的核心概念、使用方法以及如何結合 Go 語言構建出色的 Web 應用。Templ:Go 語言的模板引擎—————-Templ 是 Go 語言自帶的 ⌘ Read more
Next Year’s iPhone 17 Unlikely to Feature TSMC’s First 2nm Chip
Reports that next year’s iPhone 17 will adopt TSMC’s next-generation 2nm process are “fake news,” a reputable source of accurate predictions about Apple’s plans claimed on Monday.
According to a post by Weibo user “Phone Chip Expert,” the 2nm process won’t go into mass production until the end of 2025. The account holder, who claims to have 25 … ⌘ Read more
在 Go 項目中使用 Redis 的幾個實用建議
今天來聊一聊 Redis,主要是聊一些在 Go 項目中使用 go-redis 代碼上的一些建議。在上代碼之前我還是要廢話幾句,在大家開發需求用到 Redis 時一定要多想個兩分鐘 “我是不是把 Redis 當數據庫用了?” 因爲數據在數據庫和 Redis 裏存兩份就就得考慮它們的一致性怎麼維護,賊麻煩,而這個一致性不做上線後還經常會出 BUG,所以不是必要我一般不用 Redis。需要過期的數據肯定 ⌘ Read more
MacRumors Giveaway: Win an Apple Watch Ultra 2 and Charger From Lululook
For this week’s giveaway, we’ve teamed up with Lululook to offer MacRumors readers a chance to win an Apple Watch Ultra 2 and a Lululook 3-in-1 Charger to go along with it.
 ⌘ Read more
Gaby - Golang 社區機器人
Gaby 是一個實驗性的新機器人, 在 Go 問題跟蹤器中以 @gabyhelp[1] 的身份運行, 試圖自動化各種機器可以合理完成的瑣碎事務, 同時也試圖發現機器可以合理完成的新事物。gaby 這個名字是 “Go AI Bot” 的縮寫, 因爲這個實驗的目的之一是瞭解 LLM 可以有效用於哪些方面, 包括識別它們不應該用於哪些方面。一些 gaby 功能將涉及 LLM; 其他功能則不會。指導原則是 ⌘ Read more
「Go 開源」freeze:一個能將源代碼轉換成圖片的工具
大家好,我是漁夫子。今天給大家推薦的開源工具是 freeze,該工具可以將源代碼或終端中的輸出內容轉換成對應的圖片。如下圖效果:比如,我們想把一個 go 語言編寫的源代碼 main.go 轉換成圖片,則可以按如下方式操作:freeze main.go –output main.png生成的效果如下:你看,就把對應的代碼按照高亮的形式生成了圖片。實現原理那這個 freeze 的實現原理是什麼呢?通 ⌘ Read more
一款用於實時監控 PostgreSQL 數據變化的 Go 語言庫
在現代應用開發中,實時數據處理扮演着至關重要的角色。實時監控數據庫變化,並對這些變化做出迅速響應,是許多應用場景(如實時數據分析、緩存更新、事件驅動架構等)的核心需求。Flash 正是這樣一款應運而生的 Go 語言庫,它爲開發者提供了便捷高效的方式來管理 PostgreSQL 數據庫的實時變化。Flash 簡介——–Flash 是一款輕量級的 Go 語言庫,它利用事件管理機制,實現了對 ⌘ Read more
Go 性能度量利器,完全替代 io-Reader 和 io-Writer!
在 Go 語言的世界裏,io.Reader 和 io.Writer 接口是數據流處理的基石。然而,標準庫並沒有提供一種便捷的方式來追蹤通過這些接口傳輸的字節數。metered-io 庫應運而生,它提供了 io.Reader 和 io.Writer 的替代品,並能夠方便地獲取傳輸的字節總數,爲性能度量和監控提供了強大的支持。metered-io 庫簡介————–metered-io ⌘ Read more
Slurm: An HPC workload manager
Member post originally published on SuperOrbital’s blog by Sean Kane In this article, we are going to explore Slurm, a popular open-source high-performance computing (HPC1) workload manager, and discover what it is, why people use it, and how it… ⌘ Read more
聊聊 go 語言對於 socket 的抽象
寫在文章開頭——go語言對於網絡抽象做了非常通用且高性能的封裝,所以就從net包源碼入手介紹一下go語言對於socket的抽象。Hi,我是 sharkChili ,是個不斷在硬核技術上作死的 java coder ,是 CSDN 的博客專家 ,也是開源項目 Java Guide 的維護者之一,熟悉 Java 也會一點 Go ,偶爾也會在 C 源碼 邊緣徘徊。寫過很多有意思的技術博客,也還在 ⌘ Read more
PolarisMesh 源碼系列 –Polaris-Go 註冊發現流程
導語北極星是騰訊開源的一款服務治理平臺,用來解決分佈式和微服務架構中的服務管理、流量管理、配置管理、故障容錯和可觀測性問題。在分佈式和微服務架構的治理領域,目前國內比較流行的還包括 Spring Cloud,Apache Dubbo 等。在 Kubernetes 的技術領域,也有以 Istio 爲代表的 ServiceMesh 技術。本篇 Blog 主要分析北極星的優勢,及其服務註冊發現的技術實現 ⌘ Read more
以 Go 語言爲例解釋什麼是僞共享以及如何解決
本文翻譯自:What’s false sharing and how to solve it (using Golang as example)譯文在解釋僞共享(false sharing)之前,有必要簡要介紹一下 CPU 架構中緩存是如何工作的。CPU 緩存中的最小單位是緩存行(cache line)(如今,CPU 中常見的緩存行大小爲 64 字節)。因此,當 CPU 從內存讀取一個變量時, ⌘ Read more
There is, also, a small controversy going around for something that should have been a small change, but that Kling (SerenityOS, and Ladybird creator) handled quite badly: https://github.com/SerenityOS/serenity/pull/6814.
Seemingly small things like this divide, and have the potential to harm a project.
Golang 編寫範型集合,官方文檔未提及的訣竅
引言–Go 的泛型功能在 Go 1.18 版本中發佈, 至今已有兩年多了。我們正在使用 Go 開發 Dolt[1] , 這是世界上第一個支持版本控制的 SQL 數據庫。儘管我們有數十萬行 Go 代碼, 但我們並沒有大量使用泛型。我們在一些地方使用泛型 來加速代碼中的高流量部分 [2] , 但總的來說, 除了 slices[3] 和 maps[4] 包中的一些有用的庫方法外, 我們還沒有找到使用泛 ⌘ Read more
Go 語言的 CI-CD 實踐
CI/CD 是現代軟件開發流程中的關鍵實踐,它代表着持續集成(Continuous Integration)和持續部署(Continuous Deployment)或持續交付(Continuous Delivery)的組合。這些實踐旨在幫助軟件開發團隊更快、更頻繁地交付高質量的軟件產品。持續集成(CI): 持續集成是一種軟件開發實踐,開發團隊成員經常將他們的代碼變更集成到共享的代碼倉庫中。這通常每 ⌘ Read more
aconfig:Go 語言中簡潔高效的配置加載庫
在軟件開發過程中,合理處理配置項對於確保代碼的靈活性和可維護性至關重要。對於 Go 語言開發者們來說,aconfig庫提供了一個簡潔明瞭的解決方案來加載配置。本文將深入探討aconfig庫的特性和使用方法,向您展示如何高效地在 Go 項目中使用這個強大的配置加載工具。aconfig 的理念與特點————–aconfig是由開源社區提供的一個配置加載庫,它的設計理念基於實現配置加載 ⌘ Read more
使用 Go 提供的 Cookie 庫簡化 Cookie 操作
在 Web 開發中,Cookie 是一種非常常見的數據存儲形式。它可以幫助我們在客戶端和服務器之間保存一些狀態,如用戶的登錄狀態、偏好設置等。在 Go 語言中,操作 Cookie 有很多種方式,今天我們重點介紹一個名爲 cookie 的庫——這是一個可以使用結構體操作 Cookie 的庫。文章將詳細介紹 cookie 庫的使用方法、實際場景中的應用以及提供豐富的示例代碼。希望通過這篇文章,你能夠更 ⌘ Read more
go-cache: 採用 Cache-Aside 模式的多層 Go 緩存
在現代的應用程序開發中,緩存是提高性能和擴展性的關鍵技術之一。在 Go 語言的生態系統中,有許多優秀的緩存庫,其中之一便是go-cache。本文將詳細介紹go-cache庫及其使用方法,旨在幫助開發者更好地利用緩存提高應用程序的性能。什麼是 go-cache?————-go-cache是一個靈活的多層緩存庫,設計用於處理內存緩存和共享緩存。它採用了 Cache-Aside(旁路緩存 ⌘ Read more
如何架構優秀的 Go 後端 REST API 服務
REST(Representational State Transfer)是 Web 服務中廣泛使用的一種架構風格,其核心思想是使用 HTTP 協議出色地創建、讀取、更新和刪除(CRUD)資源。作爲一種靜態類型、編譯型語言,Go 在構建高效、可靠的 Web 服務時具有顯著優勢。使用 Go 語言構建 REST API 服務需要我們從多個方面入手,包括項目結構、框架選擇、數據庫操作、路由設計等。以下將 ⌘ Read more
Go 使用 interface 時的 7 個常見錯誤
寫在正文之前閱讀本文之前我們來先熟悉以下的代碼原則,如果你已經很熟悉這些內容,可以直接跳到正文。接口隔離原則:絕不能強迫客戶實現其不使用的接口,也不能強迫客戶依賴其不使用的方法。 多態性:代碼變化會根據接收到的具體數據改變其行爲。 里氏替換原則:如果你的代碼依賴於一個抽象概念,那麼一個實現可以被另一個實現所替代,而無需更改你的代碼。 抽象的目的不是爲了含糊不清,而是爲了創造一 ⌘ Read more
Apple Releases Second Public Beta of iOS 17.6
Apple today seeded the second betas of upcoming iOS 17.6 and iPadOS 17.6 updates to public beta testers, with the betas coming two weeks after the initial iOS and iPadOS 17.6 developer betas.
Public beta testers can get the beta by opening up the Settings app, going to the Software … ⌘ Read more
萬字長文:Go 語言流行 ORM 框架 GORM 使用詳解
GORM 是 Go 語言中最受歡迎的 ORM 庫之一,它提供了強大的功能和簡潔的 API,讓數據庫操作變得更加簡單和易維護。本文將詳細介紹 GORM 的常見用法,包括數據庫連接、模型定義、CRUD、事務管理等方面,幫助大家快速上手使用 GORM 進行 Web 後端開發。安裝通過如下命令安裝 GORM:$ go get -u gorm.io/gorm你也許見過使用 go get -u github. ⌘ Read more
Haven’t been sleeping well lately. Going to bed late. Lots to do.
Go 1-22 提供的更加強大的 Tracing 能力
本文是由 Go Team 的 Michael Knyszek 在 2024 年 3 月 14 日發表於 go official blog,原文地址:https://go.dev/blog/execution-traces-2024runtime/trace packageruntime/trace[1] package 包含了理解並排查 Go 程序的強大工具。其功能可以生成每個 gorouti ⌘ Read more
Go 設計模式:責任鏈和函數選項,讓你的代碼更優雅!
最近接觸到越來越多有歷史 “沉澱” 的 Go 項目,深感設計模式和及時干預的重要性。近期會分享一些設計模式,一起學習代碼設計!今天的分享的設計模式是:責任鏈和函數選項模式。在日常程序裏是比較常用的。很多開源庫中也有使用。責任鏈模式—–責任鏈模式(Chain of Responsibility Pattern)是一種行爲設計模式,它允許對象將請求沿處理程序鏈進行傳遞。程序鏈既可以處理請求,也可 ⌘ Read more
Why you do not want a visualization of your Infrastructure as Code
Originally published on the appCD blog by Asif Awan You’ve been working on a new application for your company. It is going to address business requirements needed to delight customers. But while you are ready to ship your… ⌘ Read more
Golang Context 內部原理一覽
context[1] 包是每個 Go 語言程序員在編程生涯中都會使用到的, 但你們真的瞭解它的內部工作原理嗎 (因爲據說真正的美麗都藏在內在)? 如果你對此感興趣, 可以查看我之前關於 sync.WaitGroup 內部工作原理的博文 鏈接 [2] 。本文旨在簡要概覽內部工作原理, 因此我會適當簡化一些細節。如果你想查看全部的實現細節, 或者你更喜歡直接閱讀源代碼而不是博客, 可以 點擊這裏 ⌘ Read more
go 語言調用 shell 命令有這麼兩種方式,都用過了?
阻塞方式 (需要執行結果) 主要用於執行shell命令,並且返回shell的標準輸出適用於執行普通非阻塞 shell 命令,且需要 shell 標準輸出的//阻塞式的執行外部shell命令的函數,等待執行完畢並返回標準輸出func execshell(s string) (string, error){ //函數返回一個Cmd,用於使用給出的參數執行name指定的程序 cmd := ⌘ Read more
10 個提高生產力的 Go 小技巧
最近 Phuong Le 大佬針對日常開發 Go 項目時,總結了一些好用的 Go 小技巧。看了後,感覺對於剛入門 Go 的同學有一定的學習價值。可以挑好的學。應用到自己項目裏。以下內容分享給大家。在開發 Go 生產項目時,我發現自己經常重複編寫代碼和使用某些技術,直到後來回顧自己的工作時才意識到這一點。下面是從總結經驗中挑選的一些有用的代碼片段,希望對大家有所幫助。計時技巧——-如果你對跟 ⌘ Read more
Enjoy the Lovely Trillium Lake Reflected in Mt Hood Apple Vision Pro Wallpaper
Apple often picks really beautiful wallpapers and imagery to go with their products, and while the iPhone, iPad, and Mac have tended recently towards more abstract wallpapers and product imagery, the Apple Vision Pro has some really gorgeous landscapes in the “Environments” feature of the spatial computing headset. The Apple Vision Pro has not been … [Read More](https://osxdail … ⌘ Read more
PocketBase:一體化的開源 Go 語言實時後端
PocketBase 是一個開源的實時後端解決方案,採用單一文件的形式進行分發。它由嵌入式數據庫 (SQLite) 和實時訂閱功能組成,提供了開箱即用的文件和用戶管理功能、方便的管理儀表板 UI 以及簡單的 REST 風格 API。本文將深入探討 PocketBase 的功能、安裝、示例代碼和一些高級的應用技巧。主要特性—-嵌入式數據庫PocketBase 內嵌 SQLite 數據庫,這意味着 ⌘ Read more
Go: 使用依賴注入實現 Gin 框架路由處理函數的解耦
在 Go 語言開發中,Gin 是一個非常流行的 Web 框架。其輕量級、高性能的特點,使其成爲許多開發者的首選。然而,在實際項目中,隨着業務邏輯的複雜化,我們往往會遇到代碼耦合嚴重、測試困難等問題。依賴注入(Dependency Injection, DI)是一種有效的解耦手段,能夠幫助我們實現代碼的高內聚、低耦合,從而提升代碼的可維護性和可測試性。本文將探討如何在 Gin 框架中使用依賴注入來解 ⌘ Read more
Go:執行跟蹤變得更加強大
簡介Go 語言的 runtime/trace 包含一個強大的工具,用於理解和排查 Go 程序。其中的功能允許跟蹤每個 goroutine 在一段時間內的執行情況。然後,使用 go tool trace 命令(或優秀的開源工具 gotraceui)可以可視化和探索這些跟蹤中的數據。跟蹤的魔力在於,它可以輕鬆地揭示程序中其他方式難以看到的東西。例如,在 CPU 概要文件中很難看到併發瓶頸,因爲沒有要採 ⌘ Read more
Go singlefight 源碼詳解
寫在前面 通俗的來說就是 singleflight 將相同的併發請求合併成一個請求,進而減少對下層服務的壓力,通常用於解決緩存擊穿的問題。詳解基礎結構—-golang.org/x/sync/singleflight singleflight 結構體:type call struct { wg sync.WaitGroup // 這些字段在 WaitGroup 結束前寫入一次 // 只有在 W ⌘ Read more
Go:標準庫 bufio 包詳解
引言在日常開發中,對文件或輸入輸出流進行讀寫操作是非常常見的任務。Go 語言標準庫中的bufio包提供了數據的緩衝讀寫功能,使得讀寫操作更加高效。本文將詳細介紹bufio包的主要功能及其在實際編程中的應用場景。bufio 包概述bufio包主要提供了緩衝讀寫的能力,通過包裝一個io.Reader或io.Writer對象,創建一個帶緩衝的(buffered)讀寫器。使用緩衝可以減少對底層 IO 資源 ⌘ Read more
在 Go 中如何讓結構體不可比較?
最近我在使用 Go 官方出品的結構化日誌包 slog 時,看到 slog.Value 源碼中有一個比較好玩的小 Tips,可以限制兩個結構體之間的相等性比較,本文就來跟大家分享下。在 Go 中結構體可以比較嗎?在 Go 中結構體可以比較嗎?這其實是我曾經面試過的一個問題,我們來做一個實驗:定義如下結構體:type Normal struct { a string B int}使用這個結構體分別聲明 ⌘ Read more
Unfortunately not on that front. Still the same 404 posting errors and oddly occasional login errors.
That’s why I was wondering if using Go 1.22.4 could be an issue. I don’t know how exactly. Only way to test is to rebuild it with an older version I guess, which is why I did the make clean in the first place. Old habits die hard lol.
@prologic@twtxt.net Righteo, so rookie error - I obviously had some untracked, rather important files for starting my pod and I ran a make clean
. Why I originally had them in the git directory is anyone’s guess. Anyway it blew away those files including the database so that’s that. So your good self and @bender@twtxt.net etc - apologies but your profiles got nuked as well (as did my own but easily recreated).
Another thing I noticed which was the reason I ran make clean
in the first place. I noticed my pod was being built with Go 1.22.4. Could this be a problem @prologic? preflight.sh
actually errors out about it…
Go 實現可複用的通用內存緩存
本文介紹瞭如何在 Go 語言中創建一個可重用的內存通用緩存,並提供了具體的實現代碼和使用示例。Prerequisites安裝 Go go-cache package[1] 實現首先,創建一個 cache package,它包含我們正在構建的緩存的代碼。package cacheimport ( ”time” ”github.com/patrickmn/go-cache”)使用泛型實現一 ⌘ Read more
Go:log 庫的全面指南與使用技巧
引言–在 Go 語言的標準庫中,log包提供了簡單而強大的日誌功能。日誌記錄是軟件開發中不可或缺的一部分,它不僅幫助開發人員調試和排查問題,還在系統運行中提供了寶貴的運行時信息。本文將詳細講解 Go 語言log庫的各種功能及其使用技巧,幫助開發者更好地掌握和應用這一重要工具。log 包簡介——-log包是 Go 語言標準庫的一部分,提供了基本的日誌記錄功能。它支持日誌消息的格式化、日誌輸 ⌘ Read more
Go 實現雙 buffer id 生成器
本文通過 Go 實現一個 Leaf——美團點評分佈式 ID 生成系統 雙 buffer 的 id 獲取器。一. 主流程———-主流程看圖似乎步驟非常多,但實際上總結起來就以下三個步驟:客戶端發起請求 id 獲取器從緩存中獲取 如果 id 已經被消耗超過閾值,則重新加載新的號段到內存中 接下來我們來具體看一下 Go 代碼是如何實現的二. 代碼實現——-2.1 S ⌘ Read more
Go:For-Select-Done 併發設計模式應用
引言Go 語言支持的併發模型是其一大亮點,它內建的 Goroutine 機制爲構建高性能併發應用提供了基礎。在這種環境下,使用 For-Select-Done 設計模式可以優雅地處理併發任務和通道(Channel)的交互,從而實現高效的數據處理和狀態管理。For-Select-Done 設計模式概述For-Select-Done 模式是一種結構化的方式來處理 Go 中的多個通道讀寫操作,使代碼更加 ⌘ Read more
10 分鐘瞭解 Golang 泛型
泛型是 Golang 在 1.18 版本引入的強大工具,能夠幫助我們在合適的場合實現簡潔、可讀、可維護的代碼。原文: Go Generics: Everything You Need To Know[1]導言可能有人會覺得 Go 泛型很難,因此想要借鑑其他語言(比如 Java、NodeJS)的泛型實踐。事實上 Go 泛型很容易學,本文希望能幫助讀者更好的理解 Go 泛型。 👉注:本文不會將 ⌘ Read more
cassowary: 現代跨平臺的 Go 語言 HTTP 負載測試工具
在現代互聯網應用程序中,性能和響應速度是決定用戶體驗的關鍵因素。負載測試是確保我們的應用程序在高併發下仍能穩定運行的一種重要手段。本文將帶你瞭解一個現代的跨平臺 HTTP 負載測試工具——cassowary,並展示其安裝和使用方法。什麼是 cassowary?————–cassowary 是一個用 Go 語言編寫的現代跨平臺 HTTP 負載測試工具。它設計簡潔、易於使用,支持高併 ⌘ Read more
在 Go 中如何優雅的使用 wire 依賴注入工具提高開發效率?上篇
如果你做過 Java 開發,那麼想必一定聽說或使用過依賴注入。依賴注入是一種軟件設計模式,它允許將組件的依賴項外部化,從而使組件本身更加模塊化和可測試。在 Java 中,依賴注入廣泛應用於各種框架中,幫助開發者解耦代碼和提高應用的靈活性。本文就來介紹下什麼是依賴注入,以及在 Go 語言中如何實踐依賴注入,提高 Go 項目的開發效率和可維護性。什麼是依賴注入?正如前文所述,依賴注入(dependen ⌘ Read more
Go: 深入探究 uintptr 類型
Go 語言作爲一種靜態類型、編譯型語言,其獨特的類型系統爲編程提供了強大的支持。在衆多類型中,uintptr 是一個較爲特殊的類型,它用於存儲指針值的整數表示。本文將詳細介紹 uintptr 的概念、使用場景及其與普通指針類型的區別。uintptr 的定義與特性在 Go 語言中,uintptr 是一個無符號整數類型,其大小足以存儲任意指針的位模式。具體來說,uintptr 的定義如下:type u ⌘ Read more
Top Stories: WWDC Recap With iOS 18, Apple Intelligence, and More
WWDC 2024 kicked off on Monday with a jam-packed keynote revealing iOS 18, macOS Sequoia, and more, all fueled by upcoming Apple Intelligence technology.
We’ve highlighted the major announcements below, but be sure to check out our recap post that includes a video going over the highlights plus links … ⌘ Read more
Go 事件驅動編程:實現一個簡單的事件總線
前言在當今微服務和分佈式系統盛行的背景下,事件驅動架構(Event-Driven Architecture,EDA)扮演着一個至關重要的角色,此架構的設計使得服務間可以通過事件進行同步或異步通信,替代了傳統的直接接口調用。基於事件的交互方式,促進了服務之間的松耦合,提高系統的可擴展性。發佈 - 訂閱模式是實現事件驅動架構的模式之一,它允許系統的不同組件或服務發佈事件,而其他組件或服務可以訂閱這些事 ⌘ Read more
Japan Passes Law to Allow Third-Party App Stores on the iPhone
New legislation in Japan requires Apple to allow third-party app stores and payment providers on the iPhone.
The Japanese parliament has passed the Act on Promotion of Competition for Specified Smartphone Software, a law that compels Apple … ⌘ Read more
yq:基於 Go 實現處理 YAML、JSON、XML、CSV、TOML 的命令行工具
在現代開發和運維的世界中,處理和轉換不同格式的數據文件如 YAML、JSON、XML、CSV 等是日常任務。文件格式的多樣性和複雜性常常給開發者帶來不小的挑戰。在這種情況下,強大的命令行工具能夠極大地簡化工作流程。本文將深入探討一個強大的多功能工具——go yq,它能夠便捷地處理 YAML、JSON、XML、CSV、TOML 以及屬性文件。安裝 go yq——–首先,我們需要安裝 go ⌘ Read more
GO 語言學習筆記: 垃圾回收機制剖析
一、引言—-(一)垃圾回收 概述垃圾回收(Garbage Collection,GC) 是 Go 語言的核心特性之一,是實現內存自動管理的一種形式。golang 的自動垃圾回收屏蔽了複雜且容易出錯的內存操作,讓開發變得更加簡單、高效。在 Go 語言中,從實現機制上來說,垃圾回收可能是最複雜的模塊了。瞭解垃圾回收的機制,有助於更好地理解 Go 語言的內存管理機制,從而更好的使用 Go 語言進行開 ⌘ Read more
Aliens seem to be abducting the owners of Gopher servers. Now hngopher.com not works. What the hell is going on?
Go 命令模式實戰
隨着分佈式應用越來越廣泛,數據操作的一致性需要由業務方來保證,兩個操作不在同一個事務操作失敗時,無法依靠數據庫事務直接回滾,這時需要業務方手動進行回滾。通過命令模式提供新舊數據初始化後,如果執行後有後續操作失敗,業務方可以通過調用 Undo方法進行回滾,無需再編寫數據庫操作代碼優點是減少了回滾代碼的重複編寫,只要提供新舊數據,通過 Do和 UnDo就可以完成對應操作。並且有些時候可能 Undo 方 ⌘ Read more
Go 中空結構體的用法,我幫你總結全了!
在 Go 語言中,空結構體 struct{} 是一個非常特殊的類型,它不包含任何字段並且不佔用任何內存空間。雖然聽起來似乎沒什麼用,但空結構體在 Go 編程中實際上有着廣泛的應用。本文將詳細探討空結構體的幾種典型用法,並解釋爲何它們在特定場景下非常有用。空結構體不佔用內存空間首先我們來驗證下空結構體是否佔用內存空間:type Empty struct{}var s1 struct{}s2 := E ⌘ Read more
快速喫透 Golang Channels 使用技巧
Golang 可以通過啓動 goroutines 來併發執行任務。它們可以通過一種名爲 “通道” 的通信媒介相互通信。話不多說,下面我列舉了幾種不同情況下 channel 的使用以及其適用條件,最後總結出一張 channel table,能夠幫助你快速喫透 channel 的所有要點。Let’t go!Nil Channels如果你像創建普通變量一樣創建一個通道,通道將被初始化爲零值。這裏要提到的 ⌘ Read more
如何將圖片編碼成 base64?
圖片的 base64 編碼在多種上下文中都很有用。當需要通過旨在處理文本數據的媒體存儲或傳輸圖片時,它通常會被使用,比如嵌入到網頁或者通過 API 上傳圖片。這篇文章將介紹如何使用 Go 標準庫得到任何圖片的 base64 編碼的值。在 Go 中將圖片轉換爲其 base64 表示很容易。所有你需要做的是將文件讀取爲字節 slice 並使用包 encoding/base64 對其進行編碼。處理本地圖 ⌘ Read more
Go:深入理解互斥鎖,實現與應用
在併發編程中,互斥鎖是一種基本的同步機制,用於保護共享資源不被多個線程或進程同時訪問,從而避免數據競爭和保證數據的一致性。本文將深入探討互斥鎖的概念、工作原理,並通過 Go 語言的具體實現來展示互斥鎖在實際編程中的應用。互斥鎖的基本概念互斥鎖(Mutex)是最簡單的一種鎖形式,它僅允許一個線程在同一時刻訪問某個資源。當一段代碼被定義爲臨界區時,任何線程在進入該區域前必須先獲得互斥鎖的授權,並在離開 ⌘ Read more
利用 Go 語言加速 Redis 操作:掌握 go-redis 包的高效應用技巧
一、golang 操作 redis 1、安裝初始化文件夾 c:\aaa mkdir testredisc:\aaa\testredis go mod init testredis安裝 go get github.com/go-redis/redis/v82、基本使用 package mainimport ( “context” “fmt” “github.com/go-r ⌘ Read more
Go:標準庫 Arena 的內存管理優化解析
引言–在 Go 語言的衆多標準庫中,arena庫是一個相對較新且不爲人知的部分,還處於試驗階段。這個庫提供了一種管理內存分配的有效方式,尤其適用於處理大量小型對象,能夠顯著減少內存碎片和提高內存使用效率。本文將深入探討arena庫的設計理念、使用方法以及它如何優化 Go 語言程序的內存管理。arena庫概述———-arena庫的核心思想是提供一個連續的內存塊,讓開發者可以在其中快速分 ⌘ Read more
Go:雙向鏈表實現,container-list 包探討
引言在 Go 語言的標準庫中,container/list包提供了雙向鏈表的實現。鏈表是一種常見的數據結構,它通過節點的序列實現,每個節點都包含數據及對前一個節點和後一個節點的引用。Go 語言的container/list包提供了操作鏈表的多種方法,如插入、刪除、搜索和移動元素等。本文將深入探討container/list包,解析其實現的內部機制,並通過示例展示如何在 Go 程序中有效地使用此包。 ⌘ Read more
Can I Keep My MacBook Pro/Air Plugged in All The Time?
Many MacBook Pro and MacBook Air owners use their laptops in dual use scenarios, functioning as a laptop computer when on the go, and a desktop computer when not. This leads some to wonder if it’s bad for the MacBook battery to leave the computer charging or plugged in, even if it’s not in use. … Read More ⌘ Read more
基於 Go 語言實現的 Ollama 大語言模型框架
大語言模型在現代人工智能領域中扮演着重要角色。Ollama 作爲一個輕量級且可擴展的框架,幫助開發者在本地機器上構建和運行這些模型。Ollama 簡介———Ollama 是一個簡單、可擴展的框架,旨在幫助開發者構建和運行大語言模型。它提供了一個簡潔的 API,用於創建、運行和管理模型。此外,Ollama 附帶了豐富的預構建模型庫,供開發者在各種應用中輕鬆使用。Ollama 的特性包括: ⌘ Read more
Go 項目中的 Goroutine 泄露及其防範措施
Goroutine 是 Go 語言中實現併發的重要機制。它們輕量且高效,極大地提升了 Go 程序的併發能力。然而,在實際編程中,我們容易遇到 Goroutine 泄露的問題。這篇文章將詳細探討 Goroutine 泄露的概念、原因、檢測方法及其防範措施。什麼是 Goroutine 泄露?—————–Goroutine 泄露類似於內存泄露,是指程序中創建的 Goroutine ⌘ Read more
Kubernetes Go 週期執行器的實現
週期執行器主要用在同步網絡規則,如 iptables proixer、nettables proixer 中,一旦有新的網絡規則需要增加,就會週期性執行。我們通過一張圖來快速瞭解一下 BoundedFrequencyRunner 的執行流程BoundedFrequencyRunner用於週期性的執行同步方法,並且提供了執行失敗進行重試,內部封裝了運行的限流器type BoundedFrequenc ⌘ Read more
使用 Go 語言實現定時任務:輕鬆掌握 Cron 表達式
一、cron 基本使用1、使用舉例package mainimport ( “fmt” “github.com/robfig/cron”)//主函數func main() { cron2 := cron.New() //創建一個cron實例 //執行定時任務(每5秒執行一次) err:= cron2.AddFunc(“/5 “, print5) if err!=nil{ ⌘ Read more
Go:泛型全面解析,從基礎到實際應用
引言Go 語言在其 1.18 版本中引入了泛型功能,這是一個具有里程碑意義的更新。此前,Go 開發者常常藉助接口、反射等方法間接實現泛型的需求,這既複雜又影響性能。泛型的引入使得代碼不僅更加靈活,同時也更加高效和類型安全。本文通過解析一段 Go 語言的泛型示例代碼,詳細講解泛型的特性及其在 Go 中的實際應用。Go 語言泛型特性詳解基本語法和定義泛型,或者說參數化類型,是一種在編程時不具體指定其數 ⌘ Read more
用 go 語言實現一個有界協程池
寫在文章開頭——本篇文章算是對go語言系列的一個收尾,通過 go 語言實現一個實現一個簡單的有界協程池。Hi,我是 sharkChili ,是個不斷在硬核技術上作死的 java coder ,是 CSDN 的博客專家 ,也是開源項目 Java Guide 的維護者之一,熟悉 Java 也會一點 Go ,偶爾也會在 C 源碼 邊緣徘徊。寫過很多有意思的技術博客,也還在研究並輸出技術的路上,希 ⌘ Read more
全面解析 Go 語言 Channel:面試必備知識點
一、channel 的整體結構圖1、channel 結構圖 channel 本質是一個 hchan 這個結構體 type hchan struct { buf unsafe.Pointer // points to an array of dataqsiz elements sendx uint // send index recvx uint ⌘ Read more
Go 實驗室:image 圖像處理就用它
短腿子猿的 Go 實驗室,Golang 官方提供了很多 package 來幫助大家提高開發的效率,但是由於函數太多,經常會記不住,這裏開了一個專題來分享官方 package,努力做到每週一更 Golang 中的 image 包提供了基本的圖像類型、顏色模型、以及用於處理圖像的各種函數和接口。以下是一些常用的函數和接口,以及相應的示例。常用類型與接口——-image.Image 接口這是 ⌘ Read more
Go 併發編程精粹:掌握通道(channels)的藝術
在併發編程的多任務世界中,Go 語言以其強大的併發特性而獨樹一幟。通道(channels),作爲 Go 併發模型中的核心概念,是連接不同 goroutines 的橋樑,確保了數據在它們之間的流暢傳遞。如果你對 goroutines 已經有所瞭解,那麼現在是深入探索通道的絕佳時機。併發編程:Go 語言的殺手鐧————–併發性是現代編程中的關鍵特性,它允許程序在同一時間內執行多個任務 ⌘ Read more
Golang 插件系統實現
插件可以在解耦的基礎上靈活擴展應用功能,本文介紹瞭如何基於 Golang 標準庫實現插件功能,幫助我們構建更靈活可擴展的應用。原文: Plugins with Go[1]什麼是插件簡單來說,插件就是可以被其他軟件加載的軟件,通常用於擴展應用程序的功能和外觀,插件的開發人員甚至可以不直接修改基礎應用程序。你很可能在日常生活中使用過插件,也許用的是其他名稱,如擴展 (extensions) 或附加 ⌘ Read more
掌握 Go 語言 Interface:面試高頻考點詳解
一、interface1、interface 作用接口是 Go 語言的重要組成部分,它在 Go 語言中通過一組方法指定了一個對象的行爲 接口 interface 的引入能夠讓我們在 Go 語言更好地組織並寫出易於測試的代碼 golang 中的接口分爲帶方法的接口和空接口 iface: 表示帶方法的接口 eface:表示空接口 2、eface 空接口 空接口 efac ⌘ Read more
Go 語言主流 ORM 框架對比:GORM vs- Ent
GORM 和 Ent 是 Go 語言中使用廣泛的兩種 ORM(對象關係映射)框架。它們都有助於將數據庫操作從底層 SQL 抽象出來,簡化數據庫交互,但它們的設計理念和使用方式有顯著的不同。本文將詳細介紹 GORM 和 Ent 的不同特點、使用示例,並比較它們在不同場景下的優劣。GORM 簡介——-GORM 是一個易於使用的 ORM 庫,旨在提供簡單、乾淨的 API。它通過反射機制動態處理數 ⌘ Read more
GRequests: 讓 HTTP 服務人類
熟悉我的讀者朋友們都知道,我早期是寫 Python 的,現在主力語言是 Go。開始接觸 Go 語言以後,我發現 Go 自帶的 net/http 請求庫不夠好用,好在我沒用 Go 寫過一行爬蟲代碼,平時 net/http 庫用的也就比較少,不是每天都用,也就忍了。最近我在網上衝浪時,無意間發現了 grequests 這個庫,靈感來源於 Python 生態中大名鼎鼎的 requests 庫。顧名思義, ⌘ Read more
Update multiple Kubernetes objects/configmaps in one go!
Community post originally published on dev.to by Sunny Bhambhani There may be cases wherein we just need to update a Kubernetes configmap or any other Kubernetes object based on our requirements. And let’s say it’s just one or… ⌘ Read more
實現微服務註冊的高效利器:gRPC 與 Nacos 集成教程
一、golang gRPC 註冊 nacosgithub 地址 nacos-sdk-go(opens new window) nacos 官網 1、目錄結構 2、pb/person.protosyntax = “proto3”;option gopackage = “./person”;package pb;message Person { string name = 1; in ⌘ Read more
使用 Go Channel 構建可擴展的併發 worker pool
在本篇博文中,我們將深入探討如何在 Go 中構建一個可擴展的 Worker pool。該實現可有效地管理 Worker pool,以處理大量請求,同時根據負載動態調整 Worker 的數量。我們還會討論可能出現的問題以及如何避免它們。概覽要實現的 worker pool 應該具有以下功能:根據負載情況動態調整 worker 數量; 具備超時和重試機制處理接收到的請求; 能夠 Grace ⌘ Read more
快速生成 Go 語言數據庫模型:探索 GORM gen 的便捷神器
官方文檔:https://gorm.io/zhCN/gen/create.html 一、安裝 mysql 1、安裝 mysql拉取 MySQL 鏡像docker pull mysql運行 MySQL 容器docker run –name mysql-server -p 3306:3306 -e MYSQLROOTPASSWORD=123456 -d mysql安裝mysql客戶端brew ⌘ Read more
Go 實現的一個 bitset,設計思想非常棒,值得參考收藏!
這兩日讀了一個實現二維碼生成的庫。其中的 bitset 設計得非常好,就摘抄記錄下來,與大家一起分享。bitset 實現一個可擴展的 bit 集合,可以添加 bit 和查看 bit。它在二維碼生成中,用來將編碼後的內容協助生成位圖,然後通過位圖進行繪製二維碼。二維碼的黑白格子正好用二進制 0 和 1 來表示。 下面開始詳細講解這個功能設計: 一、我們使用一個結構體來存儲 bit 序列。Bits ⌘ Read more