20250330
每日一谚:Optimize for correctness before performance.
Go语言中的gRPC:流式RPC、拦截器和元数据
本文是关于gRPC通信协议系列文章的一部分,介绍了Go语言中gRPC的高性能实现,包括流式RPC、拦截器和元数据的用法。文章详细解释了protoc代码生成流程、gRPC命令、服务器和客户端的实现,以及如何在gRPC中使用元数据和拦截器来处理请求和响应。文章还涵盖了流式RPC的三种类型(服务器流式、客户端流式和双向流式),并深入探讨了拦截器链的使用以及go-grpc-middleware社区库。
使用 CGO 和 Zig 构建静态链接的 Go 可执行文件
这篇文章简要介绍了如何使用 Zig 创建一个调用 CGO 依赖项的静态链接 Go 可执行文件。文章提供了完整的代码示例,包括使用 Zig 创建静态库,编写调用该库的 Go 程序,以及使用特定命令进行构建和静态链接。最终验证了生成的 Go 可执行文件是静态链接的,并且成功调用了 Zig 库中的函数。
Go 语言改进的基准测试语法
Go 语言的微基准测试工具非常棒,因为它易于使用,并且具有社区普遍理解的惯用形式。Go 1.24 中引入了新的 `Loop` 方法,简化了基准测试代码,无需再编写迭代器 `i`、`b.N`、`Sink` 变量以及 `ResetTimer`、`StopTimer` 函数。
单调时钟和精确时间测量
本文探讨了软件系统中墙上时钟和单调时钟之间的区别。墙上时钟会受到系统时间变化的影响(例如,NTP同步、手动更改或夏令时转换),而单调时钟则始终以均匀的速度前进,非常适合测量持续时间。Go语言巧妙地将这两种时钟集成到`time.Now()`中,自动选择合适的时钟来进行时间显示或持续时间计算。文章还介绍了`Sub()`、`Since()`和`Until()`函数,并提供了处理系统时钟更改的策略。
7 年后的无畏 SIMD 之路
七年前,作者撰写了一篇博客文章《迈向无畏 SIMD》,概述了 Rust 作为编写快速 SIMD 程序的引人注目的语言的愿景。现在我们身处何方?本文探讨了在 Rust 中编写 SIMD 的现状和未来方向,包括多版本化、安全性和对 FP16 和 AVX-512 的支持等问题。文章还提供了一个简单的 sigmoid 函数示例,并比较了不同方法(例如,使用内建函数、Highway 库、multiversion 和 pulp 库)的优缺点。作者还讨论了 Rust 语言的演进,以及如何改进对 SIMD 的支持,例如改进 target_feature 和安全内建函数。
用Cursor体验编程
作者尝试使用 Cursor(一款 AI 代码编辑器)来提高编码速度,并尝试用它构建一个 Dolt 应用。在尝试过程中,作者发现 Cursor 在处理大型代码库和调试方面存在不足,但对于一些简单的任务,例如生成代码片段,Cursor 能提高效率。作者最终认为,虽然 Cursor 有其优势,但它并不能达到宣传的 10 倍生产力提升效果。
为什么我与“氛围编程”分手了
我们都有过这样的经历:戴着耳机,音乐播放着,手指在键盘上飞舞,沉浸在与你最喜欢的 AI 代理的“流程”中。我的朋友们,这就是氛围编程。当你处于最佳状态时,似乎毫不费力地就能编写代码。
其理念是,你可以仅仅通过沉浸在编程的感觉中、信任你的直觉并驾驭灵感的浪潮来创建出色的软件。但最近我意识到,至少对我来说,这种氛围……不对劲了。感觉就像我在观看 AI 代理为我编写代码,偶尔会提出建议或更正,但通常只是在观察代码的展开而没有完全理解正在发生的事情的复杂性,这可能会导致我以后浪费时间。
文章探讨了氛围编程的利弊,并比较了氛围编程、AI 聊天和网络搜索的优缺点。作者最终得出结论,需要在创造力和结构化开发之间找到更好的平衡,并推荐了一些工具和策略。
grpc/grpc-go
The Go language implementation of gRPC. HTTP/2 based RPC
gogs/gogs
Gogs is a painless self-hosted Git service
dagger/dagger
An open-source runtime for composable workflows. Great for AI agents and CI/CD.
mark3labs/mcp-go
A Go implementation of the Model Context Protocol (MCP), enabling seamless integration between LLM applications and external data sources and tools.
aquasecurity/trivy
Find vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more
etcd-io/etcd
Distributed reliable key-value store for the most critical data of a distributed system
cockroachdb/cockroach
CockroachDB — the cloud native, distributed SQL database designed for high availability, effortless scale, and control over data placement.
open-telemetry/opentelemetry-go-contrib
Collection of extensions for OpenTelemetry-Go.
zitadel/zitadel
ZITADEL - Identity infrastructure, simplified for you.
open-telemetry/opentelemetry-go
OpenTelemetry Go API and SDK
kubernetes/enhancements
Enhancements tracking repo for Kubernetes
hashicorp/vault
A tool for secrets management, encryption as a service, and privileged access management
VictoriaMetrics/VictoriaMetrics
VictoriaMetrics: fast, cost-effective monitoring solution and time series database
open-telemetry/opentelemetry-collector
OpenTelemetry Collector
cilium/cilium
eBPF-based Networking, Security, and Observability
EndlessCheng/codeforces-go
算法竞赛模板库 by 灵茶山艾府 💭💡🎈
influxdata/telegraf
Agent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.
kubernetes-sigs/external-dns
Configure external DNS servers (AWS Route53, Google CloudDNS and others) for Kubernetes Ingresses and Services
bufbuild/buf
The best way of working with Protocol Buffers.
golang/go
The Go programming language
open-telemetry/opentelemetry-collector-contrib
Contrib repository for the OpenTelemetry Collector
编辑:Tony Bai
编辑主页:tonybai.com
GopherDaily项目:github.com/bigwhite/gopherdaily
Copyright 2019-2024 GopherDaily