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

  分四篇文章  池子基本要素分析 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

实现自己的连接池(一)相关推荐

  1. 连接池和协程池为何能提升并发能力?

    你有没有发现,"内存池"和"进程池"都带有"池"字?其实,这两种技术都属于"池化技术".它通常是由系统预先分配一批资源并 ...

  2. evt参数是干啥用的_http连接池中非常关键的两个参数,到底是干啥用的?

    作者简介:大厂一线资深开发.从crud开发到资深开发,再到研究员兼技术经理.<资深开发讲技术> 从一线实战中总结有故事,有背景的案例,希望带给大家一系列技术盛宴. 求关注,欢迎技术交流.友 ...

  3. python redis连接池获取后关闭_python通过连接池连接redis,操作redis队列

    在每次使用redis都进行连接的话会拉低redis的效率,都知道redis是基于内存的数据库,效率贼高,所以每次进行连接比真正使用消耗的资源和时间还多.所以为了节省资源,减少多次连接损耗,连接池的作用 ...

  4. mysql连接池为何不用nio_为什么要用数据库连接池?

    1.为什么要用数据库连接池? 最原始的数据库使用就是打开一个连接并进行使用,使用过后一定要关闭连接释放资源.由于频繁的打开和关闭连接对jvm包括数据库 都有一定的资源负荷,尤其应用压力较大时资源占用比 ...

  5. net core mysql 连接池_EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽

    EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽 发布时间:2019-02-18 22:05, 浏览次数:1152 , 标签: EF Core DbContextPool ...

  6. java 线程 连接池_java程序实现线程连接池功能

    下面是以前学java 的时候写的一个实现,没有考虑很多,比如同步处理等等.懒得改,你就看看吧. package com.wangjia.tools; import java.io.Serializab ...

  7. dbcp 连接池参数说明

    dbcp 连接池参数说明 参考: http://commons.apache.org/proper/commons-dbcp/configuration.html https://www.cnblog ...

  8. springboot添加多数据源连接池并配置Mybatis

    springboot添加多数据源连接池并配置Mybatis 转载请注明出处:https://www.cnblogs.com/funnyzpc/p/9190226.html May 12, 2018  ...

  9. JDBC数据源连接池(1)---DBCP

    何为数据源呢?也就是数据的来源.我在前面的一篇文章<JDBC原生数据库连接>中,采用了mysql数据库,数据来源于mysql,那么mysql就是一种数据源.在实际工作中,除了mysql,往 ...

  10. 使用 TFDConnection 的 pooled 连接池

    从开始看到这个属性,就一直认为他可以提供一个连接池管理功能, 苦于文档资料太少, 甚至在帮助中对该属性的使用都没有任何介绍,如果你搜索百度,也会发现基本没资料. 最后终于在其官方网站看到了其完整相关的 ...

最新文章

  1. 2015-2016-2 《Java程序设计》 学生博客及Git@OSC 链接
  2. 软件开发计划_敏捷软件开发实践:估算与计划读书笔记113第11章 确定渴望度优先级...
  3. 【hdu5285】wyh2000 and pupil
  4. Effective Java之不要忽略异常(六十五)
  5. (深入.Net平台和C#编程)第七章.上机练习.20170412
  6. ConEmu状态栏的设置介绍
  7. matlab im2double
  8. 【流媒體】live555—VS2010 下live555编译、使用及测试
  9. Silverlight获取子控件和父控件方法
  10. pandas根据现有列新添加一列
  11. 必学:入行电商产品经理必备知识,原来这么简单
  12. ts无损剪辑合并_视频如何合并?视频合并太难?其实很简单
  13. nginx在Linux系统安装
  14. nginx 同一服务器部署多个网站
  15. HDU6397 Character Encoding 插板法+容斥
  16. SEO及SEM学习参考资源
  17. 还儿童一个健康上网环境,正式开启我的路由器URL网址白名单之旅
  18. Java - 加号(+)的作用
  19. MBR膜生物反应器,生物反应器原理-世来福
  20. java开发 与c sharp 开发思想_Java与CSharp的相同与不同

热门文章

  1. 编译-编译原理C/C++ 静态链接库(.a) 与 动态链接库(.so)
  2. python中的模运算符_Python中的字符串模运算符与format函数
  3. WPF中制作带中国农历的万年历
  4. 20180611-20180615
  5. 从源码角度入手实现RecyclerView的Item点击事件
  6. 找出如下数组中最大的元素和最小的元素, a[][]={{3,2,6},{6,8,2,10},{5},{12,3,23}}
  7. 老李分享:系统可用性评估
  8. Func与Action
  9. FW: HTTP错误500显示具体的出错信息的方法
  10. GridView 模版列编辑状态Dropdownlist 事件