Go 1.19:稳定中求进步
Go 1.19:稳定中求进步 2022 年 8 月,Go 1.19 正式发布。虽然不像 1.18 那样引入了泛型这样的重大特性,但 1.19 在稳定性、性能和开发体验方面做了大量改进。这篇文章带你了解 Go 1.19 的重要变化。
posts
Go 1.19:稳定中求进步 2022 年 8 月,Go 1.19 正式发布。虽然不像 1.18 那样引入了泛型这样的重大特性,但 1.19 在稳定性、性能和开发体验方面做了大量改进。这篇文章带你了解 Go 1.19 的重要变化。
本文讲解 Go sync/atomic 的基础用法,包括原子计数、并发读取、atomic 类型和与 mutex 的取舍,帮助初学者安全处理共享状态。
深入学习 Go 的各种 Channel 使用模式,包括 Pipeline、Fan-in/Fan-out、Worker Pool 等经典并发模式
原子操作:无锁并发编程的艺术 在并发编程中,我们经常需要保护共享数据。传统的做法是使用互斥锁(mutex),但锁会带来性能开销和死锁风险。原子操作 提供了一种无锁的替代方案,在某些场景下性能更优。本文将深入探讨 Go 的 包,学习如何正确使用原子操作。
线上运行的到底是哪一版 当用户反馈问题时,第一件事往往不是看代码,而是确认版本。你以为线上跑的是刚发布的二进制,实际可能是旧版本;你以为某个依赖已经升级,实际构建产物里还是旧依赖。Go 程序可以读取自身构建信息,这对命令行工具、HTTP 服务和排查问题都很有用。
本文讲解 Go HTTP 客户端调用 HTTPS 服务时的安全基础,包括 TLS 验证、超时、证书错误和避免 InsecureSkipVerify 滥用。
逃逸分析:理解 Go 的内存分配策略 在 Go 中,你不需要像 C/C++ 那样手动管理内存,但这并不意味着你可以忽视内存分配。理解 逃逸分析 (Escape Analysis)对于编写高性能的 Go 代码至关重要。
本文讲解 Go 1.18 中 net/netip 包的基本用法,包括解析 IP、前缀、包含判断和 HTTP 客户端 IP 白名单场景。
Go 1.18 any 类型:告别 interface{} 的冗长 Go 1.18 引入了一个简单但意义重大的改进: 类型。它是 的内置别名,让代码更加简洁易读。虽然只是一个小的语法改进,但它体现了 Go 团队对开发者体验的持续关注。
性能分析实战:pprof 从入门到精通 当你的 Go 程序运行缓慢或内存占用过高时,你需要一个强大的工具来找出问题所在。是 Go 标准库提供的性能分析工具,它能帮你精确定位 CPU、内存、Goroutine 等性能瓶颈。
Go 1.18 Fuzz 测试:发现隐藏 Bug 的利器 Go 1.18 引入了一个令人兴奋的新特性: Fuzz 测试 (模糊测试)。这是一种自动化的软件测试技术,通过生成大量随机输入来发现程序中的隐藏 Bug。
本文讲解 Go 1.18 工作区 go work 的基本使用,包括多模块本地联调、go.work 文件、replace 的区别和团队协作注意事项。
模糊测试适合找你没想到的输入 普通测试需要我们自己写输入和预期。表驱动测试已经很强,但它仍然依赖人的想象力。解析函数、路径处理、编码转换、协议拆包这类代码,输入空间很大,你很难手写覆盖所有奇怪情况。模糊测试的思路是:你给工具一些种子样本和一个必须保持的性质,让工具不断生成新输入,尝试触发 panic 或违反性质。
Go Workspaces:多模块开发的利器 在大型项目中,我们经常需要同时开发多个相互依赖的 Go 模块。在 Go 1.18 之前,这需要使用 指令,非常繁琐。Go 1.18 引入的 workspace 模式 彻底解决了这个问题。
本文从 Go 1.18 前后的学习语境出发,用 Contains、Map 和 Set 三个小例子讲解泛型入门,帮助初学者理解类型参数的实际价值。
Go 1.18 泛型:期待十年的类型参数 2022 年 3 月,Go 1.18 正式发布,这是 Go 语言诞生以来最重要的一次更新—— 泛型 (Generics)终于来了!从 2010 年社区开始讨论泛型,到 2022 年正式落地,整整 12 年的时间。
性能优化实战:让你的 Go 应用飞起来 Go 语言本身性能优秀,但不当的编码方式仍会导致性能问题。本文将介绍如何通过分析和优化,让你的 Go 应用达到最佳性能。性能优化原则 在开始优化之前,记住以下原则: 1.
分布式追踪:跨服务调用链路分析 在微服务架构中,一个用户请求可能经过多个服务。当出现问题时,如何快速定位是哪个环节出了问题?分布式追踪就是解决这个问题的利器。本文将介绍如何使用 OpenTelemetry 实现分布式追踪。
Prometheus 监控:让你的应用可观测 在生产环境中,了解应用的运行状态至关重要。Prometheus 是一个开源的监控系统,配合 Grafana 可以实现强大的指标收集和可视化。本文将介绍如何在 Go 应用中集成 Prometheus 监控。
数据库事务:保证数据一致性的关键 在数据库操作中,我们经常需要执行多个相关的操作,这些操作要么全部成功,要么全部失败。事务(Transaction)就是用来保证这种原子性的机制。本文将深入探讨数据库事务的原理和在 Go 中的实现。