Java哈希代码逻辑
我的数据库中有10个字段。在这4个字段中,1个字段是hash_attr。hash_attr is基本上表示传入行和数据库中存储的行是否相同。如果是相同的,我们不需要更新数据库,否则我们需要更新 比如: 字段: 1(id)-1 2(姓名)-约翰 3(类型)-客车 4(attr_hash)-由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_散列匹配,那么我将不更
int code=(名称+类型).hashcode()代码>
attr_散列的思想是,对于数据,我们将计算hashcode,如果hasscode与attr_散列匹配,那么我将不更新数据库表,因为该行应该是相同的
我认为如果我们使用对象的hashcode方法,两个不同的字符串可以有相同的hashcode。那么我的hashcode逻辑应该是什么来确保两个不同的字符串不能有相同的hashcode呢
我希望问题是清楚的。你不能
证明:
- 有4294967296个可能的哈希代码(因为它们是
int
s)
- 可能的字符串超过4294967296个。例如,有803181076个字符串包含7个小写字母
- 因此,必须有多个字符串具有相同的哈希代码(按)
hash_attr is基本上表示传入行和数据库中存储的行是否相同。如果是相同的,我们不需要更新数据库,否则我们需要更新
不完全是。如上所述,不同的字符串可以具有相同的哈希代码。但是,不同的字符串必须生成不同的哈希代码。在某些情况下,您可以使用它来优化数据库访问
具体来说,如果散列码不同,您知道字符串不同,因此需要更新数据库。但是,如果哈希代码相同,字符串可能仍然不同。在这种情况下,您需要在字符串上调用equals()
来确定它们是否确实不同,然后才进行数据库更新。哈希代码检查,如下图所示,对于这种大小的数据并不非常有用。不过,一旦开始在数据库中填充20MB的图像块,手头上保留一个256位的散列值会带来很大的不同。