SpringBoot程序的創建以及特點,配置文件,LogBack記錄日志,配置過濾器、攔截器、全局異常

目錄

一、創建一個SpringBoot程序

二、SpringBoot的特點

①主要特點

②其他特點

?③熱部署

啟動熱部署

關閉熱部署

三、SpringBoot的配置文件

①SpringBoot三種配置文件的格式(以設置端口號為例):

②配置文件的優先級


③常見配置項

1.配置數據源

2.關閉日志圖標(banner)

3.設置運行日志的顯示級別 ?


④讀取yaml和yml文件中的數據

1.讀取單一數據

2.讀取全部數據

3.讀取對象數據


⑤多種環境開發(yaml單文件版)

1.配置激活選項

2.在不同的配置環境下添加英文三個橫杠(---)可以讓idea區分不同的環境

四、logback記錄日志

①logback初始化步驟


②使用日志文件記錄日志

1.導入依賴:spring-boot-starter-logging

2.在配置文件中設置日志文件的名字

3.創建一個logback的配置文件logback.xml,日志輸出到哪個目錄的哪個文件下,輸出的格式輸出的日志級別

4.創建log對象去寫日志,檢測是否能夠打印運行日志


五、配置過濾器,攔截器,全局異常捕獲

①使用SpringBoot的配置類來添加過濾器

1.編寫Filter類

2.使用SpringBoot提供的FilterRegistrationBean來對Filter進行配置

3.測試

②配置攔截器

1.實現一個Intercepter類

2.寫一個配置類

3.測試

?編輯

③設置全局捕獲異常

1.創建一個異常類,在其class上注解@ControllerAdvice,在其方法上加上注解@ExceptionHandler(value=Exception.class)

2.測試,做一個會讓程序報錯的動作,去查看是否會顯示“頁面無法加載”


一、創建一個SpringBoot程序

在之前寫過一篇如何創建SpringBoot程序,兩種方式,方法1:通過maven創建SpringBoot項目

方法2:使用Spring Initialzr創建一個SpringBoot項目(缺點:當創建項目時網絡中斷,會導致程序有部分缺失,并且在程序初始加載的時候不會報錯,在后續的項目進程中可能會無法發現報錯的原因)

SpringBoot--入門、創建一個SpringBoot項目、測試_springboot創建測試類-CSDN博客

二、SpringBoot的特點

①主要特點

  1. 為基于Spring的開發提供更快的入門體(不需要寫測試類,有啟動類,不用配置tomcat)
  2. 開箱即用,沒有代碼生成,也無需XML配置。同時也可以修改默認值來滿足特定的需求(例如:server.port即端口號的默認值為8080,SpringBoot可以修改這個值)
  3. 提供了一些大型項目中常見的非功能性特性,如嵌入式服務器(Tomcat)、安全、指標,健康檢測、外部配置等
  4. SpringBoot不是對Spring功能上的增強,而是提供了一種快速使用Spring的方式

