当前位置: 首页 > news >正文

《机器学习数学基础》补充资料:柯西—施瓦茨不等式以及相关证明

《机器学习数学基础》 153 页,针对图 3-4-3,提出了一个问题:“点 A A A W \mathbb{W} W 上的一个点的距离有无穷多个。现在,我们最关心的是其中最短的那个,怎么找?请参阅 3.6 节。”并且,在 3.6 节,使用最小二乘法,找到了点 A A A 为终点的向量在 W \mathbb{W} W 上的投影向量,那么这两个向量的距离就是“最短的那个”。

但是,书中没有证明此结论。

本文中将在介绍柯西—施瓦茨不等式的基础上,证明此上述结论。

柯西-施瓦茨不等式(Cauchy–Schwarz inequality),又称施瓦茨不等式或柯西-布尼亚科夫斯基-施瓦茨不等式(Cauchy–Bunyakovsky–Schwarz inequality)不等式,是以奧古斯丁·路易·柯西(Augustin Louis Cauchy),赫尔曼·阿曼杜斯·施瓦茨(Hermann Amandus Schwarz)和维克托·雅科夫列维奇·布尼亚科夫斯基(Виктор Яковлевич Буняковский)来命名的 [ 1 ] ^{[1]} [1]

1. 不等式

1.1 定理 1

已知 a 1 , ⋯ , a n , b 1 , ⋯ , b n a_1,\cdots,a_n,b_1,\cdots,b_n a1,,an,b1,,bn 为实数,则:

( ∑ i = 1 n a i b i ) 2 ≤ ( ∑ i = 1 n a i 2 ) ( ∑ i = 1 n b i 2 ) (1.1) \left(\sum_{i=1}^na_ib_i\right)^2\le\left(\sum_{i=1}^na_i^2\right)\left(\sum_{i=1}^nb_i^2\right) \tag{1.1} (i=1naibi)2(i=1nai2)(i=1nbi2)(1.1)

等式成立的成分必要条件是 a i = λ b i , ( i = 1 , ⋯ , n ) a_i=\lambda b_i,(i=1,\cdots,n) ai=λbi,(i=1,,n)

这是比较常见的柯西不等式形式。

1.2 定理 2

已知 a 1 , ⋯ , a n , b 1 , ⋯ , b n a_1,\cdots,a_n,b_1,\cdots,b_n a1,,an,b1,,bn 为复数,则:

∣ ∑ i = 1 n a i b i ∣ 2 ≤ ( ∑ i = 1 n ∣ a i ∣ 2 ) ( ∑ i = 1 n ∣ b i ∣ 2 ) (1.2) \left|\sum_{i=1}^na_ib_i\right|^2\le\left(\sum_{i=1}^n|a_i|^2\right)\left(\sum_{i=1}^n|b_i|^2\right) \tag{1.2} i=1naibi 2(i=1nai2)(i=1nbi2)(1.2)

等式成立的成分必要条件是 a i = λ b i , ( i = 1 , ⋯ , n ) a_i=\lambda b_i,(i=1,\cdots,n) ai=λbi,(i=1,,n) λ \lambda λ 为一复数。

若令 a = [ a 1 ⋯ a n ] , b = [ b 1 ⋯ b n ] \pmb{a}=\begin{bmatrix}a_1&\cdots&a_n\end{bmatrix},\pmb{b}=\begin{bmatrix}b_1&\cdots&b_n\end{bmatrix} a=[a1an],b=[b1bn] ,则柯西不等式可表示为:

∣ a ⋅ b ∣ ≤ ∥ a ∥ ∥ b ∥ (1.3) |\pmb{a}\cdot\pmb{b}|\le\begin{Vmatrix}\pmb{a}\end{Vmatrix}\begin{Vmatrix}\pmb{b}\end{Vmatrix}\tag{1.3} ab a b (1.3)

1.3 定理 3

已知 A = ( a i j ) \pmb{A}=(a_{ij}) A=(aij) 是正定对称矩阵, x 1 , ⋯ , x n ; y 1 , ⋯ , y n x_1,\cdots,x_n;y_1,\cdots,y_n x1,,xn;y1,,yn 为任意实数(或复数),则:

