common-pool笔记

   Apache默认提供的3种ObjectPool:
   
StackObjectPool,GenericObjectPool,SoftReferenceObejctPool

  1. public interface ObjectPool {   
  2.     Object borrowObject();   
  3.     void returnObject(Object borrowed);   
  4.     void addObject();
  5.     void setFactory(PoolableObjectFactory)
  6. }   

    StackObjectPool,GenericObjectPool,SoftReferenceObejctPool,一般使用StackObejctPool就可以了

 

    StackObjectPool-》  用java.util.Stack来维护对象池
    SoftReferenceObjectPool-
》 用java.util.ArrayList来维护对象池
    GenericObjectPool-
》  用org.apache.commons.collections.CursorableLinkedList来维护对象池


    

    使用PoolableObjectFactory来创建pool。而没有必要间接使用ObjectPoolFactory createPool()

 


    
问题:
    1.对应Socket,我需要真正实现的代码就是:
     1)
如果socket正在被使用;那么是不能被其他人同时使用的
     2)
如果socket使用完了;那不必关闭,可以设置状态并让其他人继续使用。

 

     3) 如果将要使用的socket已经close(),那么必须重新open()
     4)
对maxWait,maxIdle的处理;maxIdle表示可以在空闲时期建立的socket连接数;
   

 

    2. dbcp的参考实现
      PoolingDataSource
间接实现了ObjectPool接口(使用GenericObjectPool),
     1)
可以borrowObject,而borrowObject拿出来的Object就是Connection。
     2)
在初始化的时候,DataSourceImpl还可以根据pool的大小来addObject();
      socket
相对于数据库连接中的connection。
   
       getConnection() --> borrowObject();
       connection.close() -->returnObject(obj);

 

  设计和实现:
       1)需要实现ObjectPool接口,用于getSocketClient()
       2)
需要对SocketClient的封装,重载close()方法。
       3)PoolableObjectFactory
需要吗?
       4)
除了接口,commons-pool可以帮我做什么?
          
直接使用StackObjectPool,但是要自己实现PoolableObjectFactory 方法。

 

       5) 如何判断有空闲的连接?    

 

 

 

STC8H DMA 串口1全双工中断方式收发通讯C语言 串口1全双工中断方式收发通讯程序。 通过PC向MCU发送数据, MCU将收到的数据自动存入DMA空间. 当DMA空间存满设置大小的内容后,通过串口1的DMA自动发送功能把存储空间的数据原样返回. 用定时器做波特率发生器,建议使用1T模式(除非低波特率用12T),并选择可被波特率整除的时钟频率,以提高精度。 阅读详情

相关推荐

SolidWorks草图绘制实战:如何用图片参考快速搞定智能小车底板设计

本文详细介绍了在SolidWorks中利用图片参考进行草图绘制的实战方法,以智能小车底板设计为例,帮助设计师快速将概念转化为精准三维模型。通过插入、对齐参考图片并高效描图,结合参数化约束与尺寸驱动,大幅提升设计效率和准确性,尤其适合新手入门与老手优化工作流。

rust6ferris的博客 219

对象池(连接池):commons-pool2源码解析:GenericObjectPool的addObject、create方法解析

为什么会有对象池 在实际的应用工程当中,存在一些被频繁使用的、创建或者销毁比较耗时、持有的资源也比较昂贵的一些对象。比如:数据库连接对象、线程对象。所以如果能够通过一种方式,把这类对象统一管理,让这类对象可以被循环利用的话,就可以减少很多系统开销(内存、CPU、IO等),极大的提升应用性能。 Apache Commons Pool Apache Commons Pool就是一个对象池的框架,他提供了一整套用于实现对象池化的API,以及若干种各具特色的对象池实现。Apache Commons Pool是很多连

老艮头的后知后觉 1628

DIY音频必备:手把手教你用AB类功放模块打造高保真桌面音响(含电路图)

本文详细指导如何利用AB类功放模块DIY高保真桌面音响,涵盖选型指南、核心元器件清单、电路搭建与焊接工艺,以及系统调试与音质优化技巧。AB类功放以其接近A类功放的音质和B类功放的效率,成为音频爱好者的理想选择,适合有一定电子基础的实践者。

weixin_42665725的博客 444

apache common pool2原理与实战

简介 对象池顾名思义就是存放对象的池,与我们常听到的线程池、数据库连接池、http连接池等一样,都是典型的池化设计思想。 对象池的优点就是可以集中管理池中对象,减少频繁创建和销毁长期使用的对象,从而提升复用性,以节约资源的消耗,可以有效避免频繁为对象分配内存和释放堆中内存,进而减轻jvm垃圾收集器的负担,避免内存抖动。 Apache Common Pool2 是Apache提供的一个通用对象池技术实现,可以方便定制化自己需要的对象池,大名鼎鼎的 Redis 客户端 Jedis 内部连接池就是基于它来实现的。

