Druid

使用线程池插入数据报Could not open JDBC Connection for transaction 异常

╄→гoц情女王★ 提交于 2019-12-06 03:06:40
使用线程池插入数据报Could not open JDBC Connection for transaction 异常 Could not open JDBC Connection for transaction; nested exception is com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed at Fri Sep 01 18:02:49 CST 2017 原因分析 这个异常是因为项目数据源已经被关闭了而线程无法插入数据到数据库。 因为这个是测试案例,在开发过程中主线程把任务丢给线程池之后自己就直接执行完毕导致关闭了数据源。在实际生产中主线程并不会关闭,所以不会出现这个问题。 解决方案 在主线程把任务丢进线程池后睡一会,待线程池处理完数据再关闭进程、关闭数据源。 try { Thread.currentThread().join(); } catch (InterruptedException e) { e.printStackTrace(); } 错误信息 2019-02-15 10:45:39.471 INFO 26352 --- [ Thread-4] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down

Apache druid 计算常见指标

人盡茶涼 提交于 2019-12-06 00:28:10
Druid 支持SQL [ EXPLAIN PLAN FOR ] [ WITH tableName [ ( column1, column2, ... ) ] AS ( query ) ] SELECT [ ALL | DISTINCT ] { * | exprs } FROM table [ WHERE expr ] [ GROUP BY exprs ] [ HAVING expr ] [ ORDER BY expr [ ASC | DESC ], expr [ ASC | DESC ], ... ] [ LIMIT limit ] [ UNION ALL <another query> ] 持续时间数据类型 持续时间数据类型用于指定时间间隔。 时间间隔以以下格式“ PnYnMnDTnHnMnS”指定,其中: P表示周期(必填) nY表示年数 nM表示月数 nD表示天数 T表示时间段的开始(如果要指定小时,分钟或秒,则为必填) nH表示小时数 nM表示分钟数 nS表示秒数 **事件选择:**能选择任意传来的事件查看相应数据 次数(pv):用户做这个事的次数, > [ count() ] 人数(uv):用户做这个事的人数, > [?] 人均次数(pv/uv):做这个事的人,每人平均多少次,也可以用组合事件查(举例:event_total_video_play_success:

springboot整合mybatis

拈花ヽ惹草 提交于 2019-12-06 00:27:31
springboot 配置数据库连接池 druid 新建 springboot 项目 druid 学习地址 https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter 所需 pom 依赖 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <parent> 6 <groupId>org.springframework.boot</groupId> 7 <artifactId>spring-boot-starter-parent</artifactId> 8 <version>2.2.1.RELEASE</version> 9 <relativePath/> <!-- lookup

springboot 整合druid,使用postgresql

那年仲夏 提交于 2019-12-05 23:32:53
1.首先引入相关依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version></dependency><dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId></dependency>2.配置yml spring: datasource: druid: driver-class-name: org.postgresql.Driver url: jdbc:postgresql://ip:port/**?&ssl=false username: postgres password: 123456 initial-size: 1 max-active: 128 min-idle: 96 filter: stat: log

SpringBoot 项目脚手架

牧云@^-^@ 提交于 2019-12-05 23:32:50
写在前面 之前也一直很少有写SpringBoot项目相关的文章,今天 准备整理一个我自己初始化SpringBoot项目时的一个脚手架,便于自己后面查阅。因为SpringBoot的约定大于配置,在整合各个组件的时候,我们仅仅写很少的代码就能 整合 跑起来。 本文,也仅仅是一个简单的整合,更多个性化配置,更多调优,这个也是自己在工作中慢慢摸索的。如果你有什么更多好的建议或者意见,也可以留言交流。谢谢~ 我们开始吧 新建SpringBoot 2.0.3.RELEASE web 项目 标题1:AOP 切面统一打印请求日志 意图:可以看到,每个对于每个请求,开始与结束一目了然,并且打印了以下参数: URL: 请求接口地址; HTTP Method: 请求的方法,是 POST, GET, 还是 DELETE 等; Class Method: 对应 Controller 的全路径以及调用的哪个方法; IP: 请求 IP 地址; Request Args: 请求入参,以 JSON 格式输出; Response Args: 响应出参,以 JSON 格式输出; Time-Consuming: 请求耗时; 步骤一:添加依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter

springboot整合mybatis

陌路散爱 提交于 2019-12-05 20:47:44
1、springboot 配置数据库连接池 druid 2、springboot 整合 mybatis 3、springboot 整合 pagehelper springboot 配置数据库连接池 druid 新建 springboot 项目 相关 pom 依赖 druid 所需 pom 依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> 配置 application.yml spring: datasource: #1.JDBC type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf8 username: root password: 123 druid: #2.连接池配置 #初始化连接池的连接数量 大小,最小,最大 initial-size: 5 min-idle: 5 max-active:

SpringBoot启动执行sql脚本的注意实现

我只是一个虾纸丫 提交于 2019-12-05 19:26:54
1、关键配置 #初始化SQL initialization-mode: always schema: classpath:sql/schema.sql data: classpath:sql/data.sql sql-script-encoding: utf-8 jpa: database-platform: org.hibernate.dialect.MySQL5Dialect hibernate: ddl-auto: update show-sql: true generate-ddl: true 2.以下两种情况会导致启动时sql脚本不执行: A.启动类上的注解如果配置了exclude={DataSourceAutoConfiguration.class},sql脚本将不被执行。 @SpringBootApplication(exclude={DataSourceAutoConfiguration.class}) B.如果开启了druid连接池的防火墙,sql脚本将不被执行。 spring datasource druid filter wall enabled: true 来源: https://my.oschina.net/u/140406/blog/3134271

druid-springboot-starter默认启用监控页面,公网项目可能泄漏DB信息

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-05 17:43:00
1. 问题描述 druid是国内及公司内部最常用的数据库连接池配置管理工具;其内置监控页面,用于拦截sql及实时监控连接池/sql信息,该页面在原生的druid包中默认为禁用,但其用于适配springboot的druid-spring-boot-starter包,默认打开该监控页面( http://ip:port/druid/index.html ) ,打开后存在如下风险: 1.1 暴露DB信息 由于druid监控页面地址是固定的,容易被猜,监控页面默认没有任何安全措施,容易暴露项目信息,如:数据库域名地址、库名、表名、查询的sql及url等,如果druid有漏洞,甚至可能被攻击。 泄漏DB域名、使用用户及库名: 泄漏SQL信息: 泄漏URL信息: 1.2 成为非法广告的肉机 监控页面中的多个tab页含阿里云广告,且power by连接到作者个人域名,估计没续费,已被澳门赌场站点抢占,国内该类广告是违法的,如下图: 2. 影响范围 springboot项目:该问题我们已向官方提交request官方尚未修复,所以我们使用的任意版本druid-spring-boot-starter都有问题。 非sprinboot项目:如果手工启用监控页面,且未指定登录用户名、密码及允许访问的IP,也存在相同问题。 3. 解决办法 判断项目是否添加druid监控页面的方法:是否能打开druid监控页面(