1.什么是Hash(散列函數(shù),哈希函數(shù))
Hash,一般翻譯做“散列”,也有直接音譯為“哈?!钡?,就是把任意長(zhǎng)度的輸入(又叫做預(yù)映射, pre-image),通過(guò)散列算法,變換成固定長(zhǎng)度的輸出,該輸出就是散列值。這種轉(zhuǎn)換是一種壓縮映射,也就是,散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入可能會(huì)散列成相同的輸出,所以不可能從散列值來(lái)唯一的確定輸入值。簡(jiǎn)單的說(shuō)就是一種將任意長(zhǎng)度的消息壓縮到某一固定長(zhǎng)度的消息摘要的函數(shù)。
Hash主要用于信息安全領(lǐng)域中加密算法,它把一些不同長(zhǎng)度的信息轉(zhuǎn)化成雜亂的128位的編碼,這些編碼值叫做HASH值. 也可以說(shuō),Hash就是找到一種數(shù)據(jù)內(nèi)容和數(shù)據(jù)存放地址之間的映射關(guān)系。
2.什么是Hash值
散列算法(哈希算法)將任意長(zhǎng)度的二進(jìn)制值映射為固定長(zhǎng)度的較小二進(jìn)制值,這個(gè)小的二進(jìn)制值稱為哈希值。哈希值是一段數(shù)據(jù)唯一且極其緊湊的數(shù)值表示形式。如果散列一段明文而且哪怕只更改該段落的一個(gè)字母,隨后的哈希都將產(chǎn)生不同的值。要找到散列為同一個(gè)值的兩個(gè)不同的輸入,在計(jì)算上來(lái)說(shuō)基本上是不可能的。
隨即生成
3.什么Hash算法(哈希函數(shù))
哈希算法將任意長(zhǎng)度的二進(jìn)制值映射為較短的固定長(zhǎng)度的二進(jìn)制值
Hash函數(shù)還有另外的含義。實(shí)際中的Hash函數(shù)是指把一個(gè)大范圍映射到一個(gè)小范圍。把大范圍映射到一個(gè)小范圍的目的往往是為了節(jié)省空間,使得數(shù)據(jù)容易保存。
4.什么是Hash表
散列表(Hash table,也叫哈希表),是根據(jù)關(guān)鍵碼值(Key value)而直接進(jìn)行訪問(wèn)的數(shù)據(jù)結(jié)構(gòu)。也就是說(shuō),它通過(guò)把關(guān)鍵碼值映射到表中一個(gè)位置來(lái)訪問(wèn)記錄,以加快查找的速度。這個(gè)映射函數(shù)叫做散列函數(shù),存放記錄的數(shù)組叫做散列表。
給定表M,存在函數(shù)f(key),對(duì)任意給定的關(guān)鍵字值key,代入函數(shù)后若能得到包含該關(guān)鍵字的記錄在表中的地址,則稱表M為哈希(Hash)表,函數(shù)f(key)為哈希(Hash) 函數(shù)
哈希表是根據(jù)設(shè)定的哈希函數(shù)H(key)和處理沖突方法將一組關(guān)鍵字映射到一個(gè)有限的地址區(qū)間上,并以關(guān)鍵字在地址區(qū)間中的象作為記錄在表中的存儲(chǔ)位置,這種表稱為哈希表或散列,所得存儲(chǔ)位置稱為哈希地址或散列地址。作為線性數(shù)據(jù)結(jié)構(gòu)與表格和隊(duì)列等相比,哈希表無(wú)疑是查找速度比較快的一種。
哈希值的作用
1.提高查詢效率
2.CDN和瀏覽器能夠緩存靜態(tài)文件,所以不能使用重復(fù)的文件名。所以可以在文件的末尾加入標(biāo)識(shí)符。確保當(dāng)用戶的請(qǐng)求包含過(guò)期標(biāo)識(shí)的時(shí)候,依然能獲得最新版本的資源文件。
[CDN會(huì)將數(shù)據(jù)緩存一段時(shí)間,這同樣意味著你不能使用重復(fù)的文件名,因?yàn)樗麄冎辽贂?huì)被緩存在兩個(gè)地方,用戶可能會(huì)一直獲取不到最新版本的文件。開(kāi)發(fā)者可以通過(guò)CDN服務(wù)商提供的“刷新緩存”接口來(lái)達(dá)到清理CDN邊緣節(jié)點(diǎn)緩存的目的。這樣開(kāi)發(fā)者在更新數(shù)據(jù)后,可以使用“刷新緩存”功能來(lái)強(qiáng)制CDN節(jié)點(diǎn)上的數(shù)據(jù)緩存過(guò)期,保證客戶端在訪問(wèn)時(shí),拉取到最新的數(shù)據(jù)。]