Java
文章平均质量分 83
Java
山高自有客行路
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Mockito 原理与实战
Mockito 原理与实战原创 2025-09-09 23:31:45 · 517 阅读 · 0 评论 -
Spring Security的@PreAuthorize注解为什么会知道用户角色?
Spring Security的@PreAuthorize注解为什么会知道用户角色?原创 2025-09-02 22:44:11 · 1156 阅读 · 0 评论 -
Spring Security 如何使用@PreAuthorize注解
Spring Security 如何使用@PreAuthorize注解原创 2025-09-02 22:27:03 · 827 阅读 · 0 评论 -
异步方法和多线程有什么区别,他们的实现逻辑是什么以及为什么异步方法: 不能和调用者在同一个类中
异步方法和多线程有什么区别,他们的实现逻辑是什么以及为什么异步方法: 不能和调用者在同一个类中原创 2025-08-28 21:13:06 · 919 阅读 · 0 评论 -
MapStruct用法和实践
MapStruct用法和实践原创 2025-08-28 20:29:31 · 1558 阅读 · 0 评论 -
对象之间属性拷贝(Bean Mapping)的工具MapStruct 和 BeanUtils
对象之间属性拷贝(Bean Mapping)的工具MapStruct 和 BeanUtils原创 2025-08-28 20:05:02 · 1312 阅读 · 0 评论 -
Java@Data 与 @NotNull 注解冲突问题
Java@Data 与 @NotNull 注解冲突问题原创 2025-06-11 20:24:36 · 1122 阅读 · 0 评论 -
Spring Boot应用中可能出现的Full GC问题
Spring Boot应用中可能出现的Full GC问题原创 2025-04-09 16:44:29 · 1392 阅读 · 0 评论 -
RabbitMQ惰性队列的工作原理、消息持久化机制、同步刷盘的概念、延迟插件的使用方法
RabbitMQ惰性队列的工作原理、消息持久化机制、同步刷盘的概念、延迟插件的使用方法原创 2025-04-09 11:34:26 · 765 阅读 · 0 评论 -
使用雪花算法生成分布式唯一ID
使用雪花算法生成分布式唯一ID原创 2025-04-09 10:13:41 · 820 阅读 · 0 评论 -
MySQL数据类型与Java数据类型的映射
MySQL数据类型与Java数据类型的映射原创 2025-04-05 22:14:49 · 955 阅读 · 0 评论 -
Spring Boot启动流程
Spring Boot启动流程原创 2025-03-31 20:53:22 · 1217 阅读 · 0 评论 -
Java线程安全的集合
Java线程安全的集合原创 2025-03-27 09:40:31 · 970 阅读 · 0 评论 -
Java中Comparator 和 Comparable 接口的区别
Java中Comparator 和 Comparable 接口的区别原创 2025-03-24 18:31:13 · 967 阅读 · 0 评论 -
Java中synchronized 和 Lock
Java中synchronized 和 Lock原创 2025-03-23 21:20:45 · 1224 阅读 · 0 评论 -
WebSocket和长轮询
WebSocket和长轮询原创 2025-03-17 21:26:31 · 1001 阅读 · 0 评论 -
Java中强引用、软引用、弱引用、虚引用的区别
Java中强引用、软引用、弱引用、虚引用的区别原创 2025-03-06 14:06:22 · 1325 阅读 · 0 评论 -
什么是CAS同步机制
CAS作为一种高效且灵活的同步机制,在现代并发编程中扮演着重要角色。它通过硬件支持的原子操作提供了无锁同步的能力,减少了传统锁带来的开销和复杂性。然而,开发者在使用CAS时需要注意其局限性,如ABA问题和忙等待现象,并采取相应的措施加以优化。通过合理利用CAS和其他同步技术,可以在保证程序正确性的前提下显著提升并发性能。原创 2025-03-04 09:47:38 · 768 阅读 · 0 评论 -
门面设计模式和适配器模式有什么区别
门面设计模式和适配器设计模式原创 2025-03-03 20:03:35 · 992 阅读 · 0 评论 -
如何实现在Redis集群情况下,同一类数据固定保存在同一个Redis实例中
如何实现在Redis集群情况下,同一类数据固定保存在同一个Redis实例中原创 2025-02-25 12:15:18 · 705 阅读 · 0 评论 -
数据库并发问题有那些以及解决办法
事务与隔离级别:根据应用需求选择合适的隔离级别,确保数据的一致性和完整性。例如,使用隔离级别可以防止所有并发问题,但会影响性能。乐观锁:适用于读多写少的场景,减少锁定带来的性能损耗。通过版本号或时间戳字段来检测冲突。悲观锁:适用于写操作频繁且冲突可能性大的场景,直接锁定数据防止其他事务修改。使用语句来锁定行。数据库连接池管理:优化连接池配置,提高系统的并发处理能力。确保连接池中的连接及时释放,避免连接耗尽。每种方法都有其适用的场景,开发者需要根据具体业务需求和系统特点灵活选用。原创 2025-02-24 14:45:50 · 1369 阅读 · 0 评论 -
Spring的BeanFactory和FactoryBean有 什么不同
是Spring IoC容器的基础接口,提供了基本的bean管理功能。它允许你以编程方式管理和创建bean实例,并支持依赖注入。是一个特殊的工厂模式接口,用于自定义bean的创建逻辑。当某些bean的创建过程非常复杂或需要特殊处理时,可以通过实现接口来封装这些复杂的创建逻辑。:返回由工厂创建的对象实例。Class<?:返回由工厂创建的对象类型。如果提前无法确定类型,则可以返回null。:指示由该工厂创建的对象是否为单例。如果是单例,Spring容器将只调用一次方法,并缓存结果;原创 2025-02-16 15:32:10 · 755 阅读 · 0 评论 -
SpringBoot的@Scheduled和@Schedules有什么区别
SpringBoot的@Scheduled和@Schedules有什么区别原创 2025-01-10 17:55:43 · 1698 阅读 · 3 评论 -
消息转换器在SpringMVC执行流程
消息转换器原创 2025-01-04 19:17:23 · 1012 阅读 · 0 评论 -
Java枚举和常量类的区别以及优缺点
总之,在现代软件开发中,枚举因其提供的强大功能和灵活性而被广泛推荐。然而,对于非常简单的情况,常量类仍然是一种有效且易于理解的选择。无论选择哪种方式,都应该遵循良好的编程习惯,包括但不限于保持代码的简洁性、可读性和可维护性,你可以充分利用枚举和常量类的优点,同时避免它们的局限性。原创 2025-01-04 19:12:14 · 1148 阅读 · 0 评论 -
HashMap多线程的数据丢失
HashMap多线程的数据丢失原创 2024-12-01 14:39:36 · 1232 阅读 · 0 评论 -
Java 的readResolve 方法
readResolve 方法,可以确保在反序列化过程中返回同一个单例实例,从而保持单例的唯一性。原创 2024-11-24 11:03:27 · 644 阅读 · 0 评论 -
Spring 上下文对象
Spring 上下文对象()是 Spring 框架的核心接口之一,它扩展了接口,提供了更多企业级应用所需的功能。资源管理:从文件系统、类路径、URL 等位置加载资源。国际化支持:加载和管理多语言资源文件。事件机制:发布和处理应用事件。环境配置:支持不同环境下的配置管理。AOP 支持:支持面向切面编程(AOP)。Spring 上下文对象是 Spring 框架的核心组件,提供了丰富的功能,包括 Bean 的创建和管理、资源管理、国际化支持、事件发布和监听、环境配置和 AOP 支持。原创 2024-11-22 21:43:07 · 1223 阅读 · 0 评论 -
Spring AOP的理解
面向切面编程(Aspect-Oriented Programming,简称AOP)是面向对象编程(OOP)的一种补充。它允许程序员根据功能将程序逻辑分割为不同的部分,这些部分称为“切面”(Aspects)。AOP的主要目标是通过分离关注点来提高模块化,特别是处理横切关注点(cross-cutting concerns),即那些影响多个模块的功能,如日志记录、事务管理、安全检查等。原创 2024-11-21 12:33:58 · 1001 阅读 · 0 评论 -
Java反射getAnnotations() 和 getDeclaredAnnotations() 的区别和用法
getAnnotations():获取类及其父类上的所有注解。getDeclaredAnnotations():获取类本身声明的所有注解,不包括父类的注解。原创 2024-11-18 15:42:27 · 1380 阅读 · 1 评论 -
如何设置Java线程池ThreadPoolExecutor的每个参数
有时默认的拒绝策略可能不符合我们的需求,这时可以实现自己的。@Override// 自定义逻辑// 例如,可以记录日志或发送通知});提供了极大的灵活性来满足不同场景下的需求。通过合理配置workQueue等参数,可以有效地管理线程池的生命周期和性能。在实际应用中,通常需要结合具体业务场景进行性能测试和调优,以找到最适合的配置。原创 2024-11-16 10:21:54 · 2269 阅读 · 0 评论 -
Java线程的sleep和wait的区别
在Java中,和都可以让线程暂停执行,但是它们的作用机制和使用场景是不同的。原创 2024-11-14 15:24:05 · 1255 阅读 · 0 评论 -
Spring Bean的生命周期
Spring Bean的生命周期是一个高度灵活和可扩展的过程。通过实现不同的生命周期回调接口和使用注解,我们可以控制Bean在各个阶段的行为。这使得我们能够有效地管理Bean的初始化和清理,尤其是在处理外部资源(如数据库连接、网络连接等)时尤为重要。此外,Spring还提供了许多其他的扩展点,如等,这些都可以用来在Bean的生命周期中插入自定义逻辑。原创 2024-11-10 17:46:06 · 1177 阅读 · 0 评论 -
Java类的加载
如果需要特殊的类加载行为,比如从网络加载类、加密/解密类文件等,可以创建自定义类加载器。自定义类加载器通常继承自,并重写findClass方法来实现具体的加载逻辑。@Override// 实现具体的类数据加载逻辑} else {// 从特定位置加载类的字节码// 例如从文件系统、网络或其他来源// 返回加载的字节数组通过上述步骤,你可以详细了解类加载的整个过程,包括类加载器如何获得类名、类加载的具体步骤以及双亲委派模型的工作方式。原创 2024-11-10 16:34:35 · 1179 阅读 · 0 评论 -
阻塞I/O和非阻塞I/O
阻塞I/O适用于简单且并发较低的应用场景,易于实现但资源利用率低。非阻塞I/O结合I/O多路复用技术,适合高并发场景,可以有效利用系统资源,但实现起来较为复杂。I/O多路复用技术如epoll提供了高效的事件通知机制,是构建高性能服务器的重要工具。根据应用程序的需求选择合适的I/O模型非常重要,正确选择可以极大地提升应用程序的性能和可扩展性。原创 2024-11-10 15:03:15 · 798 阅读 · 0 评论 -
Springboot 的Servlet Web 应用、响应式 Web 应用(Reactive)以及非 Web 应用(None)的特点和适用场景
适用于传统的 Web 应用和 RESTful 服务。适用于高并发和低延迟要求的应用。Non Web适用于后台处理、定时任务和批处理作业。选择合适的应用类型取决于具体的需求和技术栈偏好。原创 2024-11-10 11:19:22 · 1616 阅读 · 0 评论 -
Spring Boot 的生命周期
Spring Boot的生命周期非常丰富,包含了从初始化到运行再到关闭的各个阶段。每个阶段都有其特定的任务和事件,开发者可以利用这些生命周期的特性来更好地控制应用的行为。初始化阶段 (Initialization Phase) 1. 构造SpringApplication对象 当调用 SpringApplication.run(...) 方法时,Spring Boot 会创建一个 SpringApplication 实例。这个实例是整个应用启动的核心。原创 2024-11-10 10:56:05 · 1399 阅读 · 0 评论 -
Spring Boot 的核心原理和工作机制
它基于 Spring 的条件化配置(Conditional Configuration),允许 Spring Boot 根据类路径上的依赖和 Bean 的存在来决定如何配置应用。Spring Boot 采纳了“约定优于配置”的设计理念,这意味着它为开发者提供了一组合理的默认配置。通过以上这些核心原理和特性,Spring Boot 成功地简化了 Spring 应用的开发和部署过程,使得开发者可以更专注于业务逻辑的实现。Spring Boot 提供了多种方式来管理应用的配置,这些配置可以来自不同的来源,如。原创 2024-11-10 10:15:43 · 899 阅读 · 0 评论 -
为什么使用字节流复制中文文件不会出现乱码?
综上所述,使用字节流复制中文文件之所以不会出现乱码,关键在于整个复制过程保持了文件数据的原始字节形式,而未对字符编码进行任何修改或转换。不过,重要的是,在后续读取这些文件时,必须使用与文件编码相匹配的方式来解码,这样才能正确显示文本内容。字节流复制时,不论中文字符占用多少个字节,它都将这些字节视为连续的数据块进行复制,而不会将其分割开来,从而保证了字符的完整性。:在复制文件的过程中,即使文件中包含了中文字符,底层操作系统或文件系统也会将这些字符视为普通的字节序列进行处理。会逐字节地读取源文件,而。原创 2024-11-09 17:48:07 · 404 阅读 · 0 评论 -
Stream API 中的 forEach
forEach方法的底层原理依赖于和的协同工作。在顺序流中,forEach通过顺序地处理每个元素;而在并行流中,被分割成多个部分,每个部分由中的线程并行处理。StreamAPI 的设计使得开发者可以轻松地利用多核处理器的优势,同时保持代码的简洁性和可读性。原创 2024-11-09 11:35:05 · 496 阅读 · 0 评论
分享