分布式微服務系統架構第106集:jt808,補充類加載器

加群聯系作者vx:xiaoda0423

倉庫地址:https://webvueblog.github.io/JavaPlusDoc/

https://1024bat.cn/

類加載器

類與類加載器

判斷類是否“相等”

任意一個類,都由加載它的類加載器和這個類本身一同確立其在 Java 虛擬機中的唯一性,每一個類加載器,都有一個獨立的類名稱空間。

因此,比較兩個類是否“相等”,只有在這兩個類是由同一個類加載器加載的前提下才有意義,否則,即使這兩個類來源于同一個 Class 文件,被同一個虛擬機加載,只要加載它們的類加載器不同,那么這兩個類就必定不相等。

這里的“相等”,包括代表類的 Class 對象的?equals()?方法、isInstance()?方法的返回結果,也包括使用 instanceof 關鍵字做對象所屬關系判定等情況。

加載器種類

系統提供了 3 種類加載器:

  • 啟動類加載器(Bootstrap ClassLoader): 負責將存放在?<JAVA_HOME>\lib?目錄中的,并且能被虛擬機識別的(僅按照文件名識別,如 rt.jar,名字不符合的類庫即使放在 lib 目錄中也不會被加載)類庫加載到虛擬機內存中。

  • 擴展類加載器(Extension ClassLoader): 負責加載?<JAVA_HOME>\lib\ext?目錄中的所有類庫,開發者可以直接使用擴展類加載器。

  • 應用程序類加載器(Application ClassLoader): 由于這個類加載器是 ClassLoader 中的?getSystemClassLoader()?方法的返回值,所以一般也稱它為“系統類加載器”。它負責加載用戶類路徑(classpath)上所指定的類庫,開發者可以直接使用這個類加載器,如果應用程序中沒有自定義過自己的類加載器,一般情況下這個就是程序中默認的類加載器。


ClassLoader

當然,如果有必要,還可以加入自己定義的類加載器。

雙親委派模型

什么是雙親委派模型

雙親委派模型是描述類加載器之間的層次關系。它要求除了頂層的啟動類加載器外,其余的類加載器都應當有自己的父類加載器。(父子關系一般不會以繼承的關系實現,而是以組合關系來復用父加載器的代碼)

工作過程

如果一個類加載器收到了類加載的請求,它首先不會自己去嘗試加載這個類,而是把這個請求委派給父類加載器去完成,每一個層次的類加載器都是如此,因此所有的加載請求最終都應該傳送到頂層的啟動類加載器中,只有當父加載器反饋自己無法完成這個加載請求(找不到所需的類)時,子加載器才會嘗試自己去加載。

在 java.lang.ClassLoader 中的?loadClass?方法中實現該過程。

為什么使用雙親委派模型

像 java.lang.Object 這些存放在 rt.jar 中的類,無論使用哪個類加載器加載,最終都會委派給最頂端的啟動類加載器加載,從而使得不同加載器加載的 Object 類都是同一個。

相反,如果沒有使用雙親委派模型,由各個類加載器自行去加載的話,如果用戶自己編寫了一個稱為 java.lang.Object 的類,并放在 classpath 下,那么系統將會出現多個不同的 Object 類,Java 類型體系中最基礎的行為也就無法保證。

平臺通用應答

消息ID: 0x8001

消息體:每個不同的命令消息體格式內容由各命令確定

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

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

相關文章

利用 pyecharts 實現地圖的數據可視化——第七次人口普查數據的2d、3d展示(關鍵詞:2d 、3d 、map、 geo、漣漪點)

參考文檔&#xff1a;鏈接: link_pyecharts 官方文檔 1、map() 傳入省份全稱&#xff0c;date_pair 是列表套列表 [ [ ],[ ] … ] 2、geo() 傳入省份簡稱&#xff0c;date_pair 是列表套元組 [ ( ),( ) … ] 1、準備數據 population_data&#xff1a;簡稱經緯度 population_da…

Enovia許可釋放

