algorithm - 检查给定的哈希在一个非常非常长的列表中
问题描述
我有一个哈希列表。长长的名单。很长的清单。我需要检查给定的哈希是否在该列表中。
最简单的方法是将哈希存储在内存中(在映射或简单数组中)并检查它。但它需要大量的 RAM/SSD/HDD 内存。不止一个服务器可以处理。
我想知道在合理的内存使用中是否有一个技巧。也许有我不熟悉的算法或特殊的集合?
解决方案
三个想法——
- 根据这些哈希的结构,您也许可以从彩虹表的概念中借用一些想法来隐式存储其中的一些。
- 如果你有足够的哈希值,你可以使用 trie 来压缩共享前缀的存储,但是考虑到它们的长度和(可能的)一致性,你不会看到很大的节省。
- 您可以将散列拆分为多个较小的散列,然后使用这些散列来实现Bloom Filter,但这是一个概率测试,因此如果存在感知“ hit”,但是这可能使您能够过滤掉足够多的“未命中”,从而使性能较低(速度方面)的数据结构变得可行。
推荐阅读
- css - 如何创建两个, 但其中一个必须固定在中心
- python - 如何在 TKinter Entry 中输入数组?
- python - Python Pandas:在保留重复的同时加入表
- java - 如何在 Android 中将 PDF 文件转换为 WebP?
- c++ - 如何跨不同视口移植我的应用程序
- vue.js - 出现错误时如何突出显示 vee-validate 表单向导的输入字段?
- python-3.x - Python 写入 csv 文件:io.UnsupportedOperation: not writable
- javascript - Javascript/jQuery 使用随机数组键获取子数组值
- expression - 精确值计数器
- python - 如何以矢量化的方式从 spacy 的管道中获取文本嵌入?