连接池

NIO socket 的简单连接池

元气小坏坏 提交于 2020-03-16 11:52:13
某厂面试归来,发现自己落伍了!>>> 在最近的项目中,需要写一个socket 与 底层服务器通信的模块。在设计中,请求对象被封装 xxxRequest,消息返回被封装为 xxxResponse. 由于socket的编程开发经验少,一开始我使用了短连接的方式,每个请求建立一个socket通信,由于每个socket只进行一次读写,这大大浪费了 系统资源。 于是考虑使用长连接,系统公用一个client socket 并对send 操作进行加锁,结果在处理并发的时候,各种慢,各种等待。没有办法,考虑使用两节池,预先创建多个 client socket 放入 连接池,需要发送请求时从连接池获取一个socket,完成请求时放入连接池中。下面是一个简单的实现。 private static String IP=GlobalNames.industryIP; private static int PORT =Integer.parseInt(GlobalNames.industryPort); private static int CONNECTION_POOL_SIZE = 10; private static NIOConnectionPool self = null; private Hashtable<Integer, SocketChannel> socketPool = null; /

数据库连接池原理

偶尔善良 提交于 2020-03-15 09:32:31
DBCP连接池介绍 ----------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4。 DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 JDBC 3。 DBCP 1.4 版本需要运行于 JDK 1.6 ,支持 JDBC 4。 1.3和1.4基于同一套源代码,含有所有的bug修复和新特性。因此在选择DBCP版本的时候,要看你用的是什么JDK版本。 DBCP1.2版本性能一般,比c3p0差挺多。DBCP1.4和1.3,配合(依赖)commons pool 1.6的jar包,各方面功能、性能推进到新的高峰。相对1.2版本提高不少。超越(或相当)了c3p0.建议使用DBCP1.4或1.3 + commons pool 1.6 Tomcat7 中保留DBCP连接池,以兼容已有应用。并提供了新的Tomcat JDBC pool作为DBCP的可选替代。新出的Tomcat JDBC pool,据说比DBCP 1.4要好,未接触,也不在本文讨论范围内。 DBCP连接池配置参数讲解 ----------------------------- 一、Apache官方DBCP文档给出的配置示例: 可参见:http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto

jdbc的连接池

你。 提交于 2020-03-15 09:30:28
dbcp的中文文档帮助 http://blog.csdn.net/recall03/article/details/19430379 dbcp : 通过       // 新建一个基础数据源 BasicDataSource basicDataSource = new BasicDataSource();     basicDataSource.连接数据库的信息,保存    然后     // 新建一个数据库链接工厂 进行生产 基于连接数据库的这个产品去生产 ConnectionFactory = new DataSourceConnectionFactory(basicDataSource); 数据库的连接就改为 工厂.属性    conn = ConnectionFactory.createConnection(); c3p0:    c3p0 = new ComboPooledDataSource();    数据库的连接就改为 conn = c3p0.getConnection(); 参数 描述 username 传递给JDBC驱动的用于建立连接的用户名 password 传递给JDBC驱动的用于建立连接的密码 url 传递给JDBC驱动的用于建立连接的URL driverClassName 使用的JDBC驱动的完整有效的java 类名

SpringBoot 使用Hikaricp连接池

老子叫甜甜 提交于 2020-03-13 11:36:19
1.添加pom.xml依赖 如果是SpringBoot2.0,那么默认的连接池就是Hikaricp,不需要配置 其他的,如果继承 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> </parent> 直接添加Hikaricp包就可以 <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>3.1.0</version> </dependency> 反之使用jdbc包的要去除掉tomcat的连接配置 <!-- JDBC连接数据库,因为要用HikariCP,所以需要将SpringBoot中的tomcat-jdbc排除 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <exclusions> <exclusion> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc<

hikari连接池属性详解

萝らか妹 提交于 2020-03-13 00:04:24
一、主要配置 1、dataSourceClassName 这是DataSourceJDBC驱动程序提供的类的名称。请查阅您的特定JDBC驱动程序的文档以获取此类名称,或参阅下表。注XA数据源不受支持。XA需要像bitronix这样的真正的事务管理器 。请注意,如果您正在使用jdbcUrl“旧式”基于DriverManager的JDBC驱动程序配置,则不需要此属性 。 默认值:无 2、jdbcUrl 该属性指示HikariCP使用“基于DriverManager的”配置。我们认为基于DataSource的配置(上图)由于各种原因(参见下文)是优越的,但对于许多部署来说,几乎没有显着差异。 在“旧”驱动程序中使用此属性时,您可能还需要设置该 driverClassName属性,但不要先尝试。 请注意,如果使用此属性,您仍然可以使用DataSource属性来配置您的驱动程序,实际上建议您使用URL本身中指定的驱动程序参数。 默认值:无 3、username 此属性设置从基础驱动程序获取连接时使用的默认身份验证用户名。请注意,对于DataSources,这通过调用DataSource.getConnection( username , password)基础DataSource 以非常确定的方式工作。但是,对于基于驱动程序的配置,每个驱动程序都不同。在基于驱动程序的情况下

Java和spring分别连接Redis单机版与集群版

