摘要:
全局队列(Global Queue):存放等待运行的 G。 P 的本地队列:同全局队列类似,存放的也是等待运行的 G,存的数量有限,不超过 256 个。新建 G’时,G’优先加入到 P 的本地队列,如果队列满了,则会把本地队列中一半的 G 移动到全局队列。 P 列表:所有的 P 都在程序启动时创建, 阅读全文
摘要:
golang中也使用分代概念分配内容,同样也是用标记清除算法做垃圾回收。 tiny :size < 16 bytes && has no pointer(noscan); small :has pointer(scan) || (size >= 16 bytes && size <= 32 KB); 阅读全文
摘要:
Parallel.For、Parallel.Foreach 的要求: 同样的数据类型,例如:List<T>,Dictionary<T,F>,IEnumerable<T>,等等集合类的操作 执行相同的函数:在Parallel.For或者Parallel.Foreach中只能传入一个Action,也就是 阅读全文
摘要:
GC简介:垃圾回收(Garbage Collection)也被称为自动内存管理技术,在现代编程语言中使用得相当广泛,常见的 Java、Go、C# 均在语言的 runtime 中集成了相应的实现。 对象创建,内存分配 观察对象分配时,主要有三个参与者,Application,allocator,gra 阅读全文
摘要:
本文主要描述reids数据结构和底层数据结构的实现,用于熟悉redis的底层数据结构实现原理,下图是reids的整个数据结构组成。这篇文章主要介绍value对象这部分数据结构 SDS初识 string结构对应底层SDS数据结构,SDS是redis最简单的数据结构,一般用于分布式锁和Json序列化对象 阅读全文
摘要:
前言 缓存是提升性能的通用方法,现在大多数的缓存实现都使用了经典的技术。当读多写少的情况时,通常会使用缓存来提升获取数据的性能。使用缓存的方式大概有Reids、MemoryCahce、Memcached、Dictionary等等方式来实现自己的缓存,使用缓存时可能考虑最多的时如何存储数据,而不是考虑 阅读全文