自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 收藏
  • 关注

原创 Lambda表达式

【代码】Lambda表达式。

2025-10-18 16:38:29 88

原创 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分布式锁简单模拟抢券场景

【代码】使用redis分布式锁简单模拟抢券场景。

2025-08-21 10:36:44 221

原创 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

原创 MySQL调优

todo。

2025-08-15 17:52:16 121

原创 一个接口多个实现类,如何动态调用

1、一个支付接口2、两种支付方法实现类3、自定义MyServiceFactory类4、Controller调用postman测试。

2025-08-14 00:06:46 311

原创 Semaphore的一个使用例子

【代码】Semaphore的一个使用例子。

2025-02-27 11:04:37 121 1

原创 锁(synchronized) 草稿

仔细学习下这篇文章。

2025-02-26 12:57:37 148

原创 redis主从复制

1、主从同步——全量同步2、主从同步——增量同步

2025-01-13 11:13:47 224

原创 如何保证缓存和数据库双写一致(读写锁、MQ异步通知)

1、要求强一致性2、可以延迟一致

2025-01-13 10:34:17 160

原创 Java的lambda表达式

场景1:遍历场景2:排序场景3:filter过滤场景4:map转换场景5:累计求和场景6:分组场景7:调用接口方法场景8:场景9:判空场景10:filter、map、sort一块使用

2025-01-12 15:33:53 169

原创 CyclicBarrier

【代码】CyclicBarrier。

2025-01-11 13:57:12 197

原创 CountDownLatch应用

【代码】CountDownLatch应用。

2025-01-11 11:15:21 145

原创 LockSupport应用及底层实现原理

【代码】LockSupport应用及底层实现原理。

2025-01-10 22:31:59 202

原创 CompletableFuture // todo

相比较所有代码都在主线程执行,使用Future的好处:利用服务器多核、并发的优势。

2025-01-10 22:24:27 219

原创 原子类及原理和ABA问题解决

注意事项,虽然原子类具有很多优点,但在使用时也需要注意以下几点,ABA问题,CAS算法可能会遇到ABA问题,其变量的值从A变为B,然后又变为A,但算法会误认为他没有被修改过在某些场景下,这可能会导致错误循环,时间长,开销大,如果操作一直不成功,会导致自选锁一直无法获取资源,从而占用CPU。综上所述,原子类是并发编程中一种重要且有效的工具,它利用CAS算法和VO关键字实现了操作的原则性,具有力度更细、性能更好、使用简单等优点,但在使用时也需要注意其可能存在的问题和限制。原子类是指具有原子操作特性的类。

2025-01-03 17:16:13 443

原创 远程debug

2024-12-31 13:21:19 148

原创 项目中日志采集

2024-12-30 19:15:49 140

原创 工作中解决的问题

2024-12-30 18:34:37 113

原创 上传数据的安全性如何控制

2024-12-30 18:28:23 132

原创 权限认证如何实现

2024-12-30 18:23:40 119

原创 JWT单点登录

2024-12-30 18:15:02 136

原创 JVM实践 todo

1、JVM调优

2024-12-30 17:02:40 272

原创 GC垃圾回收

1、对象什么时候被垃圾回收器回收2、垃圾回收算法3、分代垃圾回收4、垃圾回收器5、G1垃圾回收器6、强引用、软引用、弱引用、虚引用

2024-12-30 15:23:33 231

原创 Java虚拟机——JVM

1、JVM的组成2、程序计数器3、堆4、虚拟机栈5、方法区6、直接内存7、类加载器8、类装置的过程

2024-12-30 14:21:06 557

原创 多线程学习

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

原创 集合学习todo

2024-12-26 16:08:03 122

原创 消息中间件RabbitMQ和kafka

todo。

2024-12-26 15:16:42 948

原创 分布式事务解决方案seata和MQ

特点:强一致性、会锁定资源。

2024-12-25 17:12:20 213

原创 CAP和BASE理论

2024-12-25 13:01:37 125

原创 微服务学习

1、微服务的五大组件2、eureka服务注册和发现3、负载均衡的实现4、服务雪崩及如何解决5、微服务监控-skywalking6、微服务限流

2024-12-25 12:27:32 484

空空如也

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

TA关注的人

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