jakata common pools 源码研究

通用池化框架实践之GenericKeyedObjectPool 前两天写了一篇文章介绍commons-pool2这个通用池化框架通用池化框架commons-pool2实践,其中提到了可以池化一个对象和一组对象,一个对象用到了GenericObjectPool这个类,一组对象用到了GenericKeyedObjectPool这个类。 一开始我以为后者比较复杂,所以放弃了尝试,今天在写gRPC接口测试Demo,根据分片不同进行负载均衡连接不同节点的过程中,遇到了一个障碍。就是在服务调用gRPC的时候已经完成了自动负载均衡,我调用的SDK就需要自己实现根据不同分片连接不同. 阅读详情

    前几天和同事聊天,同事做c++的,聊到c++没有很好的数据库连接池库,同事想自己写一个,但担心自己考虑不全面。我不以为然,数据库连接池而已,又不是没写过,没有open source之前,还不是自己写。同事却认为定我考虑的不全面。所以,才找来jakata common pools的源码看看。

 jakata common pools中主要就以下三个接口
   ObjectPool   连接池
   ObjectPoolFactory  连接池工厂
   PoolableObjectFactory  连接工厂
扩展开有:
基于key值管理的实现接口:
 KeyedObjectPool
KeyedObjectPoolFactory
KeyedPoolableObjectFactory
继续扩展:
基于key值管理的一个简单实现的接口
BaseKeyedObjectPool
................

同时提供了BaseKeyedObjectPool的几种算法的实现,主要集中在对象在pools中的储存的数据结构不同。

功能上:
ObjectPool   :
borrowObject 获取连接
returnObject 返回连接
invalidateObject(Object obj) 验证连接是否可用
addObject()  增加连接
getNumActive 获取活动连接数目
clear 清空
close 关闭


在实现中,提供了一些额外的功能:(以GenericKeyedObjectPool 为例)
maxIdle  最大空闲连接
maxActive 最大活跃连接
maxTotal  最大总数
minIdle 最小空闲
maxWait 最大阻塞时间
whenExhaustedAction 数据库连接没有后,如何处理
testOnBorrow  获取连接时,是否测试连接
testOnReturn   返回连接是否测试连接
testWhileIdle   空闲是否测试连接
timeBetweenEvictionRunsMillis 测试连接时间间隔
numTestsPerEvictionRun  空闲时同时测试连接数目
minEvictableIdleTimeMillis  最小可避免空闲时间。

   所有可能产生并发的地方都使用了synchronized进行了串行化。效率一般。实现较为简单

 

Activiti 视频课件 代码 Activiti 视频课件详细讲解 加详细代码 加插件 开发文档 立即下载

相关推荐

使用 Python+PaddleOCR 实现图文识别:从入门到精通

在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等。PaddleOCR 是百度开源的一款强大的 OCR 工具包,它集成了多种先进的算法和模型,能够高效准确地进行图文识别。本文将详细介绍如何使用 PaddleOCR 和 Python 实现图文识别,并给出具体的代码和步骤。

爱搬砖的程序猿 5474

common-pool连接池GenericObjectPool源代码

package org.apache.commons.pool.impl; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.NoSuchEl

luyee2010的专栏 6833

PX4 磁罗盘干扰分析

无人机上的电机电流会干扰无人机上搭载的磁罗盘,PX4官方提供了一些方式,通过分析飞行日志,判断电机是否对磁罗盘有严重影响。

Zecet的博客 3358

common-pools源码分析

背景   前段时间研究了下dbcp的一些源码,发现dbcp对common pools依赖比较严重,基本就是基于pool的扩展接口实现的。所以也就顺便看了下pools的源码。   总体结构   common pools的代码总体结构来说是比较简单的。   先上一个类图:     核心接口类: ObjectPool             对象池 ObjectPool...

agapple 272

从URDF到Gazebo:一个完整的ROS2机械臂仿真项目实战与避坑指南

本文提供了一个完整的ROS2机械臂仿真项目实战指南,详细讲解了从URDF建模、ROS2 Control配置、MoveIt2集成到Gazebo仿真的全流程。文章重点分享了URDF惯性参数设置、Gazebo插件选择、MoveIt2配置修正等关键步骤的避坑经验,帮助开发者快速搭建可用的六轴机械臂仿真环境,实现从静态模型到物理仿真的跨越。

