当前位置: 首页 > news >正文

【JVM篇】什么是类加载器,有哪些常见的类加载器

文章目录

  • 🍔什么是类加载器
  • 🛸有哪些常见的类加载器

在这里插入图片描述

🍔什么是类加载器

负责在类加载过程中,将字节码信息以流的方式获取并加载到内存当中

🛸有哪些常见的类加载器

  • 启动类加载器
    启动类加载器是有Hotspot虚拟机通过的类加载器,加载核心类
    默认加载Java安装目录 / jre / lib下面的类文件
    在这里插入图片描述

  • 扩展类加载器
    扩展类加载器是jdk中提供的,是使用Java编写的类加载器,加载扩展类
    默认加载Java安装目录 / jre / lib / ext 下的类文件
    在这里插入图片描述

  • 应用程序加载器
    应用程序加载器是jdk中提供的,使用Java编写的类加载器,加载应用程序classpath下的类
    在这里插入图片描述

  • 自定义类加载器允许用户自行实现类加载的逻辑,可以从网络,数据库等来源加载类的信息
    自定义类加载器需要继承ClassLoader抽象类,重写findClass方法

下面我们来写一个自定义类加载器
我们随便找一个class文件(不知在哪里找文件的同学可以参考这一篇文章 字节码文件)在这里插入图片描述
我们使用jclasslib双击打开这个文件
在这里插入图片描述
可以看到这个类名位于固定目录下,不能被启动类加载器,扩展类加载器,应用程序加载器加载,所以我们选择自定义类加载器
代码如下

我们在pom文件中写入下面的代码

