1. 程式人生 > >Java基礎知識總結--BloomFilter(布隆過濾器)

Java基礎知識總結--BloomFilter(布隆過濾器)

前言

  對映是個非常有意思的東西。hash函式是把任意型別的資料對映成等長的位元組碼,用於快速查詢,加密等;

  bitmap 類似桶排序,最大的數是多少,就有多少位,一個數存不存在就看對應的位裡是0還是1。

  布隆過濾器是對bitmap的改進,提升了空間利用率。

導圖

這裡寫圖片描述

  布隆過濾器主要是用於大資料的查詢。

  布隆過濾器是通過k個hash函式散列出k個位矩陣上的點,如果這些點都是1則說明該資料存在,否則只要有一個不是1就不存在。也就是說布隆過濾器算出不存在的數肯定不存在,算出存在的數可能存在也可能不存在。它是犧牲正確率來換取空間。

小結

  總之,這些想把大量資料壓縮用更小的空間儲存並且快速查詢到的演算法都是藉助了把資料對映到位上。下一篇將提及到bitset(位集)也涉及到了對映的思想。都是自己的理解,如有建議,歡迎指出。

相關推薦

Java基礎知識總結--BloomFilter(過濾器)

前言   對映是個非常有意思的東西。hash函式是把任意型別的資料對映成等長的位元組碼,用於快速查詢,加密等;   bitmap 類似桶排序,最大的數是多少,就有多少位,一個數存不存在就看對應的位

BloomFilter過濾器java實現

