- 博客(50)
- 收藏
- 关注
原创 接口幂等性保证,以及对应一个支付单只能生成一个订单
本文提出了一种支付场景下确保订单创建幂等性的解决方案。通过Redis分布式锁(key为"save_order_+手机号")防止重复提交,采用requestId作为幂等键,在order_log_detail表中记录唯一性数据。支付数据生成后,系统会先创建支付记录,再以支付ID作为requestId创建订单,若已存在则返回原订单ID。针对绑定失败情况,设计了定时任务扫描未绑定数据,重新调用创建接口并处理绑定关系。方案结合了数据库唯一约束、乐观锁机制和异常重试,有效保证了支付单与订单的一对一关
2025-12-05 14:18:06
381
原创 BindingException错误解决方法
BindingException错误通常由MyBatis无法匹配Mapper接口与XML映射导致。核心排查点包括:1)检查接口方法名与XML的id是否严格一致;2)确认XML文件路径与接口包名匹配(如ReachStrategyDAO.xml放在resources对应目录);3)确保XML中namespace填写接口全限定名;4)检查@MapperScan或mapper-locations配置是否正确扫描路径;5)验证构建工具是否打包了XML文件。当前项目问题在于ReachStrategyDAO包
2025-10-28 18:23:29
727
原创 java项目数据脱敏工具类实现
本文介绍了一个Java工具类SensitiveDataUtils,用于实现手机号、邮箱和身份证的脱敏处理。工具类包含边界条件处理,性能优化,并支持快速扩展其他脱敏规则。适用于用户隐私保护和数据合规性要求场景,符合个人信息保护规范。
2025-08-21 16:47:09
350
原创 java循环分页查询数据,任何把查询到的数据,分批处理,多线程提交到数据库清洗数据
循环分页查询数据,任何把查询到的数据,分批处理,多线程提交到数据库清洗数据
2025-08-13 16:35:48
462
原创 Java 的 CountDownLatch 中,latch.await()的作用是什么,怎么使用的
Java 的 CountDownLatch 中,latch.await() 是怎么使用的
2025-08-13 15:56:45
410
原创 面试题:【多线程问题,三个线程A,B,C;C线程依赖B线程的结果执行,怎么控制】
多线程问题,三个线程A,B,C;C线程依赖B线程的结果执行,怎么控制
2025-08-13 15:53:46
888
原创 【AOP拦截器逻辑处理,以及对事务的控制】
Java中实现订单插入后异步通知商家的解决方案。通过Spring AOP拦截订单插入方法,利用TransactionSynchronization确保在事务提交后才触发消息发送,结合@Async实现异步处理避免阻塞主线程。方案包含以下要点:1)使用@AfterReturning切面拦截成功执行的订单插入方法;2)通过TransactionSynchronizationAdapter实现事务提交后回调;3)用@Async异步发送消息或集成消息队列提高可靠性。
2025-08-13 11:47:12
588
原创 SQL脚本--捞json数据
摘要:本文展示了如何将JSON格式的订单数据转换为离线分析表。原始数据存储在order_data表中,包含嵌套的ext_info数组。通过使用Hive SQL的LATERAL VIEW EXPLODE和from_json函数解析JSON数组,并按不同费率(0.90/0.95/0.99)分组统计票券数量和ID列表。最终生成order_rate_data表,包含order_id、user_id、create_date以及各费率对应的count和ticketIds字段。这种方法适用于将复杂JSON数据转换
2025-08-12 11:12:19
221
原创 【@Autowired 注入的 Bean 创建失败,可能是由哪些原因造成的】
@Autowired 注入的 Bean 创建失败,可能是由多个原因造成的
2025-08-07 15:36:41
1011
原创 java项目实现自定义注解--提供方案
要实现一个自定义注解,并能够记录 Controller 接口调用信息(如:接口地址、时间、操作人、请求参数、响应信息、设备信息、操作类型、是否成功等)
2025-08-07 15:28:32
815
原创 java分页处理数据,多线程分批提交数据库
Java项目实现工单向量化分页处理方案:采用多线程批量处理1000条/页的工单数据,通过线程池并发执行。核心流程包括分页查询工单表、调用向量化服务处理内容、批量插入向量表。使用CountDownLatch同步线程,MyBatis实现批量SQL,并建议配置事务控制、连接池优化及定时任务。技术栈推荐Java17+SpringBoot+MyBatis+HikariCP,支持后续扩展为分布式架构或消息队列方案。
2025-08-07 15:26:24
583
原创 解决循环依赖
现有依赖版本通过复用模块接口逻辑,相当于复制接口实现。这种方式虽能快速调用功能,但可能导致代码冗余和维护问题。需谨慎权衡复用性与代码独立性。
2025-07-03 15:59:02
124
原创 Mysql 优化学习内容
当 from 子句中有子查询时,table列是<derivenN> 格式,表示当前查询依赖 id=N 的查询,于是先执行 id=N 的查 询。subquery: 包含在select中的子查询例如 :select a,(select b from table) as t from table...id列的编号是 select 的序列号,有几个 select 就有几个id,并且id的顺序是按 select 出现的顺序增长的。union: 在union中的第二个和随后的select。simple:简单查询。
2025-07-03 15:56:18
242
原创 Failed to load property source from location ‘classpath:/application.yml‘
spring项目启动错误:Failed to load property source from location 'classpath:/application.yml'
2024-08-29 16:34:10
531
原创 【Mysql语句优化---Explain使用以及相关属性含义】
即MySQL决定如何查找表中的行,查找数据行记录的大概范围。 依次从最优到最差分别为:**system > const > eq_ref > ref > range > index > ALL** 一般来说,**得保证查询达到range级别,最好达到ref**
2024-05-30 13:09:34
694
原创 row_number() over(partition by ...)转换成mysql语句
【代码】row_number() over(partition by ...)转换成mysql语句。
2024-05-29 13:41:42
586
原创 面试总结-2024
Ribbon 还支持开发者自定义负载均衡策略,可以根据具体需求实现自己的负载均衡算法。总的来说,Ribbon 的负载均衡策略丰富多样,可以根据不同的场景选择合适的策略,以实现对服务实例的有效分发和调度。【Me】:mysql底层原理和优化【AI】:MySQL 是一款流行的关系型数据库管理系统,其底层原理主要包括存储引擎、查询优化、日志和缓存等方面。
2024-04-07 22:29:29
677
原创 大量数据--分批插入操作--使用多个线程提交插入 Java
主要是使用批量、分批插入的方法,降低数据库压力,同时使用多个线程并发异步进行数据库批量插入操作,大大降低了服务器的压力。一、大数据量插入,不仅对数据库还是对服务器都有很大的压力,可能导致数据库宕机或者服务器CPU过高。这些问题都会导致程序出现问题,导致插入数据失败;因此我们需要进行插入优化;数据压力减小,插入效率提升;该解决方案还算可以。
2023-12-10 00:23:04
1730
原创 扫描Excel文件,导入数据之后,进行删除,文件删除失败
一.原因:使用EasyExcel进行数据读取IO流,读取之后,IO流没有关闭,导致文件一直处于被读取状态,无法对该文件进行删除操作。IO流操作关闭,删除操作调用成功,文件被成功删除。读取数据之后,关闭IO流操作。
2023-12-10 00:08:42
414
原创 SQL语句的编写--生产中遇到的复杂sql语句
1.从父到子(递归查询)--通过父类唯一标识进行查询所有子类数据2.从子到父(递归查询)--通过子类,查询所有的上级分类数据。
2023-11-21 19:40:31
128
原创 xml sql时间范围查询出现的问题及解决方案
Cannot deserialize value of type java.sql.date from String “2023-11-16”: not a valid representation (error: Failed to parse String value ‘2023-11-16’: Unparseable String: “2023-11-16”)
2023-11-18 16:19:19
891
原创 SpringBoot项目启动报错:Consider renaming one of the beans or enabling overriding by setting
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
2023-09-02 17:52:50
6250
原创 Innodb底层原理与Mysql日志机制
如果某个数据版本的事务ID在该事务的Read View里是可见的,那么该版本的数据将被读取。在可重复读隔离级别下,当事务执行查询操作时,它只能看到在事务开始时已经存在的数据版本,而不会看到其他并发事务中的修改。主要是通过redo日志实现的,数据修改数据会先修改缓冲池中的数据,然后写入到redo log 日志文件,之后会对数据库数据进行物理修改,即使宕机,也可以通过redo log把数据库的修改重新加载,不会出现事务提交,数据未修改的不一致情况。这个ID可以是递增的数字或者时间戳,用于标识事务的顺序。
2023-07-24 10:32:01
137
原创 MySQL索引以及分页
MySQL查询数据如果不用索引会进行全表扫描查询,查询速度慢,浪费资源;-2.逻辑分页 是查询获取到所有的数据,然后根据需要截取所需要的数据,一次查询,多次使用,但是数据量大的不建议这样做。-1.物理分页是根据SQL语句的 limit 进行分页查询的,查询速度快,但是每次查询都要请求MySQL。hash索引只能用于等值查询,不能进行范围查询和排序操作,这样如果索引数据重复值过多,效果不佳。B+tree索引是MySQL最常用的索引,可以进行范围查询和排序操作,适用于大多数场景。
2023-04-24 23:49:58
368
原创 Java面试题及答案2023--持续更新
自动装箱:把一个基本数据类型直接赋值给对应的包装类型;自动拆箱:是指把一个包装类型的对象直接赋值给对应的基本类型;通过自动装箱和自动拆箱功能,简化基本类型变量和包装类型对象之间的转换过程。JAVA机制反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。答:Spring Cloud是一个开发工具套件,用于创建分布式系统及微服务架构。
2023-03-24 23:38:34
14481
原创 mysql性能优化知识点总结
date:占用的字节数比使用字符串、datetime、int存储要少,使用date类型只需要3个字节;更小的数据类型通常更快,因为它们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期更少;不要使用字符串存储日期类型,占用空间大,损失日期类函数的便携性;自动更新timestamp列的值;该表不具备持久化,mysql关闭后会把记录的日志清空,只会记录本次mysql开启的监控日志;案例:创建两张相同的表,改变日期的数据类型,查看sql语句执行的速度;:简单的数据类型的操作通常需要更少的生命周期;
2023-03-21 01:09:00
168
原创 Redis缓存穿透,缓存击穿和缓存雪崩的发生和解决方法
1.缓存穿透:是指一个缓存中和数据库中都不存在的数据,导致每次查询这条数据都会透过缓存,直接查询数据库,最后返回空。当用户使用这条不存在的数据疯狂发起查询请求的时候,对数据库造成的压力就非常大,甚至可能直接挂掉。缓存雪崩是大量用户请求不同的数据,而且大量数据缓存已过期,只能请求数据库,导致数据库压力大增。,是在并发用户的情况下发生大量请求,缓存中数据过期导致大量用户同一时间去查询数据库,造成数据库压力过大的情况。3.缓存雪崩:是指缓存大批量数据过期,用户并发访问大量数据,导致数据库压力过大甚至宕机。
2023-03-13 20:36:48
150
原创 Windows下Nginx的启动、停止等命令
在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动、停止Nginx服务,重新载入Nginx等
2022-09-23 17:22:16
11542
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1