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

类加载机制(双亲委派机制)

文章目录

  • JVM的作用是什么
  • 双亲委派机制
    • 加载流程

JVM的作用是什么

我们运行Java程序时,要安装JDK,JDK包含JVM,不同环境的JDK都是不同的。

Java 代码在编译后会形成 class 的字节码文件,该字节码文件通过 JVM 解释器,生成特定系统的机器指令。从而实现跨平台运行

也正是“一次编译,到处运行”

下面我们讲一讲类的双亲委派机制

双亲委派机制

当收到类加载的请求时,该类的加载器会将请求发送给其父类加载器直至根加载器,当父类加载器加载不了的话,就会自己尝试加载。

使用双亲委派机制,是防止重复加载两次字节码。确保只有一个字节码加载。

类加载器

类加载器主要分为

  • 根加载器 Bootstrap ClassLoad,一般加载Java核心库
  • 扩展****类加载器 Extension ClassLoad,一般加载Java扩展包
  • 应用程序类加载器 Application ClassLoad,加载 classPath下的应用程序类
  • 自定义加载器 Customer ClassLoad

一般 Java 的本地方法类由根加载器加载,扩展类Java的扩展目录(通常是jre/lib/ext)由扩展类加载器加载:,classPath 下的所有类都由应用程序类加载器。

  • java.util.ArrayList:这个类也是Java核心库的一部分,由根加载器加载。
  • javax.swing.JFrame:这个类属于Java的扩展包,由扩展加载器(ExtClassLoader)加载。
  • com.example.MyClass:这是一个假设的应用程序类,它位于应用程序的类路径上,由系统加载器(AppClassLoader)加载。

加载流程

img

使用双亲委派机制的好处:

1、可以避免类的重复加载,当父类加载器已经加载了该类时,就没有必要子类加载器 再加载一次。

2、考虑到安全因素,java核心api中定义类型不会被随意替换,假设通过网络传递一个名为java.lang.Object的类,通过双亲委托模式传递到启动类加载器,而启动类加载器在根加载器发现这个名字的类,发现该类已被加载,并不会重新加载网络传递的过来的java.lang.Object,而直接返回已加载过的Object.class,这样便可以防止核心API库被随意篡改。

lang.Object,而直接返回已加载过的Object.class,这样便可以防止核心API库被随意篡改。

我是小辉,24 届毕业生。当下是找工作ing,欢迎关注,持续分享。

相关文章:

类加载机制(双亲委派机制)

文章目录 JVM的作用是什么双亲委派机制加载流程 JVM的作用是什么 我们运行Java程序时,要安装JDK,JDK包含JVM,不同环境的JDK都是不同的。 Java 代码在编译后会形成 class 的字节码文件,该字节码文件通过 JVM 解释器,生…...

nss刷题(2)

1、[NSSCTF 2022 Spring Recruit]ezgame 打开题目是一个游戏界面 发现是有分数的,猜测分数达到某个之后可以获得flag,查看源码看一下 看到末尾显示分数超过65后显示flag 在js中找到了一个score,将他的值改为大于65的数后随意玩一次就可以得到flag同时&a…...

2024 年“泰迪杯”A 题:生产线的故障自动识别与人员配置--第四题(用遗传算法解决生产线排班问题--matlab代码)

问题背景: 问题四:根据实际情况,现需要扩大生产规模,将生产线每天的运行时间从 8 小时增加 到 24 小时不间断生产,考虑生产线与操作人员的搭配,制定最佳的操作人员排班方案,要求满足以下条件&am…...

资产公物仓管理系统|实现国有资产智能化管理

1、项目背景 资产公物仓管理系统(智仓库DW-S201)是一套成熟系统,依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对RFID智能仓库进行统一管理、分析的信息化、智能化、规范化的系统。 项目设计原则 方案对公物仓资…...

实用的 Google Chrome 命令

以下是一些实用的 Google Chrome 命令: chrome://version - 显示 Chrome 浏览器的详细信息,包括版本号、用户代理和命令行参数等。 chrome://flags - 打开 Chrome 实验性功能页面,可以启用或禁用各种实验性功能。请注意,这些功能…...

动态规划算法:⼦数组、⼦串系列(数组中连续的⼀段)

例题一 解法(动态规划): 算法思路: 1. 状态表⽰: 对于线性 dp ,我们可以⽤「经验 题⽬要求」来定义状态表⽰: i. 以某个位置为结尾,巴拉巴拉; ii. 以某个位置…...

2010年认证杯SPSSPRO杯数学建模D题(第一阶段)服务网点的分布全过程文档及程序

2010年认证杯SPSSPRO杯数学建模 D题 服务网点的分布 原题再现: 服务网点、通讯基站的设置,都存在如何设置较少的站点,获得较大效益的问题。通讯基站的覆盖范围一般是圆形的,而消防、快餐、快递服务则受到道路情况和到达时间的限…...

