日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【数据结构与算法】哈希算法

發布時間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据结构与算法】哈希算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、什么是哈希算法?

1.定義
將任意長度的二進制值串映射成固定長度的二進制值串,這個映射的規則就是哈希算法,而通過原始數據映射之后得到的二進制值串就是哈希值。
2.如何設計一個優秀的哈希算法?
①單向哈希:
從哈希值不能反向推導出哈希值(所以哈希算法也叫單向哈希算法)。
②篡改無效:
對輸入敏感,哪怕原始數據只修改一個Bit,最后得到的哈希值也大不相同。
③散列沖突:
散列沖突的概率要很小,對于不同的原始數據,哈希值相同的概率非常小。
④執行效率:
哈希算法的執行效率要盡量高效,針對較長的文本,也能快速計算哈希值。

二、哈希算法的常見應用有哪些?

7個常見應用:安全加密、唯一標識、數據校驗、散列函數、負載均衡、數據分片、分布式存儲。
1.安全加密
①常用于加密的哈希算法:
MD5:MD5 Message-Digest Algorithm,MD5消息摘要算法
SHA:Secure Hash Algorithm,安全散列算法
DES:Data Encryption Standard,數據加密標準
AES:Advanced Encryption Standard,高級加密標準
②對用于加密的哈希算法,有兩點格外重要,第一點是很難根據哈希值反向推導出原始數據,第二點是散列沖突的概率要小。
③在實際開發中要權衡破解難度和計算時間來決定究竟使用哪種加密算法。
2.唯一標識
通過哈希算法計算出數據的唯一標識,從而用于高效檢索數據。(圖片搜索)
3.數據校驗
利用哈希算法對輸入數據敏感的特點,可以對數據取哈希值,從而高效校驗數據是否被篡改過。(P2P傳輸分塊 下載塊后校驗)
4.散列函數
散列函數中用到的哈希算法更加關注散列后的值能不能平均分布,以及散列函數的執行快慢。

5.負載均衡
5.1.需求
如何實現一個會話粘滯(session sticky)的負載均衡算法?也就是說,在一次會話中的所有請求都路由到同一個服務器上。
5.2.解決方案
通過哈希算法對客戶端IP或會話ID計算哈希值,將取得的哈希值與服務器列表的大小進行取模運算,最終得到的值就是應該被路由到的服務器編號。這樣,就可以把同一個IP過來的請求都路由到同一個后端服務器上。
6.數據分片
5.1.如何統計“搜索關鍵詞”出現的次數?
①需求描述
假如我們有1T的日志文件,這里面記錄了用戶的搜索關鍵詞,我們想要快速統計出每個關鍵詞被搜索的次數,該怎么做呢?
②問題分析
這個問題有兩個難點,第一個是搜索的日子很大,沒辦法放到一臺機器的內存中。第二個是只用一臺機器來處理這么巨大的數據,處理時間會很長。
③解決方案
先對數據進行分片,然后采用多臺(比如n臺)機器進行處理。具體做法:從搜索記錄的日志文件中依次讀取每個關鍵詞,并通過哈希函數計算該關鍵詞的哈希值,然后跟機器的臺數n取模,最終得到值就是該關鍵詞應該被分到的機器編號,這樣相同的關鍵詞一定會被分配到同一臺機器上,數據分配完成后,由多臺機器并行進行統計,最后合并起來就是最終結果。
實際上,這里的處理過程也是 MapReduce 的基本設計思想。
5.2.如何快速判斷圖片是否存在圖庫中?
①需求描述
假設現在我們的圖庫中有1億張圖片,如何快速判斷圖片是否在圖庫中?基本方式是給每個圖片去唯一表示(或者信息摘要),然后構建散列表。
②問題分析
很顯然,在單臺機器上構建散列表示行不通的,因為單臺機器的內存有限,而1億張圖片構建散列表遠遠超過了單臺機器的內存上限。
②解決方案
準備n臺機器,讓每臺機器只維護一部分圖片對應的散列表。我們每次從圖庫中讀取一個圖片,計算唯一標識,然后與機器個數n求余取模,得到的值就對應要分配的機器編號,然后將這個圖片的唯一表示和圖片路徑發往對應的機器構建散列表。
當我們要判斷一個圖片是否在圖庫中時,我們通過同樣的哈希算法,計算這個圖片的唯一表示,然后與機器個數n求余取模。假設得到的值是k,那就去編號為k的機器構建的散列表中查找。
如何估算給1億張圖片構建散列表大約需要多少臺機器?
散列表中每個數據單元包含兩個信息,哈希值和圖片文件的路徑。假設我們通過 MD5 來計算哈希值,那長度就是 128 比特,也就是 16 字節。文件路徑長度的上限是 256 字節,我們可以假設平均長度是 128 字節。如果我們用鏈表法來解決沖突,那還需要存儲指針,指針只占用 8 字節。所以,散列表中每個數據單元就占用 152 字節(這里只是估算,并不準確)。
假設一臺機器的內存大小為 2GB,散列表的裝載因子為 0.75,那一臺機器可以給大約 1000 萬(2GB*0.75/152)張圖片構建散列表。所以,如果要對 1 億張圖片構建索引,需要大約十幾臺機器。在工程中,這種估算還是很重要的,能讓我們事先對需要投入的資源、資金有個大概的了解,能更好地評估解決方案的可行性。
實際上,針對這種海量數據的處理問題,我們都可以采用多機分布式處理。借助這種分片的思路,可以突破單機內存、CPU 等資源的限制。
7.分布式存儲
7.1.什么是分布式存儲?
分布式存儲就是將數據存儲在多臺機器上并提供高效的讀取、寫入支持。那如何決定將哪個數據放到哪個機器上呢?可以利用數據分片的思想,即通過哈希算法對數據取哈希值,然后對機器個數取模,這個最終值就是應該存儲的緩存機器編號。
7.2.遇到的問題是什么?
如果數據持續增多,原來的機器數量已經不能滿足需求,就需要增加機器,這時就麻煩了,因為所有的數據都需要重新哈希值進行再次分配。這就相當于,緩存中的數據一下子都失效了,所有的數據請求都會穿透緩存,直接去請求數據庫。這樣就可能發生雪崩效應,壓垮數據庫。
7.3.解決方案是什么?
①這時,需要一種方法,使得新加入一個機器后,并不需要做大量的數據搬移。那就是在分布式系統中應用非常廣泛的一致性哈希算法
②一致性哈希算法的基本思想是什么呢?為了說清楚這個問題,我們假設有k個機器,數據的哈希值范圍是[0-MAX],我們將整個范圍劃分成m個小區間(m遠大于k),每個機器復雜m/k個小區間。當有新機器加入的時候,我們就將某幾個小區間的數據,從原來的機器中搬移到新的機器中。這樣,既不用全部重新哈希、搬移數據,也保持了各個機器上數據量的均衡。

