草庐IT

开散列

全部标签

c++ - 轻量级8字节散列函数算法

我需要从一个可变长度的字符串中提取一个8字节的摘要,所以我正在寻找一种我将在c/c++中实现的算法。这将是微Controller上数字签名过程的一部分,因此它必须是:可以用几行代码编写,因为固件必须尽可能少;资源消耗低,特别是ram(最好小于100字节);强大到足以改变字符串中任何一点的单个字符都会改变整个摘要。我查看了现有的算法,例如crc64,但它们似乎对我的平台来说太重了。 最佳答案 没有机会在64位中进行安全散列。即使是160位的SHA-1在理论上也被认为是错误的。如果您真的关心安全数字签名,则应该使用SHA2-256。如果

c++ unordered_map 冲突处理、调整大小和重新散列

我没有读过C++标准,但这就是我认为c++的unordered_map应该工作的方式。在堆中分配一个内存块。对于每个放置请求,散列对象并将其映射到该内存中的一个空间在此过程中,通过链接或开放寻址处理冲突处理..我很惊讶我找不到太多关于unordered_map如何处理内存的信息。unordered_map分配的内存是否有特定的初始大小。如果假设我们分配了50个int内存并最终插入了5000个整数,会发生什么情况?这会发生很多冲突,所以我相信应该有一种类似于重新散列和重新调整大小的算法,以在达到一定级别的冲突阈值后减少冲突次数。由于它们是作为成员函数显式提供给类的,因此我假设它们也在内部

c++ - 从没有 key 的散列中查找 unordered_map 中的桶

我正在使用std::unordered_map。我有一个哈希值和一种方法来确定给定的候选键是否是我正在寻找的键,但我没有实际的键。我想查找哈希值对应的桶,然后遍历该桶中的每个元素,看它是否是我要查找的元素。不幸的是,函数std::unordered_map::bucket(x)要求x是一个键。如果不首先构造键,真的没有办法从哈希值中获取桶吗?您不需要回答问题的详细信息:我可以构造key,但在没有碰撞的常见情况下,这将比仅检查我在水桶是正确的。我有一个低负载因子,所以很少有冲突,即使是冲突,完整的哈希值也不太可能匹配,所以不匹配很快就被确定为不匹配。我很关心这一点,因为我已经通过探查器确

windows - 将 CertUtil -hashfile 的结果保存到变量并删除散列的空格

我想保存结果CertUtil-hashfile"path_to_file"MD5添加到变量并删除命令行命令中散列的空格(更具体地说,我想在VS2015C++的后处理命令行中使用它)。目前结果如下:1)C:\Users\admin>CertUtil-hashfileping.txtMD52)MD5hashoffileping.txt:3)4f75c22c20b48154722ca57c957a66884)CertUtil:-hashfilecommandcompletedsuccessfully.我只需要行3)-将六边形字符串保存到一个变量中,然后删除空格。非常感谢!

redis - Redis 是否重新散列 key ?

Redis会在后台重新哈希key吗?即在将key写入Redis之前,我需要对其进行哈希处理吗?例如:通常我会这样做:redis.put(rehash(key),value)真的有必要吗? 最佳答案 Redis使用CRC16算法将键映射到哈希槽。Redis集群中有16384个哈希槽,要计算给定键的哈希槽是什么,我们只需对键的CRC16取模16384。在写入Redis之前无需重新散列key,Redis会为您完成。通常,哈希函数将键映射到小整数(桶)。理想的哈希函数以类似随机的方式将键映射到整数,因此即使输入数据中存在规律性,桶值也会均匀

javascript - 如何检查散列中的键是否存在(redis)?

如何检查散列中的键是否存在(redis)?我这样试过:redisClient.exists(obj.mydict.user.toString().pos,function(err,reply){if(!err){if(reply!==null){...但是我得到:node_redis:Deprecated:TheEXISTScommandcontainsa"undefined"argument.Thisisconvertedtoa"undefined"stringnowandwillreturnanerrorfromv.3.0on.Pleasehandlethisinyourcodet

ruby-on-rails - 如何在 Redis & Rails 中设置动态散列键(散列数据类型)?

尝试设置包含动态键名的散列数据类型。我有一个名为“event_id”的属性,其中包含一个整数。我希望它与哈希键名称分开。self.attributes.eachdo|field,value|$redis.hset(event_id,field,value)endend使用上面的当前代码,redis中的键看起来像32434我的目标是我可以在该键前面添加一些文本,以便理想情况下该键看起来像this:is:the:event_id:32434在不破坏语法的情况下,我无法弄清楚关键参数中的语法。谢谢 最佳答案 我通过创建“redis命名空间

redis - 有没有一种方法可以只使用 Lua 中大于 int 的散列中的 HGETALL 值?

我试图通过Lua仅获取大于1800的散列值。我是Lua的新手,我不确定如何从Redis获取值,因为redis.call()方法只返回1。这是我的代码。这里我的哈希键是“1”“2”“3”等,只是为了让它更简单。fori=1,lengthdovalue=tonumber(redis.call("HGET",KEYS[1],i))ifvalue>=1800thenreturnredis.call("HGET",KEYS[1],i)endend假设我有一个名为Data的散列,如下所示:HGETALL数据1)“星期一”2)“1802”3)“星期二”4)“1283”5)“星期三”6)"3487"7

Redis - 计算有多少键在散列中共享某个值

我正在做一个类(class)项目,我为Redis设置了大约150,000个哈希值,其中的键是格式为"2008-08-29T15:09:06.493"的时间戳,其中字段Tag和Title。我想找到同一年具有相似标签的所有key。我正在执行KEYS*2008*以获取年份为2008的所有哈希值,但我不确定如何检查哈希值是否具有特定的标签,并增加一个计数器。我该怎么做呢? 最佳答案 所以,这里有三点:您设置数据的方式对于您尝试执行的操作而言效率极低。您所要求的可以完成(请参阅第3点),但如果您想定期执行此操作,我强烈建议以不同方式存储数据。

python-2.7 - redis:匹配散列的部分键

在哈希中,我有一堆键值对我的key格式如下:name:cityjohn:newyorkkate:chicagolisa:atlanta我正在使用python访问redis并在https://redis-py.readthedocs.org/en/latest/中,我没有看到任何进行部分匹配的哈希操作我希望能够获取哈希中所有带有城市名称的键这可能吗? 最佳答案 这是可能的,但不是HASH对象,而是排序集。只要一个有序集合中的所有元素都具有相同的分数,就可以进行字典序前缀匹配。假设您执行以下操作(原始redis命令,但同样适用于pyth