記一次使用time33雜湊演算法的總結

2021-09-26 08:16:58 字數 987 閱讀 8233

time33簡介

雜湊(雜湊)演算法time33是目前比較普遍採用的,又稱為djbx33a (daniel j. bernstein, times 33 with addition)。這個演算法被廣泛運用於多個軟體專案等。通過該演算法可以輸出乙個相對固定長度的值(有時長度稍微短一點)。可以壓縮任意長度的字串,輸出永遠比輸入小。有一點注意的是不同的輸入會有機率出現相同的輸出(這也是我問題的原因)。

下面是**示例

php**示例

function

hash

($str=""

)return

$hash

&0x7fffffff

;}

golang**示例

package hash33

type hash struct

func

newhash()

*hash

}func

(h *hash)

seed

(str string

)func

(h *hash)

dehash()

intreturn hash &

0x7fffffff

}

總結與思考

首先為什麼初始值是5381(001 010 100 000 101),據說hash後的分布更好一些。(這個略過)

主要出現的問題是在使用過程中我將雜湊(雜湊)出來的值作為mongo的_id(唯一值),恰巧有些不同字串雜湊(雜湊)輸出的值相同,導致更新的時候替換了歷史資料,導致部分資料被替代(刪除)。因此總結不能將time33演算法的輸出作為唯一值判斷,除非你在使用前解決這種雜湊衝突。

記一次muse ui 使用

vue init webpack test musenpm i muse ui snpm i babel plugin import less less loader d然後,將.babelrc的 plugins 裡面新增一段 裡面的 plugins import 在使用的時候出現過乙個問題,專案本...

記一次vue splitpane使用

splitpane 分割面板元件 介紹,是乙個可以拖動選單寬度,可以生成想要 的選單寬度和內容寬度的一種布局方式。v on resize resize methods else if newwidth this.stepboxwidth this.stepboxwidth json.parse js...

記一次的使用

將jsp拆分frame框架,因為採用了第一種方式,一直在考慮用jquery非同步請求獲取資料,總是但不到效果,終於在js寫吐的時候選擇了第二種方式。參考網上的使用,大多是下面這個樣子,如果涉及靜態頁面之間定位,是沒有問題的 href 為目標頁面 通過target定位到frame views main...