- 博客(87)
- 资源 (17)
- 收藏
- 关注
原创 SpringMvc 之处理器方法参数解析器(HandlerMethodArgumentResolver)
`HandlerMethodArgumentResolver` 是 Spring MVC 框架中的一个关键组件,用于解析控制器(Controller)方法的参数。在 Spring MVC 中,当一个请求到达时,DispatcherServlet 会负责找到对应的处理器(即控制器中的方法)来处理这个请求。在处理之前,需要解析方法的参数,这就是`HandlerMethodArgumentResolver` 的作用。换句话说,它负责将请求中的信息转换成处理器方法所需的参数类型,即它允许开发者将请求参数直接映射到处
2024-09-09 15:33:17 1195
原创 Spring之拦截器(HandlerInterceptor)
在web开发中,拦截器是经常用到的功能,用于拦截请求进行预处理和后处理,一般用于以下场景:1. 日志记录,可以记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等等。2. 权限检查:如登陆检测,进入处理器检测是否登陆,如果没有直接返回到登陆页面。3. 性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如apache可以自动记录);4. 通用行为:读取cooki
2024-09-06 10:35:28 1373
原创 JAVA之MAC详解以及子线程MDC传递
MDC(Mapped Diagnostic Context)是用于分布式系统中跟踪和诊断日志的重要概念。是一个在Java项目中用于日志跟踪的工具,它允许你在多线程环境下关联和传递特定的上下文信息。MDC是一个线程本地的、可维护的、可传递的上下文环境。在Java中,MDC主要用于在应用程序的不同组件之间传递日志上下文信息,例如用户会话ID,请求ID,用户身份信息等。MDC让你可以将这些信息关联到特定的日志事件中,以便后续的日志处理器(如日志输出器)能够在日志中显示或处理这些信息。
2024-08-23 10:31:47 463
转载 MapStruct 实体类转换工具,看这一篇就够了!
在一个成熟的工程中,尤其是现在的分布式系统中,应用与应用之间,还有单独的应用细分模块之后,DO 一般不会让外部依赖,这时候需要在提供对外接口的模块里放 DTO 用于对象传输,也即是 DO 对象对内,DTO对象对外,DTO 可以根据业务需要变更(只需部分字段或字段名不同等),并不需要映射 DO 的全部属性。这种 对象与对象之间的互相转换,就需要有一个专门用来解决转换问题的工具,毕竟每一个字段都 get/set 会很麻烦。MapStruct 就是这样的一个属性映射工具,只需要定义一个 Mapper 接口
2024-08-16 10:05:31 987
原创 Java的Duration类:掌握时间间隔的魔法
在Java编程中,处理时间间隔是一项常见任务。Java 8引入了Duration类,提供了方便的方法来处理和计算时间间隔。本文将介绍Duration类的定义、常见用法以及与其他时间类的比较。
2024-08-07 14:46:24 974
原创 Java LocalDateTime 的常用方法总结
/ 自定义格式化:System.out.println("自定义格式dtf1: " + dtf1.format(LocalDateTime.now()));//自定义格式dtf1: 2024/08/05 17:19:50System.out.println("自定义格式dtf2: " + dtf2.format(LocalDateTime.now()));//自定义格式dtf2: 2024.08.05 17:19:50。
2024-08-05 17:26:17 444
原创 Java各类日期和时间转换超强总结(Date和LocalDateTime相互转换等)
大家在开发过程中必不可少得和日期打交道,对接别的系统时,时间日期格式不一致,每次都要转换!从 Java1 到 Java8 将近 20 年,再加上 Java8 的普及时间、各种历史 API 兼容过渡时间。我们很多时候需要在旧时间 API 与新时间 API 之间切换,并行使用!!!每次写完就忘记了,小编专门来整理一篇来详细说一下他们转换的方法,方便后面使用!!
2024-08-03 17:44:51 1210
原创 【SpringBoot】 定时任务之任务执行和调度及使用指南
本文将着重介绍Spring中的TaskExecutor接口、TaskScheduler接口、Trigger接口以及Spring中定时任务的任务执行和调度以及开发中的正确使用姿势。
2024-08-03 11:36:24 1213
原创 SpringCloud之@FeignClient()注解的使用方式
是 Spring Cloud 中用于声明一个 Feign 客户端的注解。由于SpringCloud采用分布式微服务架构,难免在各个子模块下存在模块方法互相调用的情况。比如订单服务要调用库存服务的方法,@FeignClient()注解就是为了解决这个问题的。Feign 是一个声明式的 Web Service 客户端,它的目的是让编写 HTTP 客户端变得更简单。通过 Feign,只需要创建一个接口,并使用注解来描述请求,就可以直接执行 HTTP 请求了。
2024-07-24 16:54:11 2418
原创 Kafka系列之如何提高消费者消费速度
在实际开发过程中,如果使用Kafka处理超大数据量(千万级、亿级)的场景,Kafka消费者的消费速度可能决定系统性能瓶颈。
2024-07-22 16:17:17 1216
原创 SpringBoot使用Redisson操作Redis及使用场景实战
从 spring-boot 2.x 版本开始,spring-boot-data-redis 默认使用 Lettuce 客户端操作数据。
2024-07-11 15:46:34 3171 2
原创 SpringBoot使用RedisTemplate、StringRedisTemplate操作Redis
本文实现了在SpringBoot中集成Redis,使用RedisTemplate对象操作并编写了一些常用方法的工具类。RedisTemplate和StringRedisTemplate的区别:1. 两者的关系是StringRedisTemplate继承RedisTemplate。////this();
2024-07-10 15:03:04 2606
原创 kafka系列之offset超强总结及消费后不提交offset情况的分析总结
消费端如果没有提交offset,程序不会阻塞或者重复消费,除非在消费到这个你没有提交offset的消息时你新增或者减少消费端,此时会发生rebalance现象,即可再次消费到这个未提交offset的数据,产生重复消费问题。如果在消费的过程中有几条或者一批数据数据没有提交offset(比如异常情况程序没有走到手动提交的代码),后面其他的消息消费后正常提交offset至服务端,那么服务端会更新为消费后最新的offset,不会重新消费,就算重启程序或者rebalance也不会重新消费。
2024-07-05 17:37:30 1367
原创 Kafka系列之@KafkaListener常用参数详解
KafkaListener 注解提供了许多可配置的参数,以便更灵活地定制 Kafka 消息监听器的行为。
2024-07-05 11:33:14 1352
原创 Kafka系列之Kafka知识超强总结
Kafka 集群包含一个或多个服务器,服务器节点称为broker。broker存储topic的数据。如果某topic有N个partition,集群有N个broker,那么每个broker存储该topic的一个partition。如果某topic有N个partition,集群有(N+M)个broker,那么其中有N个broker存储该topic的一个partition,剩下的M个broker不存储该topic的partition数据。
2024-07-04 10:05:36 1377
原创 mybatis配置返回boolean类型
在业务开发中,我们可能会遇到这样的需求:在对数据进行操作时,先判断有没有对应的记录,如果有,再进行操作。实现的方式有多种,现针对mybatis的实现进行说明。Mybatis是根据查询到的记录数进行转换的(1表示为true,0表示为false)。然而,如果查询到多条记录(大于1),则返回的布尔值为false。这个和mysql的版本有关系,故为了兼容版本我们可以考虑做如下sql改造使用。
2024-07-02 18:21:21 716
原创 mybatis之动态标签
有些时候,sql语句where条件中,需要一些安全判断,例如按性别检索,如果传入的参数是空的,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息。这是我们可以使用动态sql,增加一个判断,当参数不符合要求的时候,我们可以不去判断此查询条件。
2024-07-01 19:19:05 802
原创 MYBATIS大于等于、小于等于的写法
mybatis使用的是xml格式的文件。使用>和<号的时候,会存在与xml的标签的规范冲突。需要写成如下形式,否则会报错。
2024-06-27 11:31:03 2065
原创 @Value 读取环境变量配置
Value属于spring的注解,在spring-beans包下,可以在 字段 或 方法参数 或 构造函数参数 上使用,通常用于属性注入。使用@Value(“${环境变量名}”)就可以直接读取到操作系统的环境变量,就算在properties或者yaml中指定同名属性值也会被系统环境变量值所覆盖,所以在平常自定义属性时避免与系统环境变量重名,最好加上前缀。比如,本地开发中,一些业务逻辑需要调用第三方代码,但又在本地调不通,怎么办。组件类,@Value必须在SpringBoot的组件中使用。
2024-05-31 14:47:30 775 1
原创 SpringBoot 项目打印mybatis日志
只用在application.yaml 中配置以下内容,即可将mybatis 的 SQL 日志打印出来。换成自己的mapper接口文件所在的包目录。
2024-05-24 10:34:23 205
原创 Swagger 详解
Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。总体来说,Swagger提供了一套标准的注解,开发者可以通过这些注解来描述他们的API,然后Swagger可以根据这些注解生成可交互的API文档。swagger2 最常用的5个注解。
2024-04-03 16:35:53 202
原创 JSR303参数校验与全局异常处理
我们在日常开发中,避不开的就是参数校验,有人说前端不是会在表单中进行校验的吗?在后端中,我们可以直接不管前端怎么样判断过滤,我们后端都需要进行再次判断, 为了安全。因为请求很容易绕过前端,比如当测试使用 PostMan 来发送请求,如果后端没有校验,不就乱了吗?肯定会有很多异常的。JSR-303规范(Bean Validation规范)提供了对 Java EE 和 Java SE 中的 Java Bean 进行验证的方式。该规范主要使用注解的方式来实现对 Java Bean 的验证功能。
2024-03-14 18:04:40 989
原创 统一异常处理ControllerAdvice
在我们日常的开发过程中,通常会根据业务定义属于自己的异常,所以通过定制自己的异常处理器,来处理项目中大大小小、各种各样的异常。1、@ExceptionHandler注解标注的方法:用于捕获Controller中抛出的不同类型的异常,从而达到异常全局处理的目的;首先,ControllerAdvice本质上是一个Component,因此也会被当成组件扫描,一视同仁,扫扫扫。3、@InitBinder注解标注的方法:用于请求中注册自定义参数的解析,从而达到自定义请求参数格式的目的;
2024-03-14 16:22:05 482
原创 消息防骚扰方案设计
小时是精确防骚扰,当天的过期时间是自然天,即当前时间到晚上23:59:59,月有大小月之分,大月31天,小月30天,没必要精准区分,都以30天为准。修改可能不会立即生效,等待五分钟之后再起作用。
2024-03-06 10:58:52 177
原创 MySql的CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP
CURRENT_TIMESTAMP,则无论这个字段有木有set值都插入当前系统时间。在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它。在创建新记录的时候把这个字段设置为0,以后修改时刷新它。表示每次更新这条数据的时候,该字段都会更新成当前时间。在创建新记录和修改现有记录的时候都对这个数据列刷新。表示当插入数据的时候,该字段默认值为当前时间。TIMESTAMP的变体。
2024-03-06 10:51:38 382
原创 Java正则表达式以及Pattern和Matcher类详解
概述正则表达式一、概述用来描述或者匹配一系列符合某个语句规则的字符串二、单个符号1、英文句点.符号:匹配单个任意字符。表达式t.o可以匹配:tno,t#o,teo等等。不可以匹配:tnno,to,Tno,t正o等。2、中括号[]:只有方括号里面指定的字符才参与匹配,也只能匹配单个字符。表达式:t[abcd]n 只可以匹配:tan,tbn,tcn,tdn。不可以匹配:thn,tabn,tn等。3、| 符号。相当与“或”,可以匹配指定的字符,但是也只能选择其中一项进行匹配。表达式:t(a|b
2022-04-22 17:20:31 1080
原创 MySQL基础教程
一、 连接MySQL格式: mysql -h主机地址 -u用户名 -p用户密码1.1 连接到本机上的MYSQL首先打开命令窗口,然后进入目录mysql\bin,再键入命令mysql -uroot -p,回车后提示你输密码.注意:用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>1.2 连接到远程主机上的MYSQL假设远程主机的IP为:
2021-08-30 10:21:18 238
zepto中文API
2017-09-14
w3cschool中文API
2017-09-14
css4.0中文API
2017-09-14
jQuery中文API
2017-09-14
JavaScript中文API
2017-09-14
HTM5中文API
2017-09-14
bootstrap中文API
2017-09-14
angularJS中文API
2017-09-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人