weixin_43511928的博客 2014

ESP32S3编译micropython固件

编译ESP32芯片的micropython固件

m0_73253860的博客 2553

BugkuCTF-PWN题pwn2-overflow超详细讲解

解题思路 1)计算出get_shell_的地址偏移量 2)算出来之后就直接溢出到后门函数 知识点 x64函数调用规则 解题之前我们先学下linux x64的函数调用规则。 x64机器在调用某个函数前,比如int func(int a, int b, int c, int d, int e, int f, int g, int h),首先他会把前6个参数从左往右存入到寄存器rdi、rsi、rdx、rcx、r8、r9,其余参数存入到栈里,保存的顺序是从右往左入栈。比如abcdef会存入到寄存器里,然后一次入栈h

am_03的博客 3013

common-pool剖析

apache commons-pool是apache基金会的一个开源对象池组件,常用的数据库连接池dpcp和redis的java客户端jedis都是基于commons-pool实现的。单例模式 singleton:全局只有一个对象,供所有线程使用。原型模式 propotype:每次使用对象时都新建,用完之后释放。对象池模式 pool:一个池子,里面 维护 多个对象。调用方从对象池 借取 对象,使用之后 归还 给对象池。弊:利: 2.1 GenericObjectPool【ObjectPool的具体实现

游语 1745

若依Vue整合积木报表实战:Token安全校验全流程解析

本文详细解析了在若依Vue后台系统中安全集成积木报表的全流程,重点阐述了Token安全校验的核心机制。通过前端菜单配置、Token传递、后端权限拦截及自定义Token服务实现,构建了一套完整的企业级报表访问安全防线,确保核心业务数据的安全可控。

t8u9v0的博客 578

apache commons pool2: 整体结构

简介     在以往的一些工作中总接触到一个池的概念。这些池包括有线程池,对象池和连接池等。从池本身的概念来说,它是将一系列的资源事先准备好放在一个地方,等需要的时候直接拿过去用。而用完之后再放回来。和我们平常的需要使用资源再创建的方式相比,这种池的方式节省了创建和销毁资源的这么一个过程。所以说,对于一些比较比较稀缺的资源或者创建和销毁影响系统性能的资源,采用池的方式可以有效的提高整体性能。...

点缀星辰 335

Linux磁盘扩容实战:用parted命令无损扩展/data分区(附常见报错解决方案)

本文详细介绍了在Linux生产环境中使用parted命令对已挂载的/data分区进行在线磁盘扩容的完整实战流程。通过风险评估、状态检查、parted工具深度解析及实战演练,指导用户安全完成动态扩容,并提供了常见报错如'Partition is being used'、MBR 2TB限制等的解决方案,确保业务不中断、数据不丢失。

weixin_29207439的博客 297

两组相机(或三维点)对齐方法介绍及实现代码(求解相似变换,包含旋转R、平移t、尺度s)

  这个变换用于将生成的稀疏重建场景对齐到真值上。由于SfM(Structure from Motion,运动恢复结构)求解的结果是尺度未定的,所以重建场景与真值之间不仅会相差一个旋转与平移,还会存在尺度缩放。待求解的问题可以描述为:已知一组相机(个数为m)的位姿真值Rgt、tgt和预测位姿Rpred、tpred,现要将预测值对齐到真值上。它们之间会相差一个相似变换Msimilarity,包括尺度s、旋转量R、平移量t,可以根据如下步骤进行求解:    1 求解旋转R   首先计算所有m个相机的位姿差异总和

zeeq的博客 3926

spring 集成common-pool2

Common-pool2 The Apache Commons Pool open source software library provides an object-pooling API and a number of object pool implementations. Version 2 of Apache Commons Pool contains a completely re-written pooling implementation compared to the 1.x serie

keep_learn的专栏 1248

RH850 GreenHillSoftware Install

IDE一次链接到一个Compiler/Green Hills Debug Probe安装目录。如果您安装了IDE、编译器和绿山调试探测器软件,安装程序会将安装链接在一起。如果您只使用Advanced Install选项安装IDE,那么当您第一次启动它时,IDE会提示您链接到编译器和绿山调试探针安装*。如果您使用Advanced Install选项只安装编译器和绿山调试探针软件,安装程序会提示您将IDE的安装链接到新的编译器和绿山调试探针安装。

舊梦的博客 1217

apache Common Pool2

转载:https://blog.youkuaiyun.com/y4x5m0nivsrjay3x92c/article/details/80016747 我们系统中一般都会存在很多可重用并长期使用的对象,比如线程、TCP 连接、数据库连接等。虽然我们可以简单的在使用这些对象时进行创建、使用结束后销毁,但初始化和销毁对象的操作会造成一些资源消耗。我们可以使用对象池将这些对象集中管理,减少对象初始化和销毁的次数以节...

