ArashPartow / Bloom
C++ Bloom Filter Library
Stars: ✭ 77
Labels
Projects that are alternatives of or similar to Bloom
guava-probably
Probabilistic data structures for Guava.
Stars: ✭ 51 (-33.77%)
Mutual labels: bloom-filter
Hash Table
Fast, reliable cuckoo hash table for Node.js.
Stars: ✭ 272 (+253.25%)
Mutual labels: bloom-filter
Doramon
常见工具汇总:一键式生成整个前后端工具,单机高性能幂等工具,zookeeper客户端工具,分布式全局id生成器,一致性哈希工具,Bitmap工具,布隆过滤器参数生成器,Yaml和properties互转工具等等
Stars: ✭ 24 (-68.83%)
Mutual labels: bloom-filter
hashlookup-forensic-analyser
Analyse a forensic target (such as a directory) to find and report files found and not found from CIRCL hashlookup public service - https://circl.lu/services/hashlookup/
Stars: ✭ 43 (-44.16%)
Mutual labels: bloom-filter
algorithm-structure
2021年最新总结 500个常用数据结构,算法,算法导论,面试常用,大厂高级工程师整理总结
Stars: ✭ 590 (+666.23%)
Mutual labels: bloom-filter
Bloom Filter Scala
Bloom filter for Scala, the fastest for JVM
Stars: ✭ 333 (+332.47%)
Mutual labels: bloom-filter
json-bloomfilter
🗜 A bloom filter implementation in Ruby and Javascript that is serialisable to JSON and compatible between both languages.
Stars: ✭ 15 (-80.52%)
Mutual labels: bloom-filter
Springmvc Project
开箱即用的SpringMVC项目,包含常规业务所需的框架功能整合,更多功能请关注 https://github.com/MartinDai/SpringBoot-Project
Stars: ✭ 33 (-57.14%)
Mutual labels: bloom-filter
Redis Lua Scaling Bloom Filter
LUA Redis scripts for a scaling bloom filter
Stars: ✭ 268 (+248.05%)
Mutual labels: bloom-filter
Cfilter
Cuckoo Filter implementation in Go, better than Bloom Filters (unmaintained)
Stars: ✭ 772 (+902.6%)
Mutual labels: bloom-filter
bloomfilter
Bloomfilter written in Golang, includes rotation and RPC
Stars: ✭ 61 (-20.78%)
Mutual labels: bloom-filter
algorithm coding
推荐算法、相似度算法、布隆过滤器、均值算法、一致性Hash、数据结构、leetcode练习
Stars: ✭ 30 (-61.04%)
Mutual labels: bloom-filter
Wyhash
The FASTEST QUALITY hash function, random number generators (PRNG) and hash map.
Stars: ✭ 410 (+432.47%)
Mutual labels: bloom-filter
Redisbloom
Probabilistic Datatypes Module for Redis
Stars: ✭ 858 (+1014.29%)
Mutual labels: bloom-filter
golomb-set
A Golomb Coded Set implementation in Rust
Stars: ✭ 33 (-57.14%)
Mutual labels: bloom-filter
App comments spider
爬取百度贴吧、TapTap、appstore、微博官方博主上的游戏评论(基于redis_scrapy),过滤器采用了bloomfilter。
Stars: ✭ 38 (-50.65%)
Mutual labels: bloom-filter
Khmer
In-memory nucleotide sequence k-mer counting, filtering, graph traversal and more
Stars: ✭ 640 (+731.17%)
Mutual labels: bloom-filter
Description
C++ Bloom Filter Library, has the following capabilities:
- Optimal parameter selection based on expected false positive rate.
- Union, intersection and difference operations between bloom filters.
- Compression of in-use table (increase of false positive probability vs space)
- Portable and efficient source code implementation.
- Single header implementation, no building required. No external dependencies
Compatible Compilers
- GNU Compiler Collection (4.1+)
- Intel® C++ Compiler (9.x+)
- Clang/LLVM (1.1+)
- PGI C++ (10.x+)
- Microsoft Visual Studio C++ Compiler (8.1+)
For more information please visit: http://www.partow.net/programming/bloomfilter/index.html
Simple Bloom Filter Example
Example's objectives:
- Instantiate and configure a Bloom filter
- Add some strings and integers to the Bloom filter
- Query the Bloom filter for membership of the previously added strings and integers
- Query the Bloom filter for membership of integers that were NOT previously added (potential false positives)
#include <iostream>
#include <string>
#include "bloom_filter.hpp"
int main()
{
bloom_parameters parameters;
// How many elements roughly do we expect to insert?
parameters.projected_element_count = 1000;
// Maximum tolerable false positive probability? (0,1)
parameters.false_positive_probability = 0.0001; // 1 in 10000
// Simple randomizer (optional)
parameters.random_seed = 0xA5A5A5A5;
if (!parameters)
{
std::cout << "Error - Invalid set of bloom filter parameters!" << std::endl;
return 1;
}
parameters.compute_optimal_parameters();
//Instantiate Bloom Filter
bloom_filter filter(parameters);
std::string str_list[] = { "AbC", "iJk", "XYZ" };
// Insert into Bloom Filter
{
// Insert some strings
for (std::size_t i = 0; i < (sizeof(str_list) / sizeof(std::string)); ++i)
{
filter.insert(str_list[i]);
}
// Insert some numbers
for (std::size_t i = 0; i < 100; ++i)
{
filter.insert(i);
}
}
// Query Bloom Filter
{
// Query the existence of strings
for (std::size_t i = 0; i < (sizeof(str_list) / sizeof(std::string)); ++i)
{
if (filter.contains(str_list[i]))
{
std::cout << "BF contains: " << str_list[i] << std::endl;
}
}
// Query the existence of numbers
for (std::size_t i = 0; i < 100; ++i)
{
if (filter.contains(i))
{
std::cout << "BF contains: " << i << std::endl;
}
}
// Query the existence of invalid numbers
for (int i = -1; i > -100; --i)
{
if (filter.contains(i))
{
std::cout << "BF falsely contains: " << i << std::endl;
}
}
}
return 0;
}
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].