主页 | Web版 | 订阅 | 归档 | Feed

GopherDaily

20250413

每日一谚:Returning early is a good thing


Go技术生态

容器CPU请求与限制详解及GOMAXPROCS调优
本文探讨了在 Kubernetes 中运行 Go 应用程序时,默认 CPU 线程调度与 cgroup CPU 限制可能产生的冲突。运行时可以看到所有主机 CPU,但容器可能只能使用其中一部分,这通常会导致过早的节流。正确配置 GOMAXPROCS 可以避免这种浪费并提高稳定性。文章涵盖了 Kubernetes 和 Linux 内核如何处理容器的 CPU 资源、Go 运行时如何使用 CPU 以及是否需要设置 GOMAXPROCS,以及哪些指标值得关注等内容。

在没有 Go Modules 的情况下构建 Go 应用程序
本文探讨了在没有 Go Modules 的情况下构建 Go 应用程序时遇到的问题,特别是 Go 1.22 中引入的 ServeMux 新模式。由于 Linux 发行版出于各种原因禁用 Go Modules,导致编译后的软件无法使用新特性。文章提出了一种解决方法:在 main 函数所在文件顶部添加 `//go:debug default=go1.22` 来指定目标 Go 版本,从而启用所需的功能。

Go语言教程:修复 Go 的 `x/net/html` 中的 HTML 令牌分析器漏洞
Go 团队最近修复了 `golang.org/x/net/html` 包中的一个安全漏洞。`golang.org/x/net` 的 v0.38.0 版本已发布来解决此问题。此漏洞会导致 HTML 令牌分析器发出错误的令牌,并使解析器生成错误的 DOM。具体来说,令牌分析器错误地将属性值末尾带有斜杠字符 (/) 的未加引号的属性值的标签解释为自闭合标签。结果,在 DOM 构造过程中,此类标签后的内容可能被放置在错误的范围内。此问题(CVE-2025-22872)在 Go issue #73070 中进行了跟踪。

如何使用新的“tool”指令
Go 1.24 引入了一个重要的增强功能,即“tool”指令,用于改进 Go 基于的开发工具的管理方式。以前,管理像代码分析工具(golangci-lint)、代码生成器(mockery、oapi-codegen)或其他构建工具这样的工具,通常需要在项目依赖项管理之外进行手动安装步骤(使用“go install”或某些包管理器),这会导致开发环境和 CI 系统之间出现潜在的版本不一致。Go 1.24 使用“tool”指令直接解决了这些问题,并能与go:generate一起使用,简化工具管理。文章还讨论了使用单独的 go.mod 文件管理非 Go 工具的情况。

Go语言 sync.Pool 不是万能药
本文深入探讨了 Go 语言的 sync.Pool,分析了它的优势、缺陷以及何时应该(或不应该)使用它。

如何使用泛型来避免代码重复并改进代码
本文介绍了如何使用Go语言的泛型特性来避免代码重复,并提高代码的可维护性和可扩展性。作者以一个实际项目为例,展示了如何使用泛型来简化对外部接口的实现,并最终通过自定义MarshalJSON和UnmarshalJSON方法,实现了JSON:API格式的响应。

Go 编译器辅助优化:通过代码生成提升性能
本文探讨了 Go 语言的代码生成能力如何通过干净的代码来增强性能。学习如何使用 go:generate 来实现自动化优化,包括 SIMD、循环展开和特定于架构的增强功能,从而在不牺牲可读性的前提下提高效率。文中包含实际示例。

云原生技术

gRPC API Gateway:连接 REST 和 gRPC 的桥梁
本文介绍了如何使用 gRPC API Gateway(一个包含 OpenAPI 支持、文档、错误处理和流支持的框架)为 gRPC 服务器公开 REST API 端点。文章探讨了 gRPC 在现代架构中的兴起、Protocol Buffers 的优势、gRPC 在外部访问方面的挑战以及 gRPC Gateway 和 gRPC API Gateway 的技术架构和功能对比,并提供了一个快速入门指南。

适用于 Visual Studio Code 的全新 Docker 扩展 | Docker
通过 Docker DX 扩展加快开发速度,该扩展可在 VS Code 中提供实时反馈、更智能的代码检查以及直观的 Bake/Compose 文件支持。

Datastar:未来的Web框架?
Datastar是一个新的超媒体框架,它使构建实时Web应用程序更简单、更高效。它优先考虑服务器端逻辑,使用“信号”进行自动UI更新,并利用服务器发送事件(SSE)实现闪电般的性能。如果您正在寻找传统JavaScript框架或HTMX的简化替代方案,Datastar值得探索。但是,它要求您以全新的视角来处理Web开发,拥抱服务器驱动架构和反应式编程。

你可能不需要 WebSockets
WebSockets 是一种强大的工具,已成为构建实时应用程序的热门选择,但你可能出于错误的原因使用它们。让我们探讨 WebSockets 的缺陷以及如何使用普通的旧版 HTTP 来完成相同的工作。文章探讨了 WebSocket 消息的非事务性、需要管理套接字生命周期以及它使服务器代码更复杂这三个缺点,并提出了使用 HTTP 流式传输作为替代方案,并介绍了作者开发的 eventkit 库。

AI

AI数字替身

流行工具与项目

krillinai/KrillinAI
A video translation and dubbing tool powered by LLMs, offering professional-grade translations and one-click full-process deployment. It can generate content optimized for platforms like YouTube,TikTok, and Shorts. 基于AI大模型的视频翻译和配音工具,专业级翻译,一键部署全流程,可以生成适配抖音,小红书,哔哩哔哩,视频号,TikTok,Youtube Shorts等形态的内容

minio/minio
MinIO is a high-performance, S3 compatible object store, open sourced under GNU AGPLv3 license.

googleapis/google-cloud-go
Google Cloud Client Libraries for Go.

spf13/cobra
A Commander for modern Go CLI interactions

open-telemetry/opentelemetry-collector-contrib
Contrib repository for the OpenTelemetry Collector

gin-gonic/gin
Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.

cosmos/cosmos-sdk
⛓️ A Framework for Building High Value Public Blockchains ✨

fluxcd/flux2
Open and extensible continuous delivery solution for Kubernetes. Powered by GitOps Toolkit.

caddyserver/caddy
Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS

go-git/go-git
A highly extensible Git implementation in pure Go.

runatlantis/atlantis
Terraform Pull Request Automation

gofr-dev/gofr
An opinionated GoLang framework for accelerated microservice development. Built in support for databases and observability.

goccy/go-yaml
YAML support for the Go language

vektra/mockery
A mock code autogenerator for Go

DataDog/datadog-agent
Main repository for Datadog Agent

metallb/metallb
A network load-balancer implementation for Kubernetes using standard routing protocols

open-telemetry/opentelemetry-collector
OpenTelemetry Collector

elastic/beats
🐠 Beats - Lightweight shippers for Elasticsearch & Logstash

actions/actions-runner-controller
Kubernetes controller for GitHub Actions self-hosted runners

authelia/authelia
The Single Sign-On Multi-Factor portal for web apps

grpc/grpc-go
The Go language implementation of gRPC. HTTP/2 based RPC

uber-go/mock
GoMock is a mocking framework for the Go programming language.

ollama/ollama
Get up and running with Llama 3.3, DeepSeek-R1, Phi-4, Gemma 3, Mistral Small 3.1 and other large language models.


编辑:Tony Bai

编辑主页:tonybai.com

GopherDaily项目:github.com/bigwhite/gopherdaily

Copyright 2019-2024 GopherDaily