Go HTTP 服务超时入门:ReadTimeout、WriteTimeout 和请求上下文
本文讲解 Go HTTP 服务中 ReadTimeout、WriteTimeout、IdleTimeout 和请求 context 的基本用法,帮助初学者避免服务被慢请求拖住。
posts
本文讲解 Go HTTP 服务中 ReadTimeout、WriteTimeout、IdleTimeout 和请求 context 的基本用法,帮助初学者避免服务被慢请求拖住。
Go 1.20 新特性:让错误处理更优雅。2023 年 2 月,Go 1.20 正式发布。虽然不像 1.18 那样引入了泛型这样的重大特性,但 1.20 在错误处理、类型转换和性能方面带来了许多实用的改进。本文将带你深入了解 Go 1.20 的重要特性。
错误处理的高级技巧:从基础到企业级 Go 的错误处理以其简洁性著称,但简洁不等于简单。在实际项目中,我们需要处理复杂的错误场景:错误包装、错误链、错误分类、错误监控等。本文将带你从基础的错误处理进阶到企业级的错误处理策略。
从切片工具函数学习泛型最自然 Go 1.18 有了泛型后,最容易上手的练习就是切片工具函数。因为切片处理在业务代码里非常常见:过滤活跃用户、提取 ID、计算总金额、把数据库结果转成响应结构体。过去这些函数要么针对具体类型写,要么使用 损失类型安全。泛型让它们变得更自然。
Go 1.19:稳定中求进步 2022 年 8 月,Go 1.19 正式发布。虽然不像 1.18 那样引入了泛型这样的重大特性,但 1.19 在稳定性、性能和开发体验方面做了大量改进。这篇文章带你了解 Go 1.19 的重要变化。
深入学习 Go 的各种 Channel 使用模式,包括 Pipeline、Fan-in/Fan-out、Worker Pool 等经典并发模式
原子操作:无锁并发编程的艺术 在并发编程中,我们经常需要保护共享数据。传统的做法是使用互斥锁(mutex),但锁会带来性能开销和死锁风险。原子操作 提供了一种无锁的替代方案,在某些场景下性能更优。本文将深入探讨 Go 的 包,学习如何正确使用原子操作。
线上运行的到底是哪一版 当用户反馈问题时,第一件事往往不是看代码,而是确认版本。你以为线上跑的是刚发布的二进制,实际可能是旧版本;你以为某个依赖已经升级,实际构建产物里还是旧依赖。Go 程序可以读取自身构建信息,这对命令行工具、HTTP 服务和排查问题都很有用。
逃逸分析:理解 Go 的内存分配策略 在 Go 中,你不需要像 C/C++ 那样手动管理内存,但这并不意味着你可以忽视内存分配。理解 逃逸分析 (Escape Analysis)对于编写高性能的 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 语言有其独特的风格和约定,遵循这些实践能帮你写出更清晰、更健壮、更易维护的代码。
设计模式:Go 语言中的实践 设计模式是软件开发中经过验证的解决方案。它们不是具体的代码,而是一种思路,帮助你解决特定场景下的常见问题。但是,不同的语言有不同的特性,设计模式的实现方式也会有所不同。Go 语言没有类、继承、泛型(1.18 之前),这让很多传统的面向对象设计模式需要"Go 化"。