- 博客(131)
- 收藏
- 关注
原创 RabbitMQ常见面试题及解析
RabbitMQ是一个开源的消息队列系统,它实现了高级消息队列协议(AMQP)。它允许不同的应用程序之间进行异步通信,通过将消息发送到队列中,让消费者从队列中获取消息并进行处理,从而实现解耦、异步和削峰填谷等功能。
2025-03-16 12:12:23
825
原创 泛型边界的使用
上界extends用于限制泛型类型参数为某个类型或其子类型,常用于获取数据的场景。下界super用于限制泛型类型参数为某个类型或其父类型,常用于添加数据的场景。通过使用泛型边界,可以提高代码的类型安全性和可重用性。
2025-03-03 23:42:36
473
原创 懒加载能够解决Spring循环依赖吗
循环依赖指的是两个或多个 Bean 之间相互依赖,形成一个闭环。例如,Bean A 依赖于 Bean B,而 Bean B 又依赖于 Bean A。在 Spring 中,如果没有合适的处理机制,这种循环依赖会导致 Bean 创建失败。
2025-03-03 23:01:27
536
原创 Spring事务
Spring 事务是 Spring 框架中非常重要的特性之一,它为开发者提供了一种简单而强大的方式来管理数据库操作的一致性和完整性。
2025-03-03 22:55:23
709
原创 Spring Boot的启动流程
Spring Boot 的启动流程是一个复杂且有序的过程:创建SpringApplication实例 — 调用run方法 — 启动完成(发布应用启动事件,配置环境,创建ApplicationContext,准备ApplicationContext,刷新ApplicationContext[【创建BeanFactory,加载Bean定义,创建Bean实例,启动嵌入式服务器】,发布应用就绪事件) — 异常处理;下面将详细拆解其各个阶段。
2025-03-03 22:53:47
1085
原创 Spring生命周期都有哪些阶段
描述:可以通过在 Bean 定义中指定自定义的初始化方法,Spring 容器会在 Bean 的属性注入完成后调用该方法。示例(Java 配置)System . out . println("MyBean 自定义初始化方法调用");} }System . out . println("MyBean 自定义初始化方法调用");} }System . out . println("MyBean 自定义初始化方法调用");} }
2025-03-03 22:39:33
918
原创 Spring Bean 作用域设置为prototype在并发场景下是否是线程安全的
在并发场景下,将 Spring Bean 作用域设置为prototype通常能在一定程度上保证线程安全,但这并不意味着绝对的线程安全。
2025-03-03 22:27:28
523
原创 jvm内存模型,类加载机制,GC算法,垃圾回收器,jvm线上调优等常见的面试题及答案
jvm内存模型,类加载机制,GC算法,垃圾回收器,jvm线上调优等常见的面试题及答案
2025-03-02 21:56:00
503
原创 ConcurrentHashMap
是线程安全的,在多线程环境下可以高效地进行并发操作,避免了。在多线程环境下可能出现的数据不一致和线程安全问题。类似,但它在多线程环境下可以保证线程安全。包下的一个类,它继承自。通过上述代码可以看到,
2025-03-01 23:26:11
755
原创 JAVA代理模式
Java中的代理模式主要分为静态代理、动态代理,而动态代理又可细分为JDK动态代理和CGLIB动态代理,下面为你详细介绍这几种代理模式,并结合Java、Spring、MyBatis框架给出示例。
2025-03-01 18:34:56
737
原创 常用的设计模式
责任链模式是一种行为型设计模式,它允许你将请求沿着处理者链进行传递,直到有一个处理者能够处理该请求为止。这种模式将请求的发送者和接收者解耦,使得多个对象都有机会处理请求。模板模式是一种行为型设计模式,它定义了一个算法的骨架,将一些步骤的实现延迟到子类中。这样可以在不改变算法结构的情况下,让子类定制某些步骤的具体实现。
2025-03-01 17:55:15
872
原创 Spring框架中的工厂模式
在Spring框架里,工厂模式的运用十分广泛,它主要帮助我们创建和管理对象,让对象的创建和使用分离,提高代码的可维护性和可扩展性。
2025-03-01 17:40:14
447
原创 注解Builder使用注意事项
父类使用Builder注解时,子类不能使用,同时父类还需要添加@AllArgsConstructor和@NoArgsConstructor注解配合使用,否则编译会报:实际参数列表和形式参数列表长度不同。
2024-11-28 10:17:24
141
原创 Oracle如何获得当天凌晨的时间点
函数会将日期截断到指定的时间单位,默认情况下是截断到天(即当天的00:00:00)。函数则用于截断日期时间到天的开始。在Oracle数据库中,可以使用。函数用于将字符串转换为日期类型。函数来获取当天凌晨的时间点。返回当前的系统日期和时间,而。
2024-11-26 10:31:03
572
原创 redis实现计数器功能
对应的值增加1,然后将该键设置为24小时后过期。这通常用于需要对某个事件进行计数并希望在一定时间内自动清除计数的场景。例如,可以用在网站访问计数器中,每访问一次页面就将计数器加1,并且希望计数器在24小时后自动重置。假设我们有一个网站,我们希望记录每天的访问量,并在每天结束时重置计数。键中,并且在24小时后自动重置为0。对应的值增加1,并返回增加后的值。操作是原子性的,避免了并发问题。这样,每天的访问量都会被记录到。为了避免上述情况导致的。通过这种方式,可以确保。这段代码首先将指定键。
2024-11-20 14:27:51
1520
原创 Oracl-oceanbase根据指定分隔符分割字符串
参数3:起始位置,默认从1开始。参数4:分割后要提取第几组。参数2:分隔规则,分隔符。参数1:要分割的字符串。
2024-11-01 16:46:38
391
原创 Oracle-Oceanbase查询某个字段包含数字的所有记录
select * from tab where regexp_like(d.name,’^[0-9]+$’
2024-11-01 16:33:44
163
原创 方法内调用异步方法@Async注意事项
1、方法内调用异步方法@Async时若涉及事务,异步方法最好每次都重新开启新事务Propagation.REQUIRES_NEW。2、异步方法最好在前一个方法事物范围之外调用,否则可能会出现之前的事务还未提交完成,异步方法已执行并且已用到之前的数据做校验等。既然是异步方法说明之前的业务事情已经做完。
2024-10-16 15:40:59
185
原创 Stream流使用Collectors.toMap()收集器注意事项
Collectors.toMap()收集器返回的类型是Map对象,当提取所有key或value并将起转换成列表时,列表集合顺序可能会错乱。
2024-09-20 16:16:46
203
原创 stream流根据对象属性值查找该对象在集合中的索引值
在这个示例中,我们使用了IntStream.range(0, people.size())来生成一个整数流,该流的元素范围是从0到集合people的大小(不包括)。在Java的Stream API中,并没有直接的方法来获取对象在集合中的索引值,因为Stream操作通常关注于数据的处理逻辑,而不是数据的位置。如果找到了匹配的索引,我们就使用OptionalInt.isPresent()和OptionalInt.getAsInt()来获取并打印该索引。如果没有找到匹配的对象,我们就打印一条消息说明没有找到。
2024-09-20 14:44:32
415
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人