守給你的承諾、 提交于 2020-03-11 13:00:54
Java和spring分别连接Redis单机版与集群版 一、Java连接Redis 1.1 Java连接Redis单机版 1.2 Java连接Redis集群 二、spring存放Redis连接对象 2.1 接口封装 2.2 定义实现类 2.3 配置spring容易,管理jedis对象 2.4 测试 三、添加缓存 四、缓存同步 一、Java连接Redis 1.1 Java连接Redis单机版 主要包括两种方法: 第一种是每次需要是开启连接,使用完关闭连接。频繁的开启关闭浪费内存 使用连接池,从连接池中获取对象,使用完毕重新放回连接池 第一种: @Test public void testJedis ( ) throws Exception { //创建一个连接jedis对象,参数:host、port Jedis jedis = new Jedis ( "192.168.12.128" , 6379 ) ; //使用jedis操作Redis,所有jedis的命令都对应一个方法 jedis . set ( "test123" , "my jedis test" ) ; String string = jedis . get ( "test123" ) ; System . out . println ( string ) ; //关闭连接 jedis . close ( ) ; }

Druid详细配置信息

天涯浪子 提交于 2020-03-09 07:57:47
druid的配置项如下 配置 缺省值 说明 name 配置这个属性的意义在于,如果存在多个数据源,监控的时候 可以通过名字来区分开来。如果没有配置,将会生成一个名字, 格式是:"DataSource-" + System.identityHashCode(this) jdbcUrl 连接数据库的url,不同数据库不一样。例如: mysql : jdbc:mysql://10.20.153.104:3306/druid2 oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto username 连接数据库的用户名 password 连接数据库的密码。如果你不希望密码直接写在配置文件中, 可以使用ConfigFilter。详细看这里: https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter driverClassName 根据url自动识别 这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName initialSize 0 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 maxActive 8 最大连接池数量 maxIdle 8 已经不再使用

Data Source与数据库连接池简介 JDBC简介(八)

爷,独闯天下 提交于 2020-03-09 07:49:12
DataSource是作为DriverManager的替代品而推出的,DataSource 对象是获取连接的首选方法。 起源 为何放弃DriverManager DriverManager负责管理驱动程序,并且使用已注册的驱动程序进行连接。 //1、注册驱动 Class.forName("com.mysql.jdbc.Driver"); //数据库连接所需参数 String user = "root"; String password = "123456"; String url = "jdbc:mysql://localhost:3306/sampledb?useUnicode=true&characterEncoding=utf-8"; //2、获取连接对象 Connection conn = DriverManager.getConnection(url, user, password); 使用DriverManager的一般形式如上面代码所示 直接使用DriverManager的这种形式,通常需要将驱动程序硬编码到项目中(JDBC4.0后可以自动注册驱动程序) 而且最重要的是DriverManager的getConnection方法获取的连接,是建立与数据库的连接,是建立与数据库的连接,是建立与数据库的连接。 但是建立与数据库的连接是一项较耗资源的工作

Java DataSource

痴心易碎 提交于 2020-03-09 07:48:34
ojdbc的jar包 在使用连接oracle数据库的时候尽量使用服务端 E:\app\80953\product\11.2.0\dbhome_1\jdbc\lib 下的jar包,否则可能会出错! 在JDK 1.6 中的注释 public interface DataSourceextends CommonDataSource, Wrapper 该工厂用于提供到此 DataSource 对象所表示的物理数据源的连接。作为 DriverManager 工具的替代项,DataSource 对象是获取连接的首选方法。实现 DataSource 接口的对象通常在基于 JavaTM Naming and Directory Interface (JNDI) API 的命名服务中注册。 DataSource 接口由驱动程序供应商实现。共有三种类型的实现: 基本实现 - 生成标准的 Connection 对象 连接池实现 - 生成自动参与连接池的 Connection 对象。此实现与中间层连接池管理器一起使用。 分布式事务实现 - 生成一个 Connection 对象,该对象可用于分布式事务,大多数情况下总是参与连接池。此实现与中间层事务管理器一起使用,大多数情况下总是与连接池管理器一起使用。 DataSource 对象的属性在必要时可以修改。例如,如果将数据源移动到另一个服务器

DataSource是什么

感情迁移 提交于 2020-03-09 07:47:27
public interface DataSource 该工厂用于提供到此 DataSource 对象表示的物理数据源的连接。作为 DriverManager( 二者区别: http://tobylxy.iteye.com/blog/1673421 http://jingyan.baidu.com/article/73c3ce280545fae50243d955.html http://www.cnblogs.com/taoweiji/archive/2012/12/11/2812852.html) 设施的替代项,DataSource 对象 是获取连接的首选方法。实现 DataSource 接口的对象通常在基 于 JavaTM Naming and Directory Interface (JNDI) API 的命名服务中注册。 DataSource 接口由驱动程序供应商实现。共有三种类型的实现: 基本实现 - 生成标准 Connection 对象 连接池实现 - 生成自动参与连接池的 Connection 对象。此实现与中间层连接池管理器一起使用。 分布式事务实现 - 生成一个 Connection 对象,该对象可用于分布式事务,并且几乎始终参与连接池。此实现与中间层事务管理器一起使用,并且几乎始终与连接池管理器一起使用。 DataSource 对象的属性在需要时可以修改。例如