摘要:
布隆过滤器(Bloom Filter)是一种比较巧妙的数据结构, 他的功能就是判断一个元素是否在一个集合中, 相比于List, Hash等数据结构,它使用的空间很小, 原理就是通过N个hash函数,映射到一个位图上,将指定位置的位图元素设置为1,因为它不存储原始数据,再加上位图长度没有办法扩展,所以 阅读全文
摘要:
跳跃表是一种比较巧妙的结构,其查询性能大部分都可以达到O(logN),Redis中的sorted set 就使用了这种结构。 Skip list的性质 (1) 由很多层结构组成,level是通过一定的概率随机产生的。 (2) 每一层都是一个有序的链表,默认是升序 (3) 最底层(Level 1)的链 阅读全文
摘要:
在缓存场景中,一致性hash算法避免了余数法在因为节点失效导致大面积缓存失效的问题。 直接上代码,使用了Java自带的TreeMap, 参考了dubbo代码中的一致性hash负载 1 package org.example; 2 3 import java.nio.charset.StandardC 阅读全文
摘要:
简介 LRU是一种缓存淘汰策略,全称是Least Recently Used,即最近最少使用,也就是说我们认为最近使用过的数据应该是是有用的,很久都没用过的数据应该是无用的。也就是说,当限定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。 LRU的实现思路就是hashmap+双链表,其中has 阅读全文