我需要建议如何完成这项任务。autor创建了函数find_next_free_dataset_num(node)并在分布式哈希表中搜索空闲槽。这个 DHT 使用类似字典的接口来覆盖__setitem__、__getitem__和__contains__。哪个是好的设计。但是这个函数现在使用线性探测来搜索新的未使用的插槽以获取可预测的密钥。所以问题是指数num = num*num + 1是否解决了它以及如何对 0 和使用的插槽 num 之间的新 num 值实现二进制搜索?
def predictable_key(node, num):
return "monitor_dataset_{0}_{1}".format(node.get_address(), str(num))
def find_next_free_dataset_num(node):
# FIXME probe with exponential increase then binary search lowest unused
num = 0
while node[predictable_key(node, num)] is not None:
_log.info("Dataset {0} already exists!".format(num))
num += 1
return num