algorithm - 我们应该如何设计/编写一个连接池

标签 algorithm oop data-structures

遇到这个面试题,很好奇我的想法对不对。我们应该如何设计/编写一个连接池(即,一个将连接返回给用户的类,如果用户完成,将它们返回到池中)。 我的想法是以单例模式创建池,并有一个名为 Connection 的内部类。该池将包含一个连接对象数组,该连接对象有一个 bool 字段指示该连接是否可用(正在使用或不可用),并向该连接对象注册该池。当connection被用户调用close()时,connection会通知pool更新,可能像availableConnection一样,将connection中的isAvaiable改为true。

还有什么我应该添加的吗?我错过了什么吗?听起来对象池模式在这里可能很有用,但我不确定如何实现它。

如有任何帮助,我们将不胜感激。谢谢。

最佳答案

与其保留 bool 标志,不如维护两个列表,一个用于维护已使用的对象,另一个用于维护可用的对象。当使用的对象数量较少时,这使得搜索更容易。

然而,对象池模式在使用垃圾收集器的编程语言中并不是首选。 (大多数垃圾收集器扫描“活”对象引用,而不是这些对象用于其内容的内存。这意味着可以丢弃任何数量的没有引用的“死”对象,而成本很小。相比之下,保留大量“事件”但未使用的对象会增加垃圾收集的持续时间。)

关于algorithm - 我们应该如何设计/编写一个连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21271580/

相关文章:

c++ - 范围最小值/最大值查询

algorithm - Skip List的时间复杂度

algorithm - 一张照片转矢量 'scribbled line'算法

SQL 查询在一系列重叠(时间)间隔内查找非重叠间隔的子系列

c - 子字符串中字符的外观

oop - 符合 Liskov 的状态设计模式

java - 关于使用基于枚举的单例缓存大对象(Java)

algorithm - 斯卡拉 : Sorting list of number based on another list

c# - 公共(public)实例变量访问错误: "An object reference is required for the non-static field, method, or property..."

arrays - 在 R 中写入和读取 3D 数组