zoukankan      html  css  js  c++  java
  • 实现自己的连接池(一)

      内存池,对象池,连接池,线程池等等 我们写程序中,有很多"池子"。这方面资料网上很多,最近在整理自己的一些东西,把这方面资料整理下。

      分四篇文章  池子基本要素分析 jedis pool(Java)分析  sync.Pool(go)分析 总结

      

      池子基本要素

        一般我们使用的时候,基本是下面几步:

         1.程序开始,根据一定条件(会话或其它)初始化池子

         2.从池子中获取到想要的对象

         3.使用完后返回

         4.程序结束,销毁池子

        好了,逐条分析,我们对要求的"翻译"如下:

        它可以存放一些我想要的对象

        它需要提供一个方法让我能取出一些对象,而不需要我太多关注初始化对象

        它可以帮我管理好,使用完后这些对象怎么处理

        它可以帮我监控这些对象的有效性,让我一直能用到有效的对象

        最好还能让我想要关心细节的时候,提供一些内部的数据(如:申请过多少次,多少失效等等)

        抽象一下,这个对象应该有下面几个属性或方法

        属性:

          PoolConfig  管理一些配置

          PooledObjectCreator  生产池子中保存的对象

          某种Deque  存放生产出的对象

          Evictor  负责驱逐池子中保存的无效对象

        方法:

          init,destroy  初始化,销毁方法,负责根据配置做相应舒适化

          getObject  从池子中取出对象

          putObject  对象使用完后放回池子中

          invalidateObject  把对象置于无效

          get相关内部元素  比如 totalCount、 idleNum、activeNum等池子状态的方法

          

        下一篇结合,具体实例分析如果实现一个自己的pool

      

  • 相关阅读:
    (转)Epoll模型详解
    (转)彻底学会使用epoll(一)——ET模式实现分析
    (转)Linux内核 TCP/IP、Socket参数调优
    Nodejs RESTFul架构实践之api篇(转)
    创业笔记-Node.js入门之阻塞与非阻塞
    创业笔记-Node.js入门之基于事件驱动的回调
    创业笔记-Node.js入门之一个完整的基于Node.js的web应用
    创业笔记-Node.js入门之JavaScript与Node.js
    在CentOS6.5下配置安装LVS
    zend studio 添加xdebug调试php代码
  • 原文地址:https://www.cnblogs.com/claresun/p/4493029.html
Copyright © 2011-2022 走看看