说起 Go 语言的 sync.Cond 你可能会比较陌生,毕竟相较于 sync 包的 Mutex、WaitGroup 等,Cond 的实际使用可能少之又少。那么今天,我们就来介绍这个鲜有使用的 Cond。...
1.介绍 WaitGroup 是 sync 包用来做任务编排的一个并发原语,主要用来解决一个 goroutine 等待多个 goroutine 执行完成的场景,常见的有后端 worker 启动多个子消费者干...
1.背景与使用 在读多写少的场景使用 Mutex,如果短时间内有大量的读操作,没有写操作,那么大量的读操作在 Mutex 的机制下也只能是串行读。 针对这种情况,如果使用 RWMu...
Mutex 就好比电视剧中保险库唯一的一把钥匙,只有拿到钥匙的 goroutine 才能进入保险库,其他 goroutine 必须等它走出保险库并交出钥匙,才有机会争抢钥匙进入保险库。...
1.Mutex 解决了什么问题? 我们先来看一个经典的「计数器」案例: func main() { count := 0 wg := sync.WaitGroup{} wg.Add(100) for i := 0; i < 100;...
开发过程中,我们往往需要对用户提交的数据进行验证,以保证数据的合法性和完整性。今天我们就来介绍 Go 语言社区推出的一个验证包 —— validator。 validator 包根据 tag...
1.内存布局 struct 通过在一个连续的内存块中将其元素(即结构体字段)一个接着一个地以”平铺”的方式存放,实现了高效的内存布局。下面展示了 struct T 的内存布局: [图...
我叫唐杰,曾经有很多标签,其中最引以为傲的 90 后标签,现在也人到中年不再年轻了,但是那股爱折腾的劲头依然在我心中燃烧,所以而立之年,我带着新身份新产品,重新起...
在上篇文章我们分析了 channel 的源码,这篇文章我们来看看 channel 的常见问题。 1.对不同状态的 channel 操作一览表 未初始化 关闭 正常 关闭 panic: close of nil cha...
channel(通道)用于 goroutine(协程)之间的通信。它提供了一种在不同协程之间传递数据的机制。channel 是一种类型安全的、阻塞的、先进先出(FIFO)的数据结构,确保...
OKR 希望同城同行大佬给予内推,找一份适合的工作,小弟定感激不尽,临帖涕零 经历 深圳撸了6年PHP,有过中大型公司工作履历,去年到中原腹地新一线大都市——郑州。在郑州...
1.底层实现 map 是一个指针,指向 hmap 结构体。 1.1 hmap // $GOROOT/src/runtime/map.go type hmap struct { count int // 代表哈希表中的元素个数,调用...
1.底层 1.1 源码实现 slice 是基于 array 实现的,它的底层是 array,可以理解为对底层 array 的抽象。 源码包中 src/runtime/slice.go 定义了 slice 的数据结构: // $G...
Git 的 tag 功能是一个非常有用的工具,它可以帮助开发者在代码仓库中标记重要的里程碑和版本号。 Tag 可以看作是一个快照,用于永久性地标记提交记录。它们通常用于发布...
静态代码检查利器:golangci-lint 目录: 静态代码检查利器:golangci-lint 1.静态代码检查2.为什么选择 golangci-lint?3 下载4 命令和选项 4.1 run4.2 cache4.3 comple...
社交账号:
我要举报该,理由是: