为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕哥9229398 2021-05-20 18:02:21
使用Guava库创建Bloom过滤器时,需要提供一个漏斗和一个预期的插入次数(以及所需的误报率)。有没有办法设置Bloom过滤器应该使用的哈希函数?如果没有办法设置哈希函数,默认情况下使用什么?Bloom过滤器是com.google.common.hash的一部分,它提供了各种不同的哈希函数。不幸的是https://github.com/google/guava/wiki/HashingExplained无法回答我的问题,但是显示了可用的哈希函数并给出了一些解释。
查看完整描述

1 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

默认的哈希函数是128位murmur3哈希函数(x64变体)(请参阅BloomFilterStrategies枚举)。

您不能使用公共API指定哈希函数。但是,使用一点技巧就可以做到-您需要:

  1. 将自定义类放在com.google.common.hash包中以调用BloomFiltercreate(  Funnel<? super T> funnel, long expectedInsertions, double fpp, Strategy strategy)

  2. 创建的自定义实现BloomFilter.Strategy(最简单的方法是从复制一个实现BloomFilterStrategies,并将hash函数转换为字段)。

但是,请确保您确实需要自定义功能。Murmur3确实非常快(尽管并不安全),并且其他所有哈希函数都可能会慢得多,因此,您可能希望的唯一好处就是减少冲突。


查看完整回答
反对 回复 2021-05-26
  • 1 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信