②其他特點

  1. SpringBoot在項目創建時會添加一個<parent>標簽,其意義是幫助開發者進行統一的項目版本管理
  2. SpringBoot使用starter可以幫助開發者減少依賴配置(

    二者的區別:(一)starter是一個坐標中定了若干個坐標,以前寫多個的,現在寫一個,是用來減少依賴配置的書寫量的

    (二)parent是定義了幾百個依賴版本號,以前寫依賴需要自己手工控制版本,現在由SpringBoot統一管理,這樣就不存在版本沖突了,是用來減少依賴沖突的

  • 這個spring-boot-dependencies中定義了兩組信息:第一組是各式各樣的依賴版本號屬性,第二組是各式各樣的依賴坐標信息

?③熱部署

什么是熱部署?

在服務器啟動后改動程序不需要再重啟服務器,服務器會自己悄悄把更新后的程序加載一遍

啟動熱部署

第一步:在pom.xml文件中導入依賴

第二步:構建項目,可以使用快捷鍵(Ctrl+F9)激活此功能

以上為手動開啟熱部署,現在介紹如何自動開啟熱部署

第一步:打開【File】,選擇【settings...】,在面板左側的菜單中找到【Compile】選項,然后勾選【Build project automatically】,意思是自動構建項目

第二步:允許在程序運行時進行自動構建(因為我的idea為2023版,所以介紹的是2023版的方式)

勾選:settings->Advanced Settings->編譯器->編譯器中的第一個選項,如下圖,點擊應用

關閉熱部署

? ? ? ? 線上環境運行時是不可能使用熱部署功能的,所以需要強制關閉此功能,通過配置可以關閉此功能。

spring:devtools:restart:enabled: false

? ? ? ? 如果擔心配置文件層級過多導致相符覆蓋最終引起配置失效,可以提高配置的層級,在更高層級中配置關閉熱部署。例如在啟動容器前通過系統屬性設置關閉熱部署功能。

@SpringBootApplication
public class Application {public static void main(String[] args) {System.setProperty("spring.devtools.restart.enabled","false");SpringApplication.run(Application.class);}
}

三、SpringBoot的配置文件

①SpringBoot三種配置文件的格式(以設置端口號為例):

  • properties格式

  • yml格式

  • yaml格式

  • application.properties(properties格式)

server.port=8080
  • application.yml(yml格式)

server:port: 8081
  • application.yaml(yaml格式)

server:port: 8082

②配置文件的優先級

測試:在三種配置文件中分別設置不同的端口號,看哪一個端口號訪問時會生效,則哪一個配置文件的優先級更高

application.yaml

application.properties

application.yml

測試成功,8082端口成功顯示數據,即表示application.properties文件的端口生效了

測試失敗,則表示application.yaml文件的端口號無法生效

但是這就表示該配置文件的其他配置沒有生效嗎,事實表明生效了,在.yaml文件中配置了一個關閉運行日志圖表?,控制臺則并沒有打印出日志圖標,所以得出結論:每個配置文件中的項都會生效,只不過如果多個配置文件中有相同類型的配置會優先級高的文件覆蓋優先級的文件中的配置。如果配置項不同的話,所有的配置項都會生效。

關于其他的配置項,可以去SpringBoot官網上了解

打開查看附錄中的Application Properties就可以獲取到對應的配置項了,網址奉上:https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties

③常見配置項

在編寫配置文件時,我們可以選擇更關鍵的單詞,idea會提示需要的配置項

1.配置數據源

# 配置Spring Boot應用的數據庫源
spring:datasource:# 數據庫連接URL,包含數據庫的地址、端口、數據庫名以及連接參數# 參數包括:useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC# 說明:使用Unicode編碼,字符編碼為UTF-8,不使用SSL,服務器時區為UTCurl: jdbc:mysql://localhost:3306/myd?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC# 數據庫用戶名username: root# 數據庫密碼password: 123456# 數據庫驅動類名driver-class-name: com.mysql.cj.jdbc.Driver# 數據源類型,這里使用的是阿里巴巴的Druid數據源type: com.alibaba.druid.pool.DruidDataSource

打datasource會更快出現需要的配置標簽

2.關閉日志圖標(banner)

spring:main:banner-mode: off

能夠關閉運行日志中的此圖標

3.設置運行日志的顯示級別 ?

#日志配置
logging:level:root: infocom.myd: debug

能夠顯示數據庫語句

④讀取yaml和yml文件中的數據

1.讀取單一數據

? ? ? ?yaml中保存的單個數據,可以使用Spring中的注解@Value讀取單個數據,屬性名引用方式:${一級屬性名.二級屬性名……}

2.讀取全部數據

? ? ? ?讀取單一數據可以解決少量數據讀取的問題,但是如果數據多的話,這樣寫會很麻煩,SpringBoot提供了一個對象,能夠把所有的數據都封裝到這一個對象中,這個對象叫做Environment,使用自動裝配注解可以將所有的yaml數據封裝到這個對象中

3.讀取對象數據

? ? ? ? 首先定義一個對象,并將該對象納入Spring管控的范圍,也就是定義成一個bean,然后使用注解@ConfigurationProperties指定該對象加載哪一組yaml中配置的信息。

⑤多種環境開發(yaml單文件版)

? ? ? ? 什么是多環境?其實就是說你的電腦上寫的程序最終要放到別人的服務器上去運行。每個計算機環境不一樣,這就是多環境。常見的多環境開發主要兼顧3種環境設置,開發環境——自己用的,測試環境——自己公司用的,生產環境——甲方爸爸用的。因為這是絕對不同的三臺電腦,所以環境肯定有所不同,比如連接的數據庫不一樣,設置的訪問端口不一樣等等。

1.配置激活選項

spring:profiles:active:?dev

2.在不同的配置環境下添加英文三個橫杠(---)可以讓idea區分不同的環境

spring:profiles:active: prod		# 啟動prod
---
spring:profiles: prod
server:port: 8080
---
spring:profiles: dev
server:port: 8081
---
spring:profiles: test
server:port: 8082

四、logback記錄日志

日志就是記錄程序運行的信息,主要作用如下:

  1. 編程期調試代碼
  2. 運營期記錄信息
  3. 記錄日常運營重要信息
  4. 記錄應用報錯信息
  5. 記錄運維過程數據

默認情況下,Spring Boot會用Logback來記錄日志,并用INFO級別輸出到控制臺

Logback繼承自log4j。Logback的架構非常的通用,適用于不同的使用場景。

①logback初始化步驟

  1. logback會在類路徑下尋找名為logback-test.xml的文件

  2. 如果沒有找到,logback會繼續尋找名為logback.groovy的文件

  3. 如果沒有找到,logback會繼續尋找名為logback.xml的文件

  4. 如果沒有找到,將會在類路徑下尋找文件META-INFO/services/ch.qos.logback.classic.spi.Configurator,該文件的內容為實現了Configurator接口的實現類的全限定類名

  5. 如果以上都沒有成功,logback會通過BasicConfigurator為自己進行配置,并且日志將會全部在控制臺打印出來

②使用日志文件記錄日志

1.導入依賴:spring-boot-starter-logging

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId><version>2.5.2</version>
</dependency>

2.在配置文件中設置日志文件的名字

3.創建一個logback的配置文件logback.xml,日志輸出到哪個目錄的哪個文件下,輸出的格式輸出的日志級別

<?xml version="1.0" encoding="UTF-8"?><configuration><!-- 輸出到控制臺 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><!-- 輸出到文件 --><appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>log/demo.log</file><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>log/demo.%d{yyyy-MM-dd}.log</fileNamePattern></rollingPolicy></appender><!-- 設置日志輸出級別 --><root level="INFO"><appender-ref ref="console" /><appender-ref ref="file" /></root>
</configuration>

注意:

  1. spring boot默認會加載classpath:logback-spring.xml或者classpath:logback-spring.groovy或者:classpath:logback.xml
  2. 自定義配置文件(不要使用logback-logback.xml這個來命名,否則spring boot將不能完全實例化 ),文件格式為:
    logging: 
    config: classpath:logback-suke.xml

4.創建log對象去寫日志,檢測是否能夠打印運行日志

import com.minyudie.spring_boot_basic1.pojo.Datasource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/test")
public class TestController {@Autowiredprivate Datasource datasource;private static final Logger logger =LoggerFactory.getLogger(TestController.class);@PostMapping("/hello")public String hello() {logger.info("I'm logger");return "hello";}}

使用apifox測試網址,使用post方法訪問:

網址正確,訪問成功!!!

控制臺輸出:

日志文件中成功記錄到:

五、配置過濾器,攔截器,全局異常捕獲

①使用SpringBoot的配置類來添加過濾器

1.編寫Filter類

import jakarta.servlet.*;
import java.io.IOException;public class MyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {Filter.super.init(filterConfig);}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("MyFilter doFilter");}@Overridepublic void destroy() {Filter.super.destroy();}
}

