随笔分类 -  Java

摘要:AQS实现原理 概要 在并发编程中,锁是一种常用的保证线程安全的方法。Java 中常用的锁主要有两类,一种是 Synchronized 修饰的锁,被称为 Java 内置锁或监视器锁。另一种就是在 JDK1.5版本之后的juc(java.util.concurrent) 包中的各类同步器。这些同步器都 阅读全文
posted @ 2024-10-23 22:17 欢乐豆123 阅读(150) 评论(0) 推荐(0)
摘要:MyBatis 原理 概要 MyBatis 是一个持久层框架,用于将对象与数据库中的记录进行映射。它通过 XML 或注解的方式定义 SQL 语句并将结果映射到 Java 对象。 一、 MyBatis 原理 1. 配置 MyBatis 通过 SqlSessionFactory 加载配置文件(mybat 阅读全文
posted @ 2024-10-12 09:47 欢乐豆123 阅读(174) 评论(0) 推荐(0)
摘要:Spring事务 - 事务传播机制 概要 在Java的Spring框架中,事务管理是保证应用数据一致性和可靠性的关键。Spring提供了灵活的事务传播机制,它定义了事务边界,以及在嵌套方法调用时如何处理事务。 事务的传播机制,顾名思义就是多个事务方法之间调用,事务如何在这些方法之间传播。 举个例子, 阅读全文
posted @ 2024-10-11 11:48 欢乐豆123 阅读(983) 评论(0) 推荐(0)
摘要:Spring事务失效的场景 概要 说到Spring事务,大家可能都会想到@Transactional注解,但是很多人只是停留在基础的使用层面上,在遇到一些比较特殊的场景,事务可能没有生效,直接在生产上暴露了,这可能就会导致比较严重的生产事故。今天,我们就简单来说下Spring事务的原理,然后总结一下 阅读全文
posted @ 2024-10-10 18:19 欢乐豆123 阅读(1584) 评论(0) 推荐(0)
摘要:java的类加载机制 概要 Class文件是Java 编译器(如 javac)将 Java 源代码(.java 文件)编译而生成的。编译器将 Java 代码转换成字节码,存储在 Class 文件中,Class 文件需要加载到虚拟机中之后才能运行和使用。 JVM 需要将编译后的字节码文件加载到其内部的 阅读全文
posted @ 2024-09-27 21:41 欢乐豆123 阅读(281) 评论(0) 推荐(0)
摘要:常见的JVM调优参数和应用场景 概要 JVM调优可以显著提升Java应用性能,减少响应时间和垃圾回收停顿,优化内存使用,降低内存溢出风险,并提高资源利用率。 以下是一些常用的JVM参数和应用场景的介绍。 一、堆内存设置 -Xms<size> 和 -Xmx<size>:设置初始堆大小和最大堆大小。 1 阅读全文
posted @ 2024-09-23 11:40 欢乐豆123 阅读(128) 评论(0) 推荐(0)
摘要:SpringBoot系列 - 启动原理(下) 从上一篇文章《SpringBoot系列-启动原理(上)》中,介绍了SpringBoot应用启动的核心方法run()的整体情况。这篇文章来详细展开介绍。其中比较重要的方法会标记上*** 一、createBootstrapContext *** Defaul 阅读全文
posted @ 2024-09-06 11:31 欢乐豆123 阅读(172) 评论(0) 推荐(0)
摘要:Spring中Aware接口原理 在Spring中存在一个Aware接口,实现该接口可以让我们的Bean获取到Spring容器中特定的资源,但该接口只是个标记接口,不存在任何方法,因此我们还需要继承Aware来做特定资源获取的实现。 换句话说:只要实现了Aware子接口的Bean都能获取到一个Spr 阅读全文
posted @ 2024-08-13 16:00 欢乐豆123 阅读(194) 评论(0) 推荐(0)
摘要:SpringBoot 使用策略+工厂模式的几种实现方式 一、 方式一:结合 @PostConstruct 实现 @PostConstruct 注解是用来在 Spring 管理的 bean 初始化后立即执行某些方法。 这里通过 @PostConstruct 注解将各种实现类初始化之后加入到策略类集合M 阅读全文
posted @ 2024-08-12 11:04 欢乐豆123 阅读(1303) 评论(0) 推荐(0)
摘要:SpringBoot系列 - 自动装配 概要 自动装配:通过注解或者一些简单的配置就能在 Spring Boot 的帮助下实现某块功能。 我们现在提到自动装配的时候,一般会和 Spring Boot 联系在一起。但是,实际上 Spring Framework 早就实现了这个功能。Spring Boo 阅读全文
posted @ 2024-08-07 20:34 欢乐豆123 阅读(213) 评论(0) 推荐(0)
摘要:Spring - 事件驱动模型 Spring 事件驱动模型也是观察者模式很经典的应用。 一、Spring 中观察者模式的四个角色 1. 事件 - ApplicationEvent ApplicationEvent 是所有事件对象的父类。ApplicationEvent 继承自 jdk 的 Event 阅读全文
posted @ 2024-08-07 14:45 欢乐豆123 阅读(371) 评论(0) 推荐(0)
摘要:SpringBoot系列- SPI机制 概要 什么是SPI呢,全称是 Service Provider Interface 。简单翻译的话,就是服务提供者接口,是一种寻找服务实现的机制。这个是针对厂商或者插件的。 其实就是一个规范定义、或者说是实现的标准。 一、SPI的核心思想 SPI的核心思想是模 阅读全文
posted @ 2024-08-07 10:58 欢乐豆123 阅读(741) 评论(0) 推荐(0)
摘要:SpringBoot-事件监听机制 概要 在 Spring Boot 中,事件(Event)是一种在应用程序中用于通知和响应状态或动作变化的机制。 通过事件机制,不同的组件可以松散耦合地协作,实现模块化和可扩展的应用程序架构。事件的作用在于提供了一种解耦的方式,使得应用程序的不同部分能够相互通信和交 阅读全文
posted @ 2024-08-05 17:05 欢乐豆123 阅读(1316) 评论(0) 推荐(1)
摘要:自定义线程池 概要 我们知道线程是一个重量级的资源,创建、启动以及销毁线程都是比较耗费系统资源的。因此对线程的重复利用一种是非常好的程序设计习惯,加之系统中可创建的线程数量是有限的,线程数量和系统性能是一种抛物线的关系,也就是说当线程数量达到某个数值的时侯,性能反倒会降低很多,因此对线程的管理,尤其 阅读全文
posted @ 2024-08-05 11:40 欢乐豆123 阅读(176) 评论(0) 推荐(0)
摘要:SpringBoot-启动原理(上) 概要 Spring Boot是建立在Spring框架之上的微服务框架,旨在简化Spring应用的开发过程。与传统的Spring应用相比,Spring Boot采用约定优于配置的原则,通过提供默认配置和快速开发的特性,大大减少了开发者的工作量。Spring Boo 阅读全文
posted @ 2024-08-03 16:41 欢乐豆123 阅读(131) 评论(0) 推荐(0)
摘要:字符串常量池 概要 字符串常量池 是 JVM 为了提升性能和减少内存消耗,针对字符串(String 类)专门开辟的一块区域,主要目的是为了避免字符串的重复创建。 一、内存区域 1)JDK1.7之前 运行时常量池(字符串常量池也在里边)是存放在方法区,此时方法区的实现是永久代。 2)JDK1.7 字符 阅读全文
posted @ 2024-08-02 09:45 欢乐豆123 阅读(640) 评论(0) 推荐(0)
摘要:IDEA 字节码工具 jclasslib bytecode viewer 1. 下载安装 首先我们在 IDEA 的插件市场中搜索 jclasslib bytecode viewer 和进行下载安装,安装过后根据 IDEA 版本的不同,可能需要重启才能使用。 2. 使用 下载安装过后,在我们的项目中, 阅读全文
posted @ 2024-07-31 09:28 欢乐豆123 阅读(1227) 评论(0) 推荐(0)
摘要:CompletableFuture多线程并发处理 概要 一个接口可能需要调用 N 个其他服务的接口,这在项目开发中还是挺常见的。 举个例子:用户请求获取订单信息,可能需要调用用户信息、商品详情、物流信息、商品推荐等接口,如果是串行(按顺序依次执行每个任务)执行的话,接口的响应速度会非常慢。考虑到这些 阅读全文
posted @ 2024-06-21 09:07 欢乐豆123 阅读(2549) 评论(0) 推荐(0)
摘要:Spring- FactoryBean使用/原理 概要 一般情况下,Spring通过反射机制利用的class属性指定实现类实例化Bean。在某些情况下,实例化Bean过程比较复杂,若按照传统的方式,则需要提供大量的配置信息,不够灵活,这时采用编码的方式能得到一个简单的方案。 Spring为此提供了一 阅读全文
posted @ 2024-06-19 12:00 欢乐豆123 阅读(339) 评论(0) 推荐(0)
摘要:Spring容器系列-bean的生命周期 概要 对于Spring Bean的生命周期来说,可以分为四个阶段,其中初始化完成之后,就代表这个Bean可以使用了,四个阶段如下: 实例化 Instantiation : 为Bean分配内存空间 属性赋值 Populate :将当前类依赖的Bean属性,进行 阅读全文
posted @ 2024-06-17 21:26 欢乐豆123 阅读(1812) 评论(0) 推荐(0)