哈希算法的定義
所謂的哈希算法其實并不是指某一個特定的算法, 而是指一類算法的統(tǒng)稱. 它的定義是:
將任意長度的輸入轉(zhuǎn)換為固定長度的輸出.
哈希算法最有名的就是MD5算法.
哈希算法的應(yīng)用場景
-
用于加密
截圖.
屏幕快照 2018-03-20 上午11.15.53.png
把加密后的字符串存儲在數(shù)據(jù)庫.
一是要求原文和加密后的字符串是一一對應(yīng)的.
二是要求不可逆, 這樣即使別人拿到了這個數(shù)據(jù), 也無法還原出原始密碼.
-
文件對比, 百度云盤急速秒傳的實現(xiàn)原理.
屏幕快照 2018-03-20 上午11.16.56.png
屏幕快照 2018-03-20 上午11.17.19.png
屏幕快照 2018-03-20 上午11.19.13.png
原理:
首先服務(wù)器上已經(jīng)有了很多的電影文件, 服務(wù)器把每個電影都計算出它對應(yīng)的hash值. 當(dāng)客戶端要上傳某個電影時, 首先在客戶端計算出這個電影的hash值, 首先把這個hash值上傳到服務(wù)器, 如果服務(wù)器發(fā)現(xiàn)已經(jīng)存儲了這個hash值對應(yīng)的電影文件, 那就直接在服務(wù)器copy一個引用關(guān)系, 把這個引用關(guān)系保存在客戶端的賬戶下就可以了, 實際上并沒有做真正的上傳工作. 所以你會發(fā)現(xiàn)有時候上傳一個5,6G的電影只需要幾秒鐘.
-
散列, HashMap的實現(xiàn)原理.
屏幕快照 2018-03-20 上午11.40.14.png
注: 根據(jù)這個計算后的hash值, 142357, 來確定這個元素在內(nèi)存中具體的存儲位置.
HashMap的優(yōu)點是, 提取元素的速度非成忝酰快.
為什么叫散列呢? 我們希望算法把key處理后得到的下標(biāo)值, 越分散越好, 所以叫做散列.
refer to:
http://www.miaodongketang.cn/views/category/category.html#cno=001