当前位置: 首页 > news >正文

数据库连接池

在Java的多线程中,有线程池负责线程管理,类似线程池,在数据库中也有数据库连接池,负责数据库连接的管理。数据库连接池是一个容器。负责分配、管理数据库连接(Connection)。它允许应用程序重复使用一个现有的数据库连接,而不是在每次连接的时候重新创建一个新的连接;它还可以避免因为没有释放连接而引起的数据库连接遗漏问题。

连接复用

不使用连接池

想要执行SQL语句的时候必须先和数据库产生连接,那么就必须要创建一个连接对象Connection,当连接创建好了之后就可以执行SQL语句了,但是当SQL语句执行完毕之后,就会直接关闭该连接,如果下次还需要连接数据库,则又会创建一个新的连接。这样反复,每次连接都需要创建一个新的连接,并且用完即弃,十分浪费资源。

使用连接池

假如说使用了连接池,就可以重复使用连接了:连接池就像一个连接的容器,在初始化时就会创建一定数量的连接对象,假如需要和数据库产生连接了,就不会创建一个新的连接,而是从连接池中获取一个连接池创建好的连接用来使用,在使用完成之后,不会将连接关闭,而是将连接又重新放回连接池,便于下次使用。这样就不会每次连接都重复创建新的连接,从而达到连接复用的效果,节省资源。(还可以提升系统响应速度,创建新的连接是需要耗时的)。

避免连接遗漏

正常情况下,获取连接之后执行完了SQL语句就要将对应的连接重新归还给连接池,但是有可能会出现这样的异常情况:某个客户端在连接池中获取了一个连接对象,但是其一直处于空闲状态,没有执行SQL,这样该客户端就会一直持有连接,不会释放连接,就会导致数据库连接遗漏问题。连接池通过设置最大空闲时间来释放空闲时间超过最大空闲时间的连接,来避免产生数据库连接遗漏问题。

数据库连接池标准接口:DataSource

DataSource是sun公司官方提供的数据库连接池接口,但是是第三方组织实现的该接口。主要功能是获取连接(Connection getConnection() throws SQLException这个方法),想要啊获取一个连接就直接调用这个方法即可。市面上已经有了很多连接池,从早期的C3P0、DBCP,到后来的HiKari(Spring框架默认的连接池)和Druid(阿里巴巴开源项目),这些都是性能十分强悍的连接池。 SpringBoot默认的HiKari连接池:

查看其源码发现HiKari连接池就是实现了sun公司提供的DataSource接口:

 其主要的获取连接的方法:

除了强悍的HiKari连接池之外,Druid连接池也用的比较多。Druid连接池是阿里巴巴开源的数据库连接池项目,功能强大、性能优秀,也是一个优秀的Java语言的数据库连接池。

修改项目使用的连接池

Druid连接池和HiKari连接池同样功能强大、性能极高,但因为其有详细的监控信息,能够实时监控和历史记录并且拥有强大的扩展能力,有时在项目中需要将默认的HiKari连接池更换为Druid连接池。

1.首先需要将Druid连接池的maven坐标导入到pom.xml中:

2.然后再修改application.properties的设置:

将datasource的type换成Druid即可

检查是否更换连接池成功:

发现现在已经将连接池换成了Druid。

Druid连接池也同样是实现了DataSource的官方接口:

 

 

相关文章:

数据库连接池

在Java的多线程中,有线程池负责线程管理,类似线程池,在数据库中也有数据库连接池,负责数据库连接的管理。数据库连接池是一个容器。负责分配、管理数据库连接(Connection)。它允许应用程序重复使用一个现有…...

本地部署 WireGuard 无需公网 IP 实现异地组网

