- 博客(70)
- 收藏
- 关注
原创 如何优雅地将Collection转为Map?
将Collection转换为Map是常见的需求,尤其是在处理数据时需要快速查找或去重。以下是几种常见的方法,包括使用谷歌的Maps.uniqueIndex、Hutool的CollUtil.toMap和Java Stream API的Collectors.toMap三种方法。
2025-03-13 10:36:18
488
原创 Lombok的@Accessors介绍
@Accessors 是 Lombok 库中的一个注解,用于定制生成 getter 和 setter 方法的行为。它通常与 @Getter 和 @Setter 注解一起使用,以简化代码并增强可读性。
2025-03-11 10:24:27
347
原创 什么是响应式编程?
响应式编程是一种面向数据流和变更传播的编程范式,它建立在异步数据流概念之上,旨在提高应用程序的响应性和可伸缩性,使系统能够更好地应对高并发和实时数据处理场景。
2025-02-27 10:09:57
565
原创 feign.Request.Options的作用和使用示例
feign.Request.Options 是 OpenFeign 框架中用于配置请求超时时间的工具类。它允许开发者自定义连接超时时间和读取超时时间,从而优化远程调用的性能和可靠性。
2025-02-26 10:25:42
494
原创 CommandLineRunner和ApplicationRunner的作用和使用示例
CommandLineRunner 和 ApplicationRunner 是 Spring Boot 提供的两个接口,用于在 Spring 应用程序启动后执行特定的代码逻辑。它们的主要区别在于对命令行参数的处理方式。
2025-02-24 10:08:57
476
原创 策略模式介绍和代码示例
策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列算法,并将每一个算法封装起来,使它们可以互换,算法的变化不会影响到使用算法的客户。策略模式让算法独立于其使用者,并且可以根据需要切换算法。
2025-02-21 10:55:58
340
原创 适配器模式
适配器模式(Adapter Pattern)是一种结构设计模式,用于使原本不兼容的接口能够一起工作。它通常包含一个“适配器”类,该类将一个类的接口转换成客户端期望的另一个接口表示。适配器模式让不同的接口能够协同工作,提高了复用性。
2025-02-20 10:29:41
451
原创 IDEA中aiXcoder、Bito和通义灵码三个插件的对比
1. aiXcoder:适合需要高效代码补全和生成的开发者,尤其适合对隐私要求较高的场景。2. Bito:功能全面,适合希望提升编码效率、优化代码质量、进行代码审查的开发者,但部分高级功能需付费。3. 通义灵码:适合需要代码生成、注释生成、单元测试生成以及技术问题问答的开发者,且完全免费。
2025-02-19 10:21:55
879
原创 装饰器模式
装饰器模式(Decorator Pattern)是一种结构设计模式,它允许用户在不修改对象自身的基础上,向一个对象添加新的功能。这种模式通过创建一个包装对象,也就是装饰者,来包裹实际对象。装饰者模式通常用于遵循单一职责原则的场景,允许在运行时动态地给对象添加职责。
2025-02-18 10:33:18
297
原创 @RefreshScope、@DynamicConfig和@EnableDynamicConfiguration的相同点和不同点
核心相同点主要是用于动态刷新配置信息
2025-02-14 10:32:07
219
原创 MySQL的EXPLAIN命令输出中的partitions
在MySQL的EXPLAIN命令输出中,partitions(分区)列显示了查询操作将要访问的分区表的分区数量。如果查询没有涉及到分区表,或者MySQL服务器版本不支持分区表,那么这一列可能不会出现或者显示为NULL。
2025-02-10 10:29:48
380
原创 如何在工具类中使用Properties、YAML配置文件指定的配置信息?
在Spring框架中,我们可以通过@Value和@Resource/@Autoware(@Resource/@Autoware注入带@ConfigurationProperties的配置类)获取/注入需要的配置。然而,由于工具类方法通常是静态的,而Spring的依赖注入机制是基于非静态Bean的,因此不能直接在工具类的静态方法中使用@Value和@Resource/@Autoware获取/注入的配置信息。想必你还是想直接优雅地使用Util.methodName的方式来调用工具类方法吧?那我们应该如何做呢?
2025-02-07 15:06:11
494
原创 MySQL和PolarDB的相同点和不同点
兼容MySQL协议,但迁移到PolarDB可能需要考虑云服务提供商特定的特性和限制。:传统上存储和计算是紧密耦合的,虽然有些云服务提供计算和存储分离的MySQL服务。:是阿里云推出的一款云原生数据库,专为云计算环境设计,具有高性能和可扩展性。:作为云服务,通常与云提供商的管理控制台集成,提供云数据库特有的管理工具。:作为云服务提供,通常按使用量计费,由云服务提供商负责维护和升级。:支持存储和计算分离,可以根据需要独立扩展存储和计算资源。:支持广泛,有大量的社区和商业支持。
2024-12-05 09:37:25
1839
原创 MySQL索引下推
MySQL索引下推(Index Condition Pushdown,简称ICP)是一种查询优化技术,它允许MySQL服务器将部分过滤条件从查询执行的早期阶段“下推”到存储引擎层。这意味着过滤条件可以在索引查找过程中被应用,而不是在从存储引擎返回数据到服务器层之后才应用。这项技术可以显著减少数据访问的开销,提高查询性能。
2024-12-03 14:01:20
355
原创 MySQL覆盖索引
在MySQL中,覆盖索引(Covering Index)是一种优化技术,它指的是一个索引包含查询所需的所有字段,这样数据库引擎就不需要回表(访问主存储引擎以获取其他列的值)来满足查询的需求。覆盖索引可以显著提高查询性能,因为它们减少了磁盘I/O操作。
2024-12-02 09:21:39
535
原创 克隆对象的方法
方法类库功能描述拷贝类型备注提供了一系列方法,用于对象属性的拷贝。浅拷贝适用于简单的Bean 属性拷贝。将源集合中的每个对象复制到新的目标集合中,使用反射或BeanCopier进行属性拷贝。浅拷贝适用于集合的拷贝,使用反射或BeanCopier实现属性拷贝。使用CGLib动态生成目标对象的子类,并复制属性。浅拷贝适用于不需要深拷贝的场景。将源集合中的每个对象复制到新的目标集合中,使用 CGLib创建目标对象实例。浅拷贝适用于集合的拷贝,创建目标集合的新实例。
2024-11-29 09:23:36
1030
原创 cn.hutool.core.thread.ThreadUtil使用示例
cn.hutool.core.thread.ThreadUtil 是 Hutool 工具库中用于简化线程操作的一个实用工具类。
2024-11-27 10:40:16
1004
5
原创 Stream的reduce方法介绍
Stream的reduce方法是一种非常强大的聚合操作,它可以将流中的元素通过某个连接动作汇总成一个结果。以下是一些常见的用法,包括代码示例和预期结果。
2024-11-26 10:58:58
404
原创 Spring事务传播类型
Spring框架提供了声明式事务管理,允许开发者通过配置来控制事务的行为。事务传播行为(Transaction Propagation Behavior)定义了在事务上下文中执行的方法如何与现有的事务关联。
2024-11-19 09:11:16
284
原创 IDEA上将当前分支重置到此处...、还原提交、撤销提交和删除提交的区别是?
在 IntelliJ IDEA 中,处理 Git 提交时有几个不同的操作,每个操作对版本历史和当前分支的影响各不相同。
2024-11-18 10:03:43
1784
原创 @ControllerAdvice和@RestControllerAdvice的区别是?
@ControllerAdvice 和 @RestControllerAdvice 是Spring框架中用于处理控制器级别的异常、日志记录、数据预处理等通用任务的注解。它们的主要区别在于它们处理的控制器类型和返回值的包装方式。
2024-11-15 09:42:41
492
1
原创 CPU用户时间百分比
在计算机系统中,"CPU用户时间百分比(CPU User Time)"是一个性能监控指标,它描述了CPU在用户模式下执行的累积时间与总的CPU时间的比例。这个指标可以帮助我们了解系统在执行用户态程序时的负载情况。
2024-11-01 13:32:58
1023
原创 @Async的使用
@Async 是Spring Framework提供的一个注解,用于在Spring应用程序中异步执行方法。当需要执行一个耗时的任务,而不想阻塞主线程时,这个方法就非常有用.
2024-10-30 09:38:13
377
原创 Spring Retry的使用
Spring Retry提供了一种声明式的方法来处理那些可能会失败的操作,允许你在遇到异常时自动重试这些操作。
2024-10-29 09:24:11
471
1
原创 ApplicationEventPublisher简介
org.springframework.context.ApplicationEventPublisher 是 Spring 框架中的一个接口,它定义了发布应用程序事件的方法。这个接口允许你在 Spring 应用程序中发布自定义事件,这些事件可以被应用程序的其他部分监听和响应。
2024-10-25 09:23:43
279
原创 高性能地从MySQL数据库随机取一条数据
1. 利用主键ID索引的特性,通过最大的ID乘以一个随机数得到一个随机的ID;2. 将随机的ID作为临时表;3. 将原表和临时表利用主键ID关联;4. 利用主键ID排序,只取一条数据。
2024-10-23 17:47:54
508
原创 如何将两个同样大小的List组装成一个Map?
如果你有两个同样大小的列表,并且想要将它们组装成一个Map,其中第一个列表的元素作为key,第二个列表的元素作为value,你可以使用Java 8的流(Stream)API来实现这一操作。
2024-10-19 06:09:15
490
原创 Redisson简介
Redisson是一个基于Redis的Java客户端库,它提供了多种分布式数据结构和服务,用于构建高性能的并发应用程序。Redisson使用Redis作为底层数据存储,并通过Java API提供了一种简单而强大的方式来访问和操作这些数据。
2024-10-10 21:19:54
505
2
原创 @KafkaListener的作用
org.springframework.kafka.annotation.KafkaListener 是 Spring Kafka 库中的一个注解,它用于在 Spring 应用程序中定义 Kafka 消息监听器。这个注解允许你将方法映射为 Kafka 消息的消费者,从而简化了 Kafka 消费者配置和消息处理的代码。
2024-10-08 05:45:52
489
原创 @KafkaListener注解中containerFactory属性的作用
在使用Spring Kafka时,containerFactory 属性是 @KafkaListener 注解中的一个选项,它允许你指定一个 ContainerFactory Bean 的名称。这个 ContainerFactory 负责创建和管理 Kafka 消息监听容器。
2024-10-07 09:58:39
966
原创 MySQL的ON DUPLICATE KEY UPDATE和REPLACE INTO
和是 MySQL 数据库中用于处理重复键值的两种不同方式。如果存在与要插入的记录具有相同唯一键或主键的记录,则会将新值更新到指定的列中。如果存在具有相同唯一键或主键的记录,则将删除该记录并插入新记录。因此,主要区别在于将执行更新操作,而将删除并插入新记录。选择使用哪个取决于您的需求和业务逻辑。如果您希望保留现有记录的其他值并只更新特定列,可以使用。如果您要完全替换重复键的记录,包括其他列的值,可以使用。
2024-10-05 09:39:27
706
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人