<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version></dependency>
package org.JVM;import org.apache.commons.io.FileUtils;import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;public class MyClassLoader extends ClassLoader{@Overrideprotected Class<?> findClass(String name) throws ClassNotFoundException{//com . yupi . springbootinit . MainApplication .classString fileName = name.substring(name.lastIndexOf(".")+1)+".class";byte[] bytes=new byte[0];try {bytes= FileUtils.readFileToByteArray(new File("F:\\jvm\\data\\"+fileName));} catch (IOException e) {e.printStackTrace();}return defineClass(name, bytes, 0, bytes.length);}public static void main(String[] args) throws ClassNotFoundException {MyClassLoader myClassLoader = new MyClassLoader();Class<?> clazz =  myClassLoader.loadClass("com.yupi.springbootinit.MainApplication");//打印类的字段Field[] declaredFields = clazz.getDeclaredFields();for (Field field : declaredFields) {System.out.println(field.getName());}//打印类加载器的名称System.out.println(clazz.getClassLoader());}
}

在这里插入图片描述
我们来到jclasslib里面看一下,发现如此

在技术的道路上,我们不断探索、不断前行,不断面对挑战、不断突破自我。科技的发展改变着世界,而我们作为技术人员,也在这个过程中书写着自己的篇章。让我们携手并进,共同努力,开创美好的未来!愿我们在科技的征途上不断奋进,创造出更加美好、更加智能的明天!

在这里插入图片描述

相关文章:

【JVM篇】什么是类加载器,有哪些常见的类加载器

文章目录 &#x1f354;什么是类加载器&#x1f6f8;有哪些常见的类加载器 &#x1f354;什么是类加载器 负责在类加载过程中&#xff0c;将字节码信息以流的方式获取并加载到内存当中 &#x1f6f8;有哪些常见的类加载器 启动类加载器 启动类加载器是有Hotspot虚拟机通过的类…...

STM32—DHT11温湿度传感器

文章目录 一.温湿度原理1.1 时序图 二.代码 一.温湿度原理 1.1 时序图 (1).下图一是DHT11总的时序图。 (2).图二对应图一的左边黑色部分&#xff0c;图三对应图一的绿色部分&#xff0c;图四的左部分图对应图一的红色部分&#xff0c;图四的右部分对应图一的黄色部分。 (3)…...

相机图像质量研究(31)常见问题总结:图像处理对成像的影响--图像差

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…...

MySQL之select查询

华子目录 SQL简介SQL语句分类SQL语句的书写规范SQL注释单行注释多行注释 select语句简单的select语句select的算数运算select 要查询的信息 from 表名;查询表字段查询常量查询表达式查询函数 查询定义别名as安全等于<>去重distinct连接字段concat 模糊查询运算符比较运算…...

Android MMKV 接入+ 替换原生 SP + 原生 SP 数据迁移

背景:项目中一直使用的是原生 SP,众所周知,使用原生 SP 存在卡顿性能问题。公司的性能监控平台抓到不少原生 SP 导致的 ANR 问题: java.io.FileDescriptor.sync (FileDescriptor.java) android.os.FileUtils.sync (FileUtils.java:256) android.app.SharedPreferencesImpl.…...

C#上位机与三菱PLC的通信07--使用第3方通讯库读写数据

1、通讯库介绍 mcprotocol 是一个基于 Node.js 的三菱 PLC MC 协议通信库&#xff0c;具有以下特点&#xff1a; 支持多种三菱 PLC MC 协议的设备&#xff0c;如 FX3U、Q03UDECPU、QJ71E71 等。 支持多种功能码和数据类型&#xff0c;如读取线圈&#xff08;M&#xff09;、…...

LiveGBS流媒体平台GB/T28181常见问题-基础配置流媒体服务配置中本地|内网IP外网IP(可选)外网IP收流如何配置

LiveGBS常见问题基础配置流媒体服务配置中本地|内网IP外网IP外网IP收流如何配置&#xff1f; 1、流媒体服务配置2、播放提示none rtp data receive3、多网卡服务器4、收流端口配置5、端口区间可以如何配置6、搭建GB28181视频直播平台 1、流媒体服务配置 LiveGBS中基础配置-》流…...

微服务- 熔断、降级和限流

基本介绍 在微服务架构中&#xff0c;由于服务之间的相互依赖性&#xff0c;任何一个服务的故障或性能问题都可能导致整个系统的不稳定。因此&#xff0c;熔断、降级和限流是三种常见的技术手段&#xff0c;用于提高系统的可用性和稳定性。 熔断 (Circuit Breaker) 熔断机制…...

电路设计(20)——数字电子钟的multism仿真

1.设计要求 使用数字芯片&#xff0c;设计一个电子钟&#xff0c;用数码管显示&#xff0c;可以显示星期&#xff0c;时、分、秒&#xff0c;可以有按键校准时间。有整点报警功能。 2.设计电路 设计好的multism电路图如下所示 3.芯片介绍 时基脉冲使用555芯片产生。在仿真里面…...

【论文阅读笔记】Contrastive Learning with Stronger Augmentations

Contrastive Learning with Stronger Augmentations 摘要 基于提供的摘要&#xff0c;该论文的核心焦点是在对比学习领域提出的一个新框架——利用强数据增强的对比学习&#xff08;Contrastive Learning with Stronger Augmentations&#xff0c;简称CLSA&#xff09;。以下…...

前端win10如何设置固定ip(简单明了)

1、右击这个 2、点击属性 3、双击协议版本4设置成以下就ok...

数据结构1.0(基础)

近java的介绍&#xff0c; 文章目录 第一章、数据结构1、数据结构 &#xff1f;2、常用的数据结构数据结构&#xff1f; 逻辑结构and物理结构 第二章、数据结构基本介绍2.1、数组&#xff08;Array&#xff09;2.2、堆栈&#xff08;Stack&#xff09;2.3、队列&#xff08;Que…...

anomalib1.0学习纪实-续2:三个文件夹

为了读懂程序&#xff0c;有三个最重要的文件夹&#xff0c;如下图&#xff1a; 正好对应四个类&#xff0c;如下图&#xff1a; 四个类的来源如下图所示&#xff1a; 注意&#xff0c;MVTec是个大类&#xff0c;里面用到了这里的第四个类MVTecDataset&#xff0c;代码如下。…...

【递归】【后续遍历】【迭代】【队列】Leetcode 101 对称二叉树

【递归】【后续遍历】Leetcode 101 对称二叉树 解法一&#xff1a; 递归&#xff1a;后序遍历 左右中解法二&#xff1a; 迭代法&#xff0c;用了单端队列 ---------------&#x1f388;&#x1f388;对称二叉树 题目链接&#x1f388;&#x1f388;------------------- 解法一…...

Nginx https反向代理

接前一篇文章&#xff0c;今天看看https的反向代理怎么配置。 生成自签名证书和私钥 要使用https&#xff0c;首先需要有证书和私钥&#xff0c;这里创建一个测试用的自签名证书和私钥。 使用 openssl 命令生成服务器私钥文件 openssl genrsa -out server.key 2048生成证书…...

zip解压缩

使用unzip库可以轻松解压zip文件&#xff0c;源码下载地址&#xff1a;http://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win #include <Windows.h> #include"unzip.h" SetCurrentDirectory("c:\\"); HZIP hz OpenZip(…...

电动五金工具行业调研:政策促进市场发展

五金工具可以分为建筑五金、日用五金和家居五金等&#xff0c;科技的不断进步下五金工具产品也在逐渐创新进步。在国家一系列政策下五金工具行业更加规范化&#xff0c;使用也更加符合安全要求。 五金工具行业是指生产铁锤、螺丝刀、扳手、钳子、卷尺等小型工具的产业。这些工具…...

【矩阵】托普利茨矩阵

每日一道算法题之托普利茨矩阵 一、题目描述二、思路三、C代码 一、题目描述 题目来源&#xff1a;LeetCode 给你一个 m x n 的矩阵 a 。如果这个矩阵是托普利茨矩阵&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果矩阵上每一条由左上到右下的对角线上…...

DS:八大排序之归并排序、计数排序

创作不易&#xff0c;感谢三连支持&#xff01;&#xff01; 一、归并排序 1.1 思想 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide andConquer&#xff09;的一个非常典型的应用。将已有序的子…...

由斐波那契数列探究递推与递归

斐波那契数列定义&#xff1a; 斐波那契数列大家都非常熟悉。它的定义是&#xff1a; 对于给定的整数 x &#xff0c;我们希望求出&#xff1a; f ( 1 ) f ( 2 ) … f ( x ) f(1)f(2)…f(x) f(1)f(2)…f(x) 的值。 有两种方法,分别是递推(迭代)与递归 具体解释如下图 备注…...

终极ncmdumpGUI指南:3步快速解密网易云音乐NCM文件

终极ncmdumpGUI指南&#xff1a;3步快速解密网易云音乐NCM文件 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI ncmdumpGUI是一款基于C#开发的Windows图形界面工…...

RocketMQ 源码解析——Controller 高可用切换架构

延伸阅读&#xff1a;&#x1f50d;「RocketMQ 中文社区」 持续更新源码解析/最佳实践&#xff0c;提供 RocketMQ 专家 AI 答疑服务 一、原理及核心概念浅述 1.1 核心架构 1.2 核心概念 controller&#xff1a;负责管理broker间的主备关系&#xff0c;可以挂在namesrv中&…...

2026年小程序多少钱:8款高口碑产品排行榜解锁最优选择

导读&#xff1a;2026年&#xff0c;小程序开发已成为企业数字化运营的核心工具&#xff0c;其成本结构受功能复杂度、平台选择及服务商专业度等多因素影响。市场调研显示&#xff0c;基础展示型小程序报价集中在5000-15000元&#xff0c;而定制化多功能方案可达5万元以上。行业…...

Ti AWR2243实测:毫米波雷达通道积累,选相干还是非相干?一个实验讲清楚

Ti AWR2243毫米波雷达通道积累策略&#xff1a;工程实践中的深度抉择 毫米波雷达在现代自动驾驶系统中扮演着关键角色&#xff0c;而通道积累策略的选择直接影响着目标检测的精度与系统实时性。面对192个虚拟通道的海量数据&#xff0c;工程师们常常陷入两难&#xff1a;是追求…...

使用Nodejs快速将Taotoken大模型API集成到你的Web应用中

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用Node.js快速将Taotoken大模型API集成到你的Web应用中 基础教程类&#xff0c;面向全栈或前端开发者&#xff0c;讲解如何在Nod…...

5G 网络优化工程师是骗局吗?从业15年资深老工程师实话实说

01 5G 网优岗位&#xff0c;本身真实靠谱很多人一刷到 5G 网络优化工程师这个岗位&#xff0c;第一反应都是犹豫、怀疑&#xff1a;这到底是不是收割小白的骗局&#xff1f;我在通信行业深耕整整 15 年&#xff0c;也拿到过华为高级工程师认证&#xff0c;今天以业内老兵的身份…...

JDK 17文本块实战:告别繁琐拼接,拥抱多行字符串新写法

1. 为什么我们需要文本块&#xff1f; 如果你写过Java代码&#xff0c;肯定遇到过这样的场景&#xff1a;需要处理多行字符串&#xff0c;比如HTML模板、SQL语句或者JSON数据。在JDK 17之前&#xff0c;我们只能通过字符串拼接的方式来实现&#xff0c;代码看起来就像是一团乱麻…...

车载以太网之要火系列 - 第49篇郭大侠学SOME/IP:人说SOME/IP虽好,对手已在路上跑

写在开篇蓉儿又挖坑上回说到&#xff0c;郭靖学完了SOME/IP的十八般武艺——报文头、Service ID、Instance ID、Method、Event、Field、SD的Offer/Find/Subscribe三驾马车。郭靖合上笔记本&#xff0c;信心满满&#xff1a;“蓉儿&#xff0c;SOME/IP我算是学透了&#xff01;服…...

AI行业的“新风口”:大模型时代下AI从业者的职业新机遇

在AI大模型技术飞速发展的当下&#xff0c;全球AI市场规模正以惊人速度扩张。据IDC预测&#xff0c;2025年全球AI大模型市场规模突破1200亿美元&#xff0c;中国占比超35%。这股浪潮不仅重塑了软件开发行业格局&#xff0c;也为软件测试从业者带来了前所未有的职业新机遇。对于…...

米尔MA35D1核心板512MB DDR升级:工业边缘计算性能跃迁与开发实战

1. 项目概述&#xff1a;MA35D1核心板512M DDR配置的发布意味着什么&#xff1f;最近&#xff0c;米尔电子发布了其基于新唐MA35D1处理器的核心板新配置——512MB DDR。这个消息在工业控制和边缘计算圈子里引起了不少讨论。对于很多正在评估或已经使用MA35D1方案的朋友来说&…...