自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

记忆碎片

学习笔记

  • 博客(12)
  • 收藏
  • 关注

原创 @Scheduled 定时任务中断BUG

经过查看发现该方法内手动new了一个restTemplate并且未设置超时时间。发现线程状态是RUNNABLE,从日志分析与restTemplate有关。生产环境出现了BUG经过排查某个定时任务中的逻辑并未被执行。判断为某次连接因网络波动未收到信号导致其一直处于阻塞状态。jstack查看日志。

2022-10-11 20:34:41 497 1

原创 关于整合sharding的动态数据源碰到的AOP内部调用失效BUG

业务:需要整合sharding并且做到多个数据源多个线程之间切换。实现:使用spring的AbstractRoutingDataSource,在指定切面中根据ThreadLocal内存储的数据源切换。问题:其中类class1此类继承的base类拥有Threadlocal属性用以存放指定数据源信息并通过切面切换数据源,切面为类1所有方法。class1方法method1需要启动一个新线程thread1,但此时该方法method1方法内部又新建了一个线程thread2,thread2中run()方

2021-04-23 21:13:03 245

原创 关于@Transactional注释的方法中使用Synchronized代码块失效的问题

对@Transactional了解不深,导致了在开启了事务的方法中使用了synchronized代码块,此时同步代码将失去意义.场景: 如锁定库中某条数据,使多线程竞争安全的情况下使用同步代码块原因:锁定操作因事务未提交也并未及时做出锁定.解决方法:1.不使用数据库操作锁定数据 比如缓存锁定数据2.将同步代码块封装为普通方法放在其他类中来达到拆分为两个事务的效果,调用时使用synchronized关键字调用即可达到预期效果...

2021-02-03 10:43:01 361

原创 JAVA泛型的坑

spring的BeanUtils.copyProperties() 无法复制泛型属性 如抽象出id的类型为泛型Integer vo定义id为int或Integer 均无法copy属性 因为java泛型仅存在于编译阶段

2020-12-10 09:52:57 95

原创 SpringBoot服务间依赖 扫描springbean问题

最近项目需要将两个服务合并为一个,副服务打成jar包由主服务依赖碰到了扫描不到bean的问题解决方法:使用springboot的自动装配配合@componetScan注解扫描整个第三方jar包在副服务最外层包创建一个Scanner类,打上@Configuration注解并在resources目录下创建 META-INF\spring.factories 注意META-INF目录也要创建,并...

2020-04-10 17:09:50 638

原创 悲观锁、乐观锁、分段锁自我理解

java中sychronized锁为悲观锁,未获得锁则阻塞线程,线程挂起与运行中需要性能开销CAS乐观锁 compareAndSwap ,获得锁失败则自旋,有重试次数,在竞争激烈的情况下性能不如悲观锁,jdk8引入了Longadder 分段锁,原理是在竞争激烈的情况下,在cells数组中空的位置进行CAS操作,最后相加获得结果,cells数组初始大小为2,每次扩容2倍,直至超过cpu核心数...

2019-12-11 15:55:11 259

原创 Mybatis无效绑定 mapper接口与xml同路径

检查路径都无问题但是却一直报错绑定无效最后发现是因为xml文件没被编译进项目gradle:sourceSets.main.resources.srcDirs = ["src/main/java","src/main/resources"]maven:<build> <resources> <!-- mapper.xml文件在j...

2019-12-09 16:43:22 786

原创 HashMap

最小元素是 Node键值对table长度默认为1<<4,加载因子默认0.75,最大容量1<<30,由链表转为树的阈值为8,转换为红黑树最小容量为64,小于则继续扩容之所以长度为2n次方是为了确认table索引位置 key.hashcode&(length-1) 代替取模运算,效率更高...

2019-12-05 17:36:13 62

原创 多线程下 redis阻塞线程

开了12个线程 程序只能跑4个线程 多线程一直没抛异常 说明可能是内部死循环了 仔细一查发现是redis阻塞了线程原因是没有设置redis的最大连接数与等待时间 默认最大连接数为8导致每个线程占用2个连接 所以一直只有4个线程有结果Jedis需要手动 close以将连接归还线程池...

2019-11-28 16:07:57 706

原创 多数据源mybatis无法自动映射实体类

debug一晚上 发现自动转换驼峰命名方法传入值为 falsemybatis默认不自动转换 所以字段匹配不上多数据源(分包 多配置文件)情况下 即使application中设置为true也会被忽略 需要手动在配置类中 设置setMapUnderscoreToCamelCase(true)...

2019-11-28 15:41:24 854

原创 String to Date 格式转换

在参数接收类中添加Spring注释@DateTimeFormat( pattern = "yyyy-MM-dd HH:mm:ss")

2018-05-21 17:46:41 458

原创 不用 is 做变量名前缀 生成代码会漏掉 "is"字符串

使用IDEA 生成get/set方法 会丢失"is"字符串  使框架均无法获取该属性

2018-05-21 16:31:37 792

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除