go的数据结构

map结构:
根据hash值得低八位找到桶位置,桶里存放tophash、对应的所有key、对应的所有value、指向下一个桶的指针:tophash存放hash值的高八位,用于快速判断key是否在这个桶中,key和value分开存放是因为key是int64位,val是int8位,存放k-v对会因为内存对齐导致存val也需要8个字节,所以分开存放来节省空间。
map是并发不安全的,读写并发报panic,写会更新一个状态值hasWriting,其他读时会查到hasWriting表示有写,就抛出异常
可以参考:https://juejin.cn/post/7066528623297036302 ; https://blog.csdn.net/ByteDanceTech/article/details/126314053
syc.map是并发安全的:

concurrent-map是加分段锁,也有go的实现,https://github.com/orcaman/concurrent-map。对每个分片(shard,多个桶)加锁
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值