江湖十年

48
获赞数
0
关注数
33
粉丝数
杭州
IP 属地内蒙古通辽市
2020-09-23 加入
浏览 12.6k

公众号:Go编程世界
微信:jianghushinian
野生程序员,资深容器云开发工程师

114 声望|学徒
后端
93
go
90
面试
42
错误
26
kubernetes
20
黄金勋章
暂未获得该勋章
如何获得
1 白银勋章
个人动态
  • 发布了文章2 月 17 日
    用 Go 语言还原 2026 春晚《惊喜定格》魔术!
    今天是大年初一,江湖十年给读者朋友们拜年了,祝大家新年快乐!又是新的一年,想必大家都没看春晚吧 😄,今天继续一年一度的用 Go 语言实现春晚魔术。废话不多说,咱们直接看原理。<!-- more -->魔术原理揭秘这个魔术的数学原理其实很简单,基于一个简单的恒等...
  • 发布了文章2025-09-23
    万字长文:彻底掌握 Go 1.23 中的迭代器——使用篇
    本文带大家一起来深入探究一下 Go 1.23 中发布的迭代器特性,这是一篇迟来的文章,再不写这篇文章 Go 1.25 就发布了 :),Go 1.25 预计将于 2025 年 8 月发布。
  • 发布了文章2025-08-13
    Google ADK + DeepSeek 快速构建 Agent
    公众号首发:[链接]本文介绍如何使用 ADK + DeepSeek 创建一个简单的 Agent。ADK 官方文档地址:[链接]ADK GitHub 仓库地址:[链接]本文示例代码 GitHub 仓库地址:[链接]ADK 简介Agent Development Kit (ADK) 是一个灵活、模块化的框架,用于开发和部署 AI agents。...
  • 发布了文章2025-07-31
    Go 官方推荐的 Go 项目文件组织方式
    刚开始接触 Go 的开发者大概都会遇到一个问题:我该如何组织我的 Go 项目?这种问题当然没有标准答案,不过 Go 官方下场,给了广大 Gopher 一个推荐模板。本文就来带大家一起来学习一下 Go 官方对于 Go 项目布局的指导原则。
  • 发布了文章2025-07-22
    在 Go 中为什么推荐使用空结构体作为 Context 的 key
    公众号首发地址:[链接]我曾在《Go 中空结构体惯用法,我帮你总结全了!》一文中介绍过空结构体的多种用法,本文再来补充一种惯用法:将空结构体作为 Context 的 key 来进行安全传值。NOTE:如果你对 Go 语言中的 Context 不够熟悉,可以阅读我的另一篇文章《Go 并发...
  • 发布了文章2025-06-16
    在 Go 中如何使用有限状态机优雅解决程序中状态转换问题
    在编程中,有限状态机(FSM)是管理复杂状态流转的优雅工具,其核心在于通过明确定义状态、事件和转换规则,将业务逻辑模块化。本文将探讨在 Go 中如何使用有限状态机。
  • 发布了文章2025-06-11
    一行命令统计代码行数
    我在网上冲浪时,在 GitHub 上发现了一个感兴趣的开源项目 OneX ,我将其下载到本地,现在我该如何知道这个项目的体量呢?一个非常直观的指标是看这个项目有多少行代码。
  • 发布了文章2025-06-05
    在 Go 语言中如何实现协程池
    如果你熟悉 Java、Python 等编程语言,那么你一定听说或者使用过进程池或线程池。因为进程和线程不是越多越好,过多的进程或线程可能造成资源浪费和性能下降。所以池化技术在这些主流编程语言中非常流行,可以有效控制并发场景下资源使用量。
  • 发布了文章2025-05-27
    Go 语言中你不知道的 io.Discard 妙用
    在 Go 语言中,io.Discard 是一个实现了 io.Writer 接口的特殊变量,用于丢弃所有写入的数据。 io.Discard 在 Go 1.15 及之前版本中是放在 io/ioutil 包中实现的。而在 Go 1.16 版本,得以正式转正,被实现在 io 包中。本文我们来一起学习下 io.Discard 的实现及使用...
  • 发布了文章2025-05-20
    使用 Uber automaxprocs 正确设置 Go 程序线程数
    我们知道 Go 语言没有直接对用户暴露线程的概念,而是通过 goroutine 来控制并发。不过,在 Go 程序启动时,其背后的调度器往往是多线程运行的。在 Go 语言的 GMP 调度模型中,P 决定着同时运行的 goroutine 数,我们可以通过环境变量 GOMAXPROCS 或者运行时函数 run...
  • 发布了文章2025-05-12
    效率工具:使用 air 热重载 Go 应用程序
    在项目开发阶段,热重载技术非常有用,通过热重载,可以实现在无需手动干预的情况下,修改代码文件后,自动重启 Go 应用。这极大的提升了开发体验,同时也节约了我们的开发时间。本文我们一起来体验一下使用 air 热重载 Go 应用程序,提高开发效率。
  • 发布了文章2025-04-23
    使用 K8s Aggregate 聚合你的错误列表
    我在「go-multierror: 更方便的处理你的错误列表」一文中讲解了在 Go 中如何使用 go-multierror 包聚合错误列表,本文将介绍另一种方案,来看看 Kubernetes 是如何聚合错误列表的。
  • 发布了文章2025-04-16
    go-multierror: 更方便的处理你的错误列表
    go-multierror 是一个第三方的 Go 语言库,用于处理多个错误的聚合与管理。它由 HashiCorp 提供,非常适合需要在某些操作中收集多个错误并在最后统一返回的场景。
  • 发布了文章2025-04-09
    如何使用 go:linkname 指令访问 Go 包中的私有函数
    在 Go 语言的包设计中,函数和变量通过首字母大小写来严格区分导出(exported)与未导出(unexported)的可见性规则。这种机制是 Go 模块化设计的基石,但同时也为底层系统级开发带来了限制。//go:linkname 指令正是 Go 为突破这一限制预留的「后门」,它通过编译器...
  • 发布了文章2025-03-27
    在 Go 中如何使用分布式锁解决并发问题?
    在分布式系统中,协调多个服务实例之间的共享资源访问是一个经典的挑战。传统的单机锁(如 sync.Mutex)无法实现跨进程工作,此时就需要用到分布式锁了。本文将介绍 Go 语言生态中基于 Redis 实现的分布式锁库 redsync,并探讨其使用方法和实现原理。
  • 发布了文章2025-03-17
    在 Go 中使用 cron 执行定时任务
    如果你曾经在 Go 中实现过定时任务,可能会发现,原生的 time.Timer 或 time.Ticker 虽然简单易用,但在复杂的场景下(如多任务调度、时区处理、任务失败重试等)往往显得力不从心。这时,一个功能强大且灵活的定时任务库就显得尤为重要。
  • 发布了文章2025-03-11
    如何基于 Go 语言设计一个简洁优雅的分布式任务系统
    在当今云计算与微服务盛行的时代,分布式任务系统已成为支撑大规模业务的核心基础设施。今天就来为大家分享下如何基于 Go 语言从零设计和实现一个架构简洁且扩展性强的分布式任务系统。
  • 发布了文章2025-03-04
    Go 并发编程:如何实现一个并发安全的 map
    上周发布的文章「Go 并发控制:sync.Map 详解」有读者反馈说我写的太难了,上来就挑战源码,对新手不够友好。所以这篇文章算作补充,从入门到进阶的顺序讲解一下在 Go 中如何自己实现一个并发安全的 map。
  • 发布了文章2025-02-26
    Go 并发控制:sync.Map 详解
    我们知道,Go 中的 map 类型是非并发安全的,所以 Go 就在 sync 包中提供了 map 的并发原语 sync.Map,允许并发操作,本文就带大家详细解读下 sync.Map 的原理。
  • 发布了文章2025-02-19
    Go 并发控制:semaphore 详解
    一个生活中的例子:假设一个餐厅总共有 10 张餐桌,每来 1 位顾客占用 1 张餐桌,那么同一时间共计可以有 10 人在就餐,超过 10 人则需要排队等位;如果有 1 位顾客就餐完成,则可以让排队等待的第 1 位顾客来就餐。