摘要: 在 Go 编程语言中,"ok-idiom" 是一种常见的惯用写法(idiom),用于处理可能返回多个值的函数,尤其是那些可能失败或返回额外状态的场景。它通常与类型断言(type assertion)或从 map、channel 等操作中获取值时使用。 具体含义 "ok-idiom" 指的是在 Go 阅读全文
posted @ 2025-04-02 08:17 仁义礼智信的 阅读(1) 评论(0) 推荐(0) 编辑
摘要: ps -C psName -o rss | awk '{sum += $1} END {print sum/1024 " MB"}' 阅读全文
posted @ 2025-03-26 16:53 仁义礼智信的 阅读(1) 评论(0) 推荐(0) 编辑
摘要: GOMAXPROCS 是 Go 运行时允许同时运行 Goroutine 的操作系统线程的最大数量(并行运行 Goroutine 的最大线程数)。这些线程是活跃的(running state),执行调度器中的 Goroutine。 但系统中可能存在更多的操作系统线程。例如,如果一个线程因为系统调用(如 阅读全文
posted @ 2025-03-25 20:27 仁义礼智信的 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 是的,你的理解完全正确!让我总结并确认一下你的思路,确保我们达成一致: 在单核环境下,且 GOMAXPROCS=1 时: 只有一个系统线程(操作系统线程)在运行 Go 的调度器。 这个线程负责执行调度器中的所有 Goroutine。 但是,Goroutine 是并发执行的,也就是说,调度器可以在 G 阅读全文
posted @ 2025-03-25 08:59 仁义礼智信的 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 问题: 单核不就是只有一个系统线程执行多个groutine么,groutine需要排队呀.排队不就是串行化执行么 你的疑问非常好,我明白你在纠结的地方:既然单核只有一个系统线程(在 GOMAXPROCS=1 的情况下),Goroutine 看起来像是“排队”执行,那为什么还会出现并发问题?让我再深入 阅读全文
posted @ 2025-03-25 08:45 仁义礼智信的 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 是的,你说得没错,atomic.AddInt32 在底层确实涉及一种“锁”的机制,但它和我们通常理解的软件层面的加锁(如 sync.Mutex)有所不同。让我们澄清一下这两种“锁”的区别,以及为什么原子操作的“锁”更高效。 原子操作中的“锁” 在 atomic.AddInt32 中,所谓的“锁”是指 阅读全文
posted @ 2025-03-24 21:46 仁义礼智信的 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 在 Go 中,为了在并发环境下安全地操作不同类型的数据结构,sync/atomic 提供了针对基本类型的原子操作,但对于像 map 和数组这样的复杂数据结构,没有直接的原子操作支持。我们需要根据具体场景选择合适的并发安全机制。以下分别讨论整型、map 和数组的并发安全实现方式。 1. 并发安全的整型 阅读全文
posted @ 2025-03-24 20:48 仁义礼智信的 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 让我们来分析这个问题。图片中的标题是“编码”和“编码模板”,左侧是三个数字 [0,127]、[128,2047] 和 [2048,65535],右侧是对应的编码模板,分别是 0???????、110????? 10?????? 和 1110???? 10?????? 10??????。问题提到“如果 阅读全文
posted @ 2025-03-21 09:23 仁义礼智信的 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 在 Go 编程语言中,类型断言(type assertion)和类型转换(type conversion)是两个不同但容易混淆的概念。它们在用途、语法和行为上有显著区别。以下是详细的对比和解释: 1. 类型断言(Type Assertion) 定义: 类型断言是用来从接口类型(interface{} 阅读全文
posted @ 2025-03-18 16:25 仁义礼智信的 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 转自https://blog.csdn.net/General_zy/article/details/117750221 阅读全文
posted @ 2025-03-18 10:31 仁义礼智信的 阅读(0) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示