中国华的博客 4786

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

java common pool_common-pool2 使用

common-pool2 使用common-pool2提供了3中对象池管理方式,它们的使用方式基本一样,这里以GenericObjectPool对象池为例介绍其使用方式,一般实现自己的对象池需要经过2个步骤实现PooledObjectFactory接口:该接口是一种工厂模式,实现其目的是让对象池通过该工厂模式创建管理的对象创建对象池(GenericObjectPool(PooledObjectFa...

weixin_32085599的博客 653

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

apache common pool2简介

apache common pool2 作为对象池模式的一种实现,通过重用来分摊复杂对象的创建代价。被广泛应用在各种数据库连接池,线程池以及请求分发池中;其实现提供了一些参数来控制对象池的行为,了解这些参数对学习其他“池”技术很有必要。

理查德的博客 3225

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Apache Common Pool的使用

Apache Common Pool的使用 Apache CommonPool包括很多已经实现的Pool,常用的Pool有GenericObjectPool,GenericKeyedObjectPool。本文主要讲述如何使用以上两种Pool,其它的用法相似。使用Common Pool需求到Apache网站下载commons-pool.jar和commons-collec

程序世界 2万+

Apache common pool 原理剖析

引自:http://cwj158.iteye.com/blog/1356176   最近在做一个内部测试工具类的优化工作中接触到了连接池, 对象池技术, 将原有的未使用连接池的数据库访问操作改成连接池方式.性能有了非常大的提升, 事实证明, 经过两次改造, 原来一个比较大的测试类需要500多秒, 第一次优化后只需要300多秒, 第二次改用连接池之后同一个测试类只需要80多秒.下面是改造过程中...

gotowqj的博客 259

Apache Common Pool2 对象池应用浅析

作者 | 乔宇    杏仁后端工程师,关注服务端技术。我们系统中一般都会存在很多可重用并长期使用的对象,比如线程、TCP 连接、数据库连接等。虽然我们可以简单的在使用这些...

杏仁技术站 1721

common-pool对象池

简介     在以往的一些工作中总接触到一个池的概念。这些池包括有线程池,对象池和连接池等。从池本身的概念来说,它是将一系列的资源事先准备好放在一个地方,等需要的时候直接拿过去用。而用完之后再放回来。和我们平常的需要使用资源再创建的方式相比,这种池的方式节省了创建和销毁资源的这么一个过程。所以说,对于一些比较比较稀缺的资源或者创建和销毁影响系统性能的资源,采用池的方式可以有效的提高整体性能。最近...

石头视角 1908

jdbc 连接池 common-pool, common-dbcp源码解读与对象池原理剖析

一、数据库连接池 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库

扬帆HOME_13564955560 2551

common-pool的使用

使用common-pool, 这里使用GenericKeyedObjectPool  GenericKeyedObjectPool类在org.apache.commons.pool.impl包中,构造函数如下: public GenericObjectPool(org.apache.commons.pool.KeyedPoolableObjectFactory ,

zerojunyan的专栏 1125

common-pool2

文章目录1、简介2、核心接口3、对象池逻辑分析3.1、对象池接口说明3.2、 对象创建解耦3.2、池对象的状态3.3、对象池相关配置项3.4、对象池源码分析4、对象池`browObject`的逻辑5、对象池`returnObject`的过程执行逻辑6、对象池的自我保护机制7、工厂的`passivateObject(PooledObject p)`和`passivateObject(PooledObject p)`即对象的激活和钝化方法有有什么作用?8、使用步骤9、注意事项 1、简介 对象池就是一种存放对象的

weixin_44457533的博客 1618

【pool】Apache common-pool, common-dbcp源码解读与对象池原理剖析

Apache common-pool, common-dbcp源码解读与对象池原理剖析 最近在做一个内部测试工具类的优化工作中接触到了连接池, 对象池技术, 将原有的未使用连接池的数据库访问操作改成连接池方式.性能有了非常大的提升, 事实证明, 经过两次改造, 原来一个比较大的测试类需要500多秒, 第一次优化后只需要300多秒, 第二次改用连接池之后同一个测试类只需要80多秒.下面

龙腾四海365的专栏 651

common-pool jar 包的简单使用,池化资源对象

common-pool jar 包的简单使用,池化资源对象 1,导入common-pool.jar 包 具体使用        1) , 编写一个待池化的 普通的java类。       2) , 编写一个工厂类(用于生产待池化的java类) 继承 BasePoolableObjectFactory 类       3) , 编写一个池化的类pool , 用作对 待池化类的 使用 de

1735

Apache common-pool对象池介绍

Apache common-pool对象池介绍:对象生命周期、Config详解、代码说明。

老男孩的架构路 575
上一篇: Java多线程编程详解
下一篇: Groovy笔记
csbison
博客等级 码龄23年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值