三、思考

1.如何防止數據庫中的用戶信息被脫庫?你會如何存儲用戶密碼這么重要的數據嗎?
①使用MD5進行加密

②字典攻擊:如果用戶信息被“脫庫”,黑客雖然拿到的是加密之后的密文,但可以通過“猜”的方式來破解密碼,這是因為,有些用戶的密碼太簡單。
③針對字典攻擊,我們可以引入一個鹽(salt),跟用戶密碼組合在一起,增加密碼的復雜度。
2.現在,區塊鏈是一個很火的領域,它被很多人神秘化,不過其底層的實現原理并不復雜。其中,哈希算法就是它的一個非常重要的理論基礎。你能講一講區塊鏈使用的是哪種哈希算法嗎?是為了解決什么問題而使用的呢?
區塊鏈是一塊塊區塊組成的,每個區塊分為兩部分:區塊頭和區塊體。

區塊頭保存著 自己區塊體 和 上一個區塊頭 的哈希值。

因為這種鏈式關系和哈希值的唯一性,只要區塊鏈上任意一個區塊被修改過,后面所有區塊保存的哈希值就不對了。

區塊鏈使用的是 SHA256 哈希算法,計算哈希值非常耗時,如果要篡改一個區塊,就必須重新計算該區塊后面所有的區塊的哈希值,短時間內幾乎不可能做到。

筆記整理來源: 王爭 數據結構與算法之美

總結

以上是生活随笔為你收集整理的【数据结构与算法】哈希算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男人av资源 | 成人av网站在线播放 | 经典杯子蛋糕日剧在线观看免费 | 久久视频在线看 | 亚洲欧美激情小说另类 | 欧美videos另类精品 | 亚洲熟妇国产熟妇肥婆 | 中文字幕+乱码+中文字幕明步 | 香蕉视频官网在线观看 | 69黄色片 | 国产91在线视频 | 在线视频日韩欧美 | jizz中国少妇 | 91精品欧美一区二区三区 | 日韩中文字幕不卡 | 亚洲一区精品视频 | 神马午夜在线 | 亚洲综合欧美综合 | 日本性猛交 | 久久青青草视频 | 污污软件在线观看 | 日本精品二区 | 91理论片午午伦夜理片久久 | 日本黄视频在线观看 | 国产成人a亚洲精v品无码 | 日韩精品视频观看 | 大香伊人 | 欧美第十页 | 美女在线观看视频 | 日本一品道 | 日日碰狠狠添天天爽无码av | 国内精品偷拍视频 | 一级全黄色片 | 免费播放黄色片 | 国产精品久久一 | 蜜美杏av| 国产精品www色诱视频 | 色婷婷久久五月综合成人 | 黄色av日韩| 在线看片你懂 | 一级片aaa| 亚洲精品在线一区二区 | 欧美日韩国产免费 | 欧美精品一级二级三级 | 欧美无遮挡高潮床戏 | 本站只有精品 | 97久久精品| 免费a级网站 | 国产精品videossex久久发布 | 国产乱淫a∨片免费视频 | 日韩免费看片 | 成人在线免费高清视频 | 国产专区自拍 | 国产亚洲一区二区三区不卡 | 午夜aaa片一区二区专区 | 爱情岛亚洲首页论坛小巨 | 国产婷 | sese在线视频| 亚洲我射av| 能直接看的av网站 | 国产天堂精品 | www.youjizz.com在线观看 | 秋霞一级全黄大片 | 国产成人av网站 | 欧美日韩卡一卡二 | 免费视频色 | 久久桃花网 | 麻豆一区在线 | 亚洲国产精品人人爽夜夜爽 | 奇米影视一区二区三区 | 色射网 | 浪荡奴双性跪着伺候 | 在线观看视频一区 | 侵犯女教师一区二区三区 | 黄视频在线观看免费 | 成人福利一区二区 | 亚洲欧美久久 | 欧美精品乱码 | 国产尤物av | 一级午夜 | 亚洲色图婷婷 | 婷婷色五 | 91黄在线看 | 99这里有精品 | 欧美一区二区网站 | 久久久久久久久久久久Av | 青春草在线视频免费观看 | av福利在线观看 | 综合天天 | 日本a级一区| av专区在线 | 好看的中文字幕电影 | 欧美在线播放 | 亚洲国产免费看 | 午夜免费一级片 | 亚洲综合色在线 | 日日干日日射 | 秋霞欧美在线观看 | 91精品人妻一区二区三区蜜桃2 |