草庐IT

C++ - 为什么 boost::hash_combine 是组合散列值的最佳方式?

我在其他帖子中读到这似乎是组合散列值的最佳方式。有人可以分解一下并解释为什么这是最好的方法吗?templateinlinevoidhash_combine(std::size_t&seed,constT&v){std::hashhasher;seed^=hasher(v)+0x9e3779b9+(seed>2);}编辑:另一个问题只是询问魔数(MagicNumber),但我想了解整个功能,而不仅仅是这一部分。 最佳答案 “最好”是有争议的。“好”,甚至“非常好”,至少在表面上,很容易。seed^=hasher(v)+0x9e3779

c++ - 使用 hash_map 时,在 STL 字符串上使用的最佳散列算法是什么?

我发现VS2005上的标准散列函数在尝试实现高性能查找时非常缓慢。有哪些快速高效的散列算法可以避免大多数冲突的好例子? 最佳答案 我曾与PaulLarson合作过微软研究院的一些哈希表实现。他在各种数据集上研究了许多字符串散列函数,发现简单的乘以101和加法循环的效果出奇的好。unsignedinthash(constchar*s,unsignedintseed=0){unsignedinthash=seed;while(*s){hash=hash*101+*s++;}returnhash;}

node.js - Golang 中的 Bcrypt 密码散列(与 Node.js 兼容)?

我使用Node.js+passport设置了一个站点以进行用户身份验证。现在我需要迁移到Golang,并且需要使用保存在db中的用户密码进行身份验证。Node.js加密代码为:varbcrypt=require('bcrypt');bcrypt.genSalt(10,function(err,salt){if(err)returnnext(err);bcrypt.hash(user.password,salt,function(err,hash){if(err)returnnext(err);user.password=hash;next();});});如何使用Golang制作与No

javascript - 如何可靠地散列 JavaScript 对象?

如果JavaScript对象是一样吗?我想像这样散列JavaScript对象{signed_data:object_to_sign,signature:md5(JSON.stringify(object_to_sign)+secret_code)}并在Web应用程序(例如Python和Node.js)和用户之间传递它们,以便用户可以针对一个服务进行身份验证并显示下一个服务的“签名数据”以检查数据是否真实。但是,我遇到了一个问题,即JSON.stringify在实现中并不是真正独一无二的:在Node.js/V8中,JSON.stringify返回一个没有不必要空格的JSON字符串,例如'

json - 如何加密散列 JSON 对象?

以下问题比最初看起来要复杂。假设我有一个任意JSON对象,它可能包含任意数量的数据,包括其他嵌套的JSON对象。我想要的是JSON数据的加密哈希/摘要,而不考虑实际的JSON格式本身(例如:忽略JSONtoken之间的换行符和间距差异)。最后一部分是一项要求,因为JSON将由许多不同平台上的各种(反)序列化程序生成/读取。我知道至少有一个用于Java的JSON库可以在反序列化期间读取数据时完全删除格式。因此它会破坏散列。上面的任意数据子句也使事情变得复杂,因为它阻止我以给定的顺序获取已知字段并在拥有之前将它们连接起来(大致想想Java的非加密hashCode()方法是如何工作的)。最后

python - 散列字典?

出于缓存目的,我需要从dict中存在的GET参数生成缓存键。目前我正在使用sha1(repr(sorted(my_dict.items())))(sha1()是一种在内部使用hashlib的便捷方法)但我很好奇是否有更好的方法。 最佳答案 使用sorted(d.items())不足以让我们获得稳定的代表。d中的一些值也可以是字典,它们的键仍然会以任意顺序出现。只要所有的键都是字符串,我更喜欢使用:json.dumps(d,sort_keys=True)也就是说,如果哈希需要在不同的机器或Python版本之间保持稳定,我不确定这是否是

c++ - 编译时间字符串散列

我在几个不同的地方读到使用C++11的新字符串文字可能可以在编译时计算字符串的哈希值。然而,似乎没有人愿意站出来说这将是可能的或如何完成。这可能吗?运算符(operator)会是什么样子?我对这样的用例特别感兴趣。voidfoo(conststd::string&value){switch(std::hash(value)){case"one"_hash:one();break;case"two"_hash:two();break;/*manymorecases*/default:other();break;}}注意:编译时散列函数不必和我写的完全一样。我尽力猜测最终的解决方案会是什么

ruby-on-rails - 按散列中的部分属性分组

我有一个叫做coverage的模型,看起来像这样1.9.3p429:005>Coverage.new=>#这是一个示例记录:1.9.3p429:006>Coverage.find(10)CoverageLoad(7.3ms)SELECT"coverages".*FROM"coverages"WHERE"coverages"."id"=$1LIMIT1[["id",10]]=>#我有300多个邮政编码,我想根据我在这个数组中的一些值对它们进行分组group=['N','E','EC','LS','TS']所以我想做@postcodes=Coverage.all用上面的数组运行它得到下面的

ruby-on-rails - 如何防止散列转义字符串?

我有以下代码生成用于测试内部RestfulAPI身份验证的散列。问题是生成的散列返回转义值。json_headers方法应该返回如下内容:{"Authorization"=>"BasicZnBfZXJwOllrdGh4aHRSZTZWM1d1d09oeVlmcW0xTg==","Accept"=>"application/json"}但是正在返回:{\"Authorization\"=>\"BasicZnBfZXJwOllrdGh4aHRSZTZWM1d1d09oeVlmcW0xTg==\\n\",\"Accept\"=>\"application/json\"}有人知道从Ruby哈希

ruby - 通过立即散列返回抽头散列有好处吗?

一些正在审查的代码经常使用下面的模式:defsome_method{}.tapdo|data|data[:foo]=somethingdata[:bar]=something_elseendend我会这样写:defsome_method{foo:something,bar:something_else}end这里使用tap是否有技术原因,例如性能、内存......?我只能想到两个原因:次要上下文信息,因为您可以命名哈希(非常次要IMO)元素后不需要逗号(但需要其他语法噪音) 最佳答案 使用tap,您可以使用条件(或更复杂的逻辑):d