學習日記-day34-6.20

知識點:

1.快速入門?

知識點

核心內容

重點

IOC容器創建

通過ClassPathXmlApplicationContext加載XML配置文件創建容器,關聯beans.xml

容器與配置文件的綁定關系(多配置文件支持)

Bean獲取方式

1. getBean(String id)返回Object需強轉;

2. getBean(String id, Class<T> type)直接返回目標類型

方法重載區別(編譯類型與運行類型驗證)

運行類型驗證

通過getClass()輸出對象實際類型,確認Spring容器管理的Bean實例

強轉前提是配置的全路徑類名正確

屬性訪問

強轉后直接調用Bean的getter方法(如getName())獲取配置屬性

XML配置屬性與類字段的映射關系

容器結構

ApplicationContext接口的多種實現類(如FileSystemXmlApplicationContext)

不同實現類的適用場景(未展開)

測試框架集成

使用JUnit測試Spring Bean,演示@Test注解和斷言邏輯

版本兼容性問題(提及JUnit 5.4)

2.類加載路徑

知識點

核心內容

重點

Spring類加載路徑機制

程序運行時默認從out/production/[項目名]目錄讀取資源文件(如beans.xml),而非直接讀取src下的源文件

類路徑與實際文件路徑的差異(src vs out/production)

ClassPathXmlApplicationContext工作原理

通過new ClassPathXmlApplicationContext("beans.xml")加載配置文件時,自動基于類加載路徑定位文件

需明確beans.xml必須存在于編譯后的資源目錄(如resources文件夾或src編譯產物)

類路徑驗證方法

使用this.getClass().getResource("/").getPath()輸出實際類加載路徑

動態驗證路徑與預期是否一致(如IDE構建工具差異)

資源文件部署邏輯

src下的配置文件在編譯后會自動復制到out/production對應目錄

子目錄結構需保持一致性(如src/com/config → out/production/com/config)

3.Debug配置

知識點

核心內容

重點

Spring容器結構分析

通過debug方式觀察Spring容器內部結構,理解其機制

容器數據視圖差異(配置導致顯示不同)

OOP編程思想

強調通過debug輸出對象結構是高效學習方式

對象結構可視化的重要性

IDEA調試配置

Settings > Debugger > Data Views控制debug數據展示邏輯

空元素顯示開關(Hide null elements)和視圖簡化開關(Enable alternative view)

Step Into源碼調試

需取消勾選Do not step into the classes以進入指定類源碼

默認配置可能阻止進入JDK/庫類源碼

Debug視圖差異根源

數據展示差異由Data Views配置項決定,非版本問題

配置一致性對協作調試的影響

ConcurrentHashMap結構

通過beanDefinitionMap的table數組觀察實際存儲結構

空元素隱藏可能導致誤解底層結構

4.Spring容器結構剖析

知識點

核心內容

重點

Spring IOC容器結構

IOC容器是重量級對象,通常單例存在,內部通過ConcurrentHashMap存儲Bean定義信息

BeanDefinitionMapSingletonObjects的區別(定義信息 vs 實例化對象)

BeanDefinition存儲機制

配置的Bean信息(如monster類路徑、屬性值)存儲在BeanDefinitionMap的ConcurrentHashMap中(初始大小512)

懶加載(lazy-init)與立即加載的觸發時機

Bean實例化過程

單例對象實際存儲在SingletonObjects的ConcurrentHashMap中,Key為Bean ID,Value為實例化對象

反射創建對象依賴BeanDefinition中的類路徑和屬性值

ConcurrentHashMap底層結構

使用Node內部類(哈希值+Key+Value+鏈表結構)存儲數據,支持高并發

哈希算法定位泛型設計(適應不同Bean類型)

屬性值注入邏輯

propertyValues字段記錄XML配置的屬性(如monsterId=100),通過反射注入到實例化對象

動態創建非單例Bean時如何復用屬性配置

5.Spring容器結構剖析

知識點

核心內容

重點

IOC容器結構

容器類型為ClassPathXmlApplicationContext,包含BeanFactory等屬性

BeanFactory與ApplicationContext的區別

BeanDefinitionMap

使用ConcurrentHashMap存儲XML配置的Bean節點信息

并發容器選擇原因(線程安全 vs 性能)

