自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java判断一个字符串是否是数组字符串

【代码】Java判断一个字符串是否是数组字符串。

2025-12-25 15:56:08 123

原创 Spring事务的失效场景

如需异步,可将事务操作放在主线程完成,或将需要异步处理的任务封装为消息发送到消息队列,由消费者处理。:Spring的默认代理(CGLIB/JDK Proxy)只能为public方法创建事务代理。:Spring 5.x 和 Spring Boot 2.x 后,此问题已得到改进,CGLIB也能读取接口注解。:手动操作绕过了Spring的事务同步管理器,导致操作不在Spring管理的同一事务连接内。:避免自调用,通过代理对象调用(见场景1的解决方式)。)绕过了代理对象,直接调用了原始对象的方法。

2025-12-10 10:38:48 317

原创 RocketMQ如何保证消息的一致性及消息不丢

环节核心措施关键配置/代码要点生产者1.发送重试2.事务消息3.失败降级(如落库)捕获异常,存入DBBroker1.同步刷盘2.同步复制3.Dledger集群部署至少3节点Dledger集群消费者1.业务成功后再ACK2.消费幂等在Listener中,业务完成后返回SUCCESS通过数据库唯一键等实现可靠性与性能的权衡同步刷盘和同步复制会降低吞吐量,异步方式则相反。金融等强一致性场景选择前者,日志等场景可选择后者。给你的核心建议。

2025-12-10 09:53:51 705

原创 MySQL InnoDB 引擎如何解决幻读

幻读是数据库事务隔离级别中“可重复读”级别下可能出现的一种现象。在一个事务中,两次查询同一个范围时,后一次查询看到了前一次查询没有看到的“新”行。这些新行是由其他事务插入并提交的。关键点:幻读特指针对一个范围(例如)的查询。问题在于新插入的行,像幻觉一样突然出现。与不可重复读的区别:针对的是同一行数据的更新操作。事务A两次读取同一行,发现值被其他事务修改了。针对的是一个范围的插入操作。事务A两次读取同一范围,发现多出了新的行。技术解决场景原理MVCC解决普通SELECT查询(快照读)

2025-11-14 16:58:34 476

原创 Spring AOP的原理

/ 目标对象@Override// 前置通知System.out.println("[前置通知] 开始执行方法: " + method.getName());System.out.println("[前置通知] 参数: " + Arrays.toString(args));try {// 执行目标方法// 后置通知(正常返回)System.out.println("[后置通知] 方法执行成功,返回值: " + result);// 异常通知。

2025-11-13 09:19:04 841

原创 Spring Bean的生命周期以及其中的扩展点

扩展点类型关键时机典型应用场景容器级Bean定义加载后,实例化前修改Bean的属性值、动态注册BeanBean级实例化前后、属性填充时AOP代理(如ASM)、自定义依赖注入逻辑Aware接口族Bean级初始化早期获取Spring容器资源(如BeanName、ApplicationContext)Bean级初始化前后AOP代理(如CGLIB)、注解处理、性能监控Bean级初始化/销毁时资源初始化(如加载缓存)、资源清理(如关闭连接)Bean级初始化/销毁时。

2025-11-13 08:54:24 435

原创 MySQL 添加索引及添加字段并建立索引

选择性原则:选择高选择性的列建立索引最左前缀原则:复合索引字段顺序很重要覆盖索引:让查询只需要访问索引索引数量控制:不要过度索引定期维护:重建和优化索引。

2025-11-12 09:32:10 303

原创 Java单例模式各种实现

DCL单例模式是一种高性能的线程安全单例实现方式,但需要注意正确使用volatile关键字。在现代Java开发中,枚举方式是实现单例的最佳选择,它天然防止了反射和序列化攻击。枚举单例是实现单例模式的最安全、最简洁的方式,它天然解决了线程安全、反射攻击和序列化破坏等问题。在大多数情况下,推荐使用枚举方式来实现单例模式。

2025-11-12 09:11:51 686

原创 Java中synchronized锁升级

从 JDK 1.6 开始,为了优化锁性能,引入了 ** 锁升级(Lock Upgrade)** 机制,通过逐步提升锁的粒度(从无锁到偏向锁、轻量级锁、重量级锁)来平衡性能与线程竞争场景。无锁(No Locking) → 偏向锁(Biased Locking) → 轻量级锁(Lightweight Locking) → 重量级锁(Heavyweight Locking)设计目标:在中等竞争场景下,通过 ** 自旋(Spin)** 避免直接升级为重量级锁,减少线程阻塞的开销。

2025-06-16 16:27:57 398

原创 实用工具类

自用工具类

2025-02-13 15:07:49 114

原创 Spring事务传播机制

***

2024-08-15 15:31:45 783