weixin_29279153的博客 275

Y-Branch and a closed y-branch loop

双臂后面的区域,我们将它的双臂使用一个波导进行了连接,使得它本身形成了一个闭合回路,因此,该结构被称作。它们均是用来对经过它们的光束能量进行分割的一种器件。首先,我们知道一点,在光波导层面,今天给大家介绍一下,什么是。

u011699626的博客 630

C3p0的参数

C3p0的参数设置: ComboPooledDataSource和BasicDataSource一样提供了一个用于关闭数据源的close()方法,这样我们就可以保证Spring容器关闭时数据源能够成功释放。  C3P0拥有比DBCP更丰富的配置属性,通过这些属性,可以对数据源

yzh54ak的专栏 2万+

华为OD机试真题2026双机位C卷 Java&Go 实现【用户入网定期复评】

用户开立支付账户,在开户完成后立即对用户进行一次风险模型评级,输出一个评分风险,评分范围1-100,等区间的分为5个等级,1-19为等级1,20-39为等级2,40-59为等级3,60-79为等级4,80-100为等级5,系统每天会任务对全量入网用户进行计算复评时间,输出评分给出新的风险等级。复评规则如下:

MISAYAONE的博客 149

GenericObjectPool源码分析

说实话对这个了解甚少,在拜读大佬的代码时看到的,觉得应该为我所用,就百度了一下相关知识。说实话直接看这个有点抽象,后面会慢慢补充相关使用实践。 apache提供了三种对象池:GenericKeyedObjectPool,SoftReferenceObjectPool和GenericObjectPool,其中GenericObjectPool是我们最常用的对象池,内部实现也最复杂,本文讲解其实现原理。 GenericObjectPool实现了ObjectPool<T>接口,而ObjectPoo

xiaolegeaizy的博客 1088

SAP生产订单技术性完成(TECO)操作指南与实战应用

生产订单技术关闭操作指南主要包括单笔和批量关闭两种方式,通过CO02/COHV事务码完成。

m0_47402127的博客 1932

SI好文翻译:铜箔表面纹理对损耗的影响:一个有效的模型(一)

Paul G. Huray发表在DesignCon2010的提出铜箔表面雪球模型的论文。第一部分说明之前的铜箔表面模型只适用于5GHz以内,超过5GHz后就不再准确。

小孟同学的博客 2172

commons-pool2中GenericKeyedObjectPool应用demo

用commons-pool可以管理一些数据库连接池等东西,也可以结合动态代理实现自己的一些共有业务。 maven依赖: org.apache.commons commons-pool2 2.4.1 junit junit 4.10 MyBean测试对象,对象池存管理该对象: package littlehow.com

littlehow的专栏 8450

MIKE21 教程 3.2 随空间变化的网格文件制作(.dfsu文件制作) 曼宁值网格文件制作

上一节讲解了如何制作时间序列文件。本节讲解如何制作仅随空间变化的文件。 目录 1 数据准备 1.1 基于地形设置 1.2 基于地形水深设置: 2 数据导入 3 数据导出

Hello Word 3941

对象池common-pool2源码分析

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34233421的博客 169

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【BeanValidation】一、springboot项目以注解方式实现后端数据验证(javax.validation.api与hibernate-validator)

1 引言 1.1 场景 最近的这个项目是互联网项目,网络用户需要填写表单信息保存提交。页面输入信息需要进行数据格式校验,从而避免无效数据被保存或者提交。这些检查工作包括必填项检查、数值检查、长度检查、身份证号码、手机号码检查等工作。如果将这些字段校验和业务逻辑混合一起写,则会干扰原有逻辑,而且不容易维护。下面即将要介绍的是后端api对表单数据的验证处理技术。 1.2 名词或技术介绍 (1) JSR...

木子叶的奔跑 7285

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Apache commons-pool2-2.4.2源码学习笔记

