哈希算法

最简单的哈希算法可以用求余方式取哈希值(哈希地址),不同的哈希地址存放不同的数据,由此,需要提供键-值(Key-Value)关系的哈希表,键记录哈希地址、值记录数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 自定义哈希函数1
def my_hash1(x):
return (x % 5)

# 自定义哈希函数2,先取余再求异或
def my_hash2(x):
return (x % 7) ^ 2

print(my_hash1(2)) # 输出结果:2
print(my_hash1(3)) # 输出结果:3
print(my_hash1(4)) # 输出结果:4
print(my_hash1(5)) # 输出结果:0

print(my_hash2(2)) # 输出结果:0
print(my_hash2(3)) # 输出结果:1
print(my_hash2(4)) # 输出结果:6
print(my_hash2(5)) # 输出结果:7

利用哈希算法,我们可以实现资源均衡分布处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
records = [
[1, 5],
[8, 29],
[15, 20],
[17, 21],
[31, 60]
] # 序号和值

server_addr = {
0: '192.168.1.1',
1: '192.168.1.2',
2: '192.168.1.3',
3: '192.168.1.4'
}
n = len(server_addr)
print(n)

for record in records:
server_id = record[0] % n
print(record[0], '存储到', server_addr[server_id])