04 2023 档案

摘要:go语言channel 设计原理 go语言中提倡:不要通过共享内存方式进行通信,而应该通过通信的方式共享内存。 在很多编程语言中,多个线程传递数据的方式一般是共享内存,为了解决线程竞争,我们需要限制同一时间能够读写这些变量的线程数量,然而这与go语言的设计并不相同。 虽然在go语言中也能使用共享内存 阅读全文
posted @ 2023-04-29 18:44 每天提醒自己要学习 阅读(45) 评论(0) 推荐(0) 编辑
摘要:go语言time.Timer Timer是一个一次性的定时器,经过指定的时间后将会触发一个时间,通知调用的goroutine 使用方法 func main() { timer := time.NewTimer(3 * time.Second) for { select { case t := <-t 阅读全文
posted @ 2023-04-25 18:47 每天提醒自己要学习 阅读(108) 评论(0) 推荐(0) 编辑
摘要:go语言context.Context context 是 Golang 从 1.7 版本引入的一个标准库。它使得一个request范围内所有goroutine运行时的取消可以得到有效的控制。当最上层的 goroutine 因为某些原因执行失败时,下层的 Goroutine 由于没有接收到这个信号所 阅读全文
posted @ 2023-04-22 22:50 每天提醒自己要学习 阅读(170) 评论(0) 推荐(0) 编辑
摘要:go语言sync.Once go语言sync.Once 数据结构 为什么done放在第一个字段 Do 总结 sync.Once 是 Go 标准库提供的使函数只执行一次的实现,常应用于单例模式,例如初始化配置、保持数据库连接等。作用与 init 函数类似,但有区别。 init 函数是当所在的 pack 阅读全文
posted @ 2023-04-19 23:02 每天提醒自己要学习 阅读(138) 评论(0) 推荐(0) 编辑
摘要:go语言sync.WaitGroup go语言sync.WaitGroup 数据结构 1.13版本的结构 1.20版本的结构 Add Done Wait 总结 WaitGroup的主要作用是,让一个或多个goroutine去等待另一组goroutine结束 数据结构 waitGroup的数据结构有过 阅读全文
posted @ 2023-04-19 16:26 每天提醒自己要学习 阅读(39) 评论(0) 推荐(0) 编辑
摘要:go语言sync.mutex go语言sync.mutex 数据结构 Lock Unlock 总结 数据结构 type Mutex struct { state int32 sema uint32 } Mutex包含了两个字段,分别是state、sema,state表示了当前锁的状态,sema是用于 阅读全文
posted @ 2023-04-18 12:09 每天提醒自己要学习 阅读(54) 评论(0) 推荐(0) 编辑
摘要:go语言代码规范 指南篇 编码风格原则 清晰:代码的目的和原理对读者来说是清晰的 简单:代码以最简单的方式完成其目标 简明:代码具有较高的信噪比 可维护性:编写的代码可以很容易维护 一致:代码与广泛的谷歌代码库风格一致 清晰 清晰主要是通过有效的命名、有用的注释和有效的代码组织来实现的。 清晰与否要 阅读全文
posted @ 2023-04-11 23:12 每天提醒自己要学习 阅读(61) 评论(0) 推荐(0) 编辑
摘要:go语言内存对齐 go语言内存对齐 为什么要进行内存对齐 内存对齐规则 基本数据类型 结构体数据类型 原子操作问题 总结 比如:存储int32位和int64位的数据时 没有进行内存对齐,int64会紧跟着int32位进行内存分配 进行内存对齐,将会进行字节填充,使得int64能够从内存地址为8的倍数 阅读全文
posted @ 2023-04-10 21:49 每天提醒自己要学习 阅读(88) 评论(0) 推荐(0) 编辑
摘要:go语言原子操作atomic.Value go语言原子操作atomic.Value 数据结构 Store Load 总结 数据结构 // A Value provides an atomic load and store of a consistently typed value. // The z 阅读全文
posted @ 2023-04-07 17:41 每天提醒自己要学习 阅读(305) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示