BloomFilter 布隆過濾器
阿新 • • 發佈:2019-06-09
private BloomFilter<String> bf =null; //等效成一個set集合 @PostConstruct //物件建立後,自動呼叫本方法 public void init(){//在bean初始化完成後,例項化bloomFilter,並載入資料 List<Provinces> provinces = this.list(); //當成一個SET----- 佔記憶體,比hashset佔得小很多 bf = BloomFilter.create(Funnels.stringFunnel(Charsets.UTF_8), provinces.size());// 32個 for (Provinces p : provinces) { bf.put(p.getProvinceid()); } } @Cacheable(value = "province") public Provinces detail(String provinceid) { //先判斷布隆過濾器中是否存在該值,值存在才允許訪問快取和資料庫 if(!bf.mightContain(provinceid)){ System.out.println("非法訪問--------"+System.currentTimeMillis()); return null; } System.out.println("資料庫中得到資料--------"+System.currentTimeMillis()); Provinces provinces = super.detail(provinceid); retur