zoukankan      html  css  js  c++  java
  • Google布隆过滤器

    1,引入依赖

    <dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>21.0</version>
    </dependency>
    2,

    package com.example.bloomfilter;

    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
    import com.example.entity.Test;
    import com.example.mapper.TestMapper;
    import com.google.common.hash.BloomFilter;
    import com.google.common.hash.Funnels;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;

    import javax.annotation.PostConstruct;
    import java.util.List;

    /**
    * @description:
    * @createTime:2020/11/17 14:44
    * @version:1.0
    */
    @Service
    public class BloomFilterService {

    @Autowired
    private TestMapper testMapper;

    private BloomFilter<Integer> bf;

    /**
    * 创建布隆过滤器
    *
    * @PostConstruct:程序启动时候加载此方法
    */
    @PostConstruct
    public void initBloomFilter() {
    QueryWrapper queryWrapper = new QueryWrapper();
    List<Test> testList = testMapper.selectList(queryWrapper);
    if (CollectionUtils.isEmpty(testList)) {
    return;
    }
    //创建布隆过滤器(默认3%误差)
    bf = BloomFilter.create(Funnels.integerFunnel(), testList.size());
    for (Test test : testList) {
    bf.put(test.getId());
    }
    }

    /**
    * 判断id可能存在于布隆过滤器里面
    *
    * @param id
    * @return
    */
    public boolean testIdExists(int id) {
    return bf.mightContain(id);
    }
    }



    3,引入 BloomFilterService

    @Autowired
    private BloomFilterService bloomFilterService;

    然后调用
     bloomFilterService.testIdExists(id) 返回布尔值 
  • 相关阅读:
    Pwn-level0
    Pwn-level2
    【php】php从多个数组中取出最大的值
    【算法】php计算数字k在一段数字范围出现的次数
    【算法】php计算出丑数
    【php】php常用函数代码封装(一)数组篇
    【Golang】go语言设计模式
    什么是RPC
    【php】 php获取文件路径中的文件名和文件后缀方法
    【php】php目录路径函数系列
  • 原文地址:https://www.cnblogs.com/gdss/p/13994263.html
Copyright © 2011-2022 走看看