C 的最小哈希函数?

2024-01-11

我不能使用 boost:hash 因为我必须坚持使用 C 而不能使用 C++。

但是,我需要对大量(10K 到 100k)令牌字符串(5 到 40 字节长度)进行哈希处理,以便在这些字符串中进行搜索速度最快。

MD5、SHA1 或任何长哈希函数对于简单任务来说似乎太繁重,我不做密码学。另外还有存储和计算成本。

因此我的问题是:

  1. 什么可能是最简单的哈希算法,可以确保在大多数实际情况下防止冲突。

  2. 哈希值使用多少位?我正在为 32 位系统进行开发。 Perl/Python 中的哈希算法也使用 32 位哈希吗?还是我必须跳到64?

  3. 关于常见脚本语言中哈希表的实现:实现是否检查冲突,或者我可以完全避免该部分吗?


您可以在以下位置找到一个好的(且快速的)哈希函数以及有趣的读物: http://www.azillionmonkeys.com/qed/hash.htmlhttp://www.azillionmonkeys.com/qed/hash.html http://www.azillionmonkeys.com/qed/hash.html

唯一不应该检查冲突的情况是,如果您使用完美哈希——一个很好的老式查找表,例如gperf http://www.gnu.org/software/gperf/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 的最小哈希函数? 的相关文章

随机推荐

  • 使用 @RequestMapping 匹配 URL 模式

    它非常类似于this https stackoverflow com questions 14856149 spring request mapping matching with url pattern问题 但我只是不知道如何匹配 url
  • python subprocess.call() 找不到 Windows Bash.exe

    我有一个程序 它从另一个在 Linux 的新 Windows 子系统上运行的程序获取输出 我编写了一个从 Windows 系统运行的 python 程序 但将使用 python subprocess 模块执行 linux 程序 如果这令人困
  • 哪一段代码性能更好?

    我正在审查一些代码 用于将一些文本转换为MD5 Hash 效果很好 它用于创建一个MD5Hhash for a 头像 头像 这里是 static MD5CryptoServiceProvider md5CryptoServiceProvid
  • django 从连接到任何网络的任何计算机访问本地主机

    我有一个 Django 项目 正在 localhost 8000 上运行 并且运行良好 现在我希望它可以从连接到其他网络的任何计算机进行访问 做了一些谷歌 我发现我可以通过从路由器设置端口转发来做到这一点 我有一个 tplink 路由器 我
  • 寻找具有选择条件的最便宜的物品组合

    假设我有 3 个特定商品的卖家 每个卖家存储的此类物品数量不同 该商品也有不同的价格 Name Price Units in storage Supplier 1 17 1 Unit Supplier 2 18 3 Units Suppli
  • AWS TimeStream:超过一天的记录将被拒​​绝

    我在AWS TimeStream中创建了一个数据库表 其内存保留期为7天 但是 当我尝试上传 3 天前的数据时 它将被拒绝 似乎只接受超过 24 小时的数据 2020 10 26T13 43 33 244 01 00 Rejected a
  • 如何从 python 脚本在 azure devops 管道中生成合理的错误消息

    我在构建管道中使用 python 对拉取请求运行一些检查 当检查失败时 我使用sys exit reason 退出脚本 这可行 但输出没有帮助 PR 页面中显示的内容如下 进程 C hostedtoolcache windows Pytho
  • JavaScript 复制到剪贴板不起作用

    我的脚本中有一个函数给我一个错误 该功能的目的是通过 onClick 事件从静态面板 不是文本框或输入 复制文本 未捕获的类型错误 copyText select 不是函数 我想要的是让用户能够单击文本并将其复制到剪贴板 也许你可以提供更好
  • 当现有的 Excel 文件在桌面上**打开**时,是否可以写入该文件?

    我正在创建一个将数据写入现有 Excel 文件的代码 仅当文件关闭时它才会读 写文件 如果我尝试在桌面上打开该文件时写入该文件 它将不会更改或保存该文档 当代码运行之前或运行期间打开 Excel 文件时 我也无法关闭工作簿 使用 close
  • from ... import * with __import__ 函数 [重复]

    这个问题在这里已经有答案了 可能的重复 from import x using import https stackoverflow com questions 8408373 from import x using import 一个人如
  • 如何让 Redshift/Postgresql LAG 窗口函数有选择地排除记录?

    我在 Redshift 中有这个表 我正在尝试为以下数据集编写查询 对于诸如 row 3 之类的 续订成功 且前面有 子成功 的项目 我想将它们标记为 is first renewal true 但它们前面可能有任意数量的 RENEWAL
  • 词袋训练样本

    我已经实施了 Bag Of Words 一切都很顺利 但是 我对一些步骤以及如何实施感到困惑 我可以创建弓描述符作为词袋中创建样本的最后一步 如此处所示bowDE compute img keypoints bow descriptor 问
  • 找不到 Gmail 的 Developer.gserviceaccount

    我正在阅读有关设置对谷歌服务器发布请求的访问权限的谷歌文档 将 OAuth 2 0 用于服务器到服务器应用程序 https developers google com identity protocols OAuth2ServiceAcco
  • 为什么谷歌地理编码器给出的地图搜索结果不同?

    例如 使用以下命令搜索 36 High Street Clapham London SW4 7UR geocoder http gmaps samples googlecode com svn trunk geocoder singlege
  • 使用 css / php styleswitcher 在移动视图和标准视图之间来回切换

    有问题的网站在这里 http autisticadovcacy uniongraphics org http autisticadovcacy uniongraphics org 我最初设计这个时使用一个 css 文件作为默认 打印和移动样
  • 任务“app:transformClassesWithInstantRunForDebug”执行失败

    如果我想运行我的应用程序 我会收到此错误 错误 任务 app transformClassesWithInstantRunForDebug 执行失败 java lang NullPointerException 无错误消息 我的 Gradl
  • hardwareAccelerated="true" 与部分绘图

    我花了几天时间才弄清楚原因invalidate Rect dirty 无法在较新的设备上设置正确的剪辑 问题是hardwareAccelerated true 默认设置 当我设置这个hardwareAccelerated false 我把正
  • javascript / d3 - 将参数传递给函数

    我正在使用一个名为 d3 的 JavaScript 库来对对象执行一些动画 在每个动画结束时 我想调用一个函数 该函数从调用动画的对象传递数据 但它不起作用 我该如何实现这个目标 这是我的代码 function selectArcs d3
  • mod_fastcgi空闲超时不起作用

    我正在使用 Apache mod fastcgi php fpm 我正在尝试解析大文件并在 php 脚本中将 max execution time 设置为 0 但脚本在 30 秒后失败 并在错误日志中显示消息 FastCGI 与服务器 us
  • C 的最小哈希函数?

    我不能使用 boost hash 因为我必须坚持使用 C 而不能使用 C 但是 我需要对大量 10K 到 100k 令牌字符串 5 到 40 字节长度 进行哈希处理 以便在这些字符串中进行搜索速度最快 MD5 SHA1 或任何长哈希函数对于