
Java
文章平均质量分 89
KeepHappyZsh
Good good study,day day up
展开
-
Redis延时队列在订单超时未报到场景的应用补充说明
本方案已在三甲医院预约系统中验证,支撑日均10万+订单量,平均延迟处理时间≤500ms。实际部署时建议配合APM工具(SkyWalking)进行全链路监控。定时任务每10分钟向所有队列发送心跳消息("keepAlive"),避免云Redis因空闲断开连接。RocketMQ:固定延迟级别(如1s/5s/10s/30s/1m等)分片标识,可将不同业务类型订单分散到多个队列。设计,支持任意业务对象入队,如订单ID、DTO等。Redis延时队列:秒级精度(最高)定时任务:依赖扫描间隔(通常分钟级)原创 2025-03-29 10:54:57 · 478 阅读 · 0 评论 -
关于使用Mybatis-plus的TableNameHandler动态表名处理器实现分表业务的详细介绍
总结而言,如果项目的需求相对简单,主要集中在单个数据库实例内,并且团队对 MyBatis-Plus 已经有一定的熟悉度,那么利用 TableNameHandler 实现分表是一个高效的选择。然而,对于那些需要跨数据库实例、具备复杂查询要求或需要更多高级数据库管理特性的应用场景,选择像 Apache ShardingSphere 或 MyCat 这样的专业工具可能是更好的解决方案。原创 2025-01-27 15:24:12 · 967 阅读 · 2 评论 -
关于Spring 注解实现服务启动时自动运行某个方法。
@PostConstruct:适用于简单的初始化操作。CommandLineRunner和ApplicationRunner:适用于需要在应用启动后立即执行的任务,特别是需要访问命令行参数或应用参数的情况。@EventListener:适用于需要在应用启动完成时执行的任务。@Scheduled:适用于定时任务,但也可以用于一次性任务。原创 2024-11-04 12:15:00 · 407 阅读 · 0 评论 -
使用mybatisplus执行批量保存时出现错误:Error: Cannot execute table Method, ClassGenricType not found
使用mybatisplus执行批量保存时出现错误:Error: Cannot execute table Method, ClassGenricType not found原创 2024-11-03 22:32:00 · 1128 阅读 · 0 评论 -
关于@TableField中TypeHandler属性,自定义的类型处理器的使用(密码加密与解密举例)
在 MyBatis 和 MyBatis-Plus 中,是一个用于处理 Java 类型和 JDBC 类型之间转换的接口。MyBatis 默认已经提供了很多类型处理器,用于处理常见的Java类型与JDBC类型之间的转换。然而,在某些特定场景下,通过自定义将Java对象转换为数据库中特定的列类型(如枚举类型、加密后的字符串等)。从数据库读取特定列类型时,转换为Java中的对象。字段类型处理器 | MyBatis-Plus创建 TypeHandler 类实现接口。或者继承类,它提供了默认实现的一些方法。原创 2024-07-28 12:38:34 · 2095 阅读 · 1 评论 -
关于@JsonSerialize序列化与@JsonDeserialize反序列化注解的使用(密码加密与解密举例)
@JsonSerialize 和 @JsonDeserialize 是 Jackson 库提供的注解,用于在序列化(将对象转换为 JSON 字符串)和反序列化(将 JSON 字符串转换为对象)过程中对特定字段进行自定义处理。这些注解允许你控制 JSON 数据的格式和内容,而不需要改变对象本身的数据结构。举例:(1)数据库中性别字段为数字,将性别转化为汉字给前端进行展示(2)保存密码时,进行加密存储,查询时给它明文展示(这里只是举例查所有,真正的场景肯定不能这样搞)原创 2024-07-28 11:17:07 · 1778 阅读 · 0 评论 -
spring-boot3.x整合Swagger 3 (OpenAPI 3) +knife4j
OpenAPI阶段的Swagger也被称为Swagger 3.0。在Swagger 2.0后,Swagger规范正式更名为OpenAPI规范,并且根据OpenAPI规范的版本号进行了更新。因此,Swagger 3.0对应的就是OpenAPI 3.0版本,它是Swagger在OpenAPI阶段推出的一个重要版本。与前几个版本相比,Swagger 3.0更加强调对RESTful API的支持和规范化,提供了更丰富和灵活的定义方式,并且可以用于自动生成文档、客户端代码、服务器代码和测试工具等。原创 2024-07-21 22:41:49 · 1661 阅读 · 0 评论 -
idea连接mysql生成对象实体,Mybatis-X插件自动生成代码
如果下载有问题,在这边可以配置驱动,根据自己的mysql版本来配置:idea版本不一样,步骤会有所不同配置根据自己情况修改:1.4开始生成2、Mybatis-X插件自动生成代码2.1安装Mybatis-X插件File–>Settings–>Plugins–>Marketplace,搜索MyBatisX–>install(1)侧边栏打开数据库,选择要生成代码的表格,在表名上右击,点击MybatisX-Generator(2)设置类名生成规则及生成代码的路径路径的生成按照物理路径是: m原创 2024-07-21 14:57:22 · 1447 阅读 · 0 评论 -
Spring AOP相关注解与execution 切点表达式概述
Spring AOP(面向切面编程)通过一系列注解来实现切面的定义和织入,从而达到将横切关注点(比如日志记录、事务管理、安全性检查等)与核心业务逻辑分离的目的。以下是Spring AOP中一些关键的注解及其用途切入点声明,即切入到哪些目标类的目标方法。既可以用 execution 切点表达式, 也可以是 annotation 指定拦截拥有指定的方法.value 属性指定切入点表达式,默认为 "",用于被通知注解引用,这样通知注解只需要关联此切入点声明即可,无需再重复写切入点表达式。原创 2024-04-29 17:13:16 · 1288 阅读 · 2 评论 -
Spring IOC 和 AOP
Spring框架中的IoC(Inverse of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)是其两大核心特性,它们共同为Java应用程序带来了更高的灵活性、可维护性和松耦合度。原创 2024-04-29 16:21:54 · 2352 阅读 · 1 评论 -
关于SpringBoot 如何动态切换 logback 日志的输出级别
本文介绍了在SpringBoot应用中如何动态设置Logback日志的输出级别,并且不影响服务正常运行。通过接口方式实现日志级别的动态调整,可以方便地适应不同环境、不同业务场景下的日志需求,提高开发和运维的效率。在实际应用中,还需要注意线程安全、配置刷新和权限控制等问题。原创 2024-03-08 17:00:35 · 3191 阅读 · 0 评论 -
深入理解Lambda表达式-函数式编程-Stream流(最全学习笔记)
Lambad表达式:Lambda是JDK8中一个语法糖。他可以对某些罩名内部类的写法进行简化。它是函数式编程思想的一个重要体现。让我们不用关注是什么对象。而是更关注我们对数据进行了什么操作。原创 2024-03-01 14:44:09 · 1308 阅读 · 1 评论 -
关于SpringBoot如何整合Redis
Redis诞生于2009年全称是Remote Dictionary Server 远程词典服务器,是一个基于内存的键值型NoSQL数据库。特征:- 键值(key-value)型,value支持多种不同数据结构,功能丰富- 单线程,每个命令具备原子性- 低延迟,速度快(基于内存、IO多路复用、良好的编码)。- 支持数据持久化- 支持主从集群、分片集群- 支持多语言客户端原创 2023-11-19 22:48:00 · 826 阅读 · 0 评论 -
关于使用java对接WebService接口
Webservice是一种跨平台,跨语言的远程调用技术。它可以实现在不同平台和语言之间的数据交互和通信,例如在Java平台上创建的服务可以通过Webservice被.NET或其他语言编写的客户端调用。Webservice的标准包括WS-*系列标准(如SOAP、WSDL等),RESTful风格的Webservice采用HTTP协议传输数据,并使用JSON格式封装数据内容。原创 2023-11-16 23:48:57 · 3728 阅读 · 2 评论 -
关于JSON字符串中的字段名与Java类中的字段名不匹配的解决方法(@JsonProperty(““) 与@JSONField(name = ““)的使用 )
关于JSON字符串中的字段名与Java类中的字段名不匹配的解决方法(@JsonProperty("") 与@JSONField(name = "")的使用 )原创 2023-11-11 16:26:17 · 3789 阅读 · 2 评论 -
深入理解Lambda表达式-函数式编程-Stream流(最全学习笔记)
Lambad表达式:Lambda是JDK8中一个语法糖。他可以对某些罩名内部类的写法进行简化。它是函数式编程思想的一个重要体现。让我们不用关注是什么对象。而是更关注我们对数据进行了什么操作。原创 2023-07-29 17:49:40 · 485 阅读 · 2 评论