隨著企業規模的擴大和業務的不斷增長&#xff0c;Enovia許可證的管理變得至關重要。在許多情況下&#xff0c;企業可能面臨許可證資源浪費或不足的問題。為了解決這一問題&#xff0c;Enovia提供了許可釋放功能&#xff0c;幫助企業更加靈活地管理和使用許可證資源。本文將介紹…

每日一道leetcode(回來了!!!)

236. 二叉樹的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; 題目 給定一個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。 百度百科中最近公共祖先的定義為&#xff1a;“對于有根樹 T 的兩個節點 p、q&#xff0c;最近公共祖先表示為一個節點 x&#xff0c;滿足…

【Redis】布隆過濾器應對緩存穿透的go調用實現

布隆過濾器 https://pkg.go.dev/github.com/bits-and-blooms/bloom/v3 作用&#xff1a; 判斷一個元素是不是在集合中 工作原理&#xff1a; 一個位數組&#xff08;bit array&#xff09;&#xff0c;初始全為0。多個哈希函數&#xff0c;運算輸入&#xff0c;從而映射到位數…

【ROS2】行為樹 BehaviorTree(四):組合使用子樹

1、大樹調用子樹 如下圖,左邊為大樹主干: 1)如果門沒有關,直接通過; 2)如果門關閉了,執行開門動作,然后通過 右邊為子樹,主要任務是開門 1)嘗試直接開門; 2)嘗試開鎖開門,最多嘗試5次; 3)最后嘗試砸門! XML如何描述大樹主干調傭子樹:使用關鍵字 SubTree 來…

【口腔粘膜鱗狀細胞癌】文獻閱讀

寫在前面 看看文章&#xff0c;看看有沒有思路 文獻 The regulatory role of cancer stem cell marker gene CXCR4 in the growth and metastasis of gastric cancer IF:6.8 中科院分區:1區 醫學WOS分區: Q1 目的&#xff1a;通過 scRNA-seq 結合大量 RNA-seq 揭示癌癥干細胞…

【ComfyUI】藍耘元生代 | ComfyUI深度解析:高性能AI繪畫工作流實踐

【作者主頁】Francek Chen 【專欄介紹】 ? ? ?人工智能與大模型應用 ? ? ? 人工智能&#xff08;AI&#xff09;通過算法模擬人類智能&#xff0c;利用機器學習、深度學習等技術驅動醫療、金融等領域的智能化。大模型是千億參數的深度神經網絡&#xff08;如ChatGPT&…

深入理解Java中的隊列:核心操作、實現與應用

隊列&#xff08;Queue&#xff09;是計算機科學中最基礎且重要的數據結構之一&#xff0c;遵循 先進先出&#xff08;FIFO&#xff09; 的規則。Java通過java.util.Queue接口及其豐富的實現類為開發者提供了強大的隊列工具。本文將詳細解析Java隊列的核心操作、常見實現類及其…

idea里面不能運行 node 命令 cmd 里面可以運行咋回事啊

idea里面不能運行 node 命令 cmd 里面可以運行咋回事啊 在 IntelliJ IDEA&#xff08;或其他 JetBrains 系列 IDE&#xff09;中無法運行某些命令&#xff0c;但在系統的命令提示符&#xff08;CMD&#xff09;中可以正常運行&#xff0c;這種情況通常是由于以下原因之一導致的…

Express學習筆記(六)——前后端的身份認證

目錄 1. Web 開發模式 1.1 服務端渲染的 Web 開發模式 1.2 服務端渲染的優缺點 1.3 前后端分離的 Web 開發模式 1.4 前后端分離的優缺點 1.5 如何選擇 Web 開發模式 2. 身份認證 2.1 什么是身份認證 2.2 為什么需要身份認證 2.3 不同開發模式下的身份認證 3. Sessio…

微服務與Spring Cloud Alibaba簡介

微服務&#xff08;或微服務架構&#xff09;是一種云原生架構方法&#xff0c;其中單個應用程序由許多松散耦合且可獨立部署的較小組件或服務組成。本單元主要介紹微服務架構的定義、微服務的特征、微服務架構面臨的挑戰、Spring Cloud 定義、Spring Cloud 核心組件、Spring C…