WireGuard 是一个高性能、极简且易于配置的开源虚拟组网协议。使用路由侠内网穿透使其相互通讯。 第一步,服务端(假设为公司电脑)和客户端(假设为公司外的电脑)安装部署 WireGuard 1,点此下载(…...

Educator头歌:离散数学 - 图论

第1关&#xff1a;图的概念 任务描述 本关任务&#xff1a;学习图的基本概念&#xff0c;完成相关练习。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;图的概念。 图的概念 1.一个图G是一个有序三元组G<V,R,ϕ>&#xff0c;其中V是非空顶点集合&am…...

axios的认识与基本使用

axios简介 Axios 是一个基于 promise 网络请求库&#xff0c;作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。 主要特点 从浏览器创建 XML…...

springboot358智慧社区居家养老健康管理系统(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 智慧社区居家养老健康管理系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&…...

java-a+b 开启java语法学习

代码 &#xff08;ab) import java.util.Scanner; //导入 java.util包中的Scanner 类&#xff0c;允许读取键盘输入数据public class Main { // 创建一个公共类 Mainpublic static void main(String[] args) {//程序入口点&#xff0c;main方法Scanner scanner new Scanner(…...

SpringAi整合免费大模型(NVIDIA)

接上回&#xff0c;发布了springAI整合本地大模型之后&#xff0c;我们来看看怎么去利用别人已经训练好的大模型。 如果对整合本地大模型感兴趣的&#xff0c;请阅读&#xff1a; SpringAI集成本地AI大模型ollama&#xff08;调用篇&#xff09;非常简单&#xff01;&#xf…...

Flutter中的Future和Stream

在 Flutter 中&#xff0c;Future 和 Stream 都是用于处理异步操作的类&#xff0c;它们都基于 Dart 的异步编程模型&#xff0c;但是它们的使用场景和工作方式有所不同。以下是它们的区别以及各自适用的场景。 目录 一、Future1、基本使用2、异常处理1. catchError2. onError…...

Python将Excel文件转换为JSON文件

工作过程中,需要从 Excel 文件中读取数据,然后交给 Python 程序处理数据,中间需要把 Excel 文件读取出来转为 json 格式,再进行下一步数据处理。 这里我们使用pandas库,这是一个强大的数据分析工具,能够方便地读取和处理各种数据格式。需要注意的是还需要引入openpyxl库,…...

MySQL中EXPLAIN的介绍、作用、字段含义

MySQL中EXPLAIN的介绍、作用、字段含义 在MySQL中&#xff0c;EXPLAIN 是一个非常有用的命令&#xff0c;它可以帮助开发者和DBA理解查询执行计划&#xff0c;从而优化查询性能。EXPLAIN 可以模拟优化器执行SQL查询语句&#xff0c;而不真正执行这条语句&#xff0c;从而帮助用…...

Socket编程:UDP网络编程项目

目录 一、回显服务器 二、翻译器 三、聊天室 一、回显服务器 项目介绍&#xff1a;使用UDPIPv4协议进行Linux网络编程&#xff0c;实现回显服务器和客户端 功能介绍&#xff1a;客户端发送数据&#xff0c;经过服务端再返回到客户端&#xff0c;输出数据 源代码&#xff1…...

uniapp echarts tooltip formation 不识别html

需求&#xff1a; echarts 的tooltip 的域名太长&#xff0c;导致超出屏幕 想要让他换行 思路一&#xff1a; 用formation自定义样式实现换行 但是&#xff1a; uniapp 生成微信小程序&#xff0c; echart种的tooltip 的formation 识别不了html &#xff0c;自定义样式没办…...

从0开始linux(39)——线程(2)线程控制

欢迎来到博主的专栏&#xff1a;从0开始linux 博主ID&#xff1a;代码小豪 文章目录 线程创建线程标识符线程参数多线程竞争资源 回收线程detach 线程退出pthread_cancel 线程创建 线程创建的函数为pthread_create。该函数是包含在posix线程库当中&#xff0c;posix线程是C语言…...

对载入的3dtiles进行旋转、平移和缩放变换。

使用 params: {tx: 129.75845, //模型中心X轴坐标&#xff08;经度&#xff0c;单位&#xff1a;十进制度&#xff09;//小左ty: 46.6839, //模型中心Y轴坐标&#xff08;纬度&#xff0c;单位&#xff1a;十进制度&#xff09;//小下tz: 28, //模型中心Z轴坐标&#xff08;高…...

YOLO模型训练后的best.pt和last.pt区别

在选择YOLO模型训练后的权重文件best.pt和last.pt时&#xff0c;主要取决于具体的应用场景‌&#xff1a;‌12 ‌best.pt‌&#xff1a;这个文件保存的是在训练过程中表现最好的模型权重。通常用于推理和部署阶段&#xff0c;因为它包含了在验证集上表现最好的模型权重&#x…...

Qt 项目中同时使用 CMAKE_AUTOUIC 和 UiTools 的注意事项

在 Qt 项目开发中&#xff0c;.ui 文件是界面设计的重要组成部分。开发者可以通过两种主要方式使用 .ui 文件&#xff1a; 编译期处理&#xff1a;通过 Qt 的 uic 工具将 .ui 文件转化为 C 代码&#xff08;ui_xxx.h&#xff09;&#xff0c;静态绑定到项目中。运行时动态加载…...

不玩PS抠图了,改玩Python抠图

网上找了两个苏轼的印章图片&#xff1a; 把这两个印章抠出来的话&#xff0c;对于不少PS高手来说是相当容易&#xff0c;但是要去掉其中的水印&#xff0c;可能要用仿制图章慢慢描绘&#xff0c;图章的边缘也要慢慢勾画或者用通道抠图之类来处理&#xff0c;而且印章的红色也不…...

ubuntu 22.04 mini 安装,在配置网络时重启后配置文件被重置原因与解决方法

在 /etc/netplan/50-cloud-init.yaml 配置文件中有一段注释中有说明 rootlocalhost:/etc/netplan# cat 50-cloud-init.yaml # This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disab…...

【Go底层】time包Ticker定时器原理

目录 1、背景2、go版本3、源码解释【1】Ticker结构【2】NewTicker函数解释 4、代码示例5、总结 1、背景 说到定时器我们一般想到的库是cron&#xff0c;但是对于一些简单的定时任务场景&#xff0c;标准库time包下提供的定时器就足够我们使用&#xff0c;本篇文章我们就来研究…...

mac下Gpt Chrome升级成GptBrowser书签和保存的密码恢复

cd /Users/自己的用户名/Library/Application\ Support/ 目录下有 GPT\ Chrome/ Google/ GptBrowser/ GPT\ Chrome 为原来的chrome浏览器的文件存储目录. GptBrowser 为升级后chrome浏览器存储目录 书签所在的文件 Bookmarks 登录账号Login 相关的文件 拷贝到GptBrow…...

[Redis#6] list | 命令 | 应用 | 消息队列 | 微博 Timeline

目录 List 列表 特点 2. 命令 头插和尾插 下标 range 查询 头删和尾删 LINSERT LLEN LREM LTRIM LSET 阻塞命令 BLPOP BRPOP 操作 总结 3. 内部编码 ziplist&#xff08;压缩列表&#xff09; linkedlist&#xff08;链表&#xff09; ✔️quicklist(快速链…...

服务器数据恢复—raid6阵列硬盘被误重组为raid5阵列的数据恢复案例

服务器存储数据恢复环境&#xff1a; 存储中有一组由12块硬盘组建的RAID6阵列&#xff0c;上层linux操作系统EXT3文件系统&#xff0c;该存储划分3个LUN。 服务器存储故障&分析&#xff1a; 存储中RAID6阵列不可用。为了抢救数据&#xff0c;运维人员使用原始RAID中的部分…...

Xcode15(iOS17.4)打包的项目在 iOS12 系统上启动崩溃

0x00 启动崩溃 崩溃日志&#xff0c;只有 2 行&#xff0c;看不出啥来。 0x01 默认配置 由于我开发时&#xff0c;使用的 Xcode 14.1&#xff0c;打包在另外一台电脑 Xcode 15.3 Xcode 14.1 Build Settings -> Asset Catalog Compliter - Options Xcode 15.3 Build S…...

Netty的心跳机制怎么实现的?

大家好&#xff0c;我是锋哥。今天分享关于【Netty的心跳机制怎么实现的&#xff1f;】面试题。希望对大家有帮助&#xff1b; Netty的心跳机制怎么实现的&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Netty 的心跳机制用于维持客户端和服务器之间的…...

常用函数的使用错题汇总

目录 new/delete malloc/free1. 语言和类型2. 内存分配3. 内存释放4. 安全性和类型安全5. 其他特性总结 线程停止文件流 new/delete malloc/free malloc/free 和 new/delete 是 C/C 中用于动态内存管理的两种方式&#xff0c;它们有一些重要的区别。以下是这两种方式的比较&…...

使用 `aircrack-ng`扫描、获取握手包

使用 aircrack-ng 工具集来扫描 5GHz WiFi 网络的过程与扫描 2.4GHz 网络类似&#xff0c;但需要注意一些特定的配置和命令。以下是一个详细的步骤指南&#xff0c;帮助你在 5GHz 频段上扫描 WiFi 网络并捕获握手包。 ### 前提条件 1. **操作系统**&#xff1a;通常在 Linux 系…...

css—轮播图实现

一、背景 最近和朋友在一起讨论的时候&#xff0c;我们提出了这样的一个提问&#xff0c;难道轮播图的效果只能通过js来实现吗&#xff1f;经过我们的一系列的争论&#xff0c;发现了这是可以通过纯css来实现这一效果的&#xff0c;CSS轮播图也是一种常见的网页展示方式&#x…...

Ardusub源码剖析(1)——AP_Arming_Sub

代码 AP_Arming_Sub.h #pragma once#include <AP_Arming/AP_Arming.h>class AP_Arming_Sub : public AP_Arming { public:AP_Arming_Sub() : AP_Arming() { }/* Do not allow copies */CLASS_NO_COPY(AP_Arming_Sub);bool rc_calibration_checks(bool display_failure)…...

ESP32-S3模组上跑通ES8388(10)

接前一篇文章&#xff1a;ESP32-S3模组上跑通ES8388&#xff08;9&#xff09; 二、利用ESP-ADF操作ES8388 2. 详细解析 上一回解析了es8388_init函数中的第3段代码&#xff08;也是实际与ES8388寄存器打交道的第1段代码&#xff09;&#xff0c;本回继续往下解析。为了便于理…...

AI/ML 基础知识与常用术语全解析

目录 一.引言 二.AI/ML 基础知识 1.人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09; (1).定义 (2).发展历程 (3).应用领域 2.机器学习&#xff08;Machine Learning&#xff0c;ML&#xff09; (1).定义 (2).学习方式 ①.监督学习 ②.无监督…...

【C#设计模式(15)——命令模式(Command Pattern)】

前言 命令模式的关键通过将请求封装成一个对象&#xff0c;使命令的发送者和接收者解耦。这种方式能更方便地添加新的命令&#xff0c;如执行命令的排队、延迟、撤销和重做等操作。 代码 #region 基础的命令模式 //命令&#xff08;抽象类&#xff09; public abstract class …...

Could not resolve com.android.tools.build:gradle:7.4.2.

Android Studio编译项目报错如下&#xff0c;始终无法下载解析7.4.2的gradle classpath A problem occurred configuring root project aistudyclient_questionlib. > Could not resolve all files for configuration :classpath.> Could not resolve com.android.tools…...

uniapp在App端定义全局弹窗,当打开关闭弹窗会触发onShow、onHide生命周期怎么解决?

在uniapp(App端)中实现自定义弹框&#xff0c;可以通过创建一个透明页面来实现。点击进入当前页面时&#xff0c;页面背景会变透明&#xff0c;用户可以根据自己的需求进行自定义&#xff0c;最终效果类似于弹框。 遇到问题&#xff1a;当打开弹窗(进入弹窗页面)就会触发当前页…...

2024 ccpc 辽宁省赛 E(构造 思维?)L(二分+一点点数论知识?)

E 题意&#xff1a; 可以注意到&#xff1a; 我的两种方格都四个方格的大小。 所以 如果存在一种摆放方式 那么 4|nm。 再考虑一种特殊的情况 22 &#xff0c;此时虽然我的积是4 但是无法摆放的。 1>对于 4 | n,或者 4 | m.我直接摆放第二种方格就可以了。 如果我n 是4 的…...

IIC 随机写+多次写 可以控制写几次

verilog module icc_tx#(parameter SIZE 2 , //用来控制写多少次 比如地址是0000 一个地址只能存放8bit数据 超出指针就会到下一个地址0001parameter CLK_DIV 50_000_000 ,parameter SPEED 100_000 ,parameter LED 50 )( input wire c…...

基于SpringBoot+Vue的汽车票网上预订系统-无偿分享 (附源码+LW+调试)

目录 1. 项目技术 2. 功能菜单 3. 部分功能截图 4. 研究背景 5. 研究目的 6. 可行性分析 6.1 技术可行性 6.2 经济可行性 6.3 操作可行性 7. 系统设计 7.1 概述 7.2 系统流程和逻辑 7.3 系统结构 8. 数据库设计 8.1 数据库ER图 &#xff08;1&#xff09;公告信…...

net9 abp vnext 多语言通过数据库动态管理

通过数据库加载实现动态管理&#xff0c;用户可以自己修改界面显示的文本&#xff0c;满足国际化需求 如图所示,前端使用tdesign vnext 新建表TSYS_Localization与TSYS_LocalizationDetail 国旗图标下载网址flag-icons: Free Country Flags in SVG 在Shared下创建下图3个文件 …...

pip安装github上的开源软件包

1、若本机中安装的有git&#xff0c;可使用githttps方式安装 # 以安装pyfolio软件包为例,安装指令如下 pip install githttps://github.com/quantopian/pyfolio.git 2、若本机中没有安装git&#xff0c;可以直接使用软件包的zip地址进行安装 # 以安装pyfolio软件包为例,安装…...

【LeetCode刷题之路】120:三角形最小路径和的两种解法(动态规划优化)

LeetCode刷题记录 &#x1f310; 我的博客主页&#xff1a;iiiiiankor&#x1f3af; 如果你觉得我的内容对你有帮助&#xff0c;不妨点个赞&#x1f44d;、留个评论✍&#xff0c;或者收藏⭐&#xff0c;让我们一起进步&#xff01;&#x1f4dd; 专栏系列&#xff1a;LeetCode…...

架构04-透明多级分流系统

零、文章目录 架构04-透明多级分流系统 1、透明多级分流系统 &#xff08;1&#xff09;概述 **定义&#xff1a;**透明多级分流系统是指在用户请求从客户端发出到最终查询或修改数据库信息的过程中&#xff0c;通过多个技术部件对流量进行合理分配&#xff0c;以提高系统的…...

云原生后端开发:构建现代化可扩展的服务

随着微服务架构的普及和容器化技术的成熟&#xff0c;云原生后端开发成为了构建现代化、可扩展系统的关键。本文将从云原生理念出发&#xff0c;结合实际案例&#xff0c;探讨如何使用 Kubernetes、服务网格、微服务架构等技术构建高效的云原生后端。 一、云原生的核心理念 1.…...

在Windows和Linux系统上获取网卡MAC地址及相关信息所有常用方法整理

摘要 在网络管理和故障排除中&#xff0c;了解如何获取网卡的MAC地址、IP地址以及网卡名称是系统管理员必备的技能。本文将介绍在Windows和Linux系统上手动获取网卡MAC地址的方法&#xff0c;并提供脚本以自动化获取服务器中网卡信息的过程。这些技巧和工具将帮助新手系统管理…...

制作苹果IOS.APP所使用步骤和方法-有步骤视情况待完善

1.获取开发工具 首先&#xff0c;您需要下载并安装Xcode。Xcode是苹果开发iOS和macOS应用程序的官方集成开发环境&#xff08;IDE&#xff09;。它包含了必要的工具&#xff0c;例如代码编辑器、调试器、编译器和界面构建器。Xcode可在Mac App Store中免费下载。 2.学习Swift或…...

【conda】全面解析 Conda 配置文件:从完整示例到最佳实践

目录 引言一、Conda 配置文件示例1.1 中英文注释示例1.2 文件编码格式 二、详细解释2.1 ssl_verify: true2.2 channels2.3 envs_dirs2.4 pkgs_dirs2.5 custom_channels2.6 remote_read_timeout_secs 和 remote_connect_timeout_secs2.7 show_channel_urls2.8 default_packages2…...

ffmpeg命令详解

原文网址&#xff1a;ffmpeg命令详解_IT利刃出鞘的博客-CSDN博客 简介 本文介绍ffmpeg命令的用法。 命令示例 1.mp4和avi的基本互转 ffmpeg -i D:\input.mp4 E:\output.avi ffmpeg -i D:\input.avi E:\output.mp4 -i 表示input&#xff0c;即输入。后面填一个输入地址和一…...

asyncio.run() 里面嵌套 asyncio.run() 可以吗?

[TOC](asyncio.run() 里面嵌套 asyncio.run() 可以吗&#xff1f;) 在 Python 的异步编程中&#xff0c;asyncio 是一个非常重要的模块&#xff0c;它提供了编写单线程并发代码的基础设施。asyncio.run() 是一个方便的函数&#xff0c;用于运行一个协程并管理事件循环的生命周…...

flutter in_app_purchase google支付 PG-GEMF-01错误

问题&#xff1a;PG-GEMF-01错误 flutter 使用in_app_purchase插件升降级订阅时报错PG-GEMF-01。 解决方案&#xff1a; 升降级订阅时&#xff0c;确保不调用 MethodCallHandlerImpl.java文件中的 setObfuscatedAccountId()方法、setObfuscatedProfileId()方法 原因&#xf…...

Flink 离线计算

文章目录 一、样例一&#xff1a;读 csv 文件生成 csv 文件二、样例二&#xff1a;读 starrocks 写 starrocks三、样例三&#xff1a;DataSet、Table Sql 处理后写入 StarRocks四、遇到的坑 <dependency><groupId>org.apache.flink</groupId><artifactId&…...

排序算法之插入排序篇

插入排序 思路&#xff1a; 就是将没有排序的元素逐步地插入到已经排好序的元素后面&#xff0c;保持元素的有序 视频的实现过程如下&#xff1a; 插入排序全过程 代码实现过程如下&#xff1a; public static void Insertion(int[] arr) { for (int i 1; i < arr.length…...

(11)(2.2) BLHeli32 and BLHeli_S ESCs(二)

文章目录 前言 1 传递支持 前言 BLHeli 固件和配置应用程序的开发是为了允许配置 ESC 并提供额外功能。带有此固件的 ESC 允许配置定时、电机方向、LED、电机驱动频率等。在尝试使用 BLHeli 之前&#xff0c;请按照 DShot 设置说明进行操作(DShot setup instructions)。 1 传…...