Open microyahoo opened 1 year ago
https://github.com/rfyiamcool/notes/blob/main/golang_bigcache_cache.md 您好,感谢您的分享,很受用。但是在看代码和您的分享过程中发现对于 ringbuffer 扩容场景有点对不上,以下是我个人分析,如有错误还请批评指正,谢谢!
文章中提到第二种扩容场景,如下图所示:
但是看代码对于 q.head > q.tail 的场景,实现应该是 oldArray 先整体拷贝到新的 array 中,然后填充 q.head-q.tail 个空字符 slice,主要是为了将 tail 指针移动到跟 head 保持一致,如下图所示:
q.head > q.tail
另外一点是,pop 删除的不一定最旧的数据,因为存在扩容的场景
@rfyiamcool, PTAL, thanks.
https://github.com/rfyiamcool/notes/blob/main/golang_bigcache_cache.md 您好,感谢您的分享,很受用。但是在看代码和您的分享过程中发现对于 ringbuffer 扩容场景有点对不上,以下是我个人分析,如有错误还请批评指正,谢谢!
文章中提到第二种扩容场景,如下图所示:
但是看代码对于
q.head > q.tail
的场景,实现应该是 oldArray 先整体拷贝到新的 array 中,然后填充 q.head-q.tail 个空字符 slice,主要是为了将 tail 指针移动到跟 head 保持一致,如下图所示: