- 博客(3)
- 收藏
- 关注
原创 「Golang」 Map源码解析
文章目录Map哈希表设计及哈希碰撞解决方式哈希函数哈希碰撞开放地址法链表法Go中的Map概述数据结构构建Map构建方式1--小型Map堆分配构建方式2--小型Map栈分配常规构建方式--Make的len>8或Key-Value个数>8总结Map的读写Map的写入/删除Map的写入解析Map写入操作过程的总结Map的扩容Map扩容过程的总结Map的删除解析Map删除过程的总结Map的读取Map读取的总结总结MapMap通常称哈希表(Hash Table)、散列表等,是根据键(Key)而直接访问
2021-01-27 22:50:03 942
原创 「Golang」Channel解析
Channel描述Channel(通道)是在golang并发编程中用的最多的一个数据结构(也可以说是基础类型),在go中,作者在并发编程的环境下对于数据之间的共享提出了一个建议,也是go的经典开发准则:Do not communicate by sharing memory; instead, share memory by communicating.不要通过共享内存来通信,而应该通过通信来共享内存在通信方面,Channel给我们提供了一个很好的在并发编程环境中进行多Goroutine之间的数
2021-01-20 13:58:44 1578
原创 「Golang」sync.Pool的源码解析
前言在平时我们的业务逻辑中,会出现多次,重复的申请在堆上创建的对象用作他用,当并发量不大的时候,可能往往并不会产生一些什么问题,当时一旦当并发量增长的时候就会发现因为重复在堆上创建对象导致了GC的扫描时间与STW(stop-the-world)很长,导致程序性能的降低,因为大量地创建在堆上的对象,也会影响垃圾回收标记的时间,因此来说频繁的在堆上申请对象说对高并发量的程序性能会产生很大的影响。此时我们可以采用对象池的方式,去针对某些频繁的且大量重复申请的对象预先的创建或者将用完的对象放回对象池中,以便下回
2021-01-03 16:16:51 246
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人