摘要: 本文是 2025-0526-go-gc.md 的续篇。在理解了 Go 垃圾回收(Garbage Collection, GC)的宏观设计,包括并发标记清扫、三色标记法以及混合写屏障等核心机制之后,一个自然而然O问题是:这些通用的 GC 原理是如何与 Go 语言内建(built-in)的数据结构(如切 阅读全文
posted @ 2025-07-07 00:03 Piper蛋窝 阅读(5) 评论(0) 推荐(0)
摘要: 自 Go 1.11 版本引入 模块(modules) 的概念以来,Go 语言的项目管理和依赖管理方式发生了根本性的变革。这一变化旨在解决早期 GOPATH 模式带来的种种不便,让项目结构更加清晰,依赖关系更易于管理。发展至今,Go 的工具链已经相当成熟,不仅有强大的模块系统,还在 Go 1.18 中 阅读全文
posted @ 2025-06-08 22:38 Piper蛋窝 阅读(183) 评论(0) 推荐(2)
摘要: 最大堆、最小堆、 heap 、 优先队列在数据结构算法题目里都是一个东西。这里讨论 container/heap 的使用。 参考: https://pkg.go.dev/container/heap https://github.com/EndlessCheng/codeforces-go/blob 阅读全文
posted @ 2025-06-08 17:03 Piper蛋窝 阅读(17) 评论(0) 推荐(0)
摘要: 我所理解的 Go 的 `panic` / `defer` / `recover` 异常处理机制 对于那些真正意外的、无法恢复的运行时错误,或者严重的逻辑错误,Go 提供了 `panic`、`defer` 和 `recover` 这一套机制来处理。 阅读全文
posted @ 2025-06-07 13:28 Piper蛋窝 阅读(16) 评论(0) 推荐(0)
摘要: 我所理解的 Go 的 CSP 并发控制机制 本文将具体讨论 Go 中的基于 CSP 的并发机制实现,包括 chan 和 select 等关键要素的设计思路及核心实现细节。 阅读全文
posted @ 2025-05-30 00:35 Piper蛋窝 阅读(212) 评论(0) 推荐(0)
摘要: 我所理解的 Go 的 GC (Garbage Collection) 垃圾回收机制 Go 语言(Golang)作为一款内置运行时的现代编程语言,其垃圾回收(Garbage Collection, GC)机制是开发者理解其性能和行为的关键一环。要深入理解 Go 的 GC,我们首先需要明确垃圾回收的核心任务是什么,以及它在设计上需要面对哪些权衡与博弈。 在主流的编程语言内存模型中,程序 阅读全文
posted @ 2025-05-27 01:01 Piper蛋窝 阅读(58) 评论(0) 推荐(0)
摘要: 我所理解的 Go 的 GPM 模型 Go 语言(Golang)的一大显著特性是在其语法层面就内建了对协程,即 goroutine 的支持,并且其运行时(runtime)系统为这一功能提供了强大且原生的支撑。在我看来,选择使用协程而非传统的线程来支持高并发任务,带来了诸多益处: 切换成本更低 :协程的切换是纯用户态的操作,由 Go ru 阅读全文
posted @ 2025-05-25 22:18 Piper蛋窝 阅读(28) 评论(0) 推荐(0)
摘要: 在学习I/O多路复用时,经常会得到如下描述: ...,在其中任何一个或多个描述符 准备好进行 I/O 操作(可读、可写或异常)时获得通知 。 那么,操作系统内核到底是如何判断某个文件描述符“可读”/“可写”呢?在达到相关状态后,是如何“立即”通知到应用程序的呢?本文在探究这个问题。 I/O 多路复用 阅读全文
posted @ 2025-05-08 23:38 Piper蛋窝 阅读(27) 评论(0) 推荐(0)
摘要: 引言 本文旨在系统性地阐述 Linux 环境下的网络编程基础,重点关注 Socket 应用程序接口(API)的原理与应用。通过循序渐进的方式,结合具体的 C 语言代码示例,我们将剖析核心系统调用的机制,并最终构建一个基于传输控制协议(TCP)的简化版发布/订阅(Publish/Subscribe, 阅读全文
posted @ 2025-05-07 20:43 Piper蛋窝 阅读(68) 评论(0) 推荐(0)
摘要: 本系列旨在梳理 Go 的 release notes 与发展史,来更加深入地理解 Go 语言设计的思路。 阅读全文
posted @ 2025-05-06 20:26 Piper蛋窝 阅读(135) 评论(0) 推荐(0)