连接池Java导包
目录
一、Java导包
二、 数据库连接池
1. 概述
2. 常见参数
3. 常见连接池
4. Druid连接池(重点)
核心功能:
使用方法:
导入依赖
配置连接池:
代码配置:
配置文件:
获取连接:
归还连接:
工具类封装:
5. 总结
一、Java导包
以将下述jar包导进idea中为例(其中我用的idea版本是2017版本的,但是都大差不差)
1. 首先创建一个普通的Java项目(并在src下创一个package包承载jar包):
将jar包从文件夹中拖进来:

可以看到这里拖进来后其实只是一个空壳,本质上这个包里的所有东西并没有得到释放。
2.打开文件中的项目结构

得到这个界面(选择库-->Java):

3.找到项目所在位置后打开jar包

接着一直选择OK直至 :

随后点击右下角的Apply应用,随后点OK关闭界面即可。
4. 得到结果
此时这里的jar包就可以打开了,不再是空壳了。

二、 数据库连接池
1. 概述
-
作用:预先创建并管理数据库连接,避免频繁创建和销毁连接,提升性能。
-
优势:
-
节省资源:连接复用,减少创建和销毁的开销。
-
提升性能:直接从池中获取连接,减少等待时间。
-
2. 常见参数
| 参数名称 | 含义 | 默认值 | 作用 | 示例 |
|---|---|---|---|---|
| 初始大小(Initial Size) | 启动时初始化的连接数 | 0 | 提前创建连接,减少首次获取连接的等待时间 | initialSize=5 |
| 最小空闲连接数(Min Idle) | 池中保持的最小空闲连接数 | 0 | 确保池中始终有一定数量的空闲连接,避免频繁创建新连接 | minIdle=3 |
| 最大空闲连接数(Max Idle) | 池中允许的最大空闲连接数 | 8 | 限制空闲连接数量,避免资源浪费 | maxIdle=10 |
| 最大连接数(Max Active) | 池中允许的最大连接数 | 8 | 限制并发连接数,防止数据库服务器过载 | maxActive=20 |
| 最大等待时间(Max Wait) | 获取连接的最大等待时间(单位:毫秒) | -1(无限等待) | 设置获取连接的超时时间,避免线程长时间阻塞 | maxWait=3000 |
其他常用参数:
| 参数名称 | 含义 | 默认值 | 示例 |
|---|---|---|---|
| 连接测试周期(Time Between Eviction Runs) | 检测连接是否可用的周期(单位:毫秒) | 60000(60秒) | timeBetweenEvictionRunsMillis=30000 |
| 最小生存时间(Min Evictable Idle Time) | 连接在池中空闲的最小时间,超过此时间会被检测并回收 | 30000(30秒) | minEvictableIdleTimeMillis=60000 |
| 连接测试SQL(Validation Query) | 用于检测连接是否可用的SQL语句 | 根据数据库类型自动选择(MySQL为SELECT 1) | validationQuery=SELECT 1 |
3. 常见连接池
-
DBCP:Apache开源连接池,简单易用。
-
C3P0:开源连接池,功能较为丰富。
-
Druid:阿里巴巴开源连接池,性能优越,功能强大。
4. Druid连接池(重点)
核心功能:
-
高效连接池:提供高性能的数据库连接管理。
-
SQL监控:内置
StatFilter插件,可监控SQL执行性能。 -
密码加密:支持
PasswordCallback,避免明文存储密码。 -
日志记录:支持多种日志框架(如Log4j),记录SQL执行情况。
-
扩展性:通过
Filter机制,可扩展JDBC功能。
使用方法:
导入依赖
添加Druid的jar包。
配置连接池:
代码配置:
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///your_database");
dataSource.setUsername("your_username");
dataSource.setPassword("your_password");
dataSource.setInitialSize(5); // 初始连接数
dataSource.setMaxActive(10); // 最大连接数
dataSource.setMaxWait(2000); // 最大等待时间(毫秒)
配置文件:
创建druid.properties文件,配置如下:
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///your_database
username=your_username
password=your_password
initialSize=5
maxActive=10
maxWait=2000
获取连接:
Connection conn = dataSource.getConnection();
归还连接:
conn.close(); // 实际上是归还到连接池
工具类封装:
创建工具类JdbcUtils,简化连接获取和资源关闭:
package cn.tx.utils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.sql.*;
import java.util.Properties;public class JdbcUtils {private static DataSource dataSource;static {Properties props = new Properties();try (InputStream in = JdbcUtils.class.getResourceAsStream("/druid.properties")) {props.load(in);dataSource = DruidDataSourceFactory.createDataSource(props);} catch (Exception e) {e.printStackTrace();}}public static Connection getConnection() throws SQLException {return dataSource.getConnection();}public static void close(Connection conn, Statement stmt, ResultSet rs) {try {if (rs != null) rs.close();if (stmt != null) stmt.close();if (conn != null) conn.close(); // 归还连接} catch (SQLException e) {e.printStackTrace();}}
}
5. 总结
-
连接池的作用:提升性能、节省资源。
-
Druid的优势:功能强大、性能优越、支持监控和加密。
-
使用方式:通过代码或配置文件配置连接池,使用工具类简化操作。
相关文章:
连接池Java导包
目录 一、Java导包 二、 数据库连接池 1. 概述 2. 常见参数 3. 常见连接池 4. Druid连接池(重点) 核心功能: 使用方法: 导入依赖 配置连接池: 代码配置: 配置文件: 获取连接&#…...
一些耳朵起茧子的名词解释
1 web应用 1.1 web应用的概念 Web应用(Web Application) 是一种通过浏览器访问的软件程序,它运行在服务器上,用户通过网络(如互联网或内网)与它进行交互。与传统网站(主要提供静态内容&#x…...
HBuilderX中,VUE生成随机数字,vue调用随机数函数
Vue 中可以使用JavaScript的Math.random() 函数生成随机数,它会返回 0 到 1 之间的浮点数, 如果需要0到1000之前的随机数,可以对生成的随机数乘以1000,再用js的向下取整函数Math.floor() 。 let randNum Math.random(); // 生成…...
C#发送邮件
基础调用类: public class EmailHelper{/// <summary>/// 发件人名称/// </summary>public string MailName { get; set; }/// <summary>/// 收件人/// </summary>public string MailTo { get; set; }/// <summary>/// 密送/// <…...
2025-2-19学习笔记 : this关键字,constructor结构体,class类
1、This关键字 在 JavaScript 中,this 是一个关键字,其指向取决于函数的调用方式。理解 this 的指向对于编写正确的代码至关重要。以下是 this 在不同情况下的指向规则: 1. 全局函数调用 当函数在全局作用域中被调用时,this 指向…...
避坑:过早的文件结束符(EOF):解决“git clone龙蜥OS源码失败”的失败过程
避坑:过早的文件结束符(EOF):解决“git clone龙蜥OS源码失败”的失败过程 安装Anolis OS 8.9 下载AnolisOS-8.9-x86_64-dvd.iso并安装。 使用uname -a查看内核版本为5.10.134-18.an8.x86_64。 [rootlocalhost cloud-kernel]# c…...
【Quest开发】全身跟踪
软件:Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72 硬件:Meta Quest3 最终效果:能像meta的操作室沉浸场景一样根据头盔移动来推断用户姿势,实现走路、蹲下、手势匹配等功能 需要借助UnityMovement这个包 GitHub …...
通过BingAPI爬取Bing半个月内壁纸
通过BingAPI爬取Bing半个月内壁纸 一、前言二、爬虫代码三、代码说明 一、前言 爬取Bing搜索网站首页壁纸的方式主要有两种,第一种为间接爬取,即并不直接对Bing网站发起请求,而是对那些收集汇总了Bing壁纸的网站发起请求,爬取图片…...
Linux升级Anacodna并配置jupyterLab
在使用 Anaconda 的过程中,随着项目和需求的发展,可能需要升级 Anaconda 的 Base 环境中的 Python 版本。本文将详细介绍如何安全地进行升级,包括步骤、代码示例与最终流程图。 升级 Python 一、环境准备 在进行任何升级之前,建…...
ctfshow web入门 web11-web24
web11 web12 进来浏览网站,底部有一串数字,根据提示可能有用,访问robots.txt,发现禁止访问/admin/,进去看看发现需要输入用户名和密码,刚想爆破就猜对了,用户名是admin,密码是页面下…...
Windows 环境下配置多个不同版本的 Maven
在实际开发中,不同的项目可能需要使用不同版本的 Maven。例如,老项目可能依赖于 Maven 3.3,而新项目可能需要 Maven 3.8+ 才能正常运行。因此,在 Windows 下配置多个 Maven 版本并能方便地切换是非常必要的 1. 下载并安装多个 Maven 版本 1.1 下载 Maven 访问 Apache Mav…...
web入侵实战分析-常见web攻击类应急处置实验1
场景说明: 某天运维人员发现在/opt/tomcat8/webapps/test/目录下,多出了一个index_bak.jsp这个文件, 并告诉你如下信息 操作系统:ubuntu-16.04业务:测试站点中间件:tomcat开放端口:22&#x…...
适配器模式 Adapter Pattern
https://en.wikipedia.org/wiki/Adapter_pattern https://www.baeldung.com/java-adapter-pattern 适配器模式(也称为包装器「wrapper」,与装饰器模式「decorator pattern」共享的另一种命名),它允许将现有类的接口用作另一个接…...
Android 动态加入Activity 时 manifest 注册报错解决。使用manifestPlaceholders 占位
需求如下: 项目 测试demo 有多个渠道,部分渠道包含支付功能,在主测试代码外,需要一个单独 Activity 调用测试代码。 MainActivityPayActivity渠道A包含不包含渠道B包含包含 因为支付功能需要引入对应的 moudule,因此…...
芝加哥学派(Chicago School):金融与经济学的创新力量(中英双语)
芝加哥学派:金融与经济学的创新力量 在经济学和金融学的历史上,有一个学派的影响力不容忽视,那就是芝加哥学派(Chicago School)。芝加哥学派不仅在学术界广受推崇,也深刻影响了全球的经济政策和金融市场。…...
3分钟了解内外网文件传输:常见方法、注意事项有哪些?
内外网文件传输不仅是企业日常运营的基础设施,更是支持业务增长、创新和合规的关键工具。通过高效、安全的文件传输,企业能够更好地应对全球化协作、远程办公和数据安全等挑战,从而在竞争激烈的市场中保持领先地位。 一、内外网文件传输的常…...
Python学习心得常用的内置函数
常用的内置函数: 1.数据类型转换函数: 描述说明 描述说明 bool(obj) 获取指定对象 obj 的布尔值 str(obj) 将指定对象 obj 转成字符串类型 int(x) 将 x 转成 int 类型 float(x) 将 x 转成 float 类型 list(sequence) 将序列转成列表类型 tu…...
VMware Workstation16安装Centos7以及静态IP设置
配置虚拟机操作系统 1.创建新的虚拟机 -> 自定义配置,下一步 2. 选择虚拟机硬件兼容性 -> 默认,下一步 3.安装客户机操作系统 -> 稍后安装操作系统,下一步 4.选择客户机操作系统 -> LinuxCentOS7 64 位,下一步 5.命名…...
【核心算法篇十九】《 DeepSeek因果推断:双重差分模型如何破解政策评估的「时空难题」》
一、当AB实验不可行时,我们该相信什么?(因果推断困局解析) 假设某城市推出「夜间地铁免费」政策,市长想知道这个政策是否真的提升了夜间经济。这时候你会发现: 1️⃣ 无法克隆城市:不能同时存在一个「实施政策」和「不实施政策」的平行宇宙 2️⃣ 数据混杂严重:疫情反…...
Token Embedding(词嵌入)和Positional Encoding(位置编码)的矩阵形状关系及转换过程
在从零开始构建一个小型字符级语言模型时,简化的实现步骤是:数据准备→模型架构设计→训练→评估与生成。模型架构设计阶段的流程如下: 图1 模型架构设计阶段的流程 包含了输入层、嵌入层、解码器层和输出层。其中在嵌入层中包括了Token Embedding(词嵌入)和Positional En…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...
保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7
在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤: 第一步: 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为: // 改为 v…...
LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》
🧠 LangChain 中 TextSplitter 的使用详解:从基础到进阶(附代码) 一、前言 在处理大规模文本数据时,特别是在构建知识库或进行大模型训练与推理时,文本切分(Text Splitting) 是一个…...
