欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Bloom Filter 公司周会的分享

程序员文章站 2024-03-24 13:38:22
...

Bloom Filter 公司周会的分享

不喜欢写PPT,也不喜欢对着文字干讲。
结合脑图和一些代码demo来讲

package com.playground.google.bloomfilter;

import com.google.common.base.Charsets;
import com.google.common.hash.BloomFilter;
import com.google.common.hash.Funnels;

public class BloomFilterTest {
    private static int size = 1000000;

    private static BloomFilter<Integer> integerFilter = BloomFilter.create(Funnels.integerFunnel(), size);


    /**
     *  低精度 误报率默认3%
     */
    private static BloomFilter<CharSequence> stringFilter = BloomFilter.create(Funnels.stringFunnel(Charsets.UTF_8), size);

    /**
     * 高精度 误报率0.02%
     */
    private static BloomFilter<CharSequence> highPrecisionStringFilter
            = BloomFilter.create(Funnels.stringFunnel(Charsets.UTF_8), size, 0.0002);

    public static void main(String[] args) {
        // initialize bloom filter
        for (int i = 0; i < size; i++) {
            integerFilter.put(i);
        }
        long startTime1 = System.nanoTime(); // 获取开始时间
        
        //判断这一百万个数中是否包含29999这个数
        if (integerFilter.mightContain(29999)) {
            System.out.println("命中了");
        }
        long endTime1 = System.nanoTime();   // 获取结束时间
        System.out.println("程序运行时间: " + (endTime1 - startTime1) + "纳秒");

        // 注入100W个值
        for(int i = 0; i < size; i++) {
            stringFilter.put(i+"");
            highPrecisionStringFilter.put(i + "");
        }

        int hit1 = 0;
        int hit2 = 0;
        // 查找注入的100W个值,以及以外的1W个值
        for(int i = 0; i < size + 10000; i++) {
            if(stringFilter.mightContain(i+"")){
                hit1 ++;
            }
            if(highPrecisionStringFilter.mightContain(i+"")){
                hit2 ++;
            }
        }

        System.out.printf("低精度Bloom Filter hit数 : %s\n", hit1);
        System.out.printf("高精度Bloom Filter hit数 : %s\n", hit2);

    }
    

}

Bloom Calculator

计算器

Bloom Filter 公司周会的分享

Bloom Filter Demo

Demo

Bloom Filter 公司周会的分享

相关标签: Bloom Filter