2.使用SpringBoot提供的FilterRegistrationBean來對Filter進行配置

import com.minyudie.spring_boot_basic1.filter.MyFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class FilterConfig {@Beanpublic FilterRegistrationBean<MyFilter> myFilter(){FilterRegistrationBean<MyFilter> registrationBean = new FilterRegistrationBean<>();registrationBean.setFilter(new MyFilter());registrationBean.addUrlPatterns("/*");registrationBean.setName("myFilter");registrationBean.setOrder(1);return registrationBean;}
}

3.測試

成功執行!!

②配置攔截器

1.實現一個Intercepter類

這里我們需要實現HandlerInterceptor這個接口,這個接口包括三個方法,preHandle是請求執行前執行的,postHandler是請求結束執行的

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;public class MyIntercept implements HandlerInterceptor {private long start;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {start = System.currentTimeMillis();return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("耗時:" + (System.currentTimeMillis() - start));}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}
}

2.寫一個配置類

import com.minyudie.spring_boot_basic1.intercept.MyIntercept;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class InterceptConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyIntercept()).addPathPatterns("/user");}
}

3.測試

沒有出現hello,表示已被攔截

③設置全局捕獲異常

1.創建一個異常類,在其class上注解@ControllerAdvice,在其方法上加上注解@ExceptionHandler(value=Exception.class)

import jakarta.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;@ControllerAdvice
public class GlobleException {Logger logger = LoggerFactory.getLogger(GlobleException.class);@ExceptionHandler(value = Exception.class)@ResponseBodypublic String defaultErrorHandler(HttpServletRequest request, Exception e) {logger.error("請求地址:{},發生異常:{}", request.getRequestURL(), e.getMessage());return "頁面無法加載";}
}

2.測試,做一個會讓程序報錯的動作,去查看是否會顯示“頁面無法加載”