Bean存儲機制

通過哈希算法將Bean信息存入數組(初始容量512),動態擴容

哈希沖突處理與擴容觸發條件

Bean節點解析

保存Bean的ID、類信息、屬性值、懶加載配置等

懶加載與立即加載的底層實現差異

屬性映射

PropertyValues數組存儲XML中配置的屬性名和值

反射注入屬性時的類型轉換問題

底層模擬實現

手寫Spring需模擬BeanDefinitionMap和ConcurrentHashMap結構

Node節點中KV的設計(Key=Bean ID, Value=元數據)

6.Spring容器結構剖析

知識點

核心內容

重點

Spring容器結構

bin factory中的single objects屬性存儲單例對象

區分bind ebinishm AP(定義map)和single objects(實例對象)

單例模式實現

通過concurrent hash map實現線程安全的單例存儲

單例對象直接初始化放入table,非單例則動態創建

對象獲取流程

get bin時先查bin definition,再根據單例標識決定從緩存獲取或反射創建

理解ID->定義->實例的三層跳轉邏輯

輔助設計機制

bin definition namesarray list存儲所有配置的ID名稱

快速定位功能與容器性能的平衡設計

IOC容器本質

beans點插門文件配置信息與運行時容器對象的映射關系

配置元數據(bin definition)與實際實例(single objects)的分離

7.Spring容器結構練習

知識點

核心內容

重點

IOC容器結構

講解IOC容器的核心結構及其重要性,理解結構后能更清晰掌握Spring相關方法

容器結構的邏輯關系、bin definition names屬性的作用

獲取容器中的Bean信息

通過getBinDefinitionNames()方法獲取所有Bean的ID,并遍歷輸出

getBinDefinitionNames()返回的是數組結構,需注意遍歷方式

Bean的配置與ID唯一性

配置多個Bean時,ID必須唯一,否則會導致沖突;類型可以相同,但值不同

ID沖突問題、Bean的作用域(單例/原型)

Debug視圖優化

調整Debug視圖過濾空元素,簡化數據結構展示,便于觀察Bean的存儲位置

視圖配置方法、singleObjects和binDefinitionMap的實際存儲結構

Spring容器啟動時的默認Bean

容器啟動時會預先加載系統默認的單例Bean(如applicationStartup、lifecycleProcessor等)

系統Bean的作用、自定義Bean與系統Bean的區分

8.實現簡單基于XML配置程序 需求說明

知識點

核心內容

重點

Spring容器基礎實現

手動開發基于XML配置的簡易Spring容器,讀取beans.xml文件并實例化首個JavaBean(如master對象)

屬性注入與容器存儲邏輯(需區分原生框架與模擬實現的差異)

XML配置解析

通過property標簽獲取Bean屬性值(如name="牛魔王"、id=100),完成對象賦值

文件解析順序(僅處理首個Bean,非全量遍歷)

容器機制模擬

實現getBean()方法輸出對象信息,簡化版IoC流程(創建→賦值→存儲→輸出)

與Spring原生容器的核心差異(如生命周期管理、依賴注入等)

實踐目標

理解Spring底層機制(強調流程梳理,非完整功能復現)

需明確"超級簡單"實現與工業級容器的邊界

9.實現簡單基于XML配置程序 思路分析

知識點

核心內容

重點

Spring容器實現機制

通過XML解析、反射和ConcurrentHashMap實現簡易IoC容器

單例對象存儲方式 vs 原型模式

DOM4J技術應用

解析beans.xml配置文件獲取bean定義信息

class路徑解析與異常處理

反射機制

通過無參構造器創建對象并動態設置屬性值

屬性注入與類型轉換問題

容器設計模式

使用ConcurrentHashMap存儲單例bean對象

并發控制與線程安全問題

簡易IoC流程

1. XML解析 → 2. 反射實例化 → 3. 屬性注入 → 4. 容器注冊 → 5. getBean方法

流程順序與各環節異常處理

工程簡化原則

聚焦核心機制(單例處理)而非完整功能

遍歷邏輯與擴展性設計取舍

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

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

相關文章

如何使用 neptune.ai 優化模型訓練期間的 GPU 使用率

