每天一个面试题之类加载机制、spirngboot的启动机制

2023-09-22 15:29:55

jvm 类加载机制

Java虚拟机(JVM)的类加载机制是Java的关键部分,它负责加载、链接和初始化类。类加载机制的主要任务是将Java类的字节码文件转换为可以在JVM上执行的运行时数据结构。这个过程包括以下三个主要步骤:

  • 加载(Loading):在此阶段,类加载器负责查找并加载类的字节码文件。这个过程通常从类路径(Classpath)开始,可以包括本地文件系统、网络资源或JAR文件。加载完成后,字节码被存储在内存中,并被用于后续的步骤。

  • 链接(Linking):链接分为三个子阶段:

    • a. 验证(Verification):在此阶段,JVM确保加载的字节码是有效的,并且没有被篡改。这有助于保护系统免受恶意代码的攻击。
    • b.准备(Preparation):在此阶段,JVM为类的静态变量分配内存并初始化为默认值。例如,数值类型默认为0,引用类型默认为null。
    • c.解析(Resolution):在此阶段,虚拟机将符号引用转换为直接引用,例如将类或接口的符号引用转换为对应的直接引用地址。这个过程可以在运行时发生,也可以在编译时提前发生。
  • 初始化(Initialization):在此阶段,类的静态初始化代码块(static块)被执行。这意味着静态变量被赋予了初始值,而且静态块中的代码被执行。这个阶段的执行是按需的,只有在首次使用类或访问静态成员时才会触发。

JVM采用了一种称为"类加载器委托模型"的机制来管理类的加载。这个模型包括以下几个关键特点:

  • 双亲委派(Parent Delegation):类加载器按照层次结构组织,每个类加载器都有一个父加载器。当一个类加载器收到加载类的请求时,它首先委托给父加载器加载。只有在父加载器无法加载该类时,子加载器才会尝试加载。

  • 缓存机制:一旦类被加载,JVM通常会将类的二进制数据缓存起来,以避免重复加载相同的类。

  • 命名空间(Namespace):不同的类加载器加载的类处于不同的命名空间中,这意味着即使两个类具有相同的全限定名,它们也可以在不同的类加载器下并存,不会发生冲突。

这些机制确保了类的一致性、安全性和避免了类的重复加载。理解JVM的类加载机制对于Java程序员非常重要,因为它有助于解决类加载相关的问题,并确保Java程序的稳定性和可靠性。

springboot 启动机制

Spring Boot 是一个用于构建独立的、生产级别的Spring应用程序的开发框架。Spring Boot的启动机制相对简单,主要通过main方法来启动应用程序。以下是Spring Boot应用程序的启动机制的关键点:

主类(Main Class):Spring Boot应用程序的入口点是一个Java类,通常带有public static void main(String[] args)方法。这个类被称为主类,通常包含@SpringBootApplication注解。

@SpringBootApplication注解:@SpringBootApplication是一个复合注解,包括@Configuration、@EnableAutoConfiguration和@ComponentScan。它告诉Spring Boot应用程序将自动配置并扫描类路径中的组件。

  • 启动过程:当您运行主类中的main方法时,Spring Boot应用程序的启动过程开始。它会执行以下步骤:

    • a. 创建Spring应用上下文(ApplicationContext):Spring Boot会创建一个应用上下文,该上下文包含了应用程序的所有组件,如控制器、服务和存储库等。
    • b. 自动配置(Auto-Configuration):Spring Boot会自动配置应用程序,根据类路径上的依赖项和配置属性,自动配置数据库连接、Web服务器、消息队列等等。
    • c. 运行嵌入式Web服务器:如果应用程序包含Web组件,Spring Boot将启动嵌入式Web服务器(如Tomcat、Jetty或Undertow),并将Web应用程序部署到该服务器上。
    • d. 执行应用程序逻辑:Spring Boot执行主类中定义的应用程序逻辑,包括请求处理、业务逻辑等。
  • 启动参数和配置:Spring Boot允许您通过命令行参数、配置文件(如application.properties或application.yml)以及环境变量来配置应用程序的行为。这些配置可以用于自定义应用程序的行为和属性。

  • 热部署(Hot Reloading):Spring Boot支持热部署,这意味着您可以在不重启应用程序的情况下修改代码和资源文件,并立即看到变化。

Spring Boot的启动机制是通过执行主类的main方法来创建应用程序上下文、自动配置应用程序、启动嵌入式Web服务器,并执行应用程序逻辑。Spring Boot的设计目标是使开发者能够快速构建生产级别的Spring应用程序,而无需繁琐的配置。这使得Spring Boot成为开发现代Java应用程序的理想选择。

更多推荐

【深度学习】Pytorch 系列教程(一):PyTorch数据结构:1、Tensor(张量):维度(Dimensions)、数据类型(Data Types)

