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 的最小哈希函数? 的相关文章

  • 为什么 int8_t 和用户通过 cin 输入显示奇怪的结果[重复]

    这个问题在这里已经有答案了 一小段代码让我发疯 但希望你能阻止我跳出窗外 看这里 include
  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 当我们想要返回对象的引用时,为什么我们在赋值运算符中返回 *this 而通常(而不是 this)?

    我正在学习 C 和指针 我以为我理解了指针 直到我看到这个 一方面 asterix 运算符是解引用的 这意味着它返回值所指向的地址中的值 而与号 运算符则相反 它返回值存储的地址记忆 现在阅读有关赋值重载的内 容 它说 我们返回 this因
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com
  • 当我使用 OpenSSL1.1.0g 根据固定的 p 和 g 值创建 Diffie Hellman 密钥协议密钥时,应该执行哪些检查?

    您好 我尝试通过这段代码使用修复 p 和 g 参数来制作 Diffie Hellman Keysanswer https stackoverflow com a 54538811 4706711 include

随机推荐

  • 使用 @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 或任何长哈希函数对于