技术标签: druid Spring Boot springboot
官方:数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。
使用数据库连接池,省略(复用)了创建连接和销毁连接的过程(TCP连接建立时的三次握手和销毁时的四次握手),从而在性能上得到了提高。
使用了数据库连接池的机制:
(1) 程序初始化时创建连接池
(2) 使用时向连接池申请可用连接
(3) 使用完毕,将连接返还给连接池
(4) 程序退出时,断开所有连接,并释放资源
Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为。
https://github.com/alibaba/druid
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20</version>
</dependency>
Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
username: root
# 1.配置生成的password
password: 123456
# Druid数据源配置
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
#申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
testWhileIdle: true
#配置从连接池获取连接时,是否检查连接有效性,true每次都检查;false不检查。做了这个配置会降低性能。
testOnBorrow: false
#配置向连接池归还连接时,是否检查连接有效性,true每次都检查;false不检查。做了这个配置会降低性能。
testOnReturn: false
#打开PsCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,log4j
#合并多个DruidDatasource的监控数据
useGlobalDataSourceStat: true
#通过connectProperties属性来打开mergesql功能罗慢sQL记录
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500;
package com.example.demo.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
* @Author HeYunHui
* @create 2020/10/23 10:25
*/
@Configuration
public class DruidConfig {
//加载application.yaml中的Druid配置
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druid(){
return new DruidDataSource();
}
//配置Druid的监控
//1、配置一个管理后台的Servlet
@Bean
public ServletRegistrationBean statViewServlet(){
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
Map<String,String> initParams = new HashMap<>();
initParams.put("loginUsername","root");
initParams.put("loginPassword","123456");
initParams.put("allow","");//默认就是允许所有访问
initParams.put("deny","192.168.15.21");
bean.setInitParameters(initParams);
return bean;
}
//2、配置一个web监控的filter
@Bean
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
Map<String,String> initParams = new HashMap<>();
initParams.put("exclusions","*.js,*.css,/druid/*");
bean.setInitParameters(initParams);
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}
}
然后运行项目,访问http://localhost:8080/druid
登录用户名和密码为DruidConfig
里面设置好的
当你在对项目中的数据进行操作时,druid都会显示
文章浏览阅读166次。引入1:随机变量函数的分布 给定X的概率密度函数为fX(x), 若Y = aX, a是某正实数,求Y得概率密度函数fY(y).解:令X的累积概率为FX(x), Y的累积概率为FY(y).则FY(y) = P(Y <= y) = P(aX <= y) = P(X <= y/a) =FX(y/a),则 fY(y) = d(FX(y/a)) / d..._风险承受倾向 条件熵
文章浏览阅读1.1k次。简要将关注的内容整理_汇编语言思维导图
文章浏览阅读2w次,点赞2次,收藏3次。1、打开电脑左下角,“开始”按钮,选择“所有程序”。2、选择“Microsoft Office”,打开“Microsoft Outlook”软件。3、打开软件后,选择Outlook软件左上角的“文件”,打开“选项”按钮。4、在Outlook选项窗口中,选择“邮件”按钮,找到“创建或修改邮件的签名”,打开“签名”按钮。5、在签名和信纸窗口,找到并打开“新建”按钮。在下面的编辑签名里面,添加需要的签名..._outlook插入签名
文章浏览阅读989次。在控制台下面敲startx太烦人了,偶用自己的机器,根本用不着密码,总是感觉开机能够自动登录桌面最好,最近上网搜了一下,发现最简单的办法还是用gdm.1.用rcconf设置开启gdm服务,进入gdm登录界面后点选项,配置登录管理器,按提示输入root的密码,这时就可以对gdm进行配置了,点安全-启用自动登录,选取需自动登录的用户,重启,我们就可以自动登入默认的窗口管理器了。2.现在的问题是.xin..._gdm 自动登录
文章浏览阅读111次。Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈_linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈
文章浏览阅读107次。此网站整理的2014年值得一学的pytho项目,http://pycoders.com/2014/项目资源都在github上,python程序员进阶必备。就当作2015年的计划吧。先列表,再对号Projects1. robobrowserA library forwebscraping built on Requests and BeautifulSoup. Like Me..._值得学习的python库
文章浏览阅读52次。main线程跑三个任务:packageandroid.java.thread2;classDemo {privateString name;publicDemo(String name) {this.name =name;}public voidshowMethod() {for (int i = 0; i < 10; i++) {System.out.println("Demo showM...
文章浏览阅读1.2k次。1、Kettle概念Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。2.安装与启动KETTLE本身是绿色安装版软件,直接对压缩包解压后即_kettle迁移webserver服务
文章浏览阅读1.1k次,点赞26次,收藏13次。环信 Chatroom UIKit 采用最新的 UI 框架和开发语言,可以快速上手。同时,该 UIKit 对标国际主流的社交应用,提供开箱即用的社交组件,一方面,可以快速将其集成到自己的应用程序中,另一方面还支持对功能组件进行自定义,灵活定制符合自身需求的聊天室应用。弹幕消息是聊天室最为核心的功能。环信 Chatroom UIKit 支持业内主流的消息样式,包括发送时间显示、用户身份标识、用户头像、昵称等元素,提供极为灵活的弹幕消息自定义能力。还可以根据业务需要,通过开关控件控制所有元素的显示或隐藏。
文章浏览阅读145次。例1.写一个脚本,使用for循环创建目录/tmp/1.dir,/tmp/2.dir和/tmp/3.dir,并将它们的权限均修改为750;使用mkdir命令创建目录,使用chmod命令修改权限,故此脚本可以写成:#!/bin/bashforDirNamein/tmp/1.dir/tmp/2.dir/tmp/3.dir;domkdir$DirNam..._使用for循环在目录exam下循环创建文件1.sh,2.sh
文章浏览阅读3.5k次。body{margin: 0;padding: 0;}div{width: 300px;height: 300px;border: 1px solid #000000;margin-top: 20px;margin-left: 30px;}//判断鼠标是否按下var isDown = false;//实时监听鼠标位置var m_通过鼠标移动事件处理,获取鼠标在 x、y 方向的偏移 量
文章浏览阅读1.6k次,点赞6次,收藏11次。AJAXhttp请求一般有两种。一种是form表单的submit.还有一个就是AJAX请求.前者请求会刷新整个页面。AJAX请求则是局部刷新.AJAX技术是一种异步请求技术。它在web中主要使用在页面的局部刷新。比如某个视频网站提供了推荐视频的刷新按钮。点击它只会刷新推荐视频列表而不会刷新正在播放的视频。随着这个前后端的分离和众多优秀的前端框架。现在越来越多的项目都只有AJAX请求。1,J..._使用异步数据交互方式实现页面的局部更新;利用ajax函数链接到json数据文件,要求使