JPG同步刪除RAW批處理文件

相機挑選JPG照片&#xff0c;同步刪除RAW格式文件&#xff0c;批處理文件bat&#xff0c;放到JPG和NEF文件夾根目錄 – NEF 文件夾 – JPG 文件夾 文件同步刪除.bat echo off:: 要同步的文件夾及文件后綴名&#xff08;相同&#xff09;&#xff0c;即要刪除文件的目錄 set de…

InnoDB的MVCC實現原理?MVCC如何實現不同事務隔離級別?MVCC優缺點?

概念 InnoDB的MVCC&#xff08;Multi-Version Concurrency Control&#xff09;即多版本并發控制&#xff0c;是一種用于處理并發事務的機制。它通過保存數據在不同時間點的多個版本&#xff0c;讓不同事務在同一時刻可以看到不同版本的數據&#xff0c;以此來減少鎖競爭&…

針對 Java從入門到精通 的完整學習路線圖、各階段技術點、CTO進階路徑以及經典書籍推薦。內容分階段展開,兼顧技術深度與職業發展

以下是針對 Java從入門到精通 的完整學習路線圖、各階段技術點、CTO進階路徑以及經典書籍推薦。內容分階段展開&#xff0c;兼顧技術深度與職業發展。 一、學習路線圖分階段詳解 階段1&#xff1a;Java基礎入門&#xff08;3-6個月&#xff09; 目標&#xff1a;掌握Java核心…

報錯:Nlopt

報錯&#xff1a;Nlopt CMake Error at TGH-Planner/fast_planner/bspline_opt/CMakeLists.txt:20 (find_package):By not providing "FindNLopt.cmake" in CMAKE_MODULE_PATH this project hasasked CMake to find a package configuration file provided by "…

鴻蒙公共通用組件封裝實戰指南:從基礎到進階

一、鴻蒙組件封裝核心原則 1.1 高內聚低耦合設計 在鴻蒙應用開發中&#xff0c;高內聚低耦合是組件封裝的關鍵準則&#xff0c;它能極大提升代碼的可維護性與復用性。 從原子化拆分的角度來看&#xff0c;我們要把復雜的 UI 界面拆分為基礎組件和復合組件。像按鈕、輸入框這…

Linux 網絡基礎二 ——應用層HTTP\HTTPS協議

我們程序員寫的一個個解決我們實際問題&#xff0c;滿足我們日常需求的網絡程序&#xff0c;都是在應用層。 前面寫的套接字接口都是傳輸層經過對 UDP 和 TCP 數據發送能力的包裝&#xff0c;以文件的形式呈現給我們&#xff0c;讓我們可以進行應用層編程。換而言之&#xff0c…

Spark-SQL

Spark-SQL 概述 Spark SQL 是 Spark 用于結構化數據(structured data)處理的 Spark 模塊 Shark 是伯克利實驗室 Spark 生態環境的組件之一&#xff0c;是基于 Hive 所開發的工具&#xff0c;它修改了內存管理、物理計劃、執行三個模塊&#xff0c;并使之能運行在 Spark 引擎上…

Java 在人工智能領域的突圍:從企業級架構到邊緣計算的技術革新

一、Java AI 的底層邏輯&#xff1a;從語言特性到生態重構 在 Python 占據 AI 開發主導地位的當下&#xff0c;Java 正通過技術重構實現突圍。作為擁有 30 年企業級開發經驗的編程語言&#xff0c;Java 的核心優勢在于強類型安全、內存管理能力和分布式系統支持&#xff0c;這…

編程實現除法程序時需要注意的細節

使用Python實現除法程序時&#xff0c;需注意以下關鍵細節&#xff1a; 除數為零的處理 必須檢查除數是否為零&#xff0c;否則會觸發ZeroDivisionError異常。可通過try-except結構捕獲異常并處理。 整數除法與浮點數除法的區別 ? 使用/運算符時&#xff0c;無論操作數是否為…