跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教一下,我该选择哪一种 hash 算法?
未分類
14 6 月 2020

请教一下,我该选择哪一种 hash 算法?

请教一下,我该选择哪一种 hash 算法?

資深大佬 : watanuki 13

我的需求:
将一些 (5000 个以内) 较短 (长度 20 以内) 的字符串映射成整数,转换后的整数将用作数据库中的 id.

我这个数据量应该算小的吧,显然用 md5 太浪费了,但是 hash 算法有好多种,我不知道按照我的需求该选择哪种算法?
要是 npm 上有现成的库就更好了。

大佬有話說 (12)

  • 資深大佬 : imn1

    CRC32 啰,而且本身就是整数,短一些

  • 資深大佬 : binux

    md5 截短呗,反正除非你特别设计,该碰撞还是要碰撞的,用什么都差不多。

  • 資深大佬 : takemeaway

    这么简单的,直接手写个算法就行了。

  • 資深大佬 : LennieChoi

    不就是要生成个唯一 id,用作表的索引么,直接附上去一个 uuid

  • 資深大佬 : Mithril

    随便找个算法就行,反正该冲突就还是要冲突。
    怕冲突就查重然后 UUID

  • 資深大佬 : flyingghost

    既然用作 id,那肯定不希望冲突。
    如果源字符串集固定,不会有新的不确定的字符串加入,那么完美哈希可能是你想要的东西。

    如果源字符串集不固定,可以考虑某种可逆的映射,比如各种编码算法 /加密算法。

    如果只是为了查找,数据库里 5000 条记录有索引的情况下怎么查差别都不会太大。。。说不定大头在请求吧。

  • 資深大佬 : realpg

    5000……自制映射表吧……
    id 自增 id,str
    insert into hashes str values (‘xxxx’);
    然后需要数字时候去 select 一下

  • 資深大佬 : liberty1900

    我记着当初上学老师为了说明哈希的概念用的是一种质数算法,然后笑了起来说,大概这就是计算机科学吧

  • 資深大佬 : ztcaoll222

    https://blog.csdn.net/icefireelf/article/details/5796529

  • 資深大佬 : qwerthhusn

    https://www.npmjs.com/package/murmur3hash-wasm
    考虑一下 MURMUR3,这玩意比 MD,SHA 系列要快的多,但是相比 CRC32 这种碰撞率要低得多

    npm 有现成的实现,有 wasm 的也有 pure-js 的

  • 資深大佬 : xiangyuecn

    查表, 数据量不大,完全放一个 js 里面也放得下:
    {
    1:”abc”
    2:”def”
    }

    因为数据量不大,再放一个反查,同塞一个 js 里面
    {
    “abc”:1
    “def”:2
    }

  • 資深大佬 : Mistwave

    murmurhash
    https://en.wikipedia.org/wiki/MurmurHash

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具