- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们获得交易 ID 长度小于 255 个字符的交易数据,并且始终是唯一的。
但这里的限制是我们不允许将事务 ID 存储在数据库中。
因此,为了唯一地标识交易,我们想到使用哈希 fn 来生成使用交易 id 作为输入的哈希。
因此,我们不会保存重复的事务,因为它会损坏我们想要计算的元数据。例如:平均值、标准差等。
对于大量交易数据进入系统,您会推荐哪个哈希 fn 具有较低的冲突概率且足够快?
我所说的“足够快”是指在 < 100 ns 内生成哈希。
此交易数据的提供者没有遇到同样的问题,因为他们是生成者,而我们是第一个消费者。
我还在 StackOverFlow 上查找了一些答案,这些答案表明 SHA-512 在 64 位系统上比 SHA-256 快一点。
另外,有没有更好的方法来解决这个问题?
谢谢
最佳答案
不要(ab)为此使用哈希函数。散列对于保护密码或散列映射很有用,在散列映射中,您有一个辅助标准来验证对象实际上是您期望的对象。但是使用哈希作为大概唯一的 key (当不能保证唯一时)本身就有风险。
正如最近提到的,SHA256 冲突的可能性非常小,因此您可以以较低的风险这样做。
因为哈希函数不能(也永远不能)保证绝对不冲突,所以可能有替代方案。
问题:可以存储交易时间戳吗? - 如果是这样,您可以将时间戳与数字后缀结合起来,以获得内部 ID(与您最初拥有的交易 ID 不同)。就唯一性而言,这比哈希要优越得多。它具有速度极快的优点。但是您必须将该后缀与原始对象一起存储才能重现此内部 id。
本质上,您需要的是一个函数,用于根据允许存储的属性从事务对象中确定(明确的)唯一键。假设您可以存储时间戳和数字后缀,以下示例是一个可能的解决方案。
如果你遇到时间戳冲突,你可以增加数字后缀,这样你就会得到:
2020-02-18-14-26-15-420-0 (postfic here is -0)
2020-02-18-14-26-15-420-1 (postfic here is -1)
2020-02-18-14-26-15-420-2 (postfic here is -2)
2020-02-18-14-26-15-423-0 (postfic here is -2)
这里有一些交易同时到达。然而,它们仍然是唯一可识别的。
关于java - 对于长度 < 255 个字符的字符串,哪个哈希函数具有最小冲突且相对足够快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60281864/
对于我的问题,我找不到更好的措辞。 在我的应用程序中的某个时刻,我设置了一些非常密集的动画。问题是,在高端设备上,动画运行流畅且赏心悦目。另一方面,我测试过的一台低端设备在制作动画时表现非常糟糕。 试
我正在修补 OTP 模块 ( yubico_pam ),并尝试访问管理员选择的控制标志(例如必需,足够, ETC)。 有什么想法吗?这是否可行(无需解析文件)? 最佳答案 无法在 API 中查询此信息
我有一些为 Linux 编写的 C 代码,依赖于套接字和 arpa/inet.h 以及 libusb.h,我想在 MinGW 下为 Windows 编译它。 (请注意,当前项目只有一个非常简单的 Ma
我是一名优秀的程序员,十分优秀!