Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java哈希代码逻辑_Java_Jakarta Ee_Hashcode - Fatal编程技术网

Java哈希代码逻辑

Java哈希代码逻辑,java,jakarta-ee,hashcode,Java,Jakarta Ee,Hashcode,我的数据库中有10个字段。在这4个字段中,1个字段是hash_attr。hash_attr is基本上表示传入行和数据库中存储的行是否相同。如果是相同的,我们不需要更新数据库,否则我们需要更新 比如: 字段: 1(id)-1 2(姓名)-约翰 3(类型)-客车 4(attr_hash)-由java哈希代码计算 哈希代码逻辑: int code=(名称+类型).hashcode() attr_散列的思想是,对于数据,我们将计算hashcode,如果hasscode与attr_散列匹配,那么我将不更

我的数据库中有10个字段。在这4个字段中,1个字段是hash_attr。hash_attr is基本上表示传入行和数据库中存储的行是否相同。如果是相同的,我们不需要更新数据库,否则我们需要更新

比如:

字段: 1(id)-1

2(姓名)-约翰

3(类型)-客车

4(attr_hash)-由java哈希代码计算

哈希代码逻辑:
int code=(名称+类型).hashcode()

attr_散列的思想是,对于数据,我们将计算hashcode,如果hasscode与attr_散列匹配,那么我将不更新数据库表,因为该行应该是相同的

我认为如果我们使用对象的hashcode方法,两个不同的字符串可以有相同的hashcode。那么我的hashcode逻辑应该是什么来确保两个不同的字符串不能有相同的hashcode呢

我希望问题是清楚的。

你不能

证明:

  • 有4294967296个可能的哈希代码(因为它们是
    int
    s)
  • 可能的字符串超过4294967296个。例如,有803181076个字符串包含7个小写字母
  • 因此,必须有多个字符串具有相同的哈希代码(按)
hash_attr is基本上表示传入行和数据库中存储的行是否相同。如果是相同的,我们不需要更新数据库,否则我们需要更新

不完全是。如上所述,不同的字符串可以具有相同的哈希代码。但是,不同的字符串必须生成不同的哈希代码。在某些情况下,您可以使用它来优化数据库访问


具体来说,如果散列码不同,您知道字符串不同,因此需要更新数据库。但是,如果哈希代码相同,字符串可能仍然不同。在这种情况下,您需要在字符串上调用
equals()
来确定它们是否确实不同,然后才进行数据库更新。

哈希代码检查,如下图所示,对于这种大小的数据并不非常有用。不过,一旦开始在数据库中填充20MB的图像块,手头上保留一个256位的散列值会带来很大的不同。