docker-compose 安装ZLMediaKit,ffmpeg、VLC实现推流并播放

1、目录(创建conf文件夹,777权限) 二、docker-compose.yml version: "3.9"services:zlmediakit:image: zlmediakit/zlmediakit:mastercontainer_name: zlmediakitprivileged: true# 指定加载配置# command: /opt/media/bin/MediaS…...

|Python新手小白中级教程|第二十八章:面向对象编程(类定义语法私有属性类的继承与多态)(4)

文章目录 前言一、类定义语法二、私有方法和私有属性1.私有属性2.私有方法 三、类“继承”1.初识继承2.使用super函数调用父类中构造的东西 四、类“多态”1.多态基础2.子类不同形态3.使用isinstance函数与多态结合判断类型 总结 前言 大家好,我是BoBo仔吖&#xf…...

vue项目基于WebRTC实现一对一音视频通话

效果 前端代码 <template><div class"flex items-center flex-col text-center p-12 h-screen"><div class"relative h-full mb-4 fBox"><video id"localVideo"></video><video id"remoteVideo">…...

web 基础之 HTTP 请求

web 基础 网上冲浪 就是在互联网(internet)上获取各种信息&#xff0c;进行工作&#xff0c;或者娱乐&#xff0c;他的英文表示surfing the Internet&#xff0c;因 “surfing”d的意思是冲浪&#xff0c;即成为网上冲浪&#xff0c;这是一种形象说法&#xff0c; 也是一个非…...

嵌入式 - GPIO编程简介

An Introduction to GPIO Programming By Jeff Tranter Wednesday, June 12, 2019 编者按&#xff1a;本 2019 年博客系列是 ICS 最受欢迎的系列之一&#xff0c;现已更新&#xff08;2022 年 12 月&#xff09;&#xff0c;以确保内容仍然准确、相关和有用。 本博客是 Integr…...

8种区块链开发者必须知道的顶级编程语言!

我来问你一个问题&#xff1a;请说出一种技术&#xff0c;它以去中心化、不可篡改和透明性等核心特征席卷了全球。 这个问题的答案是&#xff0c;当然是区块链&#xff0c;它在近些年进入大家的视野并颠覆了工商业&#xff0c;没有任何其他技术能够做到这一点。 预计从2020年…...

十三、Redis哨兵模式--Sentinel

上一篇介绍了Redis中的主从复制。我们知道Redis主从中一般只有主节点对外提供写操作&#xff0c;如果主节点发生故障&#xff0c;为了保证Redis的可用性&#xff0c;这时就要在可用的slave节点中&#xff0c;挑选一个作为主节点。这种切换操作如果是人为的操作&#xff0c;那么…...

[力扣题解]1005. K 次取反后最大化的数组和

题目&#xff1a;1005. K 次取反后最大化的数组和 思路 贪心法&#xff1b; 用绝对值大小排序&#xff0c;自己写一个比较函数&#xff0c; static bool compare(int a, int b) {return abs(a) > abs(b); }注意这样写出来是降序排列&#xff1b; 代码 class Solution {…...

Web UI自动化测试--PO模式

没有PO实现的测试用例的问题: 重用性低:登录功能重复可维护性差:数据和代码混合可读性差:元素定位方法杂乱(id、xpath、css混杂)可读性差:不易识别操作的含义(特别是css和xpath语法)可维护性差:如果某个元素的属性改了,你要更改多次PO(Page Object Model)页面对象模型…...

Python进阶之-反射机制详解

✨前言&#xff1a; 什么是反射&#xff1f; Python中的“反射”是一个编程术语&#xff0c;它指的是程序在运行时能够检查和操作其自身状态的能力&#xff0c;特别是通过名称&#xff08;通常是字符串&#xff09;来访问对象的属性、方法和其他组成部分。这种机制允许代码动态…...

day05-面向对象内存原理和数组

day05 面向对象内存原理和数组 我们在之前已经学习过创建对象了,那么在底层中他是如何运行的。 1.对象内存图 1.1 Java 内存分配 Java 程序在运行时&#xff0c;需要在内存中分配空间。为了提高运算效率&#xff0c;就对空间进行了不同区域的划分&#xff0c;因为每一片区域…...

从头理解transformer,注意力机制(下)

交叉注意力 交叉注意力里面q和KV生成的数据不一样 自注意力机制就是闷头自学 解码器里面的每一层都会拿着编码器结果进行参考&#xff0c;然后比较相互之间的差异。每做一次注意力计算都需要校准一次 编码器和解码器是可以并行进行训练的 训练过程 好久不见输入到编码器&…...

ORA-609频繁出现在alert.log,如何解决?

ORA-609就alertlog中比较常见的一个报错&#xff0c;虽然并没有太大的影响&#xff0c;但是频繁的出现在alert log也是很让人厌烦的事情&#xff0c;本文介绍如何排查解决ORA-609问题。 1.ORA-609官方定义 could not attach to incoming connection Cause Oracle process cou…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...