- 博客(10)
- 收藏
- 关注
原创 ThreadLocalUtils
public class ThreadLocalUtils { private static List<ThreadLocal<?>> list = new ArrayList(); public ThreadLocalUtils() { } public static <T> ThreadLocal<T> newThreadLocal(ThreadLocal<T> threadLocal) {
2020-08-05 22:46:53
925
原创 spring事件使用
定义事件package com.starunion.tracker.event;import lombok.Data;import org.springframework.context.ApplicationEvent;/** * @author klj */@Datapublic class TransferPenaltyEvent extends ApplicationEvent { private String billCode; public Transfer
2020-07-08 22:42:32
449
原创 Innodb 死锁解析
近期查看线上日志,发现sql某个update语句每日278,110次有0.0061%概率发生异常,异常信息如下:com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction进一步分析日志,原因是...
2019-12-18 16:59:31
230
原创 java 集合去重总结
说到集合去重,java8提供了distinct可以实现大部分情况的去重,当然,你如果不嫌麻烦,可以自己写for循环去重。今天我们就来讲讲如何合理使用java8的特性实现去重。1、字符串集合去重字符串去重事最简单的去重,直接使用stream流的distinct就可以实现去重。List<String> list = Arrays.asList("abc","bcd","cda","a...
2019-12-10 14:53:06
753
原创 踩过的坑——MySQL删除索引要慎重
事情经过:原表有两个字段的联合唯一索引unique key,因业务变更这两个字段不再唯一,需要去掉唯一索引。考虑到其中一个字段不仅作为唯一索引,还当作查询索引使用,去掉这个唯一索引,要新加这个字段的普通索引。于是提了ddl数据库变更,删除唯一索引,新增普通索引。事故因此发生,当删除唯一索引后,还没来得及执行新增普通索引,数据库连接池就被占满了,导致页面所有请求都发生异常!表中有500W数据,...
2019-12-10 10:31:44
5696
原创 踩过的坑——MySQL datetime 精度
结论:MySQL存储datetime时候会自动将毫秒四舍五入到秒级。经过:某一段业务逻辑中,拿MQ传过来的时间对比数据库查询的时间截取满足条件时间段数据,结果一部分数据正确,一部分数据错误。存数据库和发MQ虽然顺序执行,但一开始怀疑存数据库是存的主库,消费mq,并查询数据库差的从库对比时间,从库的数据一瞬间没有从主库同步过来。最后询问了dba确认读写都走的是主库。那么问题肯定出在了时间判定上,于...
2019-11-04 17:14:58
2736
1
原创 类初始化加载方法
类初始化加载方法有两种方式1、使用注解@PostConstruct修饰要加载的方法2、类实现InitializingBean接口,并实现其afterPropertiesSet方法
2019-10-31 14:22:16
439
原创 mybatis 一对多级联查询的4种方式
大家都知道mybatis的一对多关联查询collection有两种方式。第一种,嵌套resultMap:<resultMap id="DictionaryResultMap" type="com.xxx.darwin.model.DictionaryQueryModel" > <id column="id" jdbcType="BIGINT" property="id...
2019-08-26 11:30:24
2437
4
原创 解决自定义排序防止sql注入
1、场景 :页面列表需要按照指定列排序,前端向服务端传入排序参数,Sorted对象包含排序字段prop和排序方式order。例如要按照id倒序排序。前端传参{prop:"id",order:"desc"} ,后端接收后生产sql语句: select * from table1 order by id desc 看似没有问题,假如该接口被恶意攻击者知道,传入参数{prop:"id",order:...
2019-06-27 16:15:06
1413
原创 java8特性stream流的使用总结
stream的使用 ,让我们的代码更加简洁,易懂(易维护)。它的使用,减少了大量的if条件语句和for循环语句,从输入到输出,像一条河流一样,让维护者读起来更像是读一篇文章。一个Stream流主要由三部分组成,即数据源、中间操作、终止操作。1、数据源常用的创建流方式a、Stream.of,我们可以通过Stream的静态方法,传入一个泛型数组,或者多个参数,创建一个流。b、Arrays.s...
2019-03-18 19:31:48
981
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人