蒲东平的博客
你真的懂 close(chan) 吗?90% 的 Go 开发者都掉过这个坑! 你真的懂 close(chan) 吗?90% 的 Go 开发者都掉过这个坑!
在日常 Go 并发编程中,我们可能会看到类似以下这样的代码: // 初始化一个空的 channel,然后在某个位置直接关闭它 // 接收方可以无阻塞地读取到 "完成" 信号 done := make(chan struct{}) clos
2025-08-08
用 Go 写桌面应用?试试 Wails 吧! 用 Go 写桌面应用?试试 Wails 吧!
在前端开发中,提起桌面应用,很多人第一反应是 Electron。虽然它很流行,但不可否认也“很重” —— 内存占用高、打包体积大。 有没有更轻量的选择呢?当然有!今天我们来聊一聊一个非常有意思的项目 —— Wails。 Wails 是一个用
2025-08-07
Conc,一个神奇的Go语言并发利器! Conc,一个神奇的Go语言并发利器!
在 Go 语言中,goroutine 和通道是并发编程的核心,但随着项目复杂度的增加,管理成百上千个 goroutine 并确保它们正确协作变得极具挑战性。sourcegraph/conc 扩展包为我们提供了一套结构化并发工具,帮助我们更安
2025-08-07
Wire,一个神奇的Go依赖注入神器! Wire,一个神奇的Go依赖注入神器!
在介绍 wire 工具之前,我们先聊聊什么是控制反转(IoC)与依赖注入(DI)?它们解决了什么问题? 控制反转(IoC)与依赖注入(DI)首先,让我们来了解一下控制反转(Inversion of Control,IoC)和依赖注入(Dep
2025-08-07
告别缓存击穿!Go 语言中的防并发神器:singleflight 包深度解析 告别缓存击穿!Go 语言中的防并发神器:singleflight 包深度解析
在高并发场景下,我们常常遇到多个请求同时访问同一份资源的情况。例如,当缓存失效时,大量请求可能同时触发数据库查询,造成资源浪费甚至数据库崩溃。为了解决这一问题, Go 语言提供了 singleflight 包 ,它能够将多个相同 key 的
2025-08-07
Go 语言单例模式全解析:从青铜到王者段位的实现方案 Go 语言单例模式全解析:从青铜到王者段位的实现方案
什么是单例模式?单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类(或结构体,在 Go 语言中)只有一个实例,并提供一个全局访问点来访问这个实例。这个模式在需要协调系统中动作的场景下非常有用,例如日志记录、配置
2025-06-29
如何为 gRPC Server 编写本地测试代码 如何为 gRPC Server 编写本地测试代码
在微服务架构中,gRPC 已成为主流的通信协议之一。但许多开发者在面对 gRPC 服务测试时,常常会遇到需要启动真实网络服务、管理端口占用等烦恼。 本文将介绍如何利用 Go 语言中 gRPC 提供的测试工具 —— bufconn,通过构建内
2025-06-26
Go 语言中如何处理并发错误 Go 语言中如何处理并发错误
在 Go 语言中,错误处理一直是开发中不可或缺的一部分。尤其在并发编程场景下,由于多个 goroutine 同时运行,错误的传递和处理就变得更为复杂。这篇文章就介绍了一些常见的处理并发错误的方法,以供各位参考。 一、 panic 只会触发
2025-06-25
深入解析 go 语言中的 select 语句 深入解析 go 语言中的 select 语句
在 go 语言中,select 是 Go 语言专门为并发编程设计的控制结构,主要用于在多个 channel 操作之间进行非阻塞选择。它的工作方式类似于 switch,但所有 case 分支都必须是 channel 的 I/O 操作。 本文将
2025-06-24
InfluxDB 时序数据的高效解决方案 InfluxDB 时序数据的高效解决方案
InfluxDB 是什么?它是一种开源的数据库,主要针对时间序列数据进行优化,能够高效地存储、检索和分析大量的时间序列数据。 InfluxDB 使用 Tag-Key-Value 模型来组织数据,这种模型便于对时间序列数据进行分类和聚合。它
2025-06-23
不用WebSocket也能搞定实时消息推送?试一试SSE吧! 不用WebSocket也能搞定实时消息推送?试一试SSE吧!
在现代 Web 开发中,实现实时数据更新是一个常见的需求。比如股票行情、聊天消息、体育比赛比分等场景,都需要服务器能够主动将数据推送给客户端,而不是客户端频繁轮询服务器来获取最新数据。 今天,我们就来学习如何使用 Go 语言和 Gin 框架
2025-06-18
Go语言切片,使用技巧与避坑指南 Go语言切片,使用技巧与避坑指南
切片(Slice)是Go语言中最灵活且高频使用的数据结构之一,其本质是对底层数组的动态引用视图,支持动态扩容、高效截取等特性。 本文将结合代码示例,详细解析切片的核心用法及常见注意事项。 一、切片基础与创建方式1.1 切片的底层结构切片由三
2025-06-17
1 / 6