網上有很多的原理解釋說明,此處不再對bloom filter做過多的說明,直接上程式碼(注:程式碼參考了網上其他部落格的實現,比如布隆過濾器(Bloom Filter)Java實現) /**   * 專案名:SpiderCrawler   * 檔名:BloomFil

第三百五十八節,Python分式爬蟲打造搜索引擎Scrapy精講—將bloomfilter(過濾器)集成到scrapy-redis中

分布式爬蟲 times 操作 加載 ger 目錄 需要 ini space 第三百五十八節,Python分布式爬蟲打造搜索引擎Scrapy精講—將bloomfilter(布隆過濾器)集成到scrapy-redis中,判斷URL是否重復 布隆過濾器(Bloom Filte

模擬QQ聊天與視頻聊天同時進行-------java基礎知識總結

span img mage java基礎知識 java基礎 @override args pub spa 前言:多線程的知識 代碼: 1 package com.day13.math; 2 /** 3 * 類說明 :模擬QQ聊天與視頻聊天同時進行 4 * @a

構造方法和一般方法的區別(面試)-----java基礎知識總結

col 進行 span round 構造方法 基礎知識 fff font size 構造方法:對象創建時,就會調用與之對應的構造方法,對對象進行初始化; 一般方法:對象創建後,需要方法功能時才會調用。 構造方法,在對象創建時,會調用且只調用一次。

BloomFilter(過濾器)

但是 同時 see oom font 關聯 代碼實現 filter func 原文鏈接:http://blog.csdn.net/qq_38646470/article/details/79431659 1.概念: 如果想判斷一個元素是不是在一個集合裏,一般想到的是將所有元

java基礎知識總結

ant 共享方式 而且 file processor 此外 輸入流 執行 color 1、基本:   1.1、關於面向對象的特征:     有四個基本特征:繼承、封裝、抽象、多態。     繼承:子類繼承父類,是弗雷德一個特殊化的實例,子類繼承父類的方法以及屬性(不包括pr

JAVA基礎知識總結12(多線程)

必須 對象 存放位置 垃圾 java基礎知識 current syn 原理 運行 進程:正在進行中的程序。其實進程就是一個應用程序運行時的內存分配空間。 線程:其實就是進程中一個程序執行控制單元,一條執行路徑。進程負責的是應用程序的空間的標示。線程負責的是應用程序的執行順序

JAVA基礎知識總結14(String、StringBuffer、StringBuilder)

null 多線程操作 部分 單個 進行 單線程 pri lse 行修改 1.String字符串:   java中用String類進行描述。對字符串進行了對象的封裝。這樣的好處是可以對字符串這種常見數據進行方便的操作。對象封裝後,可以定義N多屬性和行為。   如何定義字符串對

JAVA基礎知識總結18(反射)

java基礎 null exce 既然 nsa 操作 程序 san 包含 反射技術:   其實就是動態加載一個指定的類,並獲取該類中的所有的內容。而且將字節碼文件封裝成對象,並將字節碼文件中的內容都封裝成對象,這樣便於操作這些成員。簡單說:反射技術可以對一個類進行解剖。

java基礎知識總結

java基礎知識總結一 Map之一個Key存多個Value的MultiValueMap(一個鍵多個值) MultiValueMap<String, String> stringMultiValueMap = new LinkedMultiValueMa

java基礎知識總結(二)--集合

一.集合 1.集合概述:由於我們使用的是面嚮物件語言,所以,我們要經常使用物件,而很多時候我們需要使用很多物件,而用陣列對物件進行儲存,長度是固定的,不適用於變化的資料.所以,java提供了一種容器,用於儲存物件,這種容器就叫做集合. 2.集合和陣列的區別: (1)集合 a.

Java基礎知識總結(一)--基本語法知識

一.識別符號 (1)定義:就是給類,介面,方法,變數等起名字的字元序列 (2)組成規則:英文大小寫字母,數字,_和$ (3)注意事項:不能以數字開頭,不能是java中的關鍵字,區分大小寫 (4)常見命名規則: a.包名:全部小寫。 b.類名/介面名:每個單詞首字母大寫 c

畢向東—Java基礎知識總結(超級經典)

Java基礎知識總結(超級經典)   寫程式碼:     1,明確需求。我要做什麼?     2,分析思路。我要怎麼做?1,2,3。     3,確定步驟。每一個思路部分用到哪些語句,方法,和物件。     4,程式碼實現。用具體的java語言程式碼把思路體現出來。 &nbs

BloomFilter過濾器的使用

<dependency>             <groupId>com.google.guava</groupId>            

多執行緒(模擬買票)-----java基礎知識總結

這次的的問題引入的比較深入,如果看了這篇部落格,不看下一篇,你會很懵逼。 程式碼: 1 package com.day13.math; 2 /** 3 * 類說明 :模擬三個視窗同時售票 4 * @author 作者 : chenyanlong 5 * @versi

【收藏篇】Java基礎知識總結系列三

抽象類與介面: 抽象類:一般用於描述一個體系單元,將一組共性內容進行抽取,特點:可以在類中定義抽象內容讓子類實現,可以定義非抽象內容讓子類直接使用。它裡面定義的都是一些體系中的基本內容。 介面:一般用於定義物件的擴充套件功能,是在繼承之外還需這個物件具備的一

java基礎知識總結(二)----java程式的初始化順序

Java初始化原則:① 靜態物件(變數)優先於非靜態物件(變數)  ② 父類優先於子類 ③ 按照成員變數的定義順序進行初始化. 初始化的主要順序:父類靜態變數>父類靜態程式碼塊>子類靜態變數>子類靜態程式碼塊>父類非靜態變數>父類非靜態程式碼塊>

JAVA基礎知識總結4——IO

輸出和輸入都是以程式為中心 File類:代表系統檔名(路徑和檔名)             可以進行建立、刪除檔案和路徑等操作,只對檔案本身進行操作,並不涉及檔案的具體內容    &nb

JAVA基礎知識總結2——異常、陣列、字串、包裝類

異常、陣列、字串、包裝類 1.異常:執行期出現的錯誤,觀察錯誤的名字和行號最重要 異常處理:try{可能出現異常的語句}catch(異常型別 物件){異常處理}             先逮小的異常,再