All Projects → ArashPartow → Bloom

ArashPartow / Bloom

C++ Bloom Filter Library

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
ntHash
Fast hash function for DNA sequences
Stars: ✭ 66 (-14.29%)
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
Libbf
🎯 Bloom filters for C++11
Stars: ✭ 298 (+287.01%)
Mutual labels:  bloom-filter
App comments spider
爬取百度贴吧、TapTap、appstore、微博官方博主上的游戏评论(基于redis_scrapy),过滤器采用了bloomfilter。
Stars: ✭ 38 (-50.65%)
Mutual labels:  bloom-filter
Gopie
go patterns
Stars: ✭ 28 (-63.64%)
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].