Go 测试进阶:从单元测试到基准测试
全面掌握 Go 测试进阶技巧:表驱动测试、子测试、测试辅助、Mock 模式、集成测试、基准测试、模糊测试、覆盖率分析与 CI/CD 集成
tag
全面掌握 Go 测试进阶技巧:表驱动测试、子测试、测试辅助、Mock 模式、集成测试、基准测试、模糊测试、覆盖率分析与 CI/CD 集成
深入探索 Go 1.21 引入的 cmp、slices、maps 三个标准库包,掌握基于 cmp.Ordered 约束的集合操作,告别手写循环
Go 1.21 将 slices、maps、cmp 包引入标准库,统一了 Contains、Clone、Equal、SortFunc 等常见操作。本文讲解用法、性能考量和升级旧工具函数的注意事项。
Go 1.21 slog:标准库的结构化日志 日志,是每个后端工程师绕不开的话题。你可能用过 、 、 这些第三方库,也可能还在用标准库的 包拼接字符串。不管怎样,Go 1.21 给你带来了一个"迟到但正确"的礼物—— 包。
全面掌握 Go HTTP 服务器的生产级模式:Go 1.22 增强路由、中间件、优雅停机、健康检查、Request ID、超时处理
本文讲解 Go HTTP 服务中 ReadTimeout、WriteTimeout、IdleTimeout 和请求 context 的基本用法,帮助初学者避免服务被慢请求拖住。
Go 1.20 新特性:让错误处理更优雅。2023 年 2 月,Go 1.20 正式发布。虽然不像 1.18 那样引入了泛型这样的重大特性,但 1.20 在错误处理、类型转换和性能方面带来了许多实用的改进。本文将带你深入了解 Go 1.20 的重要特性。
错误处理的高级技巧:从基础到企业级 Go 的错误处理以其简洁性著称,但简洁不等于简单。在实际项目中,我们需要处理复杂的错误场景:错误包装、错误链、错误分类、错误监控等。本文将带你从基础的错误处理进阶到企业级的错误处理策略。
深入学习 Go 的各种 Channel 使用模式,包括 Pipeline、Fan-in/Fan-out、Worker Pool 等经典并发模式
原子操作:无锁并发编程的艺术 在并发编程中,我们经常需要保护共享数据。传统的做法是使用互斥锁(mutex),但锁会带来性能开销和死锁风险。原子操作 提供了一种无锁的替代方案,在某些场景下性能更优。本文将深入探讨 Go 的 包,学习如何正确使用原子操作。
Go 1.18 any 类型:告别 interface{} 的冗长。Go 1.18 引入了一个简单但意义重大的改进:any 类型。它是 interface{} 的内置别名,让代码更加简洁易读。虽然只是一个小的语法改进,但它体现了 Go 团队对开发者体验的持续关注。
性能分析实战:pprof 从入门到精通 当你的 Go 程序运行缓慢或内存占用过高时,你需要一个强大的工具来找出问题所在。是 Go 标准库提供的性能分析工具,它能帮你精确定位 CPU、内存、Goroutine 等性能瓶颈。
Go 1.18 Fuzz 测试:发现隐藏 Bug 的利器 Go 1.18 引入了一个令人兴奋的新特性: Fuzz 测试 (模糊测试)。这是一种自动化的软件测试技术,通过生成大量随机输入来发现程序中的隐藏 Bug。
分布式追踪:跨服务调用链路分析 在微服务架构中,一个用户请求可能经过多个服务。当出现问题时,如何快速定位是哪个环节出了问题?分布式追踪就是解决这个问题的利器。本文将介绍如何使用 OpenTelemetry 实现分布式追踪。
Redis 集成:高性能缓存与数据存储 Redis 是一个高性能的内存数据库,广泛用于缓存、会话存储、消息队列等场景。在 Go 应用中集成 Redis,可以显著提升系统性能和响应速度。本文将介绍如何使用 go-redis 库与 Redis 交互,并实现常见的应用场景。
JWT 身份验证:构建安全的 API 认证系统 在构建现代 Web API 时,身份验证是不可或缺的一环。传统的 Session 认证方式在分布式系统中面临诸多挑战,而 JWT(JSON Web Token)提供了一种优雅、无状态的解决方案。
WebSocket 实时通信:构建交互式应用 传统的 HTTP 请求-响应模型无法满足实时应用的需求。想象一下聊天室、股票行情、在线游戏这些场景,客户端需要即时收到服务器的消息,而不是不断轮询。WebSocket 提供了一种在单个 TCP 连接上进行全双工通信的协议,让服务器可以主动向客户端推送数据。
RESTful API 设计:构建优雅的 Web 接口 在当今的软件开发中,API(应用程序接口)已经成为连接不同系统和服务的桥梁。RESTful API 因其简单性、灵活性和可扩展性,成为了最流行的 API 设计风格之一。
项目架构:构建可维护的 Go 应用 当你的 Go 项目从几十行代码的小工具,成长为成千上万行代码的大型应用时,一个清晰的项目架构就变得至关重要了。好的架构能让代码: - 易于理解 :新人能快速找到相关代码 - 易于测试 :各层职责清晰,便于单元测试 - 易于维护 :修改一处不会影响其他部分 - 易于扩展 :新功能...
Go 最佳实践:写出优雅的 Go 代码 学习一门语言不仅仅是掌握语法,更重要的是理解这门语言的设计哲学和最佳实践。Go 语言有其独特的风格和约定,遵循这些实践能帮你写出更清晰、更健壮、更易维护的代码。