雜湊演算法的概念和特性
我們前面分享了雜湊表、雜湊函式和雜湊衝突,其實也可以譯作雜湊表、雜湊函式和雜湊衝突,是乙個意思。雜湊演算法簡單理解就是實現前面提到的雜湊函式的演算法,用於將任意長度的二進位制值串對映為固定長度的二進位制值串,對映之後得到的二進位制值就是雜湊值(雜湊值)。
我們日常開發中最常見的雜湊演算法應用就是通過 md5 函式對資料進行加密了,md5 就是乙個雜湊函式,結合 md5 我們可以歸納出雜湊演算法的一般特性:
雜湊演算法的應用
1、場景一:安全加密
日常使用者密碼加密通常使用的都是 md5、sha等雜湊函式,因為不可逆,而且微小的區別加密之後的結果差距很大,所以安全性更好。
2、場景二:唯一標識
比如 url 字段或者字段要求不能重複,這個時候就可以通過對相應字段值做 md5 處理,將資料統一為 32 位長度從資料庫索引構建和查詢角度效果更好,此外,還可以對檔案之類的二進位制資料做 md5 處理,作為唯一標識,這樣判定重複檔案的時候更快捷。
3、場景三:資料校驗
4、場景五:雜湊函式
前面已經提到,php 中的 md5、sha1、hash 等函式都是基於雜湊演算法計算雜湊值
5、場景五:負載均衡
對於同乙個客戶端上的請求,尤其是已登入使用者的請求,需要將其會話請求都路由到同一臺機器,以保證資料的一致性,這可以借助雜湊演算法來實現,通過使用者 id 尾號對總機器數取模(取多少位可以根據機器數定),將結果值作為機器編號。
6、場景六:分布式快取
分布式快取和其他機器或資料庫的分布式不一樣,因為每台機器存放的快取資料不一致,每當快取機器擴容時,需要對快取存放機器進行重新索引(或者部分重新索引),這裡應用到的也是雜湊演算法的思想。
SQLite及其應用場景
sqlite是乙個庫 software library 檔案資料庫 它可以將資料庫的所有表 索引 檢視等儲存乙個單獨的檔案裡 a single disk file 特點 應用場景當交付乙個應用程式時,並不需要額外安裝 和配置rdbms服器。嵌入式系統 embedded devices 檔案檔案 fi...
Spark及其應用場景初探
最近老大讓用spark做乙個etl專案,搭建了一套只有三個結點standalone模式的spark集群做測試,基礎資料量大概8000w左右。看了官方文件,spark確實在map reduce上提公升了很多,可是官方明確提出了在interactive data方面效能提公升最大。但是做etl的資料之間...
Alluxio及其典型應用場景
一 簡介 alluxio號稱是世界上第乙個記憶體級虛擬分布式儲存系統,是計算與儲存間的橋梁。二 典型應用場景 1.計算層需要反覆訪問遠端 比如在雲端,或跨機房 的資料 2.計算層需要同時訪問多個獨立的持久化資料來源 比如同時訪問s3和hdfs中的資料 3.多個獨立的大資料應用 比如不同的spark ...