例如:輸入一個不存在的網址,查看是否會顯示我們想要的結果

測試成功!!

注意:

? ? ? ?在測試之前,我們需要把過濾器的過濾文件路徑改為不屬于我們需要測試的這個路徑,否則我們無法看到報錯,只會有"MyFilter doFilter"。

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

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

相關文章

i18n-ai-translate開源程序,可以使用DeepSeek等模型將您的 i18nJSON翻譯成任何語言

一、軟件介紹 文末提供程序和源碼下載 i18n-ai-translate開源程序使用 DeepSeek等模型可以將您的 i18n JSON 翻譯成任何語言。 無縫翻譯本地化文件。支持嵌套翻譯文件的目錄。需要i18next樣式的JSON 文件&#xff08;文末一并提供下載&#xff09;。 二、模式 CSV 模式 三個…

Flask + ajax上傳文件(一)--單文件上傳

一、概述 本教程將教你如何使用Flask后端和AJAX前端實現文件上傳功能,包含完整的代碼實現和詳細解釋。 二、環境準備 1. 所需工具和庫 Python 3.xFlask框架jQuery庫Bootstrap(可選,用于美化界面)2. 安裝Flask pip install flask三、項目結構 upload_project/ ├── a…

如何在 Postman 中,自動獲取 Token 并將其賦值到環境變量

在 Postman 中&#xff0c;你可以通過 預請求腳本&#xff08;Pre-request Script&#xff09; 和 測試腳本&#xff08;Tests&#xff09; 實現自動獲取 Token 并將其賦值到環境變量&#xff0c;下面是完整的操作步驟&#xff1a; ? 一、創建獲取 Token 的請求 通常這個請求…

北斗導航 | 基于Transformer+LSTM+激光雷達的接收機自主完好性監測算法研究

基于Transformer+LSTM+激光雷達的接收機自主完好性監測算法研究 接收機自主完好性監測(RAIM)是保障全球導航衛星系統(GNSS)定位可靠性的核心技術。傳統RAIM算法依賴最小二乘殘差法,存在故障漏檢、對復雜環境適應性差等問題。結合Transformer、LSTM與激光雷達的多模態融合…

基于Python爬蟲的豆瓣電影信息爬取(可以根據選擇電影編號得到需要的電影信息)

# 豆瓣電影信息爬蟲(展示效果如下圖所示:) 這是一個功能強大的豆瓣電影信息爬蟲程序,可以獲取豆瓣電影 Top 250 的詳細信息。 ## 功能特點 - 自動爬取豆瓣電影 Top 250 的所有電影信息 - 支持分頁獲取,每頁 25 部電影,共 10 頁 - 獲取每部電影的詳細信息,包括: - 標題…

Ubuntu22.04/24.04 P104-100 安裝驅動和 CUDA Toolkit

硬件環境 使用一塊技嘉 B85m-DS3H 安裝 P104-100, CPU是帶集成顯卡的i5-4690. 先在BIOS中設置好顯示設備優先使用集成顯卡(IGX). 然后安裝P104-100開機. 登入Ubuntu 后查看硬件信息, 檢查P104-100是否已經被檢測到 # PCI設備 lspci -v | grep -i nvidia lspci | grep NVIDIA …

東南亞與中東小游戲市場出海調研報告