∣ ∑ i , j = 1 n a i j x i y j ∣ ≤ ∑ i , j = 1 n a i j x i x j ∑ i , j = 1 n a i j y i y j (1.4) \left|\sum_{i,j=1}^na_{ij}x_iy_j\right|\le\sqrt{\sum_{i,j=1}^na_{ij}x_ix_j}\sqrt{\sum_{i,j=1}^na_{ij}y_iy_j}\tag{1.4} i,j=1naijxiyj i,j=1naijxixj i,j=1naijyiyj (1.4)

对(1.4)式,可以用向量表示:

  • ζ ⋅ η = x A y = ∑ i , j = 1 n a i j x i y j \pmb{\zeta}\cdot\pmb{\eta}=\pmb{xAy}=\sum_{i,j=1}^na_{ij}x_iy_j ζη=xAy=i,j=1naijxiyj
  • ∥ ζ ∥ 2 = ζ ⋅ ζ = x A x T = ∑ i , j = 1 n a i j x i x j \begin{Vmatrix}\zeta\end{Vmatrix}^2=\pmb{\zeta\cdot\zeta}=\pmb{xAx}^T=\sum_{i,j=1}^na_{ij}x_ix_j ζ 2=ζζ=xAxT=i,j=1naijxixj
  • ∥ η ∥ 2 = η ⋅ η = y A y T = ∑ i , j = 1 n a i j y i y j \begin{Vmatrix}\eta\end{Vmatrix}^2=\pmb{\eta\cdot\eta}=\pmb{yAy}^T=\sum_{i,j=1}^na_{ij}y_iy_j η 2=ηη=yAyT=i,j=1naijyiyj

1.4 定理 4

已知 a i , b i ∈ C a_i,b_i\in\mathbb{C} ai,biC ,则:

∣ ∑ i , j = 1 ∞ a i b j ∣ ≤ ( ∑ i = 1 ∞ ∣ a i ∣ 2 ) 1 2 ( ∑ i = 1 ∞ ∣ b i ∣ 2 ) 1 2 (1.5) |\sum_{i,j=1}^{\infty}a_ib_j|\le\left(\sum_{i=1}^{\infty}|a_i|^2\right)^{\frac{1}{2}}\left(\sum_{i=1}^{\infty}|b_i|^2\right)^{\frac{1}{2}} \tag{1.5} i,j=1aibj(i=1ai2)21(i=1bi2)21(1.5)

等式成立的充分必要条件是 a i = λ b i , ( i = 1 , ⋯ , λ ∈ C ) a_i=\lambda b_i,(i=1,\cdots,\lambda\in\mathbb{C}) ai=λbi,(i=1,,λC)

将定理 4 推广到积分形式,即为柯西—施瓦茨不等式

1.5 定理 5

已知 f , g f,g f,g 是区间 [ a , b ] [a,b] [a,b] 上的连续函数, f , g ∈ C [ a , b ] f,g\in\mathbb{C}[a,b] f,gC[a,b] ,则:

∣ ∫ a b f ( x ) g ( x ) d x ∣ ≤ ∫ a b ∣ f ( x ) ∣ 2 d x ∫ a b ∣ g ( x ) ∣ 2 d x (1.7) \begin{vmatrix}\int_a^bf(x)g(x)dx\end{vmatrix}\le\int_a^b|f(x)|^2dx\int_a^b|g(x)|^2dx\tag{1.7} abf(x)g(x)dx abf(x)2dxabg(x)2dx(1.7)

(1.7)式称为柯西-施瓦茨不等式(Cauchy–Schwarz inequality)、施瓦茨不等式或柯西-布尼亚科夫斯基-施瓦茨不等式(Cauchy–Bunyakovsky–Schwarz inequality)。此不等式是乌克兰数学家 Viktor Yakovlerich Bunyakovsky(1804-1889)与德国数学家(原籍波兰)KarlHerman Amandus Schwarz (1843-1921),分别于1861年和1885年发现。虽然布尼亚克夫斯基比施瓦茨先发现了这个不等式,而在很多数学教材中,常常把他的名字忽略——恐怕不是因为他名字太长,更可能的原因是 19 世纪,数学研究的中心在德国、法国,不在这个中心的人所作出的发现,就很难引起重视。这种现象在当今也难免。

1.6 定理 6

已知 a 1 , ⋯ , a n ; b 1 , ⋯ , b n a_1,\cdots,a_n;b_1,\cdots,b_n a1,,an;b1,,bn 为任意复数,且 p , q ≥ 1 , 1 p + 1 q = 1 p,q\ge1,\frac{1}{p}+\frac{1}{q}=1 p,q1p1+q1=1 ,则:

