连接池-druid

news2024/9/20 10:51:25

原因:通过jdbc 创建Connection时比较耗费资源和时间,如果程序每次执行数据库操作都自己创建连接,项目不好控制连接数量,另外程序执行相对耗时。

市面上有很多厂商有连接池组件,目前比较出名的是alibaba druid 以及 Hikari ,本文讨论的是druid。

druid配置如下(通过properties文件方式):

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxx?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username=xxx
password=xxx
#初始连接池大小
initialSize=10
#最大连接池大小,建议和初始连接池大小设置一致
maxActive=10
#最大等待时间(毫秒)
maxWait=30000

配置建议:

1、初始连接池和最大连接池大小保持一致

2、项目设置最大连接池大小,可以考虑最大并发时刻的用户量,如最高并发时用户数是100,则最大连接池大小设置为100

3、当连接池没有空闲的连接可用时,新的请求需要用连接操作数据库时,需要等待,等待的时长就是maxWait的时间,等到连接则用连接继续执行,等不到系统抛出异常

示例:配置连接池类,在引入spring后,可以通过@Configuration 注解在项目启动后,初始化好连接池


import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;

public class DruidConfig {

    /**
     * 获取数据源
     * @return
     * @throws Exception
     */
    public static DataSource createDataSource() throws Exception {
        Properties properties = new Properties();
        InputStream inputStream = DruidConfig.class.getClassLoader().getResourceAsStream("druid-config.properties");
        properties.load(inputStream);
        inputStream.close();
        return DruidDataSourceFactory.createDataSource(properties);
    }

    public static void main(String[] args) throws Exception {
        DataSource dataSource = createDataSource();
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
    }
}

通过debug发现,上述main方法执行到System那一行时,已经创建好了10个连接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2116597.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

828华为云征文|华为Flexus云服务器快速上手实例安装“运维搭子”

⭐ 引言 华为云Flexus X实例简介 在现代云计算的世界里,资源的灵活性和性能至关重要。华为云Flexus X实例正是为满足这一需求而诞生的,它代表了云服务器技术的新高度 🌐🚀。 华为云Flexus X实例采用了领先的擎天QingTian架构&a…

计算机毕业设计 沉浸式戏曲文化体验系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

深入探索嵌入式 Linux

摘要:本文深入探究嵌入式 Linux。首先回顾其发展历程,从早期尝试到克服诸多困难逐渐成熟。接着阐述其体系结构,涵盖硬件、内核、文件系统和应用层。开发环境方面包括交叉编译工具链、调试工具和集成开发环境。在应用领域,广泛应用…

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:error是设置我们失败的logo 设置的文字上…

探探我对加密算法的认识

密码学基本认知 为什么需要加密算法,如果不加密可能导致哪些问题? 如果对传输的数据不使用加密算法,所有的数据在传输过程中都是明文传输的,那么会出现以下三种问题: 1)泄露问题:如果在网络中…

大美祖国之地名篇-探寻全国同名地名

目录 前言 一、地名数据库 1、数据库模型 2、数据表结构 二、实践之旅,发现同名地名 1、省、市同名 2、市、县同名 3、 区县、乡镇同名 4、乡镇和村委会同名 三、总结 前言 我们祖国地大物博,从北到南,从东到西。祖国位于亚洲东部&…

SigLIP——采用sigmoid损失的图文预训练方式

SigLIP——采用sigmoid损失的图文预训练方式 FesianXu 20240825 at Wechat Search Team 前言 CLIP中的infoNCE损失是一种对比性损失,在SigLIP这个工作中,作者提出采用非对比性的sigmoid损失,能够更高效地进行图文预训练,本文进行…

信创企业级即时通讯:私有化安全沟通的新趋势

随着信息技术的不断发展,企业间的及时沟通和高效协作成为了推动业务创新和发展的关键。而信创企业作为信息创新的先驱者,对即时通讯工具的安全性和私有化能力提出了更高的要求。在这样的背景下,私有化安全沟通逐渐成为了信创企业级即时通讯的…

特殊类设计与单例模式

特殊类设计与单例模式 一、不能被拷贝的类1、介绍2、示例代码 二、只能在堆上创建对象的类1、介绍2、示例代码 三、只能在栈上创建对象的类1、介绍2、示例代码 四、单例模式1、介绍2、设计模式3、懒汉式(1)介绍(2)示例代码1&#…

Android 12 SystemUI下拉状态栏禁止QuickQSPanel展开

1.概述 遇到需求,QuickQSPanel首次下拉后展示快捷功能模块以后就是显示QuickQSPanel,而不展开QSPanel,接下来要从下滑手势下拉出状态栏分析功能实现。也就是直接是展开状态。 2、涉及核心类 frameworks\base\packages\SystemUI\src\com\and…

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实…

【C++】手把手教你看懂的 STL map 详解(超详细解析,小白一看就懂!!)

目录 一、前言 二、预备知识 💢关联式容器💢 💢键值对💢 💢哈希结构的关联式容器💢 三、map 详解 🔥map 的介绍 🔥map的模板参数说明 🔥map的构造…

HarmonyOS应用开发( Beta5.0)HOS-用户认证服务:面部识别

介绍 User Authentication Kit(用户认证服务)提供了基于用户在设备本地注册的人脸和指纹来认证用户身份的能力。 用户向应用/系统服务请求访问某些个人数据或执行某些敏感操作时,应用/系统服务将调用系统用户身份认证控件对用户身份进行认证…

AI在医学领域:MIL回归用于前列腺癌复发预测

2024年,全球男性新癌症病例预计为1029080例,其中前列腺癌病例预计为29%。前列腺癌是男性中第二常见的癌症类型,仅次于肺癌。它主要影响老年男性,且发病率随年龄增长而增加。前列腺癌的主要治疗方法是前列腺切除术,但术…

知识竞赛答题软件应用场景有哪些

知识竞赛答题软件应用常见场景有哪些? 一、场景分析:该答题软件基于java技术和原生小程序开发完成,其功能主要包括:个人答题、好友pk、排位pk升级赛、专题pk答题、多人pk答题、积分兑换、排行榜等七大功能模块页面,适用…

记一次学习--内网穿透

目录 环境搭建 两张网卡如何配置 Ubuntu配置 渗透 ubuntu的拿下 centos的拿下 探测内网环境 fscan扫描 msf上马 渗透 拿下bage cms windows的拿下 ​编辑 使用fscan查看内网环境,发现了192.168.110.128这台设备 使用msf上马,现在这台机器是…

npm安装electron报错 RequestError: connect ETIMEDOUT 185.199.110.133:443

文章目录 npm安装electron报错的问题解决办法 npm安装electron报错的问题 报错信息如下: 由于网络原因一直报错,但是安装其他依赖没问题,查看源,使用淘宝源,也无效 解决办法 设置electron_mirror专用源: npm con…

C++入门基础知识57——【关于C++日期 时间】

成长路上不孤单😊【14后,C爱好者,持续分享所学,如有需要欢迎收藏转发😊😊😊😊😊😊😊!!!!&#xff…

分布式部署①

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 1. 需要部署的服务 Nacos 理论上,应…

Popup源码分析 -- ant-design-vue系列

Popup源码分析 – ant-design-vue系列 1 极简代码 直接返回两个组件&#xff1a;Mask 和 PopupInner&#xff0c;后者在上一篇已经分析过了。下面我们先看一下 Mask的源码。 setup(props, { slots }) {return () > {if (!props.visible) return null;return (<div cla…