1.背景 最近查看了下Apache commons-pool2的源代码commons-pool2-2.4.2,代码不多,大概50个java类左右,阅读源代码的初衷是为了通过不断的学习和总结,升华自己的技术能力,写此博客是为了给自己留下一点笔记,日后能够温故知新。 Apache commons-pool2类库是对象池技术的一种具体实现,它的出现是为了解决频繁...

猿类崛起 1037

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

EF连接SQL SERVER 发布到一台新服务器时报 The underlying provider failed on Open错误

可能的原因有: 1 SQL SERVER数据库文件权限不够,在系统中设置文件读写权限即可(我遇到的问题) 2 SQL SERVER的连接字符错误 转载于:https://www.cnblogs.com/wakilili/p/4504890.html...

weixin_30886233的博客 456

mysql连接超时的问题

使用Hibernate +MySQL数据库开发,链接超时问题: com.mysql.jdbc.CommunicationsException: The last packet successfully received from the server was58129 seconds ago.The last packet sent successfully to the server wa...

善守者 290

SpringBoot集成activiti工作流

SpringBoot集成activiti工作流(模拟请假流程) 链接:https://pan.baidu.com/s/10BT_Zertm1WBBrlrdE-QWQ 提取码:zsq6 学习视频地址见腾讯课堂 : https://ke.qq.com/course/459167 其他代码都是最原始的测试activiti 的api代码,整合springboot的所有代码见下图. 1.pom文件 <dependency> <groupId...

zhangshengqiang168的博客 1万+

apache-common-pool2源码分析

基础概念apache-common-pool2是一个对象池管理框架,任何需要对象池这种概念的都可以利用这个框架来实现,例如redis的客户端jedis和dbcp都是基于common-pool2实现的。本文是common-pool2的源码分析,在讲源码前我先阐述一下基本对象池的基本概念吧。现在java创建一个对象的速度已经很快了,但是对于网络连接的创建还是需要很长的时间的,频繁的创建客户端与服务的连接

山月记 2097

从瀑布到流水线:DevOps 入门与 GitLab + Jenkins + Docker 落地实践

先看清软件开发生命周期(SDLC)的全貌,再对比瀑布模型与敏捷开发,随后进入持续集成与 CI/CD 的机制内核;最后落到实操——在 GitLab、Jenkins、Docker 组成的四机实验环境里,走完源码托管、自动化构建、镜像封装与远程部署,直到参数化构建与版本回滚。概念与命令并重,既是入门地图,也是操作手册。

年轻的时候很穷,经过我多年的努力,终于不再年轻。 286

训练数据示例

针对“规格书生成测试用例脚本”的任务,在 LLaMA-Factory 中使用即可。关键是把“规格书内容”放进input字段,把“期望的脚本输出”放进output字段。

liuxs2009的专栏 59

DNS 不是把域名翻译成 IP:递归解析、TTL 缓存、CNAME 与报文排错实战

本文通过离线Python实验,拆解DNS递归解析、缓存机制与报文结构,揭示“DNS不是全局映射表”的本质。重点解析递归器角色、TTL衰减、CNAME链处理、负缓存隔离及修改记录延迟生效等核心问题,结合实战排错案例,阐明缓存层级、事务匹配、截断处理与安全边界,强调从应用到权威的逐层排查逻辑,实现可复现、可验证的DNS教学系统。

此人很懒,什么都没有写~~ 349

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 133

【LTE L3 笔记 09】LTE物理信道-PRACH

课程来源:B站《【2022】华为HCIA-LTE无线工程师认证学习中级视频》笔记为个人整理,含课件截图,仅供学习交流。

lyouhuan的博客 190

密码存储不是 MD5 加盐:PBKDF2、scrypt、参数升级与安全验证实战

本文通过实战演示密码存储的正确做法:摒弃MD5加盐,采用PBKDF2与scrypt等高成本密钥派生函数,结合随机盐、版本化记录与严格解析,确保离线破解成本可控。模块实现安全验证、参数校验、透明升级与统一错误处理,强调算法选择需兼顾安全性与可维护性,提供教学级密码存储方案,助力构建可迁移、可审计的认证边界。

此人很懒,什么都没有写~~ 236
上一篇: Struct2的最大改进
下一篇: 告别电信领域,来到计算机行业
element1999
博客等级 码龄22年 1粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值