二進(jìn)制序列化工具 dir數(shù)據(jù)類型?
dir數(shù)據(jù)類型?一,弦String是redis最基本的類型,你可以理解為和Memcached完全一樣的類型,一個(gè)鍵對(duì)應(yīng)一個(gè)值。字符串類型是二進(jìn)制安全的。表示redis可以包含任何數(shù)據(jù)的字符串。如jpg
dir數(shù)據(jù)類型?
一,弦
String是redis最基本的類型,你可以理解為和Memcached完全一樣的類型,一個(gè)鍵對(duì)應(yīng)一個(gè)值。
字符串類型是二進(jìn)制安全的。表示redis可以包含任何數(shù)據(jù)的字符串。如jpg圖片或序列化對(duì)象。
字符串類型是Redis最基本的數(shù)據(jù)類型,字符串類型的值最多可以存儲(chǔ)512MB。
命令:設(shè)置和獲取命令
第二,哈希
Redihash是keygtvalue對(duì)的集合。
Redihash是字符串類型的字段和值的映射表,hash特別適合存儲(chǔ)對(duì)象。
hmset,HGET命令,HMSET設(shè)置兩個(gè)fieldgtvalue對(duì),HGET獲取對(duì)應(yīng)字段對(duì)應(yīng)的值。
第三,名單
列表是一個(gè)簡單的字符串列表,按照插入的順序排序。您可以將元素添加到列表的頭部(左側(cè))或尾部(右側(cè))。
列表最多可以存儲(chǔ)232-1個(gè)元素(4294967295,每個(gè)列表可以存儲(chǔ)超過40億個(gè))。
l脈沖設(shè)定值,l范圍值。
第四,設(shè)置
redis集合是字符串的無序集合。集合是通過哈希表實(shí)現(xiàn)的。
將string元素添加到與key對(duì)應(yīng)的set set中,并使用sadd命令。返回1表示成功,0表示已經(jīng)存在于集合中,返回錯(cuò)誤表示key對(duì)應(yīng)的集合不存在。
使用smembers命令查看
集合中元素的唯一性,第二個(gè)插入的元素將被忽略。
一個(gè)集合的最大成員數(shù)是232-1(4294967295,每個(gè)集合可以存儲(chǔ)超過40億個(gè)成員)。
動(dòng)詞 (verb的縮寫)zset
redis的zset和set一樣,是string類型元素的集合,不允許有重復(fù)的成員。
不同之處在于,每個(gè)元素都與一個(gè)double類型的分?jǐn)?shù)相關(guān)聯(lián)。Redis通過分?jǐn)?shù)將集合成員從小到大排序。zset的成員是唯一的,但是分?jǐn)?shù)可以重復(fù)。
向集合中添加一個(gè)元素。如果集合中存在該元素,則更新相應(yīng)的score: zaddkey scor
jpeg編碼規(guī)則?
本文簡要總結(jié)了JPEG基本系統(tǒng)的編碼流程。
編碼需要DCT、量化、Z串行化、系數(shù)編碼(DC差分脈沖調(diào)制編碼、DC系數(shù)中間格式計(jì)算、交流差分脈沖調(diào)制編碼、交流系數(shù)中間格式計(jì)算)、熵編碼,最后按照指定格式打包成為JPEG圖片。
將圖像分成若干個(gè)8×8的塊后,對(duì)每個(gè)塊進(jìn)行離散余弦變換,目的是將圖像塊按頻率分解,得到其頻譜。
與傅立葉變換類似,DCT的目的是將圖像分解成不同頻率的基本分量的線性組合。
實(shí)際上,DCT是DFT的一種特殊形式,用來擦除虛(奇)部。因?yàn)閷?shí)偶函數(shù)的DFT仍然是實(shí)偶函數(shù),我們把時(shí)域函數(shù)相乘并延拓成偶函數(shù),所以頻域也變成了實(shí)偶函數(shù)。當(dāng)然,存放時(shí)可以對(duì)折,消除冗余。
為什么需要DCT?對(duì)于每一個(gè)圖像塊,如果一定要丟棄,我們會(huì)盡可能多的保留低頻成分,降低高頻成分的分辨率。同時(shí),高頻分量通常很少,而DC分量雖然值很大,但相鄰塊之間差別很小。
因此,我們對(duì)低頻分量采用較低的量化系數(shù),對(duì)高頻分量采用較高的量化系數(shù)。
所謂量化,就是將浮點(diǎn)值X(可能只以更高精度的整數(shù)表示形式存在)轉(zhuǎn)換為步進(jìn)整數(shù)值Y的過程,yround(x/q)中的q就是量化系數(shù)。
然后我們做Z序列化,按照Z的形狀把二維矩陣展平成一個(gè)向量。
考慮到相鄰塊之間DC分量的微小差異,我們首先對(duì)DC分量和前一個(gè)塊進(jìn)行差分。這個(gè)過程稱為差分脈沖調(diào)制編碼。
現(xiàn)在向量中有大量的零,絕對(duì)值小的數(shù)出現(xiàn)的概率遠(yuǎn)大于絕對(duì)值大的數(shù)。
我們使用游程編碼(RLE)將序列切割成0,0,…,0,x形式的幾個(gè)片段,每個(gè)片段由y(≥0)個(gè)0和一個(gè)x( gt;0),表示為(y,len(x),x),其中l(wèi)en(x)是反碼二進(jìn)制表示中x的長度。這種三元組的表示稱為中間格式。
(注:DC分量也包括在此圖中,嚴(yán)格分開,RLE只考慮交流分量。)
現(xiàn)在考慮(y,l,x)三元組的編碼。我們用一個(gè)字節(jié)的高4位和低4位分別存儲(chǔ)兩個(gè)uint4,Y和L,對(duì)這個(gè)字節(jié)進(jìn)行霍夫曼編碼。至于x這個(gè)小家伙,長度也是有記錄的,直接寫到二進(jìn)制流里就行了。
需要指出的是,這里我們省略了一些特例。比如如何處理連續(xù)零的個(gè)數(shù)超過15,交流分量結(jié)束