- 博客(29)
- 收藏
- 关注
原创 druid源码解读-Druid源码分析其他类的代码分析DruidDataSourceC3P0Adapter、validConnectionChecker
Druid源码分析其他类的代码分析DruidDataSourceC3P0Adapter、validConnectionChecker今天在看源码DataSource同目录下的类的时候留意到DruidDataSourceC3P0Adapter和DruidDataSourceC3P0AdapterMBean这两个类,发现在前面看的源码中没有关于这块的调用,随即就开始研究一下具体用来做什么的?DruidDataSourceC3P0Adapter//构造方法public DruidDataSourceC3P
2021-11-20 00:17:37
1531
原创 druid源码解读-DruidXADataSource分布式的事务处理机制
DruidXADataSource分布式的事务处理机制druid增加了分布式的事务处理,查看源码中的DruidXADataSource的XA事务的连接池进行源码分析。DruidXADataSource类图DruidXADataSource继承了DruidDataSource,重写了getXAConnection方法,通过不同的数据库方言走不同的创建XA连接的方法。getXAConnection@Overridepublic XAConnection getXAConnection() thro
2021-11-18 20:17:03
2069
原创 druid源码解读-Druid-源码实践实现数据源版本V0.1.1的多线程
Druid-源码实践实现数据源版本V0.1.1的多线程实现init的时候开启一个守护销毁线程实现守护销毁线程根据目前数据源连接数量大于最大连接数的时候放在销毁队列init方法的时候创建守护线程//池中的数量小于最小数量 创建连接try{ if(poolingCount < minConnection){ for(int i=0;i<=minConnection-poolingCount;i++){ WmyPooledConn
2021-11-18 20:16:39
491
原创 druid源码解读--源码实践实现一个简单的数据源版本V0.1
Druid-源码实践实现一个简单的数据源版本V0.1实现获取连接的时候init数据源实现判断池中连接数量小于最小数量循环创建连接实现创建连接的简单查询WmyDataSource/** * @author MengyuWu * @version 1.0.0 * @ClassName WmyDataSource.java * @Description 重新写自己的数据源 * @createTime 2021年11月16日 19:35:00 */@Slf4jpublic class
2021-11-16 23:37:08
312
原创 druid源码解读--多数据场景下如何进行选择(DataSourceSelector)
Druid 多数据场景下如何进行选择?druid的多个数据源场景下,提供了三种数据源选择器,分别是按照名字、随机、粘性随机数据源选择器。数据源选择器DataSourceSelector// 数据源选择器DataSourceSelectorpublic interface DataSourceSelector { /** * Return a DataSource according to the implemention. * 返回数据源 */ Dat
2021-11-15 22:02:47
922
原创 druid源码解读--filter-chain设计模式
filter-chain设计模式if (filters.size() > 0) { FilterChainImpl filterChain = new FilterChainImpl(this); return filterChain.dataSource_connect(this, maxWaitMillis); }if (this.pos < filterSize) { return nextFil
2021-11-14 21:31:21
1144
原创 druid源码解读--为监控而生,具体监控如何做
druid --为监控而生,具体监控如何做结合昨天FilterChainImpl执行的FilterEventAdapter的拦截器处理逻辑,今天针对源码中的StatFilter源码进行分析,关注拦截sql执行中的监控参数处理。connection_connect连接时的拦截方法public ConnectionProxy connection_connect(FilterChain chain, Properties info) throws SQLException { //连接代理类
2021-11-12 21:27:55
608
原创 druid源码解读--一个查询sql在druid中经历了什么?
druid–一个查询sql在druid中经历了什么?druid的连接池配置中有PreparedStatementCache的配置,该信息解决了sql语句可以被预编译,并且保存在PreparedStatement这个对象中,而这个对象的存储就在PreparedStatementCache,对于oracle可以绕过数据库编译,有很大的提升,但是对于mysql,没有那么明显。本文针对DruidPooledPreparedStatement类中的executeQuery方法进行解读,尝试了解一下具体如何做预
2021-11-11 21:40:11
1722
原创 druid源码解读--Druid获取连接的getConnection源码解读
Druid获取连接的getConnection源码解读今日主要针对druid连接池中的DruidDataSource核心代码中的获取连接方法进行源码解读和学习。尤其针对获取连接中的getConnectionDirect方法进行详细的源码分析。DruidDataSource#getConnection//重写DruidAbstractDataSource的获取连接方法@Overridepublic DruidPooledConnection getConnection() throws SQLExc
2021-11-10 21:36:17
1909
原创 druid源码解读--druid连接池init方法源码解读
Druid连接池init方法源码解读今日主要针对druid连接池中的Data Source核心代码中的初始化方法进行源码解读和学习。尤其针对init方法中的createAndStartCreatorThread/createAndStartDestroyThread线程进行详细的源码分析。Druid#init时序图init初始化方法解析// init在Datasource初始化的时候并不会执行,是在第一次获取getConnection执行的public void init() throws SQ
2021-11-10 21:33:05
1087
原创 druid源码解读--druid的集成和源代码中关于配置文件的解读
拉取代码git clone https://github.com/alibaba/druid.git编译代码(跳过test)mvn clean install -Dmaven.test.skip=true集成demo项目pom文件<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version...
2021-11-10 21:27:09
1726
原创 Linux字符集正常,但是Springboot打包jar后new File取不到中文路径,启动日志乱码
问题点线上某次服务器器重启后,导致jar包启动的日志乱码,添加 -Dfile.encoding=utf-8 后日志输出正常,但是存在new File 取不到中文路径的情况。file.exists()返回false;排查思路解决日志乱码问题启动脚本中 java -jar命令添加-Dfile.encoding = utf-8 解决日志乱码的问题,但是中文路径依旧取不到文件,应该不是该问题导致。判断还是系统层面编码问题。linux系统编码排查查看linux系统的编码是UTF8编码,文件的编码也是ut
2021-01-09 13:54:42
1145
1
原创 2020-08-25
近期遇到的线上问题总结1、redis异常 Redis is configured to save RDB smapshots,but is currently not able to persist on disk. Commands that may modify the data set are disabled.Please reids logs for details about the error解决方案 :将stop-writes-on-bgsave-error设置为no1..
2020-08-25 10:33:48
208
原创 SpringBoot+Shiro实现免密登录(多个realm)
业务需求:因目前系统已经集成shiro根据用户名和密码加盐加密后校验用户登录信息功能的前提下需要集成第三方单点登陆功能。根据业务需求校验通过单点登陆后进入该项目的时候通过用户名实现免密登陆。思路:原始已完成了用户名密码登陆功能,并自定义了AuthorizingRealm实现doGetAuthenticationInfo、doGetAuthorizationInfo登陆验证和授权功能。新的...
2020-06-09 18:03:29
1914
原创 springboot+shiro前后端分离过程中跨域问题、sessionId问题、302鉴权失败问题
近期项目需要前后端分离,由于前后端分离后原来的适用的shiro配置无法满足现有系统要求。同时在前后端项目分离的项目中存在的跨域问题,cookies不再使用,通过token方式实现用户登陆鉴权。下面记录在整个过程中涉及的几个大问题:1、跨域问题 2、sessionId问题 3、302鉴权问题1、springboot跨域问题解决package net.sino...
2019-08-28 14:40:29
6451
12
原创 线程池实现for循环优化(支持返回值的线程池Callable)
项目中设计到,查询近12个月的数据成长轨迹,本想着直接通过数据库中查询得到,但实际的业务场景中涉及到关联表和统计查询等,使用时间匹配后无法使用时间索引进行优化查询等原因放弃数据库优化策略。后参考网上优化建议,在Java中for循环中采用线程的方式进行速度优化。暂时查询速度是有所提高,只是不太后期会不会因为线程问题导致别的未知问题。暂时记录本次优化过程。因正常的线程方式Thread、Runnab...
2019-08-28 11:32:37
5168
原创 HttpClient接口调用方法
package dc.platform.admin.common.utils;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import org.apache.commons.httpclient.HttpClient;import org.apache....
2019-01-02 16:22:01
663
原创 springmvc自定义注解实现日志记录
1.自定义注解package com.lawschool.annotation;import java.lang.annotation.*;@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface SysLog { String value() de...
2018-12-09 17:00:45
1079
原创 springmvc集成freemarker+maven
1.首先引入freemarker的jar <!-- https://mvnrepository.com/artifact/org.freemarker/freemarker --> <dependency> <groupId>org.freemarker</groupId> ...
2018-12-09 16:52:14
383
原创 ElementUI实现input框的远程搜索实时下拉框展示搜索值
1.element是可以实现input框远程搜索服务器相关数据实时下拉框展示数据相关的官网链接:http://element-cn.eleme.io/#/zh-CN/component/input 2.前端页面 <el-autocomplete v-model="name" :fetch-suggestions="querySear...
2018-12-09 16:30:47
13037
原创 linux open files修改
永久解决办法(需重启后生效):(* 表示用户 需要重启 reboot)# vim /etc/security/limits.conf * soft nofile 65535 * hard nofile 65535# vim /etc/security/limits.d/90-nproc.conf * soft nproc 65535 记录一下另外一个采坑...
2018-12-05 14:01:41
7267
2
原创 解决SpringBoot 中 MultipartResolver 和ServletFileUpload冲突的问题
文章借鉴于:https://blog.csdn.net/kai_wei/article/details/51142324如果同时使用了MultipartResolver 和ServletFileUpload,就会在iter.hasNext()返回false.然后整个循环就跳出去了。整个问题产生的原因是Spring框架先调用了MultipartResolver 来处理http multi-...
2018-11-21 09:42:44
7348
原创 MyBatis实现拦截SQL并把增、删、改操作存到系统操作记录表中
主要实现的功能是两个数据库之前数据的同步(保证两个数据库的数据相同)思路: 1.mybatis拦截系统执行的增加、删除、修改的SQL 2.拦截到的SQL进行base64加密存入数据库的记录表中 3.使用线程池调用相关的接口把拦截的SQL在另一个系统中执行 主要代码:1.拦截SQL保存并调用相关接口import com.baom...
2018-10-26 15:33:44
6037
原创 Springboot项目集成Swagger-UI的采坑经历
记录一下集成过程中的采坑经历Java后台的项目已经完成了,二期添加了app端的需求,所以准备在原项目中集成swagger-ui的时候出现了一些挫折。1.项目集成完后访问localhost:8080/项目名/swagger-ui.html的时候报404错误解决方法:添加静态资源访问路径@Configurationpublic class ResourcesConfig exte...
2018-10-26 15:12:16
5183
转载 Spring五个事务隔离级别和七个事务传播行为
1. 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。2. 不可重复读 :是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两 次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次...
2018-03-09 13:22:12
126
转载 Spring Quartz 和 Spring Task对比
Spring Quartz 和 Spring Task执行时间对比: 1. Quartz设置同步模式时:一个任务的两次执行的时间间隔是:“执行时间”和“trigger的设定间隔”的最大值 2. Task默认同步模式:一个任务的两次执行的时间间隔是:“执行时间”+“trigger的设定间隔”,即一个任务完成执行后,才开始trigger计时Spring Quartz 特点: 1. 默认多线程异步执行 ...
2018-03-09 11:49:06
1634
原创 数据库中存储过程,以及项目中的例子
1.获取数据库中汉字的首字母:(mysql 存储过程)DROP FUNCTION IF EXISTS `getPY`;DELIMITER ;;CREATE FUNCTION `getPY`(in_string VARCHAR(65534)) RETURNS MEDIUMTEXT CHARSET utf8BEGINDECLARE tmp_str VARCHAR(65534) CHARSET gbk ...
2018-03-09 11:24:55
1562
原创 数据库去除重复的数据
今天主要想分享一下关于数据库的两个东西,感觉挺实用的。一个是关于去除重复数据的(除了唯一标识符,其他都一样的数据)。(如果只是查询的过程中去掉重复数据,只需把NOT IN改为IN即可。)第二个是关于修改同一列不同行数据的问题。我遇到的是默认地址的问题,把一个设置为默认地址的时候就要把别的设置为不默认。(表中有一个关于是否是默认地址的标识isDefault)采用的是 case when 语句实现。第...
2018-03-09 11:21:06
5311
原创 关于下拉列表二级联动问题
关于一个动态下拉列表框的二级联动问题。如图:主要想实现的效果是,选择一级类别后,二级类别的下拉列表框中的内容是在一级列表中下的所有数据(注:一级类别和二级类别数据是从数据库中动态查询出来的)。常见的使用情形是:省市区的联动。本文中主要使用JQuery中的ajax方法实现。主要思路:一级类别内容改变时触发change事件,在change事件中调用ajax方法,把一级类别的标识符传入Controlle...
2018-03-09 11:17:56
2200
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人