實現了一個壓縮演算法,在資料高度壓縮的前提下,還可以快速查詢 key
最近寫了一個演算法,可用於 (key,value) 儲存,key 當然是 string 型別。
用一個 2.3G 的 url 集合做測試,如果不計 value 佔用的空間,key 集合的儲存空間可以被壓縮70倍!壓縮後整個資料結構僅佔31M記憶體!壓縮率比 bzip2 還要高。
本質性的不同於: gzip, bzip2 等壓縮演算法僅僅是壓縮而已,無法快速地從壓縮資料中查詢。
我實現的這個演算法能高效地支援對 key 的查詢,並且查詢的時間複雜度僅與 key 的長度有關,不管資料集合有多大,時間複雜度總是 O(strlen(key))。實際資料:當 key 長度均值為 76 位元組時(該 url 集合中所有 url 的平均長度),平均查詢時間大約 900 納秒(筆記本 i7-720M)。
可能有人以為是 bloom filter, MD5 之類投機取巧的實現方式,我付責任的地說:不是,該演算法是確定性的。bloom filter/MD5 ... 是概率的,並且它們的記憶體佔用還要更多。
如果要讓 key 再對應一個 value,並且仍然要以 O(strlen(key)) 的時間複雜度訪問 value,需要再多用一點點空間用於索引結構,仍以前面 url 壓縮為例,需要在 31M 的基礎上多大約 4M 的空間。當然,value 本身佔的空間是另外一回事。
有需要該演算法的公司或個人,請聯絡本人
相關推薦
實現了一個壓縮演算法,在資料高度壓縮的前提下,還可以快速查詢 key
最近寫了一個演算法,可用於 (key,value) 儲存,key 當然是 string 型別。 用一個 2.3G 的 url 集合做測試,如果不計 value 佔用的空間,key 集合的儲存空間可以被壓縮70倍!壓縮後整個資料結構僅佔31M記憶體!壓縮率比 bzip2 還要高。 本質性的不同於: gzip,
swiper裏面的,tab切換,不同的slide高度不一樣,外層高度何如隨之改變,如果裏面的每一屏的高度不一樣,那麽就會一直以高度最大的一個座位最外層的高度,總成了頁面內容少的那一頁有很大空白,改如何動態改變外層的高度呢
ide設置 就會 否則 location translate dir 最大的 ext 如果 解決方案:1.autoHeight: true;缺點:有明顯的跳動效果2.先給容器設固定高度,每次滑動多少時,改變當前tab頁的容器高度,我在實現是遇到一點小問題,代碼忘記保存了。
放棄了std::list,自己實現了一個簡單的list
原因 在專案中前人使用了std::list來做一個佇列式,支援頭或者尾的push操作。使用場景是視訊的錄製: 生產者:從攝像頭採集資料,然後push_front到佇列頭,如果超過了最大限制,則pop_back佇列尾的元素,實現丟幀操作 消費者:從佇列裡面back拿到楨,然後pop
Eclipse Git提交程式碼,多了一個“工程同名的資料夾”,找不到解決辦法!!!
提交程式碼到Git倉庫,有2種方式。第1種,先在OSChina等平臺建立git專案,本地clone,再在本地修改程式碼提交。√這種方式,沒任何問題。不過,我平時不喜歡這麼幹。第2種,本地已經有了專案,需要提交到git上。×分享程式碼到Git遠端倉庫的時候,本地首先需要建立本地
vue 移動端今天寫了一個根據後臺傳過來的http狀態碼,來實現跳轉error頁面
首先是現在main.js裡面進行配置Vue.prototype.$onError = function (error) { var error_msg = '網路錯誤'; var toastFlag = true; switch (error.errorCode) { cas
封裝了一個電商放大鏡移入放大的功能,適用於VUE
style ear 是我 PE view 版本 文件中 clas pda 由於vue只支持ie9以上版本,所以這個插件也是一樣的 效果圖: 第一步,在goodsinfo文件中引入css <style scoped> @import "../../
用單進程、多線程並發、多線程分別實現爬一個或多個網站的所有鏈接,用瀏覽器打開所有鏈接並保存截圖 python
app imp mat 並發執行 cut h+ chrome 鏈接 目錄 #coding=utf-8import requestsimport re,os,time,ConfigParserfrom selenium import webdriverfrom multipr
憑什麼說AMQP比JMS優秀啊?JMS才是真正實現了一個客戶端呼叫多種產品的訊息中介軟體啊
一、AMQP 歷史 訊息佇列(Message Queue)起源於一位來自 MIT 的硬體設計教育工作者 Vivek Ranadivé 設想了一種通用軟體匯流排,就像主機板上的匯流排那樣,供其他應用程式接入。Vivek在1983年成立了 Teknekron,高盛等公司作為第一批使用者再金融交易中採用了 Tek
我用Python實現了一個小說網站雛形
前言 前段時間做了一個爬取妹子套圖的小功能,小夥伴們似乎很有興趣,為了還特意組建了一個Python興趣學習小組,來一起學習。十個python九個爬,在大家的印象中好像Python只能做爬蟲。然而並非如此,Python 也可以做Web開發,接下來給大家展示一下如何做一個小說站點。 相關軟體
PTA 陣列迴圈左移 (20 分) 本題要求實現一個對陣列進行迴圈左移的簡單函式:一個數組a中存有n(>0)個整數,在不允許使用另外陣列的前提下,將每個整數迴圈向左移m(≥0)個位置,即將a中的
陣列迴圈左移 (20 分) 本題要求實現一個對陣列進行迴圈左移的簡單函式:一個數組a中存有n(>0)個整數,在不允許使用另外陣列的前提下,將每個整數迴圈向左移m(≥0)個位置,即將a中的資料由(a0a1⋯an−1)變換為(am⋯an−
在不使用JavaScript內建的parseInt()函式的前提下,利用map和reduce操作實現一個string2int()函式
在不使用JavaScript內建的parseInt()函式的前提下,利用map和reduce操作實現一個string2int()函式 題目出自廖雪峰老師的JavaScript教程: 把一個字串13579先變成Array——[1, 3, 5, 7, 9],再利用reduce()就可以寫出一
使用了 :before 等偽元素中的其中一個來做 animation 動畫; 在 animation 動畫改變了其中的某個 rem 的值; 在這樣的前提下,又是使用有這個 bug 的版本瀏覽器,那麼就
今天看到一位大神在工作中遇到的bug,所以記錄下來,說不定自己以後就遇到了呢,哈哈,站在巨人的肩膀上。 參考網址:http://www.codeceo.com/article/crash-app-by-css.html @-webkit-keyframes crashCh
Java實現了一個萬年曆
import java.util.Scanner; public class DaysCelandar { // 判斷是不是閏月年 public static boolean isRun(int year) { if ((year % 4
用java實現了一個小的計算器
突然之間心血來潮,就是想試一試資料結構怎麼用.到現在才感覺的,資料結構是一種思想,一種思維方式,用怎樣的方式去解決怎樣的問題,這些是資料結構和演算法給我們的. 言歸正傳吧,說說這個小計算器(其實還有太多需要擴充套件和改進的地方).暫時只侷限在加減乘除,因為定義的是int型別的
在只有一個網線的前提下,實現兩個電腦之間的區域網通訊(伽卡他卡電子教室通訊)...
在現實生活中,會出現只有一個網線,路由器交換機都沒有的情況,這時候怎麼實現兩臺電腦之間的通訊。 舉個簡單例子,實現伽卡他卡電子教室教師端和學生端在一根網線情況下通訊。 我們以Window系統為例,設定IPv4協議IP即可解決。 1、控制面板-網路和Internet-網路連線-本地連線-屬性 2、選擇IPv
用Java和Jquery實現了一個砸金蛋例子
之前在網上找到了一個Jquery+PHP實現的砸金蛋的例子,正好公司也要我寫一個類似的砸金蛋的功能,於是在網上找了找參考,用Jsp程式也弄了一個出來,首先是Html的效果,我打算每次在頁面上只顯示一個金蛋,點選的時候用Ajax提交,Java在後臺處理一下返回結果
用css實現了一個精緻的縱向導航選單
<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>縱向導航選單</title><sty
設計一個函式實現將一個字串中的大寫字元變為小寫字元,小寫字元變為大寫字元,數字不變,刪除其他字元
例如 String str=“[email protected]#”;呼叫這個函式執行後得到的結果是:ABC123abc。 貼出程式碼: package com.lovo.t_9_22; import java.util.ArrayList; import j
程式設計師寫了一個新手都寫不出的低階bug,被罵慘了。
你知道的越多,你不知道的越多 點贊再看,養成習慣 本文 GitHub https://github.com/JavaFamily 已收錄,有一線大廠面試點思維導圖,也整理了很多我的文件,歡迎Star和完善,大家面試可以參照考點複習,希望我們一起有點東西。 前前言 為啥今天有個前前言呢? 因
python 一球從n米(自己輸入)高度自由落下,每次落地後反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多高?
次數 clas python pre spa range else 輸入 bsp n = int(input(‘落地的高度為:‘)) #ciShu = int(input(‘落地的次數:‘)) sum = 0 for ciShu in range(1,4): if