- 博客(65)
- 收藏
- 关注
原创 【Java】mybatis-plus乐观锁与Spring重试机制
上一篇讲到了mybatis-plus的基本使用,简单的使用`@Version`和一个基础配置类即可实现乐观锁。但是mybatis-plus本身并没有自带重试机制。即当我们带上版本号去更新数据,但是由于另一个线程已经将版本号修改了,导致这次的修改失败,那么应该重新读取数据,再次更新,这就是重试机制。
2025-06-03 16:04:57
398
原创 【Java】mybatis-plus乐观锁-基本使用
乐观锁(Optimistic Locking)是解决并发问题的重要机制。它通过在数据更新时验证数据版本来确保数据的一致性,从而避免并发冲突。与悲观锁不同,乐观锁并不依赖数据库的锁机制,而是通过检查数据的版本或标志字段来判断数据是否被其他事务修改过。MyBatis-Plus 提供了便捷的乐观锁支持,通过在实体类中添加版本号字段(通常是一个 int 或 long 类型的字段),并在更新操作时检查版本号,以确保数据的一致性和完整性,同时不影响系统的并发性能。
2025-05-30 12:09:47
603
原创 【Java】Spring的声明事务在多线程场景中失效问题。
在Spring的声明式事务中,多线程环境下事务会失效,因为子线程无法继承父线程的事务上下文。DataSourceTransactionManager的doBegin()方法通过ThreadLocal存储事务连接,导致子线程无法访问父线程的连接。为解决此问题,可以在创建子线程时,使用TransactionSynchronizationManager.bindResource()方法,将父线程的ConnectionHolder传递给子线程,确保父子线程使用同一个事务连接。
2025-05-15 18:06:57
438
原创 【Java】Spring IoC中的相关注解
Spring IoC中除了基础的@Bean@Compoent还有一些其他的注解可以用来控制Bean注入的时机一起来了解一下吧。
2025-05-15 16:14:46
324
原创 【工具】文件传输工具croc
croc 是一个开源的文件传输工具,允许任何两台计算机简单且安全地传输文件和文件夹。该项目由 schollz 开发,支持跨平台传输(Windows、Linux、Mac),允许多个文件传输,支持中断传输的恢复,无需本地服务器或端口转发,优先使用 IPv6 并支持 IPv4 回退,还可以使用代理如 Tor。
2025-04-18 12:05:52
330
原创 【Java】SpringBoot优雅的策略模式
SpringBoot中使用策略模式还是很简单的。一个接口多个实现,多个实现都使用@Service注册到Spring容器中,然后在策略分发器中注入成一个实现类的集合列表。同样实现一个一模一样的方法parse()然后通过stream流找到支持解析的实现类调用该实现类的parse()后续有新增实现类,实现接口后@Service注册即可。
2025-03-26 15:01:08
481
原创 【Java】SpringBoot模拟流式输出,前端使用流式接收数据并打印
现在AI的接口由于生成内容比较慢都是采用的流式输出的方式。这里将模拟一下流式输出。
2024-11-15 16:49:10
2203
1
原创 【Java】SpringBoot使用@Sync注解 异步批量插入百万条数据
多线程方式可以提高插入数据的效率,网络对数据新增的影响也很大。如下:写了一个简单案例,创建了100w条数据,然后调用。然后进行分割每1000条一组,然后交给异步方法进行调用。对于IO密集型 更多的线程池对于提升速度效果不明显。进行线程阻塞,这样方便查看所有线程执行完成的耗时。是不推荐使用的,但是我们可以自定义线程池。一般springBoot默认自带的。线程池方式对于提升速度有显著效果。同样是创建了10w条数据。使用注解标记方法使用异步。启动类上需要加上这个注解。批量插入数据的简单案例。
2024-09-26 16:40:57
681
1
原创 【Java】List按照某个属性进行分组,形成二维List,相同的类型放在同一个集合
【代码】【Java】List按照某个属性进行分组,形成二维List,相同的类型放在同一个集合。
2024-09-04 11:02:29
419
1
原创 【Java】Logbook优化接口调用日志输出,优雅!
很多人可能没有接触过logbook,但它的确是一个很好用的日志框架。引用官网的介绍Logbook 是一个可扩展的 Java 库,可以为不同的客户端和服务器端技术启用完整的请求和响应日志记录。
2024-07-01 00:47:58
559
原创 【Java】Map中的merge方法,分组合并数据,好用!
循环list判断key是否存在,不存在就存入值,存在就取出值累加后再存入。merge()方法最后的一个参数的回调函数说明。现有如下数据,需要统计各个学生的总分数。可以只需要一行代码搞定!
2024-07-01 00:26:48
719
原创 【Oracle】调用HTTP接口
在oracle中发起http请求对oracle压力比较大,建议不要将完整报文都丢给oracle进行调用。建议的方式是,请求报文在某个地方存储起来,然后入参就传递一个ID。接收方通过ID进行查询完整的报文。公司唯有oracle被允许访问内外网,因此在oracle中发起HTTP请求。
2024-06-19 23:37:56
1055
原创 【Oracle】修改已经存在的序列的当前值
在oracle中一般使用序列来实现ID自增。但是oracle中序列维护的没有mysql那么好。只是单存的递增。比如新建了一个序列,从1开始,每次递增1。此时我向数据库里插入一条id=10的数据。那么在序列查询到10的时候,插入就会报错。所以比较简单的解决办法就是,让现在序列的起始值>目前id的最大值。
2024-05-31 10:00:26
1658
原创 【Git】项目源码迁移到另一个gitlab(保留原来提交历史记录)
推送的时候可能会报错,这是gitlab的保护机制,因为这么推送会覆盖新代码仓库的所有操作,所以推送前保证我们新的代码仓库是空的!然后可以执行如下命令进行强制推送。公司原来是自己私有部署的gitlab。有了研发云后就希望将代码推送到研发云的代码仓库上。这时候需要迁移并保留原来提交的历史记录。也可以使用如上的IDEA操作界面进行修改远程仓库地址。右键项目->Git->Manage Remotes。可以在此处管理多个远程仓库的地址。代码推送仓库地址选择。
2024-03-05 11:48:51
2114
1
原创 【Nginx】Nginx配置反向代理 和 https
进入linux /etc/nginx/ 打开nginx.conf 进行以下配置。nginx.conf配置。
2024-02-22 19:35:15
1269
原创 【Docker】Docker容器挂载单个文件,符号链接单个文件
我们知道Docker通常使用数据卷挂载来持久化一些配置或者数据。但是数据卷的挂载都是整个目录。宿主机目录映射容器内目录。但是有些情况下,我只想将宿主机的某个配置文件映射到容器内的某个配置文件。也就是挂载单个文件,这种情况该如何实现呢?接下来以nginx为例。
2024-02-22 11:19:08
1373
原创 springboot配置https
本身不是一个挺难的东西,但是也踩了很多坑,终于是可以了,在此记录一下。就两步生成证书和springboot配置。
2023-06-26 11:48:30
1545
原创 【Java】SpringCloud2020 spring-cloud-gateway 使用
SpringCloud2020 Spring-Cloud-Gateway 整合nacos,使用教程,避免踩坑
2023-02-24 23:49:17
1004
原创 【Java】SpringBoot2.4.0 多配制文件使用,更方便的配置分组管理
首先先来看一下springboot2.4.0之前的版本是如何管理配置文件的.
2023-02-23 11:24:40
853
原创 docker/docker-compose 安装mysql5.7
docker安装mysql5.7 踩坑.为什么docker run能运行,docker-compose不能运行,而且报权限异常.
2023-02-13 15:24:22
1804
原创 JAVA实现AES加密,解密
java提供了加解密工具,可以将字节转成加密字节.可以直接在数据库中进行解密,无需查到后再遍历解密。一般情况我们希望以字符串的形式展示加密串。因此在加解密前需要对内容进行转换.可以将byte[] 转换为。
2023-02-01 10:26:02
2614
原创 【JavaScript】使用XMLHttpRequest发送网络请求
JavaScript使用XMLHttpRequest发送网络请求,并封装Promise
2022-11-08 16:02:51
873
原创 【Java多线程】基础知识二、java线程的几种状态,synchronized锁注意点以及原理详解
多线程的基础知识,主要讲解了线程的几种状态,synchronized锁注意点以及原理详解。
2022-03-30 16:08:16
311
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人