![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
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 · 264 阅读 · 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 · 2198 阅读 · 0 评论 -
记录 springboot 多数据源下 mybatis-plus ipage的坑
ipage 查询报错,显示错误信息底层为selectone查询解决:网上解决方案大多是 page参数没有放在参数第一位(不行)自查发现在配置多数据源的时候SqlSessionFactoryBean初始化用的是SqlSessionFactoryBean,切换为MybatisSqlSessionFactoryBean 解决同时解决不能读取mybatis-plus 默认mapper方法的错误...原创 2021-10-13 15:59:25 · 530 阅读 · 3 评论 -
锁优化
无锁编程CAS:先比较后设置,容易产生ABA问题,多线程下自旋浪费资源。jdk中提供原子操作类·AtomicBoolean AtomicInteger AtomicLongjdk1.8 优化:LongAdder 在CAS的基础上额外增加了分段锁volatile:共享内存变量,强制刷新变量变更到内存。threadlocal:线程享有数据副本,单独操作。会占用大量内存。有锁编程缩小使用范围对于synchronized关键字来说,缩小锁的影响范围,在业务允许下代码块优于方法,对于非必要加原创 2021-03-25 01:51:01 · 58 阅读 · 0 评论 -
几种分布式锁的实现方式记录
基于数据库的分布式锁A:基于表记录(唯一索引确保业务锁唯一)创建一张表,基于表中的数据实现是否获取/释放锁。获取锁则往表中插入特定的数据,释放则删除优点:简单缺点:1.锁不存在过期时间,释放锁失败则需要人为维护2.依赖数据库,需要保证数据库高可用。3.锁非阻塞,无法保证一次性获取锁成功,需要人为维护逻辑(循环插入)4.锁非可重入(变更为可重入需要加特殊信息处理)B:基于乐观锁(基于A)需要加锁的业务数据加上版本等信息维护锁(cas)确定是否是获取锁的版本确 定数据是否被更.原创 2020-11-10 11:57:35 · 83 阅读 · 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 · 1850 阅读 · 0 评论 -
Spring data jpa 版本太低导致findFirstByXXX 方法失效
项目所用版本:1.6.4xxx 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 · 1677 阅读 · 0 评论