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)中的类。

相关推荐
华仔啊5 小时前
JVM参数到底配在哪?7大场景全解,新手不再迷茫!
java·jvm
流星5211221 天前
GC 如何判断对象该回收?从可达性分析到回收时机的关键逻辑
java·jvm·笔记·学习·算法
JanelSirry1 天前
我的应用 Full GC 频繁,怎么优化?
jvm
JH30731 天前
jvm,tomcat,spring的bean容器,三者的关系
jvm·spring·tomcat
DKPT1 天前
JVM直接内存和堆内存比例如何设置?
java·jvm·笔记·学习·spring
siriuuus1 天前
JVM 垃圾收集器相关知识总结
java·jvm
小满、2 天前
什么是栈?深入理解 JVM 中的栈结构
java·jvm·1024程序员节
百花~2 天前
JVM(Java虚拟机)~
java·开发语言·jvm
每天进步一点点dlb2 天前
JVM中的垃圾回收算法和垃圾回收器
jvm·算法
漫漫不慢.2 天前
蓝桥杯-16955 岁月流转
java·jvm·蓝桥杯