草庐IT

开散列

全部标签

swift - 实现可散列和重载运算符的协议(protocol)

我有以下结构:protocolMidiPlayable:Hashable{varmidiValue:UInt8{get}}structPercussionSound:MidiPlayable{letname:Stringlettype:PercussionType}structNote:Hashable,MidiPlayable{letpitch:Pitchletoctave:UInt8letmidiValue:UInt8}我想将这些类型作为Midiplayable传递到我的播放设备,因为我只需要知道原始值。此外,它们将被放置在集合中,因此Hashable是必要的,而且我想比较它们,所

swift - 通过散列值访问 Swift 集合元素

假设我正在制作一个国际象棋应用程序,其中的位置存储如下:structPosition{varpieces:Set//someotherstuff}Piece定义如下:structPiece:Hashable{varrow:Intvarcolumn:Intletplayer:Playerlettype:PieceTypevarhashValue:Int{return8*row+column}}Player和PieceType是简单的枚举:enumPlayer{caseWhite,Black}enumPieceType{caseQueen,King,...}现在,我想通过它在棋盘上的位置访

Swift - 创建一个可散列的类元组结构

我正在尝试创建一个可散列的类似元组的对象,它可以保存任何类型的对象以用作字典中的键。我在两个地方使用该结构,一次保存2个Int,一次保存一个double和前面提到的2Int结构。我目前的实现有点作弊。我创建了一个Suple结构,它包含两个int,并且是可哈希的,然后是另一个结构Duple,它包含一个double和一个suple,并且是可哈希的。这可行,但我认为必须有更好、更简洁的方法来实现它。在搜索和弄乱泛型之后,我似乎无法让它工作,所以任何建议将不胜感激。编辑:除了相等声明中的==之后,我的代码实际上看起来与Anton的代码几乎相同。我没有意识到这是必需的,在添加之后,它现在可以工作

java - 将字符串转换为散列,然后再重新生成字符串

我需要散列一些字符串,以便将它们传递到一些库中,这可以直接使用String.hashCode调用。但是,一旦处理完所有内容,我想将从hashCode生成的整数转换回字符串值。我显然可以在其他地方跟踪字符串和哈希码值并在那里进行转换,但我想知道Java中是否有任何东西可以自动执行此操作。 最佳答案 我认为您误解了哈希的概念。散列是一种单向函数。更糟糕的是,两个字符串可能生成相同的散列。所以不,这是不可能的。 关于java-将字符串转换为散列,然后再重新生成字符串,我们在StackOverf

java - 在整数、字符串的采访中使用的好散列函数?

我在采访中遇到过需要对整数或字符串使用散列函数的情况。在这种情况下我们应该选择哪些?在这些情况下我一直是错误的,因为我最终选择了那些产生大量冲突的函数,但是哈希函数往往是数学的,你无法在面试中记忆起它们。是否有任何一般性建议,以便至少面试官对您的整数或字符串输入方法感到满意?在“面试情境”中哪些功能适合两种输入 最佳答案 这是来自Effectivejavapage33的简单食谱:将一些常量非零值(例如17)存储在名为result的int变量中。对于对象中的每个重要字段f(每个字段都考虑到了equals方法,即),执行以下操作:>计算

java - MD5在Java中生成31个字符的散列

我正在使用以下代码块生成MD5哈希值:publicstaticStringencode(Stringdata)throwsException{/*Checkthevalidityofdata*/if(data==null||data.isEmpty()){thrownewIllegalArgumentException("Nullvalueprovidedfor"+"MD5Encoding");}/*GettheinstancesforagivendigestschemeMD5orSHA*/MessageDigestm=MessageDigest.getInstance("MD5");

Java:需要一个散列映射,其中提供一个函数来进行散列

我想知道一个像常规HashMap/Hashtable一样工作的Map,除了它需要一个返回哈希码并执行相等性测试的函数,而不是让HashMap使用Object.hashCode/equals。我不能使用TreeMap,因为对象没有实现Comparable,并且没有稳定的方法来处理不相等对象的情况。不能使用System.identityHashCode,因为不相等的对象可能会发生冲突。理想情况下,如果Map以类似的方式采用函数,可以向TreeMap提供自定义比较器,而不是让TreeMap将参数转换为Comparable,那就太好了。解决这个问题的唯一方法是包装每个键并让包装器执行自定义散列

asp.net - 使用 Python 对 ASP.NET 角色/成员身份创建的数据库中的原始用户名、散列、盐进行身份验证

我们有一个当前的应用程序,其中用户登录凭据存储在SQLServer数据库中。这些基本上存储为纯文本用户名、密码哈希和该哈希的关联盐。这些都是由ASP.NET的成员/角色系统中的内置函数创建的。这是名为“joe”的用户和密码“password”的一行:joe,kDP0Py2QwEdJYtUX9cJABg==,OJF6H4KdxFLgLu+oTDNFodCEfMA=我已将这些内容转储到一个CSV文件中,并试图将其转换为Django可用的格式,Django以这种格式存储其密码:[算法]$[盐]$[哈希]其中盐是纯字符串,哈希是SHA1哈希的十六进制摘要。到目前为止,我已经能够确定ASP以ba

python - 不可散列对象的无序集合?

我有一个字典,其中一些值不可散列。我需要一些方法来比较其中的两个无序组,以确保它们包含相等的元素。我不能使用列表,因为列表相等会考虑顺序,但集合将不起作用,因为字典不可哈希。我查看了python文档,唯一看起来有用的是dict的View,它在某些情况下是可哈希的,但在这种情况下这无济于事,因为其中一个值是一个包含列表本身的对象,这意味着dict的View也将不可哈希。对于这种情况是否有标准的容器,或者我应该只使用列表并循环遍历两个列表中的每个元素并确保相等的元素在另一个列表中的某处? 最佳答案 当不存在重复条目时,通常的选择是:如果

python - 在具有常量但不可散列对象的函数上使用 functools.lru_cache

是否可以使用functools.lru_cache来缓存由functools.partial创建的部分函数?我的问题是一个函数,该函数采用可散列参数和常量、不可散列对象(例如NumPy数组)。考虑这个玩具示例:importnumpyasnpfromfunctoolsimportlru_cache,partialdeffoo(key,array):print('%s:'%key,array)a=np.array([1,2,3])因为NumPy数组不可哈希,所以这行不通:@lru_cache(maxsize=None)deffoo(key,array):print('%s:'%key,ar