自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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项目:如何优化JVM参数?

JVM参数优化

2025-08-21 13:55:03 825

原创 JSON序列化错误

JSON序列化错误,以及解决方案

2025-08-14 14:31:03 368

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

原创 Java:投票选举,三种票5分,3分,2分

投票选举得分前三的人的名字

2024-08-29 12:33:54 377 1

原创 宝塔-Linux模板常用命令-centos7

【代码】宝塔-Linux模板常用命令-centos7。

2024-07-06 21:01:07 1599

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

原创 Oracle rownumber() over()转换成MySQL使用的语句

Oracle语句:转换成MySQL语句:

2024-05-29 12:51:52 277

原创 面试总结-2024

Ribbon 还支持开发者自定义负载均衡策略,可以根据具体需求实现自己的负载均衡算法。总的来说,Ribbon 的负载均衡策略丰富多样,可以根据不同的场景选择合适的策略,以实现对服务实例的有效分发和调度。【Me】:mysql底层原理和优化【AI】:MySQL 是一款流行的关系型数据库管理系统,其底层原理主要包括存储引擎、查询优化、日志和缓存等方面。

2024-04-07 22:29:29 677

原创 LINUX 用户赋权

【代码】LINUX 用户赋权。

2024-03-02 23:44:58 488 1

原创 大量数据--分批插入操作--使用多个线程提交插入 Java

主要是使用批量、分批插入的方法,降低数据库压力,同时使用多个线程并发异步进行数据库批量插入操作,大大降低了服务器的压力。一、大数据量插入,不仅对数据库还是对服务器都有很大的压力,可能导致数据库宕机或者服务器CPU过高。这些问题都会导致程序出现问题,导致插入数据失败;因此我们需要进行插入优化;数据压力减小,插入效率提升;该解决方案还算可以。

2023-12-10 00:23:04 1730

原创 扫描Excel文件,导入数据之后,进行删除,文件删除失败

一.原因:使用EasyExcel进行数据读取IO流,读取之后,IO流没有关闭,导致文件一直处于被读取状态,无法对该文件进行删除操作。IO流操作关闭,删除操作调用成功,文件被成功删除。读取数据之后,关闭IO流操作。

2023-12-10 00:08:42 414

原创 java 表单重复提交,进行幂等性控制,防止

Java控制重复表单提交

2023-11-22 19:23:38 184

原创 SQL语句的编写--生产中遇到的复杂sql语句

1.从父到子(递归查询)--通过父类唯一标识进行查询所有子类数据2.从子到父(递归查询)--通过子类,查询所有的上级分类数据。

2023-11-21 19:40:31 128

原创 Java获取树形结构的所有数据,并使用树形在前端进行展示。

Java获取树形结构的所有数据,并使用树形在前端进行展示--级联数据查询

2023-11-21 19:38:15 457

原创 PostgreSQL递归查询(从子到父、从父到子)

PostgreSQL递归查询(从子到父、从父到子)--树形结构数据查询

2023-11-21 19:25:36 1195

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

原创 SpringCloud微服务以及相关技术知识点总结

SpringCloud微服务架构以及相关技术知识点

2023-03-08 15:22:30 385

原创 2023最新JAVA面试题---持续更新中

2023JAVA面试题---持续更新中

2023-03-07 14:34:24 552

原创 Java锁机制mysql使用锁

Java锁机制mysql使用锁

2022-09-28 09:50:30 650

原创 Windows下Nginx的启动、停止等命令

在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动、停止Nginx服务,重新载入Nginx等

2022-09-23 17:22:16 11542

空空如也

空空如也

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

TA关注的人

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