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 Demo

Demo

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值