Commons Pool

对象池微性能测试对比

风格不统一 提交于 2021-01-06 01:28:28
源码: https://github.com/Chris2018998/BeeOP/blob/main/doc/temp/benchmark.rar 测试说明 说明项 参数值 PC I5-4210M(2.6hz),12G内存 JDK JAVA8_64 Pool设置 初始0,最大32 Pool commons-pool2-2.9.0 ,beeop-0.4 来源: oschina 链接: https://my.oschina.net/u/3918073/blog/4880867

实例讲解Springboot以Repository方式整合Redis

♀尐吖头ヾ 提交于 2020-04-23 03:23:36
1 简介 Redis 是高性能的 NoSQL 数据库,经常作为缓存流行于各大互联网架构中。本文将介绍如何在 Springboot 中整合 Spring Data Redis ,使用 Repository 的方式操作。 代码结构如下: 2 整合过程 2.1 安装Redis数据库 为了节省时间,就直接通过 Docker 来安装了,可以参考文章: Docker安装Redis并介绍漂亮的可视化客户端进行操作 ,可以快速安装并使用客户端进行查看和操作。 2.2 引入相关依赖 我们引入 Springboot Web 的依赖,以启动REST服务。还需要引入 Spring Data Redis 相关的依赖。最后,还需要 commons-pool2 ,不然会因为缺少类而无法启动。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency>

spring项目配置redis

假如想象 提交于 2019-12-27 17:49:57
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在spring中集成lettuce需要引入三个依赖,spring-data-redis、lettuce和commons-pool2,引入时需要注意版本的关系,该文配置是在springframework5.1.8RELEASE 版本上配置的,其他版本的请自行修改上面三个依赖的版本号! pom配置 .... <org.springframework.version>5.1.8.RELEASE</org.springframework.version> <lettuce>5.1.6.RELEASE</lettuce> <spring.data.redis>2.1.9.RELEASE</spring.data.redis> <org.apache.commons.pool2>2.8.0</org.apache.commons.pool2> </properties> <dependencies> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>${spring.data.redis}</version> </dependency>

Redis学习笔记(四) Redis的java客户端jedis

落爺英雄遲暮 提交于 2019-12-25 10:04:24
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Jedis所需要的jar包 Commons-pool-1.6.jar Jedis-2.1.0.jar 用windows连接虚拟机的Redis的注意事项 禁用Linux的防火墙 redis.conf中注释掉bind 127.0.0.1 ,然后 protect-mode no Jedis测试连通性 /** * @author Sun.Mr * @create 2019-12-24 17:31 */ public class Test { public static void main(String[] args) { Jedis jedis = new Jedis("47.105.154.78",6379); String result =jedis.ping(); System.out.println(result); } } 测试部分API public static void main(String[] args) { Jedis jedis = new Jedis("47.105.154.78",6379); String result =jedis.ping(); //keys (*) Set<String> keys = jedis.keys("*"); for (Iterator iterator =

commons-pool对象池相关分析

妖精的绣舞 提交于 2019-12-17 20:43:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 源代码下载 官网 Git 下载: $ git clone https://git-wip-us.apache.org/repos/asf/commons-pool.git 源码包下载src.zip 核心的类及关系如下图: ObjectPool ObjectPool是对象池的接口,定义了非常简单的接口,仅仅需要通过addObject添加对象borrowObject可以获取对象,returnObject归还对象,invalidateObject让对象失效。 实例如下: public class ObjectPoolTest { public static void main(String[] args) throws Exception { ObjectPool pool = new GenericObjectPool(); PoolableObjectFactory factory = new PoolableObjectFactory() { @Override public Object makeObject() throws Exception { return new Object(); } @Override public void destroyObject(Object obj) throws

Thrift RPC实战(五) thrift连接池

非 Y 不嫁゛ 提交于 2019-12-17 20:42:32
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Thrift本身没有提供连接池,我们可以用Apache Commons Pool2来实现一个 一、定义对象工厂 BasePooledObjectFactory<T> extends BaseObject implements PooledObjectFactory<T> public class TProtocolFactory extends BasePooledObjectFactory<TProtocol> { private String host; private int port; private boolean keepAlive =true; public TProtocolFactory(String host, int port, boolean keepAlive) { this.host = host; this.port = port; this.keepAlive = keepAlive; } /** * 创建对象 * @return * @throws Exception */ @Override public TProtocol create() throws Exception { TSocket socket = new TSocket(host,port); //使用

池技术之common-pool2

自古美人都是妖i 提交于 2019-12-17 20:27:52
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 是什么 apache commons-pool 是apache基金会的一个开源对象池组件,我们常用的数据库连接池dpcp和redis的java客户端jedis都使用commons-pool来管理连接 优化对象的创建,和设计模式中的享元模式思路一样 类解析 PooledObject 池化后的对象 ObjectPool 对象池, PooledObjectFactory 池对象工厂 GenericObjectPool 实现了对对象池的管理,是一个基本的对象池实现 borrowObject 从对象池中获取一个对象 returnObject 对象使用完之后,归还到对象池 PooledObjectFactory 根据自己的业务创建和管理要对象池化的对象 makeObject 创建对象 destroyObject 销毁对象 对象的空闲时间(idle)超时 使用完被检测到对象已经无效时 当调用这个方法之后,对象的生命周期必须结束。如果是对象是线程,线程必须已结束,如果是socket,socket必须已close,如果是文件操作,文件数据必须已flush,且文件正常关闭. validateObject 检测一个对象是否有效,无效会被销毁 activateObject 激活一个对象或者说启动对象的某些操作 检测空闲对象的时候