GPU 可以大大加速深度學習模型的訓練&#xff0c;因為它們專門用于執行神經網絡核心的張量運算。 由于 GPU 是昂貴的資源&#xff0c;因此充分利用它們至關重要。GPU 使用率、內存利用率和功耗等指標可以洞悉資源利用率及其改進潛力。提高 GPU 使用率的策略包括混合精度訓練、優…

騰訊混元3D制作簡單模型教程-1

騰訊混元3D制作簡單模型的零門檻教程,涵蓋新手快速入門與進階操作,結合官方工具特性及行業實踐,分為兩個核心板塊: ?? 一、新手零門檻:5分鐘生成可打印模型(適合完全小白) 通過騰訊元寶APP的“3D角色夢工廠”功能,無需任何建模基礎: 上傳照片 打開騰訊元寶APP → …

一個庫,比如kott_tinymce ,想把的依賴庫從kotti升級到kotti2 ,請問我是不是查找替換,把所有的kotti字符替換成kotti2就行了?

一個庫&#xff0c;比如kott_tinymce ,想把的依賴庫從kotti升級到kotti2 &#xff0c;請問我是不是查找替換&#xff0c;把所有的kotti字符替換成kotti2就行了&#xff1f; kotti和kotti2的包結構、模塊路徑、接口完全一樣&#xff0c;除了import kotti 變成kotti2 如果 kotti…

企業實踐 | 銀河麒麟KylinOS-V10(SP3)高級服務器操作系統基礎安裝指南

前言&#xff1a;國產操作系統的崛起與實踐背景 在國產化浪潮與信息技術自主可控的大背景下&#xff0c;銀河麒麟操作系統作為國產操作系統的代表之一&#xff0c;正逐步成為企業級應用的重要選擇。本文將詳細介紹銀河麒麟高級服務器操作系統V10 SP3版本的基礎知識與安裝實踐&…

Ubuntu 一鍵安裝 ROS

Ubuntu 一鍵安裝 ROS 安裝命令如下&#xff1a; wget http://fishros.com/install -O fishros && . fishros 指令執行后&#xff0c;顯示log如下圖&#xff1a; 之后根據不同的系統安裝對應的ros版本即可。

深度學習——基于卷積神經網絡實現食物圖像分類【4】(使用最優模型)

文件目錄 引言一、環境準備二、數據預處理訓練集預處理說明&#xff1a;驗證集預處理說明&#xff1a; 三、自定義數據集類四、設備選擇五、CNN模型構建六、模型加載與評估1. 加載預訓練模型2. 準備測試數據3. 測試函數4. 計算準確率 七、完整代碼八、總結 引言 本文將詳細介紹…

C++基礎算法————并查集

C++并查集詳解與實戰指南 一、引言 并查集(Union-Find)是一種高效的數據結構,用于處理一些不相交集合的合并與查詢問題。它在圖論、社交網絡、網絡連通性等領域有廣泛的應用。并查集的核心思想是通過一個數組來記錄每個元素的父節點,從而將元素組織成若干棵樹,每棵樹代表…

系統性能優化的關鍵手段

系統性能的提升方向 服務器并發處理能力&#xff1a;通過優化內存管理策略、選擇合適的連接模式&#xff08;長連接或短連接&#xff09;、改進 I/O 模型&#xff08;如 epoll、IOCP&#xff09;、以及采用高效的服務器并發策略&#xff08;如多線程、事件驅動等&#xff09;&a…

httpclient實現http連接池

HTTP連接池是一種優化網絡通信性能的技術&#xff0c;通過復用已建立的TCP連接減少重復握手開銷&#xff0c;提升資源利用率。以下是關鍵要點&#xff1a; 核心原理與優勢 ?連接復用機制? 維護活躍連接隊列&#xff0c;避免每次請求重復TCP三次握手/SSL協商&#xff0c;降低…

廣義焦點丟失:學習用于密集目標檢測的合格和分布式邊界盒之GFL論文閱讀

摘要 一階段檢測器通常將目標檢測形式化為密集的分類與定位(即邊界框回歸)問題。分類部分通常使用 Focal Loss 進行優化,而邊界框位置則在狄拉克δ分布下進行學習。最近,一階段檢測器的發展趨勢是引入獨立的預測分支來估計定位質量,所預測的質量可以輔助分類,從而提升檢…

Real-World Deep Local Motion Deblurring論文閱讀

