标签:大小 另一个 lock 改变 概率 返回 eal 哈希 添加
bit位数组存储:eg. int数组每位存储0~31位bit数组
若是k个值有重复,则仍然置1,多余的不变
所有键共用一个bit数组
在bit数组映射整型数组的值:n_bit/32(int范围)%32
添加站点时,只需要在后站点往新站点进行数据迁移(删除站点时同理)
问题①:当数据少量的时候无法保证负载均衡
解决:使用虚拟节点技术
将虚拟节点均匀分配给实际站点,数据哈希值分布在虚拟节点上
题目:有一个不断吐整数的数据流,假设有足够的空间来存储。设计一个MedianHolder结构,它可以随时取得之前吐出所有数的中位数。
要求:结构加入新数的复杂度为O(logn);取中位数的时间复杂度O(1)
根据要求可以想到使用大小根堆来实现,中位数是在有序序列正中间,将数据流吐数分成两部分,元素个数相差不超过1,左边大根堆,右边小根堆
进来的第一个数默认放在大根堆。之后进来的数先跟大根堆堆顶进行比较 - 若是比之小,则加入大根堆;若是比之大,则加入小根堆
当大根堆与小根堆元素个数相差超过1时,多的堆弹出堆顶元素加入另一个堆
未完待续
标签:大小 另一个 lock 改变 概率 返回 eal 哈希 添加
原文地址:https://www.cnblogs.com/ymjun/p/12202547.html