∣ ∑ i = 1 n a i b i ∣ ≤ ( ∑ i = 1 n ∣ a i ∣ p ) 1 p ( ∑ i = 1 n ∣ b i ∣ q ) 1 q (1.9) |\sum_{i=1}^{n}a_ib_i|\le\left(\sum_{i=1}^{n}|a_i|^p\right)^{\frac{1}{p}}\left(\sum_{i=1}^{n}|b_i|^q\right)^{\frac{1}{q}} \tag{1.9} i=1naibi(i=1naip)p1(i=1nbiq)q1(1.9)

(1.9)式称为赫尔德不等式 (H ̈older不等式),如果推广到积分形式,就是下面的定理7。

1.7 定理 7

已知 f , g ∈ C [ a , b ] , p , q ≥ 1 , 1 p + 1 q = 1 f,g\in\mathbb{C}[a,b],p,q\ge1,\frac{1}{p}+\frac{1}{q}=1 f,gC[a,b]p,q1p1+q1=1 ,则:

∣ ∫ a b f ( x ) g ( x ) d x ∣ ≤ ( ∫ a b ∣ f ( x ) ∣ p d x ) 1 p ( ∫ a b ∣ g ( x ) ∣ q d x ) 1 q (1.10) \begin{vmatrix}\int_a^bf(x)g(x)dx\end{vmatrix}\le\left(\int_a^b|f(x)|^pdx\right)^{\frac{1}{p}}\left(\int_a^b|g(x)|^qdx\right)^{\frac{1}{q}}\tag{1.10} abf(x)g(x)dx (abf(x)pdx)p1(abg(x)qdx)q1(1.10)

还可以写成更一般的形式,定理8所示。

1.8 定理 8

已知 f 1 , ⋯ , f n ∈ C [ a , b ] f_1,\cdots,f_n\in\mathbb{C}[a,b] f1,,fnC[a,b] ,且 1 p 1 + 1 p 2 + ⋯ + 1 p n = 1 , p i ≥ 1 \frac{1}{p_1}+\frac{1}{p_2}+\cdots+\frac{1}{p_n}=1,p_i\ge1 p11+p21++pn1=1,pi1 ,则:

∣ ∫ a b f 1 ( x ) f 2 ( x ) ⋯ f n ( x ) d x ∣ ≤ ( ∫ a b ∣ f 1 ( x ) ∣ p 1 d x ) 1 p 1 ⋯ ( ∫ a b ∣ f n ( x ) ∣ p n d x ) 1 p n (1.11) \begin{vmatrix}\int_a^bf_1(x)f_2(x)\cdots f_n(x)dx\end{vmatrix}\le\left(\int_a^b|f_1(x)|^{p_1}dx\right)^{\frac{1}{p_1}}\cdots\left(\int_a^b|f_n(x)|^{p_n}dx\right)^{\frac{1}{p_n}}\tag{1.11} abf1(x)f2(x)fn(x)dx (abf1(x)p1dx)p11(abfn(x)pndx)pn1(1.11)

德国数学家赫尔德(Otto Lud-wig H ̈older (1859-1937))在1885年研究傅里叶技术收敛性问题时,发现了上述不等式。

赫尔德不等式,也称为赫尔德—里斯不等式(H ̈older-Riesz)。

p = q = 2 p=q=2 p=q=2 ,赫尔德不等式就退化为柯西—施瓦茨不等式。

2. 余弦定理

对柯西—施瓦茨不等式的最直接理解,可以通过余弦定理,如图所示:
在这里插入图片描述

由余弦定理,得:

∣ a ∣ 2 + ∣ b ∣ 2 − ∣ a − b ∣ 2 = 2 ∣ a ∣ ∣ b ∣ cos ⁡ θ (2.1) |\pmb{a}|^2+|\pmb{b}|^2-|\pmb{a}-\pmb{b}|^2=2|\pmb{a}||\pmb{b}|\cos\theta \tag{2.1} a2+b2ab2=2∣a∣∣bcosθ(2.1)

所以: a ⋅ b = ∣ a ∣ ∣ b ∣ cos ⁡ θ \pmb{a}\cdot\pmb{b}=|\pmb{a}||\pmb{b}|\cos\theta ab=a∣∣bcosθ

