我有一个程序,我应该确保URL存在与否,如果存在于数据库中,我应该选择ID,如果不存在我应该将其插入数据库。
我有一个问题,GetHashCode是一种很好的方法来保存数据库中的哈希码并只是比较哈希码吗?我可以确定没有例外,哪个2个或更多URL具有相同的哈希码,如果没有,它是否与安装.NET Framework不同?
由于
答案 0 :(得分:1)
答案 1 :(得分:0)
不,这不是一个好主意 - 因为GetHashcode()可能会在下一个.net框架版本中返回不同的结果。见msdn remarks
答案 2 :(得分:0)
不要将其用作标识 - GetHashCode可能会为不同的字符串生成相同的值。
GetHashCode结果是一个int32,因此它可能只存储4e9个不同的值。由于网页数量已经在这些值(http://everything2.com/index.pl?node_id=1268366)附近,您几乎可以肯定某些不同的网址会生成相同的哈希值。
答案 3 :(得分:0)
如果您确实要确保不存在重复项,则应该只存储该URL。你可以用散列做的唯一事情就是把它作为第一个指标,如果URL可能存在,但基本上你手动做索引,而好的数据库可以为你做这个。
除了如何存储它之外,还有不同的方法可以在不同的字符串中表示相同的URL,最好指定您希望URL的唯一性?