【发布时间】:2011-03-23 23:05:57
【问题描述】:
我正在尝试提出一种算法,将字符串散列到特定数量的存储桶中,但没有任何运气想出如何做到这一点的想法?
我有一个这样的字符串列表:
a.jpg
b.htm
c.gif
d.jpg
e.swf
我想运行一个函数来根据字符串获取 1 到 4 之间的数字。
例如a.jpg 将是 3
b.htm 将是 2
c.gif 将是 1
等等
它需要保持一致,所以如果我在 a.jpg 上运行该函数,它总是返回 3。
此算法将用于在服务器之间分配资源...
例如a.jpg 将从 server3.mydomain.com
访问
b.htm 将从 server2.mydomain.com
访问
等等
有人知道我会怎么做吗?
任何建议将不胜感激!
干杯
提姆
【问题讨论】:
-
以下建议使用
GetHashCode的所有解决方案都已被彻底破坏。见stackoverflow.com/questions/5154970/…。如果您的服务器运行不同版本的 .NET,它们可能会计算不同的哈希值。如果您想要保证,请实现您自己的哈希函数。 -
谢谢,你说得对,这是一个问题,因为我需要哈希值保持一致。您发布的链接中 jon skeet 的答案中的哈希函数看起来可以正常工作。