← 中文资源

简体中文版本

布隆过滤器概率成员判定(Go)

用 k 个哈希函数实现布隆过滤器,支持概率成员判定。

阅读英文原文

功能说明

布隆过滤器概率成员判定是一个面向data-integrity场景的go代码示例。用 k 个哈希函数实现布隆过滤器,支持概率成员判定。该示例展示了如何在实际项目中运用这一技术,代码结构清晰,便于理解和复用。

关键实现

该示例使用go语言实现,核心逻辑封装在函数中。代码遵循语言惯用风格,处理了边界情况,并考虑了性能与可读性的平衡。tags 标签包括:bloom-filter、probabilistic、membership,方便在平台上检索同类示例。

使用注意

使用本示例时需要注意输入约束和边界条件。该示例为代码片段(isSnippet),可直接嵌入到项目中使用。建议在实际应用前,根据业务需求调整参数和错误处理* 建议在实际应用前,根据业务需求调整参数和错误处理策略。relatedExamples 中列出了相关的其他示例,可供参考学习。

验证方式

可通过编写单元测试验证该示例的正确性。测试应覆盖正常输入、边界值和异常情况。确保在目标运行环境中测试代码的兼容性和性能表现。updatedDate 为 2026-10-25,已通过审核并发布。

代码示例

package main

import "hash/fnv"

type BloomFilter struct {
	bits []byte
	size int
	k    int
}

func newBloom(size, k int) *BloomFilter { return &BloomFilter{bits: make([]byte, size), size: size, k: k} }

func (bf *BloomFilter) hash(item string, seed int) int {
	h := fnv.New32a()
	h.Write([]byte{byte(seed)})
	h.Write([]byte(item))
	return int(h.Sum32()) % bf.size
}

func (bf *BloomFilter) Add(item string) { for i := 0; i < bf.k; i++ { bf.bits[bf.hash(item, i+1)] = 1 } }
func (bf *BloomFilter) Contains(item string) bool { for i := 0; i < bf.k; i++ { if bf.bits[bf.hash(item, i+1)] == 0 { return false } }; return true }