- 博客(100)
- 收藏
- 关注
原创 Excel导入,判断导入的数据是否数据库已存在
数据库表的三个字段联合唯一,并建立了联合唯一索引。导入的时候要判断导入的每一行数据是否在数据库已存在。不能每处理一行数据就查一次数据库,这样查询太频繁了,如果导入了10000条数据那就要查询10000次数据库了。2、读取excel全部数据,但分批次查询,每次查询1000条,选择1000这个数是确保查询的时候能够走索引;也不能一次查询整张表,因为不知道后续这张表的数据量,如果数据量大的话IO开销和内存开销都会大。3、将查询结果3个联合索引列拼成字符串放到Set里,然后判断每一行的数据是否Set中已存在。
2025-10-12 15:53:52
177
原创 使用@Builder注解一定要加上@NoArgsConstructor注解
原因是:mybatis在将查询结果处理成对象的时候,优先使用的方案是无参的构造方法+set方法。这种方案只要查询字段和对象的属性映射上就可以了,哪怕只查询了3个字段,但对象里有10个属性。但是如果没有无参的构造方法,mabatis就得选择其他的方法来封装查询结果了。这个时候如果字段的顺序、个数、类型和对象的属性、个数、类型不匹配可能就要出问题了。sql也执行了,粘贴到数据库执行sql也是没问题的,报错显示的是英文,大概意思是将查询结果处理成返回对象的时候出错了。方案一就是不使用@Builder注解。
2025-10-12 15:39:33
150
原创 A模块依赖B模块,在B模块里想使用A模块的类怎么实现
前提是 A模块已经依赖了B模块,在B模块中想使用A模块的类肯定是不能让B模块去依赖A模块了,这样就循环依赖了。我们可以在B模块中去定义一个接口,在A模块里写一个实现这个接口的实现类,然后就可以在B模块中调用A模块的这个实现方法了。
2025-09-26 21:35:25
83
原创 代码优化测试
2、类ModelA、ModelB、ModelC。4、填充打印信息PrintFillUtil。1、接口ModelInterface。3、返回的打印信息对象PrintVo。
2025-09-17 23:41:54
176
原创 覆盖nacos配置中心的配置
已经在idea启动命令中修改了启动的端口号,发现不生效,还是使用的nacos配置中心配置的端口号。需要在nacos配置中心加上。参考一:https://blog.youkuaiyun.com/m0_66119504/article/details/148189048。
2025-09-16 15:40:19
352
原创 pull拉取了一个分支的代码报错,还原到拉取之前
3、执行git reset --hard 想回退到的版本。1、执行git branch命令查看当前分支。2、执行git reflog 当前分支。
2025-09-15 09:10:34
96
原创 热部署不生效
今天热部署一直不生效。后来生效了,方式竟然是哪怕我只修改了一行代码,idea都自动重启一下服务。修改了以下六处最好才是我想要的效果。
2025-09-04 11:43:16
255
原创 mysql是怎样运行的(梳理)
各个数据页可以组成一个双向链表,而每个数据页中的记录会按照主键值从小到大的顺序,组成一个单向链表。每个数据页都会为存储在它里面的记录生成一个页目录,再通过主键查找某条记录的时候,可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录,即可快速找到指定的记录。
2025-08-26 21:45:11
1097
原创 redis执行lua脚本的原子性和数据库原子性的区别
当我们想在redis的一个事物当中执行多个命令的时候呢,会选择使用lua脚本。Redis会将一个要执行的lua脚本封装成一个单独的事务,而脚本执行器在执行这个事务的过程中呢,如果有其他的客户端请求过来,redis会把它暂存起来,等脚本处理完以后,才会把暂存的请求恢复执行。但是,如果事务执行的过程中产生了错误,事务是不会回滚的,也不会影响后续的命令执行,也就是说,Redis会保证以原子方式执行lua脚本,但是不保证脚本中的所有的操作要么都执行,要么都回滚这件事儿。
2025-08-20 16:15:41
204
原创 redis与DB双写一致的实现
查询库存(缓存中有从缓存取,缓存没有就查询DB,再缓存起来)(在读锁中实现)思路:100个线程抢3张券。多线程同时操作共享资源,也就是库存,不能超卖。库存>0,更新DB,并删除缓存(放在写锁中实现)。
2025-08-19 16:14:58
258
原创 分布式事务解决方案
由于2PC第一阶段RM已经开启事务,如果有的RM没有准备好,但其他准备好的RM却已经开启了事务,这就会造成其他RM的资源浪费。如果有的RM在第一阶段没有准备好,那其他的RM都没有必要开启事务,由此产生了3PC。也就是TC先询问所有RM在不在,如果所有RM都回复在的话,后面就是2PC的两个阶段。如果有的RM在第一阶段准备出现了异常,或者由于网络或其他原因TC没有收到RM是否准备好的回复,那第二阶段TC通知所有RM进行回滚操作。RM接收到通知后会开启各自的事务,并进行各自的业务操作(事务阻塞没有提交)。
2025-08-17 17:18:06
209
原创 一个接口多个实现类,如何动态调用
1、一个支付接口2、两种支付方法实现类3、自定义MyServiceFactory类4、Controller调用postman测试。
2025-08-14 00:06:46
311
原创 Java的lambda表达式
场景1:遍历场景2:排序场景3:filter过滤场景4:map转换场景5:累计求和场景6:分组场景7:调用接口方法场景8:场景9:判空场景10:filter、map、sort一块使用
2025-01-12 15:33:53
169
原创 原子类及原理和ABA问题解决
注意事项,虽然原子类具有很多优点,但在使用时也需要注意以下几点,ABA问题,CAS算法可能会遇到ABA问题,其变量的值从A变为B,然后又变为A,但算法会误认为他没有被修改过在某些场景下,这可能会导致错误循环,时间长,开销大,如果操作一直不成功,会导致自选锁一直无法获取资源,从而占用CPU。综上所述,原子类是并发编程中一种重要且有效的工具,它利用CAS算法和VO关键字实现了操作的原则性,具有力度更细、性能更好、使用简单等优点,但在使用时也需要注意其可能存在的问题和限制。原子类是指具有原子操作特性的类。
2025-01-03 17:16:13
443
原创 多线程学习
1、创建线程的方法2、线程的状态及状态间的转换3、怎么让线程按照顺序执行4、notify和notifyAll的区别5、wait和sleep的区别6、如何停止一个正在运行的线程7、synchronized关键字的底层原理8、synchronized底层原理进阶9、Java内存模型10、CAS11、volatile关键字12、
2024-12-27 03:12:36
251
原创 微服务学习
1、微服务的五大组件2、eureka服务注册和发现3、负载均衡的实现4、服务雪崩及如何解决5、微服务监控-skywalking6、微服务限流
2024-12-25 12:27:32
484
空空如也
seata分布式事务
2024-12-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1