什么是实现像这样的方法最快和更健壮(就唯一性而言)的方法publicabstractStringhash(String[]values);values[]数组有100到1,000个成员,每个成员只有几十个字符,并且该方法需要在不同的values[上运行大约10,000次/秒]数组每次。应该使用StringBuilder缓冲区构建长字符串,然后对缓冲区内容调用哈希方法,还是继续为values[中的每个字符串调用哈希方法更好?]?显然需要至少64位的散列(例如MD5)来避免冲突,但是有没有更简单、更快的方法可以以相同的质量完成?比如,怎么样publicStringhash(String[]
我有一个java应用程序,我想在其中为字符串生成longid(以便将这些字符串存储在neo4j中)。为了避免数据重复,我想为存储在long整数中的每个字符串生成一个id,每个字符串应该是唯一的。我该怎么做? 最佳答案 此代码将计算出非常好的哈希值:Strings="somestring";longhash=UUID.nameUUIDFromBytes(s.getBytes()).getMostSignificantBits(); 关于java-我如何生成字符串的长散列?,我们在Stack
我正在开发一个内部验证用户身份的小型网络应用程序。一旦用户通过身份验证,我的网络应用程序就会将一些信息(例如用户ID和人名)传递给第三方网络应用程序。第三方开发人员建议我们对值进行散列和加盐处理。请原谅我的无知,但这到底是什么意思?我正在用Java编写应用程序。因此,我打算做的是使用ApacheCommonsDigestUtilsSHA512对用户ID、人名和一些Math.random()值进行散列处理,并将该散列字符串与用户ID和人名一起传递。这是标准做法吗?我也应该将盐传递给第三方,对吗? 最佳答案 盐通常用于安全地存储密码的哈
以下内容来自JavadocofEnumMap的实现说明部分:Implementationnote:Allbasicoperationsexecuteinconstanttime.Theyarelikely(thoughnotguaranteed)tobefasterthantheirHashMapcounterparts.我在EnumSet的java文档中也看到了类似的行。我想知道为什么EnumSets和EnumMaps比它们的散列对应物更快? 最佳答案 EnumSet由位数组支持。由于您可以放入的不同元素的数量EnumSet事先知
评估unordered_map性能的正确方法是什么?[C++14]在我的代码中,我以数十亿个键的顺序非常广泛地使用std::unordered_map。出于性能的目的,我想知道unordered_map的行为,因为它必须重新散列多少次以及所有其他参数(有多少个桶?在重新散列之前有多少个空桶?)。我知道STL提供了桶的数量。但是还需要什么来分析或者您使用什么来分析? 最佳答案 像许多std容器一样,unordered_map的大小必须呈指数增长。确切的速率是实现定义的;您可以检查您的实现规范或其源代码。它如何调整大小是确定性的。如果将
我正在从事一个散列项目,目前在处理一系列链表时遇到困难。我的链表只能存储1个项目,所以我创建了一个具有2个成员变量(字符串键和字符串值)和各种成员函数的Pair类。我的问题是如何让Pair与我的Linked-list类一起工作?我的假设是执行以下操作:如果我想将数据添加到我的链表类中,我将创建一个带有参数的函数-voidinsert(Pairdata)-这会帮助我在我的列表中插入2个项目吗?这是我的C++代码,有人可以为我校对它并帮助我发现一些错误。#ifndefList_h#defineList_h#include"Node.h"#include"Pair.h"#includeusi
C++0x的unordered_map默认使用什么位散列?std::hash函数返回size_t。这是否意味着unordered_map使用16位哈希函数? 最佳答案 std::unordered_set默认使用std::hash。如果std::size_t对你来说是16位的,那么我猜它确实使用了16位哈希。在16位机器上,我希望unordered_map::max_size()足够低以至于使用这样一个弱散列不会有问题。 关于c++-unordered_map使用什么位散列函数?,我们在
我想知道是否std::unordered_map仍然必须对给定的整数进行哈希处理才能得到该值,或者直接使用它。我需要每秒多次快速执行此操作,如std::hash不能保证是身份函数,我将如何重新定义它?(显然不使用STL并编写我自己的容器是可能的,但我怀疑我编写的容器是否会更有效率(可能慢得多,慢得多))。谢谢! 最佳答案 Iwouldliketoknowwhetherstd::unordered_mapstillhastohashthegiveninteger是的。Ineedtoperformthisoperationveryfas
我想使用boost::unordered_map,其中key是std::set.由于一组整数不是内置类型,我假设我必须提供我自己的散列函数(或者,更确切地说,我正在考虑使用boost'shash_range)。但是,现在我尝试像这样初始化散列映射,既不提供散列函数也不提供相等谓词——而且gcc没有提示。这里发生了什么?boost是否足够聪明,可以自行散列所有STL容器?这会比我使用自定义哈希函数慢吗?使用boost::hash_range怎么样??提前致谢。 最佳答案 根据theBoostdocumentation:thedefau
有谁知道bitset的哈希函数使用的是什么算法,这是来自网站:http://en.cppreference.com/w/cpp/utility/bitset/hash#include#include#includeintmain(){std::bitsetb1(1);std::bitsetb2(2);std::bitsetb3(b2);std::bitsetb4(8);std::cout>hash_fn;size_th1=hash_fn(b1);size_th2=hash_fn(b2);size_th3=hash_fn(b4);std::cout输出是10004334672815104