在 Go 语言中,chan 是 Goroutine 之间通信与同步的核心原语,其底层结构定义在 runtime/chan.go 的 hchan 结构体中。 一、hchan 核心字段 当缓冲区满时,发送方 Goroutine 会被封装为 sudog 挂入 sendq 并调用 gopark 让出 CPU;接收方消费数据后通
分类:后端开发
共 12 篇文章后端开发相关技术文章
为了解决标准 map 配合读写锁 sync.RWMutex 在高并发读多写少场景下的锁竞争瓶颈,Go 标准库引入了 sync.Map。其核心机制依赖两张表:只读且无需加锁的 read 字典,以及持有互斥锁的 dirty 字典。 一、readOnly 结构定义与原子加载
在分布式前后端协作演进中,传统的 RESTful API 逐渐显现出其固有局限性。随着移动端设备多样化与前端 UI 交互的复杂化,REST 接口常常陷入过度获取(Overfetching)与获取不足(Underfetching)的困境。Overfetching:获取某个用户的简略信息(如头像和昵称),REST 接口往往
gRPC 基于 HTTP/2 与 Protocol Buffers 构建,相比 REST 具有更小的传输体积与更强的类型契约。 一、HTTP/2 多路复用优势 HTTP/2 在单一 TCP 连接上通过 Stream ID 复用多个请求,消除了 HTTP/1.1 的队头阻塞问题。gRPC 利用该特性支持四种调用模式: U
装饰器本质是接受函数并返回新函数的高阶函数,其能力来源于 Python 的闭包与一等函数特性。 一、基础装饰器与 functools.wraps functools.wraps 将原函数的 name、doc 等元数据复制到包装函数,避免调试与文档生成出错。 二、类装饰器与描述符 当装饰器作用于方法时,需注意描述符协议: