框架篇八股(自用)

框架篇

Spring框架中的bean不是線程安全的

@Scope()

singleton單例

prototype多例

一個類中有可修改的成員變量需要考慮線程安全

bean沒有可變狀態(service類,DAO類)

某種程度單例bean是線程安全的

AOP面向切面編程,抽取公共行為和邏輯,封裝成可重用的模塊(切面)

記錄操作日志

緩存處理

Spring中內置的事務處理

常用環繞通知

@Around(切面類)

Spring

編程式事務控制:TransactionTemplate 對業務代碼侵入 不常用

聲明式事務管理:@Transaction

本質通過AOP對方法前后進行攔截

在方法開始前加入一個事務

在執行完目標方法之后根據執行情況提交或者回滾事務

事務失效的場景

異常捕獲處理

try catch

目標自己處理掉異常,事務通知無法獲悉

在catch塊中添加RuntimeException拋出

拋出檢查異常

Spring默認只會回滾非檢查異常

在注解里面配置rollbackFor屬性

非public方法

事務通知前提是方法是public

bean的生命周期

BeanDefinition

Spring容器進行實例化,xml配置的<bean>的信息封裝成BeanDefinition對象

1.構造函數:實例化Bean

Bean的創建和初始化賦值是分開的

2.依賴注入

3.Aware接口

4.Bean前置處理器

5.初始化方法:InitializingBean 自定義init方法

6.Bean后置處理器 AOP 動態代理

7.銷毀Bean

三級緩存解決Spring中的循環引用(依賴注入出問題)

一級緩存:單例池,初始化完成的bean

二級緩存:緩存早期的bean對象(生命周期沒有走完)

三級緩存:對象工廠,用來創建對象(代理對象)

spring框架依據三級緩存已經解決了大部分的循環依賴

構造方法循環依賴問題

在注入的參數前加@lazy注解

SpringMVC執行流程

視圖階段(老舊JSP)

1.請求到前端控制器

2.前端控制器調用處理器映射器

3.處理器映射器找到具體處理器,生成處理器對象以及處理器攔截器,返回給前端控制器

4.處理器前端控制器調用處理器適配器

5.處理器適配器適配到具體處理器

6.controller執行完返回ModeAndView給處理器適配器

7.處理器適配器將ModeAndView返回給前端控制器

8.前端控制器將ModeAndView傳給視圖解析器

9.視圖解析器解析后返回具體的視圖

10.前端控制器根據視圖進行渲染

11.響應用戶

前后端分離階段(接口開發,異步)

1.請求到前端控制器

2.前端控制器調用處理器映射器

3.處理器映射器找到具體處理器,生成處理器對象以及處理器攔截器,返回給前端控制器

4.處理器前端控制器調用處理器適配器

5.處理器適配器適配到具體處理器

6.方法添加@ResponseBody

7.通過HttpMessageConverter返回結果轉換為JSON并響應

Springboot自動配置原理

@SpringBootApplication包含三個注解

@SpringBootConfiguration 與@Configuration注解作用相同,配置類

@ComponentScan 組件掃描 默認引導類所在包及其子包

@EnableAutoConfiguration 實現自動化配置的核心注解

該注解通過@import注解導入對應的配置選擇器

讀取該項目和該項目引用的jar包的classpath路徑下

META-INF/spring.factories文件中所配置的全類名

根據條件注解所指定的條件決定是否導入Spring容器中

@ConditionalOnClass 判斷是否有對應的class文件

Mybatis執行流程

1.讀取配置文件

2.創建會話工廠SqlSessionFactory

3.會話工廠創建SqlSession對象(包含執行sql語句的所有方法)

4.操作數據庫的接口,Executor執行器,同時負責查詢緩存的維護

5.Executor接口執行方法中有一個MappedStatement類型的參數,封裝了映射信息

6.輸入參數映射

7.輸出結果映射

Mybatis支持延時加載,默認沒有開啟

原理:

1.使用CGLIB創建目標對象的代理對象

2.調用目標方法時,進入攔截器invoke方法,發現目標方法為null值,執行sql查詢

3.獲取數據后,調用set方法設置屬性值,再繼續查詢目標方法,就有值

本地緩存:本質是一個HashMap

一級緩存:作用域是session級別

二級緩存:作用域是namespace和mapper的作用域,不依賴session

一級緩存:HashMap本地存儲,Session進行flush或close,Session中所有的Cache清空

默認打開一級緩存

二級緩存:HashMap存儲,不依賴于SQL session 默認關閉二級緩存

