会员
周边
新闻
博问
闪存
赞助商
YouClaw
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
Acyclonepl
首页
新随笔
联系
订阅
管理
2026年5月16日
程序员会消失吗?
摘要: 你这个观点非常犀利,而且抓住了问题的一个本质矛盾。我很认同你的核心判断:“程序员”这个职业不会消失,但它会被重新定义——而调试、引导、约束我们这些大模型的人,正是新程序员的雏形。 我把你的论点拆开来,从三个层面聊聊我的看法。 1. 你说的“调试大模型的人就是程序员”,完全成立 这背后其实是一个定义问
阅读全文
posted @ 2026-05-16 20:41 Acyclonepl
阅读(3)
评论(0)
推荐(0)
2026年5月13日
条件变量sync.Cond
摘要: 下面来详细拆解 sync.Cond 条件变量。 一、什么是条件变量,它解决什么问题? 互斥锁 (sync.Mutex) 解决的是互斥进入临界区的问题,但它本身没法表达 “等待某个条件成立” 这种语义。 当 goroutine 发现条件不满足时,一般只能两种做法: 忙等:循环检查条件占用 CPU; 定
阅读全文
posted @ 2026-05-13 15:29 Acyclonepl
阅读(5)
评论(0)
推荐(0)
*sync.Cond类型的值可以被传递吗?那sync.Cond类型的值呢?
摘要: *sync.Cond:放心传递,所有使用者共同操作同一个条件变量。 sync.Cond 值:不可复制传递,必须始终以指针形式使用,否则会出现难以调试的并发 bug。
阅读全文
posted @ 2026-05-13 14:33 Acyclonepl
阅读(1)
评论(0)
推荐(0)
你知道互斥锁和读写锁的指针类型都实现了哪一个接口吗?
摘要: 它们都实现了 sync.Locker 接口。 sync.Locker 接口的定义 在 sync 包中,Locker 是一个极简的接口,只有两个方法: type Locker interface { Lock() Unlock() } 谁实现了它? *sync.Mutex 有 Lock() 和 Unl
阅读全文
posted @ 2026-05-13 14:27 Acyclonepl
阅读(3)
评论(0)
推荐(0)
2026年5月12日
对比 channel 和互斥锁的使用场景
摘要: 一、核心设计差异 sync.Mutex:保护共享内存区域。多个 goroutine 都想访问同一块数据,通过锁保证互斥访问。重点是 “互斥”。 channel:传递数据的所有权。通过发送和接收,把数据从一个 goroutine 转移给另一个。重点是 “通信”和“传递所有权”。 二、什么时候用 syn
阅读全文
posted @ 2026-05-12 16:46 Acyclonepl
阅读(2)
评论(0)
推荐(0)
Go语言测试2
摘要: 在 Go 里,可以通过 go test 的几个标志来开启测试覆盖度分析,同时这种做法会带来一些运行时的开销,需要注意。 一、如何开启测试覆盖度分析? 1. 最简单的用法:-cover go test -cover ./... 这会输出每个被测包在测试中执行的语句占比,例如: ok example.c
阅读全文
posted @ 2026-05-12 11:35 Acyclonepl
阅读(6)
评论(0)
推荐(0)
Go语言测试1
摘要: 在 Go 的测试框架里,testing.T(用于单元测试)和 testing.B(用于基准测试)都实现了 testing.TB 接口,因此它们共享一套日志、断言、跳过、并行和资源管理的方法;同时 testing.B 还有一组专为性能测量设计的独有方法。下面我按功能梳理一下这些方法以及它们的作用。 一
阅读全文
posted @ 2026-05-12 11:34 Acyclonepl
阅读(4)
评论(0)
推荐(0)
2026年5月11日
我们可以在defer函数中恢复 panic,那么可以在其中引发 panic 吗?
摘要: 在 Go 中,可以在 defer 函数里引发 panic,但这会引入微妙的行为变化。核心依赖于当前 goroutine 是否已经处于 panic 状态,以及 recover 的调用时机。 1. 正常执行流中,在 defer 里引发 panic 如果函数正常执行到返回(没有发生 panic),defe
阅读全文
posted @ 2026-05-11 19:36 Acyclonepl
阅读(3)
评论(0)
推荐(0)
请列举出你经常用到或者看到的 3 个错误类型,它们所在的错误类型体系都是怎样的?你能画出一棵树来描述它们吗?
摘要: 在 Go 中,错误体系是围绕 error 接口展开的组合与包装树,而不是传统的类继承树。这里列举 3 个非常常见的错误类型,并描绘它们在体系中的位置和关系。 三个具体错误类型 *errors.errorString 由 errors.New("some message") 创建。 只包含一个字符串,
阅读全文
posted @ 2026-05-11 19:19 Acyclonepl
阅读(3)
评论(0)
推荐(0)
为什么可以写 `interface{}(byte(127))`?
摘要: 这段代码演示了 Go 的类型分支(type switch) 和空接口类型转换的用法,同时揭示了一个常被忽略的细节:byte 和 uint8 是同一个类型,匹配时遵循顺序优先原则。 代码逐行解释 value6 := interface{}(byte(127)) byte(127) 是一个类型转换,生成
阅读全文
posted @ 2026-05-11 18:09 Acyclonepl
阅读(5)
评论(1)
推荐(0)
下一页