目录一、前言二、实验环境三、PyTorch数据结构0、分类1、Tensor(张量)1.维度(Dimensions)0维(标量)1维(向量)2维(矩阵)3维张量2.数据类型(DataTypes)一、前言ChatGPT:PyTorch是一个开源的机器学习框架,广泛应用于深度学习领域。它提供了丰富的工具和库,用于构建和训练各

安卓玩机搞机----不用刷第三方官改固件即可享受“高级设置”的操作 ChiMi安装使用步骤

很多玩友特别喜欢第三方作者修改的带有高级设置的官改包。因为他可以随意修改系统里面的有关设置选项。包括但不限于修改状态栏显示日期秒等等的操作。第三方带高级设置的官改一般官改带高级设置的类似与今天给大家分享下不用刷这些官改包即可享受高级设置的操作。红米k40做个演示步骤机型;红米k40芯片:高通骁龙870安卓版本;安卓12

使用SeaFile搭建私有云盘并公网访问【cpolar内网穿透】

文章目录1.前言2.SeaFile云盘设置2.1Owncould的安装环境设置2.2SeaFile下载安装2.3SeaFile的配置3.cpolar内网穿透3.1Cpolar下载安装3.2Cpolar的注册3.3Cpolar云端设置3.4Cpolar本地设置4.公网访问测试5.结语1.前言现在我们身边的只能设备越来越多

使用Jest搭建自动化单元测试框架为Vue 3项目

前言在Vue3项目中,自动化单元测试是一个非常重要的环节,它可以帮助我们验证代码的正确性、提高代码质量,并且在项目迭代过程中保证代码的稳定性。本文将介绍如何使用Jest搭建自动化单元测试框架为Vue3项目,并提供代码示例。安装Jest首先,我们需要在项目中安装Jest。打开终端,进入项目根目录,执行以下命令:npmin

Java中this关键字的常见用法

一、this使用方法总结下来就是,在Java中,this是一个关键字,用于引用当前对象的引用,可以用于引用对象的实例变量和方法。主要用于以下几个方面:1、在构造函数中使用this关键字来调用同一个类中的其他构造函数。这种情况下,this关键字必须作为构造函数的第一行代码出现,并且用于区分不同参数列表的构造函数。publ

WSUS 修补程序管理的替代方法

什么是WSUSWindowsServerUpdateServices(WSUS)是MicrosoftforWindowsServer提供的免费附加组件,WSUS从Microsoft更新中下载必要的修补程序和更新,并将其分发到Windows网络中存在的Windows操作系统和相关Microsoft应用程序。WSUS和SC

岩土工程安全监测中振弦采集仪连接振弦传感器时注意事项

岩土工程安全监测中振弦采集仪连接振弦传感器时注意事项岩土工程安全监测是保障工程稳定和安全的重要手段之一,而振弦采集仪则是岩土工程安全监测的常用设备之一,可以用于实时监测地下水位、土体变形、岩体应力等。其中,振弦传感器是振弦采集仪的核心部件之一,负责采集和传输振动信号。在连接振弦传感器时,需要注意以下几点。一、确定传感器

ChatGPT在职业规划中的智能助手

随着科技的不断发展,人工智能(AI)正逐渐成为我们日常生活的一部分。ChatGPT作为一种智能语言模型,可以在职业规划中充当智能助手的角色。本文将探讨ChatGPT在职业规划中的应用,以及它如何成为未来工作的智能伙伴。首先,ChatGPT可以提供职业发展的智能建议。通过与ChatGPT的交互,我们可以咨询关于职业发展的

企业进行品牌推广时怎么才能达到预期广告效应?不如试试软文营销

企业进行品牌推广的目的就在于提升品牌的曝光率,树立该品牌在市场中的形象,加强品牌的影响力与公信力,提高产品的竞争力,那么企业进行品牌推广时怎么才能达到预期效果呢,我们可以试试软文营销,接下来媒介盒子就告诉大家,企业如何利用软文营销来达到预期广告效应。一、 分析市场背景软文营销作为一种营销方式,需要我们在前期分

conda的安装和使用

参考资料:https://www.bilibili.com/read/cv8956636/?spm_id_from=333.999.0.0https://www.bilibili.com/video/BV1Mv411x775/?spm_id_from=333.999.0.0&vd_source=98d31d5c9db8

计算机视觉与深度学习-经典网络解析-AlexNet&ZFNet&VGG&GoogLeNet&ResNet[北邮鲁鹏]

目录标题参考文章LeNet5AlexNet参考文章AlexNet模型结构AlexNet共8层:AlexNet运作流程简单代码实现重要说明重要技巧主要贡献ZFNet主要改进减小第一层卷积核将第二、第三个卷积层的卷积步长都设置为2增加了第三、第四个卷积层的卷积核个数VGG参考VGG网络贡献使用尺寸更小的3×33\times

热文推荐