Go GC 调优实战:从理论到实践
Go GC 调优实战:从理论到实践 你有没有遇到过这样的场景:你的 Go 服务跑着跑着,CPU 突然飙高,响应延迟抖动明显,过了几十毫秒又恢复正常?恭喜你,你遇到了 GC pause。垃圾回收(Garbage Collection,简称 GC)是 Go 语言的核心特性之一。
posts
Go GC 调优实战:从理论到实践 你有没有遇到过这样的场景:你的 Go 服务跑着跑着,CPU 突然飙高,响应延迟抖动明显,过了几十毫秒又恢复正常?恭喜你,你遇到了 GC pause。垃圾回收(Garbage Collection,简称 GC)是 Go 语言的核心特性之一。
集合工具终于进入标准库 Go 早期处理切片和 map 时,经常要自己写一些小工具函数:克隆切片、判断相等、删除元素、提取 map 的 key、排序。后来随着泛型进入语言,标准库也逐步提供了 和 这类集合辅助包。它们不会把 Go 变成链式集合语言,但能减少很多重复样板代码。
讲 Go 程序如何使用 signal.NotifyContext 处理 Ctrl+C、优雅停止后台任务、关闭 HTTP 服务和避免资源泄漏。
配置热重载听起来很诱人:不用重启服务,改配置就生效。但不是所有配置都适合热重载。日志级别、开关、限流阈值通常可以;数据库连接地址、监听端口、加密密钥就要谨慎。入门阶段最重要的是先划清边界。本文用一个 JSON 配置文件演示如何安全地加载、校验并用 发布配置,同时说明哪些配置不该随便热重载。
Go 语言优秀资源整理,为项目落地加速🏃 在 [GitHub](https://github.com/shockerli/go-awesome) 上稳定更新,觉得不错请点个 Star ❤️ 如转载分享,请保留出处,谢谢 😆
推荐项目列表 以下是一些适合新手入门的 Golang 开源项目推荐,包含具体的链接和项目介绍: 1.Go 语言核心库 :学习 Go,首先要了解的就是 Go 语言本身。Go 是由 Google 开发的开源编程语言,适合构建简单、可靠和高效的软件。Go GitHub 地址 2.
在Go语言中实现一个并发爬虫,可以使用标准库中的`net/http`包来发送HTTP请求,使用`golang.org/x/net/html`包来解析HTML,以及使用`sync`包中的`WaitGroup`来同步并发的goroutines。下面是一个简单的并发爬虫示例,它会并发地访问网页,并打...
Go 语言进阶教程将涵盖一些高级主题和最佳实践,这些是超越基础语法和常规用法的。以下是一些进阶主题的详细介绍: 1.接口(Interfaces) 接口在 Go 中是一种强大的方式来实现多态和动态派发。接口是一个定义了一组方法的类型。
在 Go 语言中,使用 channels 实现生产者-消费者模式是一种常见的并发编程模式。生产者负责生成数据,消费者负责处理数据。通过 channels,生产者和消费者可以安全地交换数据。
Go 语言的并发模型主要基于 goroutines 和 channels。下面我将分别解释它们是如何工作的,并提供一个简单的例子。
Go 语言(通常称为 Golang)是一种开源编程语言,由 Google 的 Robert Griesemer、Rob Pike 和 Ken Thompson 在 2007 年设计并开发。它以简洁、高效、性能优异而著称,特别适合用于构建大型软件系统、网络服务和并发程序。
Go 语言(Golang)是一种静态类型、编译型语言,设计上注重简洁和高效,非常适合用来构建大型软件系统。以下是一份详细的 Go 语言学习路线:
用批量处理任务讲 Go channel 流水线的基础写法,包括生产者、工作者、结果汇总、context 取消和 channel 关闭规则。
全面介绍 Go 语言中的消息队列实战,包括 Kafka 生产者与消费者、Kafka Streams、RabbitMQ 集成、AMQP 协议、消息模式、错误处理和死信队列
不是所有缓存都需要 Redis。很多小型服务只想把低频变化的配置、字典表、权限规则在进程内缓存几分钟,减少数据库查询。Go 里写一个简单内存缓存并不难,但要注意并发安全、过期时间和清理策略。本文写一个带 TTL 的内存缓存。它适合入门理解,不打算替代成熟缓存库。
讲 Go 程序如何通过 ldflags 注入版本号、Git commit 和构建时间,并在 CLI 或 HTTP 健康检查中展示。
用任务列表接口讲 Go HTTP API 中的分页设计,包括 limit 校验、offset 的局限、cursor 分页和稳定排序。
取消不只是停止,还要知道为什么停止 Go 的 常用于请求范围控制:客户端断开,请求超时,后台任务停止,外部调用取消。早期我们通常只能通过 知道是 还是 。这已经有用,但在复杂服务里,有时还想知道更具体的原因:是用户主动取消,还是权限检查失败后取消后续任务,还是上游熔断导致停止。
用头像上传接口讲 Go HTTP 文件上传的基本流程,包括 MaxBytesReader、ParseMultipartForm、文件名处理、类型校验和安全保存。
深入探索 Go 1.24 的重要特性:weak 指针改进、PGO 优化、net/http 增强、crypto 改进、性能提升、工具链更新与最佳实践