東南亞與中東小游戲市場出海調研報告 目標市場篩選與概況 (The Gaming Market in Southeast Asia (SEA) | Allcorrect)圖:2018–2027年東南亞主要國家游戲市場收入(億美元)趨勢。到2024年東南亞游戲市場規模預計將接近300億美元 (2024年東南亞手游市場怎么樣? - 快出海問…

力扣4-最長公共前綴

一.題目 編寫一個函數來查找字符串數組中的最長公共前綴。 如果不存在公共前綴&#xff0c;返回空字符串 ""。 示例 1&#xff1a; 輸入&#xff1a;strs ["flower","flow","flight"] 輸出&#xff1a;"fl"示例 2&…

設計模式和單一原則筆記

單一原則&#xff1a;方法 對象 策略模式&#xff1a;方法實現 // 策略接口&#xff08;單一職責&#xff1a;定義計算規范&#xff09; public interface PriceStrategy {boolean match(String type); // 職責1&#xff1a;判斷是否適用該策略double calculate(double pric…

常見正則表達式整理與Java使用正則表達式的例子

一、常見正則表達式整理 1. 基礎驗證類 郵箱地址 ^[a-zA-Z0-9._%-][a-zA-Z0-9.-]\\.[a-zA-Z]{2,}$ &#xff08;匹配如 userexample.com&#xff09;手機號 ^1[3-9]\\\\d{9}$ &#xff08;匹配國內11位手機號&#xff0c;如 13812345678&#xff09;中文字符 ^[\u4e00-\u9fa5…

vue2 項目的 vscode 插件整理

Folder Selector 當項目文件很多時&#xff0c;查找一個文件&#xff0c;可能需要在資源管理器中不斷的滾動再打開文件夾查找文件&#xff0c;很麻煩&#xff0c;這個可以增加一個面板通過右鍵文件夾選擇 然后在面板中查看文件 Reveal Button 文件中跳轉到另一個文件時&#…

使用 Node、Express 和 MongoDB 構建一個項目工程

本文將詳細介紹如何使用 Node.js Express MongoDB 構建一個完整的 RESTful API 后端項目&#xff0c;涵蓋&#xff1a; 項目初始化 Express 服務器搭建 MongoDB 數據庫連接 REST API 設計&#xff08;CRUD 操作&#xff09; 錯誤處理與中間件 源碼結構與完整代碼 部署建…

如何實現Spring Boot應用程序的安全性:全面指南

在現代 Web 開發中&#xff0c;安全性是 Spring Boot 應用程序的核心需求&#xff0c;尤其是在微服務、云原生和公開 API 場景中。Spring Boot 結合 Spring Security 提供了一套強大的工具&#xff0c;用于保護應用程序免受常見威脅&#xff0c;如未經授權的訪問、數據泄露、跨…

無人機避障——Mid360+Fast-lio感知建圖+Ego-planner運動規劃(胎教級教程)

電腦配置:Xavier-nx、ubuntu 18.04、ros melodic 激光雷達:Livox_Mid-360 結果展示:左邊Mid360+Fast-lio感知建圖,右邊Ego-planner運動規劃 1、讀取雷達數據并顯示 無人機避障——感知篇(采用Livox-Mid360激光雷達獲取點云數據顯示)-CSDN博客 看看雷達數據話題imu以及…

數據庫證書可以選OCP認證嗎?

直接回答&#xff1a;國內OCP認證持有者的年薪普遍在15萬到40萬元之間&#xff0c;具體收入與經驗、地區和行業強相關。OCP認證能大幅提升求職競爭力&#xff0c;但薪資天花板仍由個人能力決定。 一、薪資范圍和核心影響因素 OCP認證是Oracle數據庫領域的中高級“技術通行證”…

MySQL 從入門到精通:第二篇 - 數據類型、約束與索引

1. MySQL數據類型詳解 數值類型 整數類型 -- 常用整數類型及范圍 CREATE TABLE integer_types (tiny_col TINYINT, -- 1字節,有符號(-128~127),無符號(0~255)small_col SMALLINT, -- 2字節,有符號(-32768~32767),無符號(0~65535)medium_col MEDIUMINT,

Arduino 入門學習筆記(二):開發環境搭建

Arduino 入門學習筆記&#xff08;二&#xff09;&#xff1a;開發環境搭建 B站學習鏈接&#xff1a;link 1. Arduino IDE2軟件介紹 Arduino IDE&#xff0c;Arduino Integrated Development Environment&#xff0c;即Arduino集成開發環境。 Arduino IDE具有程序編輯、調試…

ChatGPT、deepseek、豆包、Kimi、通義千問、騰訊元寶、文心一言、智譜清言代碼能力對比

均使用測試時的最強模型 均是一次對話,對話內容一樣 均開啟深度思考 能聯網的都聯網了&#xff0c;但是作用不大&#xff0c;因為藍橋杯剛考完&#xff0c;洛谷題目剛上傳沒多久 問題一測試了兩遍 從問題三開始不再測試智譜清言&#xff08;它思考時間太長了&#xff0c;前兩個…

OCR之身份證識別

前言 OCR身份證識別是光學字符識別技術在身份證領域的應用。通過掃描或拍照獲取身份證圖像&#xff0c;利用圖像處理、深度學習等技術&#xff0c;自動提取姓名、性別、民族、出生日期、地址、身份證號等信息&#xff0c;可大幅提升信息錄入效率&#xff0c;廣泛應用于政務、金…

線性代數—向量與矩陣的范數(Norm)

參考鏈接&#xff1a; 范數&#xff08;Norm&#xff09;——定義、原理、分類、作用與應用 - 知乎 帶你秒懂向量與矩陣的范數(Norm)_矩陣norm-CSDN博客 什么是范數&#xff08;norm&#xff09;&#xff1f;以及L1,L2范數的簡單介紹_l1 norm-CSDN博客 范數&#xff08;Norm…