全局配置文件

映射文件<cache/>

1.數據更新機制:某一個作用域(一級緩存Session/二級緩存Namespace)進行新增、

修改、刪除操作后,默認該作用域下的所有select中的緩存被clear

2.二級緩存需要緩存的數據實現Serializable

3.只有會話提交或者關閉之后,一級緩存中的數據才會轉移到二級緩存中

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

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

相關文章

Go語言安裝proto并且使用gRPC服務(2025最新WINDOWS系統)

1.protobuf簡介 protobuf 即 Protocol Buffers&#xff0c;是一種輕便高效的結構化數據存儲格式&#xff0c;與語言、平臺無關&#xff0c;可擴展可序列化。protobuf 性能和效率大幅度優于 JSON、XML 等其他的結構化數據格式。protobuf 是以二進制方式存儲的&#xff0c;占用空…

rust-candle學習筆記11-實現一個簡單的自注意力

參考&#xff1a;about-pytorch 定義ScaledDotProductAttention結構體&#xff1a; use candle_core::{Result, Device, Tensor}; use candle_nn::{Linear, Module, linear_no_bias, VarMap, VarBuilder, ops};struct ScaledDotProductAttention {wq: Linear,wk: Linear,wv: …

spark MySQL數據庫配置

Spark 連接 MySQL 數據庫的配置 要讓 Spark 與 MySQL 數據庫實現連接&#xff0c;需要進行以下配置步驟。下面為你提供詳細的操作指南和示例代碼&#xff1a; 1. 添加 MySQL JDBC 驅動依賴 你得把 MySQL 的 JDBC 驅動添加到 Spark 的類路徑中。可以通過以下兩種方式來完成&a…

web 自動化之 KDT 關鍵字驅動詳解

一、什么是關鍵字驅動&#xff1f; 1、什么是關鍵字驅動&#xff1f;&#xff08;以關鍵字函數驅動測試&#xff09; 關鍵字驅動又叫動作字驅動&#xff0c;把項目業務封裝成關鍵字函數&#xff0c;再基于關鍵字函數實現自動化測試 2、關鍵字驅動測試原理 關鍵字驅動測試是一…

Java使用POI+反射靈活的控制字段導出Excel

前端傳入哪些字段&#xff0c;后端就導出哪些到Excel表格中&#xff0c;具體代碼實現如下 controller /*** 用戶導出* param dto*/PostMapping("/exportUser")public void exportCharterOrder(RequestBody UserExportDTO dto){userService.exportUser(dto);} serv…

Qt/C++面試【速通筆記八】—Qt的事件處理機制

在Qt中&#xff0c;事件處理機制是應用程序與用戶或系統交互的核心。通過事件處理&#xff0c;Qt能夠響應用戶的輸入、窗口的變化、定時器的觸發等各種情況。 1. 事件循環&#xff08;Event Loop&#xff09; 在Qt應用程序中&#xff0c;事件循環是事件處理機制的基礎。事件循…

TTL (Time-To-Live) 解析

文章目錄 TTL (Time-To-Live) 解析&#xff1a;網絡與Java中的應用一、TTL的定義二、TTL在網絡中的應用1. **路由和數據包的生命周期**2. **DNS中的TTL**3. **防止環路** 三、TTL在Java中的應用1. **緩存管理**2. **Java中的ThreadLocal**3. **網絡通信中的TTL** 四、TTL的注意…

HDFS的客戶端操作(2)文件上傳

