BloomFilter过滤器代码原理介绍
BloomFilter过滤器代码原理介绍 通过多个hash函数的使用可以减少hash冲突的出现。 package com.xdclass.mobile.xdclassmobileredis.controller; import java.util.BitSet; //传统的Bloom filter 不支持从集合中删除成员。 //Counting Bloom filter由于采用了计数,因此支持remove操作。 //基于BitSet来实现,性能上可能存在问题 public class SimpleBloomFilter { //DEFAULT_SIZE为2的25次方 private static final int DEFAULT_SIZE = 2 << 24; /* 不同哈希函数的种子,一般应取质数,seeds数据共有7个值,则代表采用7种不同的HASH算法 */ private static final int[] seeds = new int[] { 5, 7, 11, 13, 31, 37, 61 }; //BitSet实际是由“二进制位”构成的一个Vector。假如希望高效率地保存大量“开-关”信息,就应使用BitSet. //BitSet的最小长度是一个长整数(Long)的长度:64位 private BitSet bits = new BitSet(DEFAULT