【问题标题】:How should we design/write a connection pool我们应该如何设计/编写连接池
【发布时间】:2014-01-21 23:58:52
【问题描述】:

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

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

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 我会说最好开始编写模型。然后你会看到它是如何结合在一起的。是的,对象池模式就在这里。

标签: algorithm oop data-structures


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-21
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 2015-08-03
    • 1970-01-01
    相关资源
    最近更新 更多