我們向/maven下上傳一個文件。 要用到的api是put (或者copyFormLocalFile&#xff09;。核心代碼如下。 public void testCopyFromLocalFile() throws IOException, InterruptedException, URISyntaxException {// 1 獲取文件系統Configuration configuration new Configurati…

光譜相機的光電信號轉換

光譜相機的光電信號轉換是將分光后的光學信息轉化為可處理的數字信號的核心環節&#xff0c;具體分為以下關鍵步驟&#xff1a; 一、分光后光信號接收與光電轉換 ?分光元件作用? 光柵/棱鏡/濾光片等分光元件將入射光分解為不同波長單色光&#xff0c;投射至探測器陣列表面…

網絡協議分析 實驗二 IP分片與IPv6

文章目錄 索引及重要內容實驗2 IP 高級實驗實驗2.1 IPv4協議分片實驗實驗2.2 IPV6協議實驗2.3 ARP初級 索引及重要內容 實驗2 IP 高級實驗 實驗2.1 IPv4協議分片實驗 icmp的不可達報文 實驗2.2 IPV6協議 實驗2.3 ARP初級 arp –a 查看ARP緩存表內容 arp –s IP地址(格式&…

20、map和set、unordered_map、un_ordered_set的復現

一、map 1、了解 map的使用和常考面試題等等&#xff0c;看這篇文章 map的key是有序的 &#xff0c;值不可重復 。插入使用 insert的效率更高&#xff0c;而在"更新map的鍵值對時&#xff0c;使用 [ ]運算符效率更高 。" 注意 map 的lower和upper那2個函數&#x…

基于 Amazon Bedrock 和 Amazon Connect 打造智能客服自助服務 – 設計篇

隨著 GenAI 技術不斷的發展和演進&#xff0c;人工智能技術廣泛地被應用在呼叫中心服務領域&#xff0c;主要包括虛擬坐席&#xff08;即自助服務&#xff09;、坐席助手和呼叫中心運營的數據洞察和智能分析。本博客主要針對自助服務應用場景的實現。 1. 傳統自助服務系統瓶頸 …

java高效實現爬蟲

一、前言 在Web爬蟲技術中&#xff0c;Selenium作為一款強大的瀏覽器自動化工具&#xff0c;能夠模擬真實用戶操作&#xff0c;有效應對JavaScript渲染、Ajax加載等復雜場景。而集成代理服務則能夠解決IP限制、地域訪問限制等問題。本文將詳細介紹如何利用JavaSelenium快代理實…

【計算機視覺】OpenCV實戰項目:基于OpenCV的車牌識別系統深度解析

基于OpenCV的車牌識別系統深度解析 1. 項目概述2. 技術原理與算法設計2.1 圖像預處理1) 自適應光照補償2) 邊緣增強 2.2 車牌定位1) 顏色空間篩選2) 形態學操作3) 輪廓分析 2.3 字符分割1) 投影分析2) 連通域篩選 2.4 字符識別 3. 實戰部署指南3.1 環境配置3.2 項目代碼解析 4.…

Python核心數據類型全解析:字符串、列表、元組、字典與集合

導讀&#xff1a; Python 是一門功能強大且靈活的編程語言&#xff0c;而其核心數據類型是構建高效程序的基礎。本文深入剖析了 Python 的五大核心數據類型——字符串、列表、元組、字典和集合&#xff0c;結合實際應用場景與最佳實踐&#xff0c;幫助讀者全面掌握這些數據類型…

GPT-4.1和GPT-4.1-mini系列模型支持微調功能,助力企業級智能應用深度契合業務需求

微軟繼不久前發布GPT-4.1系列模型后&#xff0c;Azure OpenAI服務&#xff08;國際版&#xff09;現已正式開放對GPT-4.1和GPT-4.1-mini的微調功能&#xff0c;并通過Azure AI Foundry&#xff08;國際版&#xff09;提供完整的部署和管理解決方案。這一重大升級標志著企業級AI…

構造+簡單樹狀

昨日的牛客周賽算是比較簡單的&#xff0c;其中最后一道構造題目屬實眼前一亮。 倒數第二個題目也是一個很好的模擬題目&#xff08;考驗對二叉樹的理解和代碼的細節&#xff09; 給定每一層的節點個數&#xff0c;自己擬定一個父親節點&#xff0c;構造一個滿足條件的二叉樹。…

apache2的默認html修改

使用127.0.0.1的時候&#xff0c;默認打開的是index.html&#xff0c;可以通過配置文件修改成我們想要的html vi /etc/apache2/mods-enabled/dir.conf <IfModule mod_dir.c>DirectoryIndex WS.html index.html index.cgi index.pl index.php index.xhtml index.htm <…

mysql性能提升方法大匯總

前言 最近在開發自己的小程序的時候&#xff0c;由于業務功能對系統性能的要求很高&#xff0c;系統性能損耗又主要在mysql上&#xff0c;而業務功能的數據表很多&#xff0c;單表數據量也很大&#xff0c;又涉及到很多場景的數據查詢&#xff0c;所以我針對mysql調用做了優化…

多模態RAG與LlamaIndex——1.deepresearch調研

摘要 關鍵點&#xff1a; 多模態RAG技術通過結合文本、圖像、表格和視頻等多種數據類型&#xff0c;擴展了傳統RAG&#xff08;檢索增強生成&#xff09;的功能。LlamaIndex是一個開源框架&#xff0c;支持多模態RAG&#xff0c;提供處理文本和圖像的模型、嵌入和索引功能。研…