- 博客(18)
- 收藏
- 关注
原创 事务方法中发送异步消息,且事务方法中和消息处理逻辑都更新同一表导致数据错乱
事务方法内更新了活动场次表,但是事务还没有结束,没有提交。此时消息已经发送出去,消费者查询到场次表活动开始时间未更新,判断为活动场次报名未开始。之后事务方法提交,再之后消费者提交更新把事务方法的更新覆盖掉了。业务场景:活动审核通过后,更新活动状态(更新为报名开始)、活动场次状态(更新为报名开始),然后发送延时异步消息(在活动报名开始、报名结束、活动开始、活动结束各个时间节点投递消息)。审核通过后,活动场次表的活动报名开始时间应该更新为审核通过时间,状态应该更新为报名中;事务提交之后再发送异步消息。
2023-03-14 20:02:19
342
原创 Cache Aside Pattern(旁路缓存模式)在写数据的过程中,可以先删除 cache ,后更新 db 么?
不可以。以mysql 5.6为例,默认隔离级别为RR(可重复读)。线程1对数据进行更新,如果先删除缓存后更新DB,在两步中间若有线程2进行读数据操作,所读取的数据为更新前的数据,让后把此数据放入缓存。在此之后DB为新数据,缓存为旧数据,造成DB与缓存不一致
2022-09-07 15:14:48
416
原创 本机缓存和redis缓存不一致问题
业务场景:有一张排名表,记录某个活动的前名,每天凌晨24点更新一次数据,此外时间不更新。有两个查询:1:查询前二十名 ,由于此数据比较小,利用caffeineCache做本机缓存(一个小时自动过期)2.查询某个用户排名,由于条数比较多,利用redis做缓存(一个小时自动过期)情况一:当凌晨榜单更新后,一个小时内缓存未过期,总榜单数据在本机的caffeineCache缓存不会更新,如果有人前一个小时内没有查询过,没有他的缓存,此时他查询自己的排名和前20名,数据会不一致(前二十名为服务器的旧缓存数
2022-05-18 19:56:35
704
原创 java使用float或者double 运算,精度丢失问题,IEEE754
public static void main(String[] args) { System.out.println(0.1+0.2); BigDecimal bigDecimal=new BigDecimal(0.1+""); BigDecimal bigDecimal2=new BigDecimal(0.2+""); BigDecimal add = bigDecimal.add(bigDecimal2); double doubleValue = add.do
2022-01-04 09:59:48
496
转载 为什么HashMap的长度是2的整数次幂?
先说答案:为了加快哈希计算以及减少哈希冲突为什么可以加快计算?我们都知道为了找到 KEY 的位置在哈希表的哪个槽里面,需要计算 hash(KEY) % 数组长度但是!% 计算比 & 慢很多所以用 & 代替 %,为了保证 & 的计算结果等于 % 的结果需要把 length 减 1也就是 hash(KEY) & (length - 1)这个 hash(KEY) 没什么可说的,调用 Object 里面的 native 方法完成计算,一般返回的是一个整数,至于是偶数还是
2021-12-01 17:32:48
208
转载 为什么 Java 中只有值传递?
public class Person { private String name; // 省略构造函数、Getter&Setter方法}public static void main(String[] args) { Person xiaoZhang = new Person("小张"); Person xiaoLi = new Person("小李"); swap(xiaoZhang, xiaoLi); System.out.println("
2021-12-01 10:28:10
172
原创 spring事务Transactional 中使用mysql truncate清空表对事务的影响
数据库版本为mysql8springboot 2.5.6。论坛里有别的博客说的truncate 后的sql无法提交的情况,在我使用的版本没有出现,可能他用的是比较老的版本。public class TestTeacherController extends BaseController { @Resource private JdbcTemplate jdbcTemplate; @ApiOperation("删除数据") @PostMapping("delete")
2021-11-26 15:40:06
1631
1
原创 java 基本数据类型int 的默认初始值问题
int类型在Java中,若果作为类成员声明,不初始化值,会被默认初始化为0;如果作为方法的局部变量来声明,不进行初始化的话 会在编译期报错,无法通过编译。
2021-11-24 14:19:43
9380
1
原创 深拷贝实现的工具类利用输入输出流
package com.Utils;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;public class CloneUtils { @SuppressWarnings("unchecked")
2021-08-30 12:00:56
277
原创 关于Integer和int的比较 存储位置 jvm 自动拆装箱
1、由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同)。Integer i = new Integer(100);Integer j = new Integer(100);System.out.print(i == j); //false2、Integer变量和int变量比较时,只要两个变量的值是向等的,则结果为true(因为包装类Integer和基本数据类型int比较时,java会自动
2021-08-02 11:45:38
1060
原创 自定参数解析器HandlerMethodArgumentResolver实现将用户token中的用户信息自动解析到controller中的方法的参数中
1.创建一个HandlerMethodArgumentResolver。package com.ciih.axj.resolver;import com.ciih.axj.model.UserPlus;import com.ciih.axj.model.User;import com.ciih.axj.myAnnotations.UserIn;import com.ciih.axj.service.UserPlusService;import com.ciih.axj.service.User
2021-07-23 17:32:36
346
原创 当post请求 url参数和body传参存在同名参数,controller如何处理
当post请求 url参数和body传参存在同名参数,controller如何处理?后台会将同名参数两个字符串加在一起
2021-06-23 20:56:25
1238
2
原创 java 上转型对象 编译时类型和运行时类型 多态
用父类声明对象并,用子类对象初始化,例如:Son s=new Son;Father f =s;子类对象赋值给父类对象,被称为上转型。此处对象f被称为对象s的上传型对象。此时对象f的编译时类型为Father 类,运行时类型为Son 类型。这是java多态特性的体现之一。如果子类重写的父类的方法,在编译期间,我们通过f调用Father 类中的方法,而在运行期通过f调用的Son类中的方法。常见的应用场景:我们在MVC架构中的controller注入了一个service,比如 :@Resourcepri
2021-06-23 20:09:36
159
转载 mybatisplus代码生成器
java文件 Generator.javapackage com.ciih.elqz;import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;import com.baomidou.mybatisplus.core.toolkit.StringPool;import com.baomidou.mybatisplus.core.toolkit.StringUtils;import com.baomidou.mybat
2021-05-27 11:50:25
205
原创 使用Mybatis-plus内置方法,更新一个字段还是全部字段,三种应对情况下性能效率比较
业务中遇到一种场景,需要从数据表中查询出一条记录,将其中一个字段更新一个值,以下三种方式://Mybatis-plus内置更新方法 @Override public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> { public boolean updateById(T entity) { return retBool(baseMapper.upd
2021-04-09 10:55:31
5823
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人