Java類加載器 和 雙親委派【詳解】

一.類加載器:

????????由JDK提供的,用于加載一些資源文件到JVM內存里的一項技術。主要是加載class文件到內存,也可以加載一些資源文件。

????????

2.JDK提供了三個類加載器:

  • BootstrapClassLoader:引導類加載器, 是c語言編寫的。

    用于加載JDK的核心類,加載 jre/lib/rt.jar

  • ExtClassLoader:擴展類加載器,是Java編寫的,使用很少

    用于加載一些擴展程序 jre/lib/ext/*.jar,目前幾乎不用了

  • SystemClassLoader:或者叫AppClassLoader, 系統類加載器,是Java編寫的

    用于加載我們寫的類、第三方jar包里的類

3.獲取類加載器SystemClassLoader:我們的類.class.getClassLoader()

import java.io.*;/*** @author liuyp* @since 2024/02/29*/
public class Demo01ClassLoader {public static void main(String[] args) throws Exception {ClassLoader classLoader = Demo01ClassLoader.class.getClassLoader();System.out.println("classLoader = " + classLoader);//我們應該把資源文件放到當前Module的類路徑下(src);類加載器就從src下查找文件// InputStream is = classLoader.getResourceAsStream("abc.txt");InputStream is = classLoader.getResourceAsStream("demo05/hello.txt");BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"));String line = reader.readLine();System.out.println("line = " + line);reader.close();}
}

二.雙親委派? ? ? ?

?????????1.先傳到AppClassLoader,尋找緩沖,如果找到直接用,不需要加載,找不到傳到父加載類extClassLoader
????????2.尋找緩沖,如果找到直接用,不需要加載,找不到傳到父加載類bootstraptClassLoader
????????3.尋找緩沖,如果找到直接用,不需要加載,找不到就自己加載
????????4.bootstrapClassLoader從rt.jar里先嘗試加載,如果找到就直接用,找不到就傳extClassLoader
????????5.擴展類加載器從jre/lib/ext里加載如果能加載到就直接用,加載不到就傳到appClassLoader
????????6.程序類加載器從src或者jar包里找,如果找到直接用,找不到報ClassNotFoundException錯誤

作用:防止重復加載類和篡改類
? ? ? ? ? ? ? ? 1.當一個類加載成功之后,會緩存起來,下次在用時,直接取緩沖的值不會重復加載
? ? ? ? ? ? ? ? 2.自己定義java.lang.String,它在引導類加載器,自己創建在程序類加載器,當所有加載器緩存中找不時,從引導類加載器開始加載類,最后才是程序類加載器,所以用的一定是jdk的Sstring

????????

????????

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/713624.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713624.shtml
英文地址,請注明出處:http://en.pswp.cn/news/713624.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LightGBM高級教程:高級特征工程

導言 特征工程是機器學習中至關重要的一部分,它直接影響到模型的性能和泛化能力。在LightGBM中進行高級特征工程可以進一步提高模型的效果。本教程將詳細介紹如何在Python中使用LightGBM進行高級特征工程,并提供相應的代碼示例。 1. 特征交叉 特征交叉…

界面控件DevExpress .NET MAUI v23.2新版亮點 - 擁有全新的彩色主題

DevExpress擁有.NET開發需要的所有平臺控件,包含600多個UI控件、報表平臺、DevExpress Dashboard eXpressApp 框架、適用于 Visual Studio的CodeRush等一系列輔助工具。屢獲大獎的軟件開發平臺DevExpress 今年第一個重要版本v23.1正式發布,該版本擁有眾多…

python鏈接數據庫,實現數據增刪改查

要在Python中鏈接數據庫并實現數據的增刪改查,需要使用數據庫的API(Application Programming Interface)。以下是一個示例,演示如何使用Python的SQLite3模塊連接并操作數據庫: 安裝SQLite3模塊(如未安裝&a…

如何克隆樹莓派系統到較小的硬盤/SD卡上(如何分區、設置修復引導)

最近有個老固態硬盤空下來了,雖然寫入速度沒那么快,但是足夠滿足千兆網絡了,所以我就想把現在給樹莓派使用的固態硬盤換下來。由于一些設置很浪費時間,所以我不打算重裝系統。此外這個老固態是 120GB 的,要小于正在使用…

redis實現分布式全局唯一id

目錄 一、前言二、如何通過Redis設計一個分布式全局唯一ID生成工具2.1 使用 Redis 計數器實現2.2 使用 Redis Hash結構實現 三、通過代碼實現分布式全局唯一ID工具3.1 導入依賴配置3.2 配置yml文件3.3 序列化配置3.4 編寫獲取工具3.5 測試獲取工具 四、運行結果 一、前言 在很…

Linux運維_Bash腳本_部署安裝DocBook-XML-4.5(XML-DTD)

Linux運維_Bash腳本_部署安裝DocBook-XML-4.5(XML-DTD) Bash (Bourne Again Shell) 是一個解釋器,負責處理 Unix 系統命令行上的命令。它是由 Brian Fox 編寫的免費軟件,并于 1989 年發布的免費軟件,作為 Sh (Bourne Shell) 的替代品。 您可…

leetcode 熱題 100_最長連續序列

題解一: 哈希表:找連續最長的數字序列,很容易聯想到排序,但排序的時間復雜度O(nlogN)過大,判題容易超時。因此我們需要使用哈希表來快速查找,序列中是否存在與某個數相鄰的數。用HashSet建立哈希表并去重&a…

【Javascript編程實操02】1、判斷一個年份是閏年還是平年 2、找到三個數中最小的數

目錄 前言 1、判斷一個年份是閏年還是平年 原理: 代碼: 實現效果: 2、找到三個數中最小的數 流程圖: 代碼: 實現效果: 總結 前言 本次繼續針對Javascript階段的if...else...的實操練習&#xff0…

IDEA 配置股票插件

IDEA配置股票基金實時查看插件,步驟如下: 打開Settings,找到Plugins,在Marketplace中搜索:Money Never Sleeps,如下圖所示: Money Never Sleeps是IntelliJ IDEA平臺插件. 支持查看股票實時行情…

three.js 叉乘判斷物體在人前左,前右,后左、后右

效果&#xff1a; 代碼&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs"></div><div style"padding: 10px;text-align: left;">叉乘判斷物體…

sshd啟動太慢,導致首次登錄困難的問題(未解決)

開始以為是無法開機啟動。長時間后&#xff08;3-4分鐘&#xff09;&#xff0c;又可以登錄了。 解決辦法1&#xff08;無效&#xff09; 編輯sshd_config UseDNS no GSSAPIAuthentication no IgnoreRhosts yes UsePAM no 解決辦法2&#xff08;無效&#xff09; 在/etc/h…

加密與安全_探索對稱加密算法

文章目錄 概述常用的對稱加密算法AESECB模式CBC模式 (推薦)ECB VS CBC 附&#xff1a;AES工具類總結 概述 對稱加密算法是一種加密技術&#xff0c;使用相同的密鑰來進行加密和解密數據。在這種算法中&#xff0c;發送方使用密鑰將明文&#xff08;未加密的數據&#xff09;轉…

14:00面試,14:07就出來了,問的問題過于變態了。。。

我從一家小公司轉投到另一家公司&#xff0c;期待著新的工作環境和機會。然而&#xff0c;新公司的加班文化讓我有些始料未及。雖然薪資相對較高&#xff0c;但長時間的工作和缺乏休息使我身心俱疲。 就在我逐漸適應這種高強度的工作節奏時&#xff0c;公司突然宣布了一則令人…

Android提供了多種方式來打開特定文件夾中的視頻

使用 MediaStore獲取指定文件夾的視頻&#xff0c;更優化方法&#xff1a; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.net.Uri; import android.os.Build; import android.os.Environme…

鴻蒙操作系統特點

鴻蒙&#xff08;HarmonyOS&#xff09;是華為公司開發的一種面向全場景的分布式操作系統。下面是對鴻蒙操作系統的詳細介紹&#xff1a; 1. 多設備支持&#xff1a;鴻蒙是一種面向多種設備的操作系統&#xff0c;支持手機、平板電腦、智能手表、智能屏、車載設備和物聯網設備…

kafka學習筆記三

目錄 第二篇 外部系統集成 第三篇 生產調優手冊 第1章 kafka硬件配置選擇 第2章 生產者調優 2.1 生產者核心參數配置 2.2 生產者如何提高吞吐量 2.3 數據可靠性 2.4 數據去重 2.5 數據有序 2.6 數據亂序 第3章 Kafka Broker調優 3.1 Broker核心參數配置 3.2 其他 …

禪道:提bug、管理case 7.0

一、禪道的介紹 &#xff08;1&#xff09;定義禪道是一個項目管理工具&#xff0c;也是一個bug管理工具&#xff0c;還是一個用例管理工具。 &#xff08;2&#xff09;作用&#xff1a;為了解決眾多企業在管理中出現混亂&#xff0c;無序的現象&#xff0c;開發出來 &…

ppt中調整某條表格框線的格式

1、先設置好邊框線的屬性&#xff1a; 2、選擇要調整的邊框線所在的單元格&#xff08;第二列的右邊框加粗&#xff0c;體現分欄的效果&#xff09; 3、設計--邊框--中選擇要調整的邊框線位置&#xff08;假設要調整右框線&#xff09;

精讀服務器默認rsyslog的配置文件

rsyslog的配置文件 rsyslog.conf #### MODULES ####$ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad imjournal # provides access to the systemd journal #$ModLoad imklog # reads kernel messages (the same are read…

JavaScript解決生日倒計時的問題

創建一個文本框&#xff0c;在一個文本框中&#xff0c;讓用戶輸入他的出生月份&#xff0c;第二個文本框中輸入月份中的日期&#xff0c;編寫一個JavaScript程序&#xff0c;在第三個文本框中打印距離用戶生日還有多少天。 <div id"box"><label for"&…