猿问

选择Guava Bloom过滤器使用的哈希函数

使用Guava库创建Bloom过滤器时,需要提供一个漏斗和一个预期的插入次数(以及所需的误报率)。有没有办法设置Bloom过滤器应该使用的哈希函数?如果没有办法设置哈希函数,默认情况下使用什么?

Bloom过滤器是com.google.common.hash的一部分,它提供了各种不同的哈希函数。不幸的是https://github.com/google/guava/wiki/HashingExplained无法回答我的问题,但是显示了可用的哈希函数并给出了一些解释。


慕哥9229398
浏览 164回答 1
1回答

慕森王

默认的哈希函数是128位murmur3哈希函数(x64变体)(请参阅BloomFilterStrategies枚举)。您不能使用公共API指定哈希函数。但是,使用一点技巧就可以做到-您需要:将自定义类放在com.google.common.hash包中以调用BloomFilter。create( &nbsp;Funnel<? super T> funnel, long expectedInsertions, double fpp, Strategy strategy)创建的自定义实现BloomFilter.Strategy(最简单的方法是从复制一个实现BloomFilterStrategies,并将hash函数转换为字段)。但是,请确保您确实需要自定义功能。Murmur3确实非常快(尽管并不安全),并且其他所有哈希函数都可能会慢得多,因此,您可能希望的唯一好处就是减少冲突。
随时随地看视频慕课网APP

相关分类

Java
我要回答