gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:05:57 27 4
gpt4 key购买 nike

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

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

最佳答案

默认的哈希函数是 128-bit murmur3 hash function (x64 variant) (参见BloomFilterStrategies enum)。

您无法使用公共(public) API 指定哈希函数。然而,使用一点技巧你就可以做到这一点 - 你需要:

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

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

但是,请确保您确实需要自定义函数。 Murmur3确实很快(尽管不安全),而其他所有哈希函数很可能会慢得多,所以也许您希望的唯一好处是更少的冲突。

关于java - 选择 Guava Bloom 过滤器使用的哈希函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51348368/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com