因为: ∣ cos ⁡ θ ∣ ≤ 1 |\cos\theta|\le1 cosθ1 ,可得:

∣ a ⋅ b ∣ ≤ ∣ a ∣ ∣ b ∣ (2.2) |\pmb{a}\cdot\pmb{b}|\le|\pmb{a}||\pmb{b}|\tag{2.2} aba∣∣b(2.2)

亦即得到了(1.3)式。

3. 柯西—施瓦茨不等式的证明

3.1 判别式

这是一种最常见的证明方法。

向量 a , b \pmb{a},\pmb{b} a,b 不平行,所以: c = b − λ a , λ ∈ R \pmb{c}=\pmb{b}-\lambda\pmb{a},\lambda\in\mathbb{R} c=bλa,λR

计算 c \pmb{c} c 的长度:

∣ c ∣ 2 = c ⋅ c = ( b − λ a ) ⋅ ( b − λ a ) = b ⋅ b − 2 a ⋅ b λ + a ⋅ a λ 2 = ∣ a ∣ 2 λ 2 − 2 a ⋅ b λ + ∣ b ∣ 2 (3.1) \begin{split}|\pmb{c}|^2&=\pmb{c\cdot c}=(\pmb{b}-\lambda\pmb{a})\cdot(\pmb{b}-\lambda\pmb{a})\\&=\pmb{b\cdot b}-2\pmb{a\cdot b}\lambda+\pmb{a\cdot a}\lambda^2\\&=|\pmb{a}|^2\lambda^2-2\pmb{a}\cdot\pmb{b}\lambda+|\pmb{b}|^2\end{split} \tag{3.1} c2=cc=(bλa)(bλa)=bb2abλ+aaλ2=a2λ22abλ+b2(3.1)

将(3.1)式视为 λ \lambda λ 的一元二次方程。由于 ∣ c ∣ 2 ≥ 0 |\pmb{c}|^2\ge0 c20 ,且 ∣ a ∣ 2 ≥ 0 |\pmb{a}|^2\ge0 a20 。所以(3.1)式中的二次函数是开口向上的抛物线,且与横轴无交点( ∣ c ∣ 2 = 0 |\pmb{c}|^2=0 c2=0 是极限),即 λ \lambda λ 没有实根,所以判别式小于等于 0 0 0

Δ = ( 2 a ⋅ b ) 2 − 4 ∣ a ∣ 2 ∣ b ∣ 2 ≤ 0 \Delta=(2\pmb{a\cdot b})^2-4|\pmb{a}|^2|\pmb{b}|^2\le0 Δ=(2ab)24∣a2b20

所以: ∣ a ⋅ b ∣ ≤ ∣ a ∣ ∣ b ∣ |\pmb{a}\cdot\pmb{b}|\le|\pmb{a}||\pmb{b}| aba∣∣b

3.2 投影——最短距离

前述证明中,避免了余弦定理中的角度,使用了向量的点积,对任意维的向量都适用。

由前述假设,可得 λ \lambda λ

λ = a ⋅ b ∣ a ∣ 2 , c = b − λ a = b − a ⋅ b ∣ a ∣ 2 a (3.2) \lambda=\frac{\pmb{a\cdot b}}{|\pmb{a}|^2}, \quad\pmb{c}=\pmb{b}-\lambda\pmb{a}=\pmb{b}-\frac{\pmb{a\cdot b}}{|\pmb{a}|^2}\pmb{a} \tag{3.2} λ=a2ab,c=bλa=ba2aba(3.2)

将(3.2)式代入到(3.1)式,则:

0 ≤ ∣ c ∣ 2 = ∣ a ∣ 2 ( a ⋅ b ∣ a ∣ 2 ) 2 − 2 a ⋅ b ( a ⋅ b ∣ a ∣ 2 ) + ∣ b ∣ 2 (3.3) 0\le|\pmb{c}|^2=|\pmb{a}|^2\left(\frac{\pmb{a\cdot b}}{|\pmb{a}|^2}\right)^2-2\pmb{a\cdot b}\left(\frac{\pmb{a\cdot b}}{|\pmb{a}|^2}\right)+|\pmb{b}|^2 \tag{3.3} 0c2=a2(a2ab)22ab(a2ab)+b2(3.3)

整理得: ( a ⋅ b ) 2 ≤ ∣ a ∣ 2 ∣ b ∣ 2 (\pmb{a\cdot b})^2\le|\pmb{a}|^2|\pmb{b}|^2 (ab)2a2b2

