jvm类加载器

数据库表的范式

第一范式*(确保每列保持原子性)

第一范式需要数据库表中的所有字段值都是不可分解的原子值。

后端对于一个数据可以直接拿来用,而不需要拆分或者转换。

第二范式(确保表中的每列都和主键相关)

第二范式需要确保数据库表中每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。

第三范式(确保每列都和主键列直接相关,而不是间接相关)

拆,表中没有冗余数据

分为jvm使用的类加载器,程序员使用的类加载器

一。jvm使用的类加载器

启动类加载器(Bootstrap Class Loader):负责加载Java核心类,如

java.lang包中的类。

扩展类加载器(Extension Class Loader):

  • 负责加载Java扩展库中的类,通常从jre/lib/ext

    二。程序员使用的类加载器

    应用程序类加载器(Application Class Loader):

  • 负责加载应用程序类路径(classpath)中的类。

  • 是大多数Java应用程序的默认类加载器。

  • 它加载你自己编写的Java类以及使用的第三方库。

  • 对于普通的Java应用程序来说,应用程序类加载器通常是最重要的类加载器,因为它加载了程序的核心逻辑。

    自定义类加载器(Custom Class Loader):

  • 自定义类加载器允许开发人员编写自己的类加载逻辑,以满足特定的需求。

  • 通过继承java.lang.ClassLoader

  • 自定义类加载器在一些高级应用场景中非常重要,例如应用服务器、插件系统、模块化应用等。

    下面是jvm加载启动类加载器,扩展类加载器,应用程序类加载器

    public class Launcher {

    private static Launcher launcher = new Launcher();

    private static String bootClassPath =

    System.getProperty("sun.boot.class.path");

    public static Launcher getLauncher() {

    return launcher;

    }

    private ClassLoader loader;

    public Launcher() {

    // Create the extension class loader

    ClassLoader extcl;

    try {

    extcl = ExtClassLoader.getExtClassLoader();

    } catch (IOException e) {

    throw new InternalError(

    "Could not create extension class loader", e);

    }

    复制代码
      // Now create the class loader to use to launch the application
      try {
          loader = AppClassLoader.getAppClassLoader(extcl);
      } catch (IOException e) {
          throw new InternalError(
              "Could not create application class loader", e);
      }
    
      //设置AppClassLoader为线程上下文类加载器
      Thread.currentThread().setContextClassLoader(loader);

    }

使用类加载器(应用程序类加载器)

(1)加载类文件

(2)加载资源文件

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();

//参考上文往线程中添加的类加载器,获得是应用程序类加载器。

InputStream inputStream = classLoader.getResourceAsStream("myconfig.xml");

Thread.currentThread().getContextClassLoader() 方法通常会返回当前线程的上下文类加载器,而通常情况下,这个上下文类加载器就是由JVM创建的应用程序类加载器(Application Class Loader)。应用程序类加载器(也称为系统类加载器)是在JVM启动时创建的,它负责加载应用程序类路径(classpath)中的类。

相关推荐
专注于大数据技术栈7 分钟前
Java中JDK、JRE、JVM概念
java·开发语言·jvm
YuanlongWang11 分钟前
C# 基础——值类型与引用类型的本质区别
java·jvm·c#
顾漂亮1 小时前
JVM底层攻坚
java·jvm·spring
黄昏恋慕黎明16 小时前
JVM虚拟机(面试重)
jvm·面试·职场和发展
救救孩子把17 小时前
从 JDK 8 到 JDK 23:HotSpot 垃圾回收器全景演进与深度剖析
java·开发语言·jvm·jdk
光军oi18 小时前
JAVA全栈JVM篇————初识JVM
java·开发语言·jvm
Moniane18 小时前
C++深度解析:从核心特性到现代编程实践
java·开发语言·jvm
我星期八休息20 小时前
C++智能指针全面解析:原理、使用场景与最佳实践
java·大数据·开发语言·jvm·c++·人工智能·python
野生技术架构师20 小时前
JAVA 架构师面试题含答案:JVM+spring+ 分布式 + 并发编程
java·jvm·spring
沐浴露z1 天前
【JVM】详解 垃圾回收
java·jvm·算法