原创 时间日期转换

时间日期格式转换

2023-02-14 15:38:33 238

原创 更新自增ID表范围内数据

更新表数据

2022-11-25 16:38:02 737

原创 MySQL根据某一集合批量修改集合对应的不同值

1、foreach标签 <foreach collection="list" item="item" index="index" open="" close="" separator=";"> update table_test <set> name = #{item.name}, date_updated =now() </set> where id= #{

2022-03-02 09:57:57 749

原创 Mysql 查询给日期字段增加相隔日期

在当前的日期上加三天,天数随便改:SELECT date_add(CURRENT_DATE(), interval 3 day);在指定的日期上加三天:SELECT date_add('2022-02-25', interval 3 day);在指定的具体时间上加一个时间:如在"2022年2月25日两点"加上一个小时零十分零十秒的MySQL语句为:select date_add('2022-02-25 2:00:00', interval '1:10:10' hour_second)

2022-02-25 11:57:46 2221

原创 SQL查询同一张表是否存在两条字段相同的数据

表及字段:test(a_id)select a_id from ( select a_id, count(1) nums from test group by a_id) where nums>1oracle:select a_id, count(1) from test group by a_id having count(1)>1注:前提是没唯一约束,主键等约束,因为他们是唯一的,所以对于有这些约束的表是不会存在重复的,不过不考虑这样的字段在查询时就不用列出这些字段分

2022-01-11 14:43:28 7205

原创 MySQL添加索引及添加字段并建立索引

添加字段并设置主键alter table user_test drop primary key;alter table user_test add column NAMEvarchar(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '姓名' AFTER age;alter table user_test add constraint user_testprimary key(`STT_YEAR`, `STT_

2022-01-11 14:30:18 5223

原创 DDL DML DCL TCL

1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema.DDL是SQL语言的四大功能之一。用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束DDL不需要commit.CREATEALTERDROPTRUNCATECOMMENTRENAME2.DML(Data Manipulation La

2021-03-02 15:18:56 341

原创 JSON字符串与对象互转

1、

2021-02-20 17:39:43 472

原创 git删除分支

提示:这里对文章进行总结:首先进入git命令行。chak看一下有哪些分支:git branch -a要删除服务器远端的分支,则执行如下所示的命令:git push origin –delete 分支名如果是要删除本地已经合并了的分支,则执行:git branch –d 分支名删除本地未合并的分支:git branch –D 分支名...

2021-02-19 10:21:48 190

原创 idea导入git新拉取的子module

在从git新导入java项目时,idea会把子module识别为普通文件夹,需要手动配置1.在项目目录下右键 open module setting2. add-import module3.选择要引入的文件夹路径

2021-02-19 10:20:24 1761

原创 Postman调用get请求传参数组

get方式传参数组

2021-01-14 14:59:49 10169

原创 MyBatis批量插入时控制插入的条数及集合分割

MyBatis批量插入数据控制条数控制插入条数在20-50左右 // 控制插入条数为 25条 int count = 25; int len = rptTmplHisCDOList.size(); //计算需要循环的次数 int con = len % 25 == 0 ? len / 25 : len / 25 + 1; List<BudgetTmplHisC> listItems; f

2020-11-23 17:23:56 1957 3

原创 git 修改分支名称

假设分支名称为oldName想要修改为 newName本地分支重命名(还没有推送到远程)git branch -m oldName newName2. 远程分支重命名 (已经推送远程-假设本地分支和远程对应分支名称相同)a. 重命名远程分支对应的本地分支git branch -m oldName newNameb. 删除远程分支git push --delete origin oldNamec. 上传新命名的本地分支git push origin newNamed.把修改后的本地分

2020-10-15 11:11:52 447

原创 System.arraycopy()

public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)作用:将指定源数组中的数组从指定位置复制到目标数组的指定位置。参数:src - 源数组。srcPos - 源数组中的起始位置。dest - 目标数组。destPos - 目的地数据中的起始位置。length - 要复制的源数组元素的数量。举例:原数组:int[] arr={1,2,3,4,5,6,7,8,9,0};目标

2020-06-17 09:09:57 255

原创 MySQL in语句防止SQL注入

入参采用需要查询的字段集合,例如下面的 userIds 类型为ListUSER_ID IN <foreach collection="userIds" item="item" open="(" separator="," close=")"> #{item} </foreach>

2020-06-08 15:49:12 1532

原创 like 语法防止 SQL注入

like 语法防止 SQL注入Mysql:select * from t_user where name like concat('%', #{name}, '%') Oracle: select * from t_user where name like '%' || #{name} || '%'SQLServer:select * from t_user where name like '%' + #{name} + '%'

2020-06-02 15:41:53 993

空空如也

空空如也

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

TA关注的人

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