即得到(1.3)式。

如何理解(3.2)式中的 λ \lambda λ

a ⋅ c = a ⋅ ( b − λ a ) = a ⋅ b − λ ∣ a ∣ 2 \pmb{a\cdot c} = \pmb{a}\cdot(\pmb{b}-\lambda\pmb{a})=\pmb{a\cdot b}-\lambda|\pmb{a}|^2 ac=a(bλa)=abλa2

因此,可以有如下关系:

a ⋅ c = 0 ⟺ a ⊥ c ⟺ λ = a ⋅ b ∣ a ∣ 2 \pmb{a\cdot c}=0\quad\Longleftrightarrow\quad \pmb{a}\bot\pmb{c} \quad\Longleftrightarrow\quad \lambda=\frac{\pmb{a\cdot b}}{|\pmb{a}|^2} ac=0acλ=a2ab

由此可知, λ \lambda λ 的选择,恰好是能够让 λ a \lambda\pmb{a} λa b \pmb{b} b a \pmb{a} a 上的投影, ∣ c ∣ |\pmb{c}| c 则是 b \pmb{b} b a \pmb{a} a 的最短距离。其关系如下图所示:
在这里插入图片描述

λ \lambda λ 还称为拉格朗日乘子(Largrange multiplier)。

参考文献

[1]. Wikipedia: Cauchy-Schwarz inequality

[2]. 齐伟. 机器学习数学基础[M]. 北京:电子工业出版社,2023.

相关文章:

《机器学习数学基础》补充资料:柯西—施瓦茨不等式以及相关证明

《机器学习数学基础》 153 页,针对图 3-4-3,提出了一个问题:“点 A A A 到 W \mathbb{W} W 上的一个点的距离有无穷多个。现在,我们最关心的是其中最短的那个,怎么找?请参阅 3.6 节。”并且,在…...

VisionPro 划痕检测小练习

划痕检测,我这里用到的是Sobel算子和blob斑点匹配以及blob里面的形态学调整 Sobel 是一种在数字图像处理和计算机视觉领域广泛应用的算法,主要用于边缘检测 脚本展示 #region namespace imports using System; using System.Collections; using System.Drawing; …...

解析 2025 工业边缘计算:三大技术风向的影响力

工业数字化转型的加速,工业边缘计算市场正呈现出蓬勃发展的态势。展望 2025 年,以下三大技术将成为引领工业边缘计算发展的重要风向标。 其一,人工智能与边缘计算的深度融合。人工智能技术将更广泛地应用于工业边缘设备,实现更智…...

企语企业管理系iFair(F23.2_a0)在Debian操作系统中的安装

起因:在安装了F24.8版本后,发现生产用环境和测试、开发用环境还是分开的好。 旧版的用来实验、测试,新版的一步一步小心的配置、使用是比较稳妥的操作。因此,决定在KVM虚拟机上搭建一个F23.2版本的企语系统。 一、 存在的问题 而…...

如何在Flask中处理静态文件

哈喽,大家好,我是木头左! 本文将详细介绍如何在Flask中处理静态文件,包括如何配置静态文件夹、如何访问静态文件以及如何处理静态文件的缓存问题。 配置静态文件夹 在Flask中,你可以通过static_folder参数来指定静态文件夹。默认情况下,Flask会在项目的根目录下寻找名为…...

无人机飞行试验大纲

‌无人机飞行试验大纲‌ ‌编制日期‌:2025年02月11日 ‌一、试验目的与背景‌ 本次无人机飞行试验旨在验证无人机的飞行性能、控制系统稳定性、机体结构强度以及各项任务执行能力。随着无人机技术在各个领域的广泛应用,对其性能进行全面、系统的测试显得…...

C语言初阶牛客网刷题——JZ65 不用加减乘除做加法】【难度:简单】

