数据库连接池技术 之 DBCP

DBCP的工作原理是,程序首先会初始化相应的数据库连接池,以供程序访问,当某个操作需要访问数据库时,程序会首先在连接池中取得空闲连接,如没有空闲连接在创建,用完之后归还连接池,这样达到了连接的重利用,不用频繁的创建连接和销毁,从而优化程序。

DBCP常见属性有:

  • driver:数据库驱动,如 com.mysql.jdbc.Driver

  • url:数据库连接,如 jdbc:mysql://localhost:3306/testDB

  • username:数据库用户名,如 root

  • password:数据库用户名口令,如 root

  • initsize:初始化连接池大小

  • minidle:最小空闲连接

  • maxidle:最大空闲连接。以maxidle=15为例,它表示的在并发的情况下,连接池就必须从数据库中获取 15 个连接来供应程序使用,当应用连接关闭之后,由于 maxidle=10 并不是所有的连接都归还给了数据库,将会有 10 连接保存在连接池中,这时的状态就是空闲。

  • maxactive:最大连接, 表示在并发情况下最大能从数据连接池中获取的连接数

  • maxwait:最大等待时间

  • removeabandoned:是否自动回收超时连接, boolean 类型( true/false )

示例:演示DBCP数据库连接池的用法。


第一步:创建项目在其中导入mysql的驱动以及DBCP相关的jar文件,然后在项目类路径下创建一个名为dbcpcfg.properties的DBCP配置文件,具体信息如下:

driverClassName=com.mysql.cj.jdbc.Driver

url=jdbc:mysql://localhost:3306/book?useSSL=true&serverTimezone=UTC&characterEncoding=utf8

username=root

password=root

initialSize=4

maxActive=6

maxIdle=5

minIdle=2

maxWait=6000

第二步:创建DBCP工具类,具体代码如下:

public class DBUtil {

private static DataSource dataSource;

private DBUtils

真题解析、进阶学习笔记、最新讲解视频、实战项目源码、学习路线大纲
详情关注公中号【编程进阶路】

() {

}

static{

try {

InputStream in = DBCPUtil.class.getClassLoader()

.getResourceAsStream(“dbcpcfg.properties”);//读取配置文件,初始化数据源

Properties props = new Properties();

props.load(in);

dataSource = BasicDataSourceFactory.createDataSource(props);

} catch (Exception e) {

throw new ExceptionInInitializerError(e);

}

}

public static DataSource getDataSource(){

return dataSource;

}

public static Connection getConnection(){

try {

return dataSource.getConnection();

} catch (SQLException e) {

throw new RuntimeException(“get database connection failed”);

}

}

}

HTTP

  • HTTP 报文结构是怎样的?

  • HTTP有哪些请求方法?

  • GET 和 POST 有什么区别?

  • 如何理解 URI?

  • 如何理解 HTTP 状态码?

  • 简要概括一下 HTTP 的特点?HTTP 有哪些缺点?

  • 对 Accept 系列字段了解多少?

  • 对于定长和不定长的数据,HTTP 是怎么传输的?

  • HTTP 如何处理大文件的传输?

  • HTTP 中如何处理表单数据的提交?

  • HTTP1.1 如何解决 HTTP 的队头阻塞问题?

  • 对 Cookie 了解多少?

  • 如何理解 HTTP 代理?

  • 如何理解 HTTP 缓存及缓存代理?

  • 为什么产生代理缓存?

  • 源服务器的缓存控制

  • 客户端的缓存控制

  • 什么是跨域?浏览器如何拦截响应?如何解决?

  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值