博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现自己的连接池(一)
阅读量:6306 次
发布时间:2019-06-22

本文共 868 字,大约阅读时间需要 2 分钟。

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

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

  

  池子基本要素

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

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

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

     3.使用完后返回

     4.程序结束,销毁池子

 

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

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

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

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

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

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

 

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

    属性:

      PoolConfig  管理一些配置

      PooledObjectCreator  生产池子中保存的对象

      某种Deque  存放生产出的对象

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

    方法:

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

      getObject  从池子中取出对象

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

      invalidateObject  把对象置于无效

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

      

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

 

  

转载于:https://www.cnblogs.com/claresun/p/4493029.html

你可能感兴趣的文章
MD5源代码C++
查看>>
Eclipse 添加 Ibator
查看>>
Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
查看>>
Python编程语言
查看>>
十四、转到 linux
查看>>
Got error 241 'Invalid schema
查看>>
ReferenceError: event is not defined
查看>>
男人要内在美,更要外在美
查看>>
为什么要跟别人比?
查看>>
app启动白屏
查看>>
Oracle 提高查询性能(基础)
查看>>
学习知识应该像织网一样去学习——“网状学习法”
查看>>
Hadoop集群完全分布式安装
查看>>
QString,char,string之间赋值
查看>>
我的友情链接
查看>>
Nginx+mysql+php-fpm负载均衡配置实例
查看>>
shell脚本操作mysql数据库 (部份参考)
查看>>
MySql之基于ssl安全连接的主从复制
查看>>
informix的逻辑日志和物理日志分析
查看>>
VMware.Workstation Linux与windows实现文件夹共享
查看>>