
java后端
耶斯莫拉拉不拉
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
字符串数组的全排列组合实现
public static void main(String[] args) { char[] chs = {'A','B','C','D','E'}; List<String> result = new ArrayList<>(); comb(chs,result); result = result.stream().sorted(Comparator.comparingInt(String::length)...原创 2022-05-24 15:24:03 · 351 阅读 · 0 评论 -
记录 时间2021-11-08T06:52:58.000+0000类型格式化
解决方案 DateUtil.parse(obj.toString(), “yyyy-MM-dd’T’HH:mm:ss.SSS’+'SSSS”) 核心是格式化pattern需要符合格式,可以直接格式化为date类型原创 2021-11-09 16:39:40 · 2323 阅读 · 0 评论 -
记录 springboot 多数据源下 mybatis-plus ipage的坑
ipage 查询报错,显示错误信息底层为selectone查询 解决: 网上解决方案大多是 page参数没有放在参数第一位(不行) 自查发现在配置多数据源的时候SqlSessionFactoryBean初始化用的是SqlSessionFactoryBean,切换为MybatisSqlSessionFactoryBean 解决 同时解决不能读取mybatis-plus 默认mapper方法的错误 ...原创 2021-10-13 15:59:25 · 684 阅读 · 3 评论 -
锁优化
无锁编程 CAS:先比较后设置,容易产生ABA问题,多线程下自旋浪费资源。 jdk中提供原子操作类·AtomicBoolean AtomicInteger AtomicLong jdk1.8 优化:LongAdder 在CAS的基础上额外增加了分段锁 volatile:共享内存变量,强制刷新变量变更到内存。 threadlocal:线程享有数据副本,单独操作。会占用大量内存。 有锁编程 缩小使用范围 对于synchronized关键字来说,缩小锁的影响范围,在业务允许下代码块优于方法,对于非必要加原创 2021-03-25 01:51:01 · 100 阅读 · 0 评论 -
几种分布式锁的实现方式记录
基于数据库的分布式锁 A:基于表记录(唯一索引确保业务锁唯一) 创建一张表,基于表中的数据实现是否获取/释放锁。 获取锁则往表中插入特定的数据,释放则删除 优点:简单 缺点: 1.锁不存在过期时间,释放锁失败则需要人为维护 2.依赖数据库,需要保证数据库高可用。 3.锁非阻塞,无法保证一次性获取锁成功,需要人为维护逻辑(循环插入) 4.锁非可重入(变更为可重入需要加特殊信息处理) B:基于乐观锁(基于A) 需要加锁的业务数据加上版本等信息维护锁(cas)确定是否是获取锁的版本确 定数据是否被更.原创 2020-11-10 11:57:35 · 132 阅读 · 0 评论 -
spring data jpa 原生脚本查询bigInteger/long
原生脚本查询查找ID集合 实体ID为long型,选择利用long型接收 jpa不报错,也能正常接收到结果集。 后续操作: List a ; List b 为获取的结果集 a.remove(b); 得不到想要的结果。debug发现b接收到的结果集内部数据格式为bigInteger(数据库格式为bigInt) 类型不一致导致无法从a中移除b。程序运行一切正常。 解决: 改成用bigInteger接收结果集,转成long格式,再remove ...原创 2020-05-27 14:11:57 · 2014 阅读 · 0 评论 -
Spring data jpa 版本太低导致findFirstByXXX 方法失效
项目所用版本:1.6.4 xxx findFirstByXXX 当数据超过1报错 result returns more than one elements; nested exception is javax.persistence.NonUniqueResultException: result returns more than one elements 临时解决方案: 返回结果改为List...原创 2020-03-03 16:55:21 · 1809 阅读 · 0 评论