tech

tech

Go 1.26 黑科技:跳过 GC 直接释放内存,性能飙升 200%

最近,Go 语言社区围绕一个全新的内存管理提案展开了激烈讨论:在不依赖垃圾回收 (GC) 的情况下直接释放并重用内存。#74299 引入了 runtime.free 及相关机制,试图让编译器和标准库在特定场景下安全地跳过 GC,对短命的内存对象进行即时回收利用github.comgo.googlesource.com。此举被认为可能为 Go 带来一次性能上的革命:初步原型显示,在 strings.Builder 这样的场景中,利用该机制性能提升可达 2 倍github.com。本文将回顾 Go 内存管理领域从 arena 实验到 memory region 构想,再到 runtime.free 提案的探索之旅,并剖析这一新提案的技术细节、产生的意义、演化过程,以及对普通开发者的影响。 runtime.free 将在 Golang1.26

By huizhou92
HTTP/3:看似无处不在,实则难觅踪影

tech

HTTP/3:看似无处不在,实则难觅踪影

HTTP/3 的研发至少可追溯至 2016 年,而其底层传输协议 QUIC 更是由 Google 在 2013 年率先提出。如今这两项技术均已确立国际标准:获得 95% 浏览器的支持,**Cloudflare 处理的 HTTP 请求中已有 32% 采用该协议**,并且在 HTTP Archive 数据集中,有 35% 的网站 宣称支持HTTP/3 (通过 alt-svc 或 DNS)。 我们不仅成功开发出全新一代 HTTP 协议,更已将超三分之一的网络流量迁移至该协议——这堪称里程碑式的进展。 然而矛盾的是,包括 Node.js、Go、Rust、Python 和 Ruby

By huizhou92
Green Tea GC: Golang 的 ZGC?

tech

Green Tea GC: Golang 的 ZGC?

本文深入解析 Go 语言垃圾回收(GC)机制的设计与不足,从并发标记-清除、内存局部性问题到高 CPU 占用,透彻剖析了 Go GC 在高并发、大内存场景下的挑战。文章重点介绍了最新的 Green Tea GC 优化方案——通过 span 批量扫描提升内存访问效率和多核扩展性,实现部分场景下 GC 耗时降低 35%,为极限性能优化和未来硬件加速提供了新思路。关键词包括 Go 垃圾回收优化、Green Tea GC、并发GC、高负载场景等。

By huizhou92

tech

【译】grpc:好的部分

本文深入解析了gRPC在现代Web开发中的优势,从使用Protocol Buffers实现的数据传输优化(可减少高达50%流量)到严谨的API契约带来的代码自动生成、类型安全与文档同步,再到流式通信和跨语言支持的实际应用,详述了gRPC如何推动HTTP/2/HTTP/3革新。文章还探讨了gRPC与REST兼容的转码方案(如gRPC-Gateway、gRPC-Web、ConnectRPC、Twirp)及丰富的工具生态(如Buf CLI、第三方插件),为追求高性能、低延迟与微服务架构优化的开发者提供了实用参考和未来趋势预判。

By huizhou92

tech

Golang http 支持 NegotiateFormat

Go 标准库提案:更优雅的 HTTP 内容协商 背景 在 Web 开发中,HTTP 内容协商(Content Negotiation)是一项重要的机制,它允许客户端和服务器就响应内容的最佳格式达成一致。例如,手机端可能希望接收 JSON 格式的数据,Web端可能想要XML格式的数据,服务端可以在一个接口中提供多种数据格式。客户端通过 Accept 请求头表达自己的偏好,服务端根据这些偏好选择最合适的格式返回。 具体内容可以参考RFC9110 比如在下面的例子中,使用Gin框架自己实现的内容协商 。在一个API接口中返回了JSON和XML两种格式。 package main import ( "net/http" "github.com/gin-gonic/gin" ) type User struct { Name string `json:"

By huizhou92