1. 题目描述 牛客网OJ题链接 写一个函数,求两个整数之和,要求在函数体内不得使用、-、*、/四则运算符号。 2. 分析 十进制相加思想: 157 , 先计算不考虑进位的相加结果 12 (因为 57 的不考虑进位的结果是 2 &#x…...

git 记录

git 记录 报错warning: unknown value given to http.version: 2 报错 warning: unknown value given to http.version: ‘2’ 删除指定http版本 git config --global --unset http.version...

PyTorch Lightning Trainer介绍

PyTorch Lightning 的 Trainer 是框架的核心类,负责自动化训练流程、分布式训练、日志记录、模型保存等复杂操作。通过配置参数即可快速实现高效训练,无需手动编写循环代码。以下是详细介绍和使用示例: Trainer 的核心功能 自动化训练循环 自…...

mysql监控--慢查询

一、监控配置 二、慢查询文件 在 MySQL 中,慢查询日志记录了执行时间较长的查询,通常,慢查询日志可能会生成以下几种文件: 1. 慢查询日志文件 这是最主要的文件,记录了执行时间超过设置阈值的 SQL 查询。可以通过 …...

Conda 包管理:高效安装、更新和删除软件包

Conda 包管理:高效安装、更新和删除软件包 1. 引言 在使用 Anaconda 进行 Python 开发时,包管理是日常操作的核心内容。Conda 提供了一整套高效的工具来管理 Python 环境中的软件包,避免了版本冲突,并确保了环境的一致性。 本篇…...

AcWing 798. 差分矩阵

题目来源: 找不到页面 - AcWing 题目内容: 输入一个 n 行 m 列的整数矩阵,再输入 q 个操作,每个操作包含五个整数 x1,y1,x2,y2,c,其中 (x1,y1) 和 (x2,y2)表示一个子矩阵的左上角坐标和右下角坐标。 每个操作都要将…...

通用定时器学习记录

简介 通用定时器:TIM2/TIM3/TIM4/TIM5 主要特性:16位递增、递减、中心对齐计数器(计数值0~65535) 16位预分频器(分频系数1~65536) 可用于触发DAC、ADC 在更新事件、触发事件、输入捕获、输出比较时&am…...

科技之光闪耀江城:2025武汉国际半导体产业与电子技术博览会5月15日盛大开幕

在科技浪潮汹涌澎湃的当下,半导体产业作为现代信息技术的中流砥柱,正以令人惊叹的速度重塑着世界的面貌。2025年5月15-17日,一场聚焦半导体与电子技术前沿的行业盛会 ——2025 武汉国际半导体产业与电子技术博览会,将在武汉・中国…...

vue开发06:前端通过webpack配置代理处理跨域问题

1.定义 在浏览器尝试请求不同源(域名、协议、端口号不同)的资源时,浏览器的同源策略会阻止这种跨域请求。(比如前端端口15500,后端端口5050,前端界面不可以直接调用5050端口) 2.解决方案 使用前…...

⚡️《静电刺客的猎杀手册:芯片世界里的“千伏惊魂“》⚡️

前言: 在这个电子产品无孔不入的时代,我们每天都在与一群隐形刺客打交道——它们身怀数千伏特的高压绝技,能在0.1秒内让价值百万的芯片灰飞烟灭。这就是静电放电(ESD),电子工业界最令人闻风丧胆的"沉默…...

【云安全】云原生-K8S(三) 安装 Dashboard 面板

在Kubernetes中安装Dashboard需要几个步骤,包括部署Dashboard组件、配置访问权限以及暴露Dashboard服务等。以下是详细的步骤: 1. 部署 K8S Dashboard 可以通过以下命令用Kubernetes官方的YAML文件来快速部署,由于是国外网站,需…...

Spring Boot 常用依赖详解:如何选择和使用常用依赖

在Spring Boot项目中,依赖(Dependencies)是项目的核心组成部分。每个依赖都提供了一些特定的功能或工具,帮助我们快速开发应用程序。本文将详细介绍Spring Boot中常用的依赖及其作用,并指导你如何根据项目需求选择合适…...

C++ 设计模式-组合模式

组合模式(Composite Pattern)允许将对象组合成树形结构,使得客户端以统一的方式处理单个对象和组合对象。以下是一个经典的 C 实现示例,包含透明式设计(基类定义统一接口)和内存管理: #include…...

【Spring Boot】Spring 魔法世界:Bean 作用域与生命周期的奇妙之旅

前言 ???本期讲解关于spring原理Bean的相关知识介绍~~~ ??感兴趣的小伙伴看一看小编主页:-CSDN博客 ?? 你的点赞就是小编不断更新的最大动力 ??那么废话不多说直接开整吧~~ 目录 ???1.Bean的作用域 ??1.1概念 ??1.2Bean的作用域 ??1.3代码演示…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

微信小程序之bind和catch

这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...