如何解决哪些数据结构可用于实现整数池?
| 这些整数可以是IP地址(DHCP)或会话ID或隧道ID(例如,在L2TP中)。 每个整数可以自由或使用。我们需要它能有效地找到免费的。 还有一个最小和最大定义。解决方法
好的,因为您有一个最大值和一个最小值,我有以下想法:
您可以动态维护此最大值或最小值,并具有可用整数列表。
首先,您从一个空列表和整个范围开始。
当某人租用一个整数时,如果列表为空(如果我们不从列表中取出),则范围的大小将减小一。
如果他释放整数,则有2种可能性:
它适合您的最大/最小范围的边缘,因此您可以增加范围大小
它距离范围很远,因此您将其放入列表中
这应该使您能够以低成本维持较高和较低的自由整数计数。
当然,您也可以尝试保存多个范围以将整数聚类在一起,但这将需要更复杂的操作。
, 我会保留一个免费清单和一个二手清单。分配数字意味着将其从空闲列表移动到已使用列表,反之则重新分配。
维护列表是有代价的,但是找到一个免费号码会很快
, 您是否期望有更多的自由或更多使用的整数?
您是否要同时保存IP,SessId和TunId,还是要分别保存?
对我来说,最平衡的将是一棵树,但是如您所知,如果没有频繁的更改,那么数组就足够了。
当您不关心某些顺序时,动态列表将是最佳选择。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。