Real-World Deep Local Motion Deblurring 1. 研究目標與實際問題意義1.1 研究目標1.2 實際問題1.3 產業意義2. 創新方法:LBAG模型與關鍵技術2.1 整體架構設計2.2 關鍵技術細節2.2.1 真實模糊掩碼生成(LBFMG)2.2.2 門控塊(Gate Block)2.2.3 模糊感知補丁裁剪(BAPC)2.3 損…

【Docker基礎】Docker鏡像管理:docker commit詳解

目錄 引言 1 docker commit命令概述 1.1 什么是docker commit 1.2 使用場景 1.3 優缺點分析 2 docker commit命令詳解 2.1 基本語法 2.2 常用參數選項 2.3 實際命令示例 2.4 提交流程 2.5 步驟描述 3 docker commit與Dockerfile構建對比 3.1 構建流程對比 3.2 對…

可調式穩壓二極管

1.與普通穩壓二極管的比較&#xff1a; 項目普通穩壓二極管可調式穩壓二極管&#xff08;如 TL431&#xff09;輸出電壓固定&#xff08;如5.1V、3.3V&#xff09;可調&#xff08;2.5V ~ 36V&#xff0c;取決于外部分壓&#xff09;精度低&#xff08;5%~10%&#xff09;高&a…

Kafka使用Elasticsearch Service Sink Connector直接傳輸topic數據到Elasticsearch

鏈接&#xff1a;Elasticsearch Service Sink Connector for Confluent Platform | Confluent Documentation 鏈接&#xff1a;Apache Kafka 一、搭建測試環境 下載Elasticsearch Service Sink Connector https://file.zjwlyy.cn/confluentinc-kafka-connect-elasticsearch…

訊方“教學有方”平臺獲華為昇騰應用開發技術認證!

教學有方 華為昇騰應用開發技術認證 權威認證 彰顯實力 近日&#xff0c;訊方技術自研的教育行業大模型平臺——“教學有方”&#xff0c;成功獲得華為昇騰應用開發技術認證。這一認證不僅是對 “教學有方” 平臺技術實力的高度認可&#xff0c;更標志著訊方在智慧教育領域的…

保護你的Electron應用:深度解析asar文件與Virbox Protector的安全策略

在現代軟件開發中&#xff0c;Electron框架因其跨平臺特性而備受開發者青睞。然而&#xff0c;隨著Electron應用的普及&#xff0c;如何保護應用中的核心資源文件——asar文件&#xff0c;成為了開發者必須面對的問題。今天&#xff0c;我們將深入探討asar文件的特性&#xff0…

端口安全配置示例

組網需求 如圖所示&#xff0c;用戶PC1、PC2、PC3通過接入設備連接公司網絡。為了提高用戶接入的安全性&#xff0c;將接入設備Router的接口使能端口安全功能&#xff0c;并且設置接口學習MAC地址數的上限為接入用戶數&#xff0c;這樣其他外來人員使用自己帶來的PC無法訪問公…

零基礎RT-thread第四節:電容按鍵

電容按鍵 其實只需要理解&#xff0c;手指按上去后充電時間變長&#xff0c;我們可以利用定時器輸入捕獲功能計算充電時間&#xff0c;超過無觸摸時的充電時間一定的閾值就認為是有手指觸摸。 基本原理就是這樣&#xff0c;我們開始寫代碼&#xff1a; 其實&#xff0c;看過了…

SQL基礎操作:從增刪改查開始

好的&#xff01;SQL&#xff08;Structured Query Language&#xff09;是用于管理關系型數據庫的標準語言。讓我們從最基礎的增刪改查&#xff08;CRUD&#xff09;?? 操作開始學習&#xff0c;我會用簡單易懂的方式講解每個操作。 &#x1f6e0; 準備工作&#xff08;建表…

vim 編輯模式/命令模式/視圖模式常用命令

以下是一份 Vim 命令大全&#xff0c;涵蓋 編輯模式&#xff08;Insert Mode&#xff09;、命令模式&#xff08;Normal Mode&#xff09; 和 視圖模式&#xff08;Visual Mode&#xff09; 的常用操作&#xff0c;適合初學者和進階用戶使用。 &#x1f9fe; Vim 模式簡介 Vim…