Java池化思想之数据库连接池
1. 池化思想
字符串常量池,数据库连接池,线程池
=> 提高效率, 不反复创建对象
没搞明白-.-!
数据库连接池
数据库创建连接和释放都是重量级操作,耗费系统资源,频繁操作会大大降低系统的效率
主流的连接池 C3p0
package com.kcl;import com.mchange.v2.c3p0.ComboPooledDataSource;import java.lang.reflect.Field;
import java.sql.Connection;/*** 项目名: c3p0* 包名: com.kcl* 文件名 Test* 创建者* 创建时间: 2022/10/8 21:46* 描述 ${TODO}*/
public class Test {public static void main(String[] args) throws Exception{//ComboPooledDataSource是 DataSource的实现类ComboPooledDataSource dataSource = new ComboPooledDataSource();dataSource.setDriverClass("com.mysql.cj.jdbc.Driver");dataSource.setUser("root");dataSource.setPassword("kclkd2013.");dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mysql?useSSL=false");dataSource.setInitialPoolSize(1); // 初始连接数dataSource.setMaxPoolSize(1); // 最大连接数// 获取连接对象Connection connection = dataSource.getConnection();// NewProxyConnection 是 Connection的实现// NewProxyConnection 代理对象包装真正的连接对象System.out.println(connection.getClass().getName()); //com.mchange.v2.c3p0.impl.NewProxyConnectionObject o = getInner(connection);// 真正的连接对象System.out.println(o.getClass().getName()); // com.mysql.cj.jdbc.ConnectionImplObject inner = getInner(connection);//connection.close();// 是否是同一个连接对象?Connection connection2 = dataSource.getConnection();System.out.println(connection == connection2); // false// 是通过代理对象连接的,but真正的连接对象Inner是同一个Object inner2 = getInner(connection2);System.out.println(inner.getClass().getName());System.out.println(inner2.getClass().getName());System.out.println(inner == inner2);}public static Object getInner(Object connection) throws NoSuchFieldException, IllegalAccessException {Object result = null;Field field = null;field = connection.getClass().getDeclaredField("inner");field.setAccessible(true);Object o = field.get(connection);return o;}
}
Java池化思想之数据库连接池相关推荐
- Java中的池化思想
池化思想 一:背景介绍 二:什么是池化思想 三:池化的优势利弊 3.1 优点 3.2 缺点 四:编程中池化思想的体现 五:具体示例 5.1 数据库连接池示例 5.1.2 ConnectionPool类 ...
- spring 数据库 链接db2_Druid,Java语言中最好的数据库连接池
Druid是Java语言中最好的数据库连接池,这话不是我说的,是Druid官方文档自己这样描述的,这是何等的自信! 连接池的作用,跟线程池的作用大同小异,都是为了减少频繁的创建销毁连接IO,提升性能. ...
- java jdbc init_Java 的JDBC 数据库连接池实现方法
虽然 J2EE 程序员一般都有现成的应用服务器所带的JDBC 数据库连接池,不过对于开发一般的 Java Application . Applet 或者 JSP.velocity 时,我们可用的JDB ...
- mysql配置数据库连接池_三种数据库连接池的配置
三种数据库连接池的配置及使用(For JDBC) 连接池的优缺点 优点 使用连接池的最主要的优点是性能.创建一个新的数据库连接所耗费的时间主要取决于网络的速 度以及应用程序和数据库服务器的 ( 网络 ...
- 连接池及Druid(德鲁伊) 数据库连接池
连接池及Druid(德鲁伊) 数据库连接池 一.数据库连接池 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个:释放空闲时间超过最大空闲时间 ...
- 39_上下采样、MaxPool2d、AvgPool2d、ReLU案例、二维最大池化层和平均池化层、填充和步幅、多通道
1.34.PyTorch Down/up sample (pytorch上下采样) 1.34.1. 首先介绍下采样 1.34.1.1. MaxPool2d案例 1.34.1.2. AvgPool2d案 ...
- 卷积神经网络——池化层学习——最大池化
池化层(Pooling layers) 除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性,我们来看一下. 先举一个池化层的例子,然后我们再讨论池化层的必要 ...
- 池化层:最大池化MaxPool、平均池化AvgPool、自适应池化AdaptiveMaxPool区别--基于pytorch框架
文章目录 MaxPool2d最大池化 AvgPool2d平均池化 AdaptiveAvgPool2d自适应平均池化 池化操作的一个重要的目的就是对卷积后得到的特征进行进一步处理,池化层可以起到对数据进 ...
- 最大池化层和平均池化层
参考链接: https://blog.csdn.net/junmuzi/article/details/53206600 https://blog.csdn.net/qq_21190081/artic ...
最新文章
- AI让硬件说话,这就是未来物联网
- 5G时代来临,高通如何让AI触手可及?
- RxJava 将一组数据每隔一定时间发送出来
- vue 数据更新不及时_陈词懒调的《未来天王》正式完结,再也不用担心她更新不及时了!...
- 【转载】恼人的函数指针(一)
- 武未转变服务器tp,未转变者怎么tp别人 | 手游网游页游攻略大全
- shape的xml用法
- activiti idea 请假流程_IDEA创建Activiti工作流开发
- 怎么取消百度右侧栏的搜索热点
- 关于计算机图形学的学习
- Matlab学习随笔 ——bin文件读写
- geoserver三维_基于geoserver的伪三维地图制作
- 暴力法——猴子分桃-源代码 c语言实现
- Python学习:round函数,截取小数位数
- 【May Be DNK】JSON.parse() and JSON.stringify()的两个实用技巧
- 苹果 M1“痛失”Windows 11!
- matlab之计算排列组合
- 2022高级Android笔试总结,记录下我磕磕碰碰的三个月找工作经历
- 工程师和他媳妇儿好玩的对话1——20160704
- 学习了罗昭锋的文献管理与信息分析的感受
热门文章
- DataFound 2019用户画像竞赛分析
- mac 打开html文件乱码,mac打开txt文件乱码如何处理方法教程
- DorisDB使用笔记(一)
- 记录:解决Invalid Host header 服务器域名无法访问问题【亲测有效】
- guestbook.php注入,Destoon 6.0 guestbook.php 通用SQL注入漏洞
- kali安装图文教程
- Java强制类型转换异常
- 创业公司项目管理中必踩的那些坑 | TAPD经验谈
- r5 3600和r5 3600x的区别 选哪个
- 零编码制作报表真的可能吗?