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

音频进阶学习八——傅里叶变换的介绍

文章目录

  • 前言
  • 一、傅里叶变换
    • 1.傅里叶变换的发展
    • 2.常见的傅里叶变换
    • 3.频域
  • 二、欧拉公式
    • 1.实数、虚数、复数
    • 2.对虚数和复数的理解
    • 3.复平面
    • 4.复数和三角函数
    • 5.复数的运算
    • 6.欧拉公式
  • 三、积分运算
    • 1.定积分
    • 2.不定积分
    • 3.基本的积分公式
    • 4.积分规则
      • 线性
      • 替换法
      • 分部积分法
    • 5.定积分计算实例
    • 6.简单描述积分在CFT作用
  • 总结


前言

之前的一系列文章中,我们介绍了信号的分类、系统、以及在时域上对于序列的分析工具卷积公式和差分方程。

由于很多信号的处理从时域上并不能很好、快速的处理,并且基于分析我们得到一个结论,信号的波形可以分解为多个不同频率正弦波的组成,而这个分解的工具就是傅里叶变换。

本章中,会先对傅里叶变换做一个总的介绍,同时,因为学习傅里叶变化需要一定的数学知识,所以本章内容会先介绍傅里叶变换,然后再介绍关于傅里叶变换公式中的数学知识欧拉公式积分方程

|版本声明:山河君,未经博主允许,禁止转载


一、傅里叶变换

1.傅里叶变换的发展

傅里叶级数这个名字是由18世纪法国数学家傅里叶提出的,最开始是用于对热过程解析,但其研究“任意”的周期函数通过一定的分解,都能够表示为正弦和余弦信号的线性组合方式。

而后1829年,狄利赫里给出了傅里叶级数的收敛条件。

二十世纪初,傅里叶的思想被推广到非周期函数,成为了傅里叶变换,可以将任意信号分解成一系列正弦和余弦函数的和。但是此时傅里叶变换存在一些问题,对于非周期函数和时变信号,傅里叶变换无法处理。

直到20世纪70年代,引入的小波信号,解决了这些问题。

傅里叶变换可以化复杂的卷积运算为简单的乘积运算,而后离散形式的傅里叶变换可以利用数字计算机快速的算出,才最终通过计算机对于信号能够做快速的处理。

2.常见的傅里叶变换

  1. 连续傅里叶变换(Continuous Fourier Transform, CFT)
  • 公式
    F ( ω ) = ∫ − ∞ ∞ f ( t ) e − j w t d t f ( t ) = 1 2 π ∫ − ∞ ∞ F ( ω ) e − j w t d w F(\omega)=\int^{\infty}_{-\infty}f(t)e^{-jwt}dt\\ f(t)=\frac{1}{2\pi}\int^{\infty}_{-\infty}F(\omega)e^{-jwt}dw F(ω)=f(t)ejwtdtf(t)=2π1F(ω)ejwtdw
  • 定义:连续时间信号 f ( t ) f(t) f(t)和频域 F ( ω ) F(\omega) F(ω)互转
  • 应用场景:连续信号频谱分析
  1. 离散傅里叶变换(Discrete Fourier Transform, DFT)
  • 公式
    X [ k ] = ∑ n = 0 N − 1 x [ n ] e − j 2 π N k n , k = 0 , 1 , 2 , . . , N − 1 x [ n ] = 1 N ∑ k = 0 N − 1 X [ k ] e j 2 π N k n X[k] = \sum^{N-1}_{n=0}x[n]e^{-j\frac{2\pi}{N}kn}, \quad k=0,1,2,..,N-1 \\ x[n] = \frac{1}{N}\sum^{N-1}_{k=0}X[k]e^{j\frac{2\pi}{N}kn} X[k]=n=0N1x[n]ejN2πkn,k=0,1,2,..,N1x[n]=N1k=0N1X[k]ejN2πkn
  • 定义:离散信号频域转换
  • 应用场景:数字信号处理(音频计算机处理)
  1. 短时傅里叶变换(Short-Time Fourier Transform, STFT)
  • 公式:
    S T F T ( t , ω ) = ∫ − ∞ ∞ f ( τ ) ω ( τ − t ) e − j w τ d τ STFT(t,\omega)=\int^{\infty}_{-\infty}f(\tau)\omega(\tau-t)e^{-jw\tau}d\tau STFT(t,ω)=f(τ)ω(τt)ejwτdτ
  • 定义:在信号的时间维度上使用滑动窗口,分段计算傅里叶变换
  • 应用场景:非平稳信号分析(如语音处理、地震波分析)
  1. 离散时间傅里叶变换(Discrete-Time Fourier Transform, DTFT)
  • 公式:
    X [ ω ] = ∑ n = − ∞ ∞ x [ n ] e − j w n X[\omega]=\sum^{\infty}_{n=-\infty}x[n]e^{-jwn} X[ω]=n=x[n]ejwn
  • 定义: 离散时间信号的频谱分析
  • 应用场景:数字信号的理论分析
  1. 傅里叶级数
  • 公式:
    f ( t ) = a 0 + ∑ n = 0 ∞ ( a n cos ⁡ ( n ω 0 t ) + b n sin ⁡ ( n ω 0 t ) ) o r f ( t ) = ∑ n = 0 ∞ c n e j n ω 0 t f(t) = a_0+\sum^{\infty}_{n=0}(a_n\cos(n\omega_0t)+b_n\sin(n\omega_0t)) \quad or\\ f(t)=\sum^{\infty}_{n=0}c_ne^{jn\omega_0t} f(t)=a0+n=0(ancos(nω0t)+bnsin(nω0t))orf(t)=n=0cnejnω0t
  • 定义: 将周期信号分解为多个正弦和余弦函数的线性组合。
  • 应用场景: 信号周期性分析
  1. 小波变换(Wavelet Transform, WT)(多种不做展示)
  • 定义: 一种局部化的傅里叶分析,使用小波函数代替正弦波进行信号分析。
  • 特点: 提供多分辨率分析。
  • 应用场景: 数据压缩、信号去噪、特征提取。
  1. 快速余弦/正弦变换(Fast Cosine/Sine Transform, FCT/FST)
  • 定义: 傅里叶变换的特化形式,仅保留正弦或余弦部分。
  • 应用场景: 压缩算法(如JPEG)、解决偏微分方程。

3.频域

我们说傅里叶变换是将时域转成了频域,那么频域到底是什么?在音频基础文章中,我们有一张对于时域和频域图像的解释图:
在这里插入图片描述
在时域图形中很好理解,这是一个二维坐标轴,横轴表示时间,纵轴表示的波形,那么通过傅里叶变换我们得到的频域图是什么样子呢?这里使用Adobe audition软件做展示:
在这里插入图片描述
我们可以看到频域图的横轴是频率,纵轴是该频率占有的功率/幅度(图像中是转为了db来展示)

二、欧拉公式

在上面各种傅里叶变换公式中,可以看到基本上每个公式都包含 e j w t , ∫ , ω e^{jwt},\int,\omega ejwt,,ω这些符号,对于 ω \omega ω我们之前在音频基础学习中有介绍,单位圆转一圈的时间为一个周期,那么频率 f = 1 t f=\frac {1}{t} f=t1,此时转过的弧度为 2 π 2\pi 2π,而角频率 ω = 2 π t \omega=\frac{2\pi}{t} ω=t2π

而对于 e j w t e^{jwt} ejwt,它其实描述的是某一个点在复平面上的位置,是根据欧拉公式得到的,在之前的文章中,我们使用单位脉冲分解可以表示信号,现在,我们使用复数来看一下复指数信号

1.实数、虚数、复数

  • 虚数:在数学里,将平方是负数的数定义为纯虚数
  • 实数:有理数和无理数的总称;其中无理数就是无限不循环小数,有理数就包括整数和分数
  • 复数: z = a + b i , { a 、 b ∈ R , a ≠ 0 、 b ≠ 0 } z=a+bi, \{a、b∈R,a≠0、b≠0\} z=a+bi,{abRa=0b=0},其中 i 2 = − 1 i^2 = -1 i2=1是指虚数单位,当 a = 0 , b ≠ 0 a=0,b \neq 0 a=0,b=0 z z z是纯虚数,当 a ≠ 0 , b = 0 a\neq0,b=0 a=0,b=0时, z z z是实数

2.对虚数和复数的理解

  1. 发展历史
    复数最早出现于公元1世纪希腊数学家海伦,而给出“虚数”这一名称的是法国数学家笛卡尔(1596~1650)发表出来的。
    刚开始复数的出现不被人们理解,就像 4 − 3 4-3 43人们可以很好理解,那么 3 − 4 3-4 34呢?这到底是什么意思?你怎么能从 4 头奶牛中拿走 3 头奶牛?你怎么能比没有少呢?于是出现了可以跟踪方向的+、-号,那么就可以理解为你还欠我一头奶牛没给我。
    在数学家的目标中,数学体系的一部分就是要确保每个方程都有解,如果 i 2 > 0 i^2 > 0 i2>0很好理解,那么 i 2 = − 1 i^2 = -1 i2=1该怎么理解呢,于是就出现了无法在一维实数线上找到对应值的数——虚数。

  2. 几何意义
    首先思考一个问题,什么样的 i i i乘上自身可以等于-1?
    在这里插入图片描述
    假如我们想从位置A逆时针旋转90°到位置B,再从位置B逆时针旋转90°到位置C,那么是不是 1 ∗ (逆时针旋转 90 ° ) 2 = − 1 1*(逆时针旋转90°)^2 = -1 1(逆时针旋转90°)2=1,是不是把复数在几何中当作旋转这种想法让人非常吃惊?

3.复平面

复平面是用来表示复数的一个二维坐标系,和实数二位坐标系类似,复平面同样有两个轴,只不过一个是实轴,一个是虚轴,如下图:
在这里插入图片描述
前面我们说过 i i i是代表位置A逆时针旋转了90°到达了位置B
复数 z = a + b i z=a+bi z=a+bi在复平面上的含义有:

  • 实部 a a a:代表复数在 实轴 上的位置。
  • 虚部 b b b:代表复数在 虚轴 上的位置
  • 复数 z z z:表示复平面上的一个点,或者说是一个从原点到平面上某个位置的向量

从上图我们可以得到 z = 1 + 1 ∗ i z = 1 + 1 * i z=1+1i,之前我们说过 i i i在几何种表示逆时针旋转90°,我们可以看到 1 + 1 ∗ i 1 + 1 * i 1+1i的表示为逆时针旋转45°,注意看 z z z在复平面上的位置。

4.复数和三角函数

  • 三角函数的理解

在音频基础学习二——声音的波形中,提到了所有的波通过傅里叶变化可以成为正弦波的叠加,反过来,正弦波的叠加最终变为了我们实际数字信号的音频波。

而三角函数作为将角度和弧度联系的数学工具,在单位圆1中,可以把 sin ⁡ θ \sin \theta sinθ 看作竖轴的坐标, cos ⁡ θ \cos \theta cosθ看作横轴的坐标即 位置 D = sin ⁡ α = C D , 位置 E = cos ⁡ α = A D 位置D = \sin\alpha = CD, 位置E = \cos\alpha=AD 位置D=sinα=CD,位置E=cosα=AD
在这里插入图片描述

那么如果这个平面是复平面,那么 z = a + b i = > z = cos ⁡ α + sin ⁡ α i z=a+bi => z=\cos\alpha + \sin\alpha i z=a+bi=>z=cosα+sinαi

  • 极坐标

极坐标是复数 z z z的另外一种表示方式,使用角度 θ \theta θ和模长 r r r进行表示,替换了实轴和虚轴的坐标,其实就是上面的公式 z = cos ⁡ α + sin ⁡ α i z=\cos\alpha + \sin\alpha i z=cosα+sinαi,只是这个公式只有在半径为1的时候才正确,正确的表达方式应该是 z = r ( cos ⁡ θ + i sin ⁡ θ ) z = r(\cos\theta+i \sin\theta) z=r(cosθ+isinθ),此时 r r r为了便于区分,不叫作半径,叫做模长.

5.复数的运算

  • 加法
    复数的加法和物理中实数的加法类似,例如下图,有AB和AC的力,那么最终力是多少?
    在这里插入图片描述
    AB分解为AE和AF, AC分解为AG和AH,那么最终力AD就是AE+AG, AH+AF,即 z = ( 3 + 1 ∗ i ) + ( 1 + 3 ∗ i ) = ( 4 + 4 ∗ i ) z = (3 + 1*i) + (1+3*i) = (4+4*i) z=(3+1i)+(1+3i)=(4+4i)
  • 乘法
    假如现在有 z = ( 3 + 1 ∗ i ) ∗ ( 1 + 1 ∗ i ) = 3 ∗ 1 + 3 ∗ i + 1 ∗ i + i 2 = 2 + 4 i z = (3 + 1*i) * (1+1*i) = 3* 1 + 3 * i + 1* i + i^2 = 2+4i z=(3+1i)(1+1i)=31+3i+1i+i2=2+4i,那么这个有什么意义呢,如下图:
    在这里插入图片描述
    上文我们说过 1 + 1 ∗ i 1 + 1 * i 1+1i的表示为逆时针旋转45°,而上面的最终极坐标的位置也是移动了45°,事实上复数的乘法代表了:模长的拉长(下文中解释),以及极坐标的旋转。

6.欧拉公式

欧拉公式(Euler’s formula)是复分析中的一个重要公式,它展示了复指数函数和三角函数之间的关系。公式的形式为(推导过程太复杂不进行赘述,有兴趣可以自己百度看):
e i θ = cos ⁡ θ + i ∗ sin ⁡ θ e^{i\theta} = \cos\theta + i*\sin\theta eiθ=cosθ+isinθ
我们根据欧拉公式得到复数的表示形式为:
z = r ∗ e i θ z = r * e^{i\theta} z=reiθ
假设有两个复数:

  • z 1 = 2 ∗ e i 30 ° z_1 = 2 * e^{i30°} z1=2ei30°:表示模长为2,角度为30°
  • z 2 = 3 ∗ e i 45 ° z_2 = 3 * e^{i45°} z2=3ei45° :表示模长为3,角度为45°
  • z 1 ∗ z 2 = 2 ∗ 3 ∗ e i ( 30 ° + 45 ° ) = 6 ∗ e i 75 ° z_1* z_2 = 2 * 3 *e^{i(30°+45°)} = 6*e^{i75°} z1z2=23ei(30°+45°)=6ei75°:表示模长为6,角度为75°

三、积分运算

1.定积分

定积分是微积分中的一种运算,它可以用来计算一个函数在某个区间上的“总和”,例如面积、体积或累积量。它的表达方式为:
∫ a b f ( x ) d x = F ( b ) − F ( a ) \int_a^bf(x)dx = F(b)-F(a) abf(x)dx=F(b)F(a)

  • f ( x ) f(x) f(x):是被积函数
  • a , b a,b a,b:是积分的上下限
  • d x dx dx:表示对于 x x x的积分
  • F ( x ) F(x) F(x):是 f ( x ) f(x) f(x)的原函数,即 F ′ ( x ) = f ( x ) F'(x) = f(x) F(x)=f(x)

2.不定积分

不定积分是求一个函数的原函数的过程,结果是一个包含常数项 C C C的函数。它的表达方式为:
∫ f ( x ) d x = F ( x ) + C \int f(x)dx = F(x)+C f(x)dx=F(x)+C

  • F ( x ) F(x) F(x):是 f ( x ) f(x) f(x)的原函数$
  • C C C:是积分常数

注意:虽然定积分和不定积分看起来只是没有了上下限,且在 F ( a ) − F ( b ) F(a)-F(b) F(a)F(b)时,积分常数 C C C被相减消失,但是两者有本质的区别,前者用于计算函数区间上的面积(是数值),后者是寻找原函数的,是函数。

3.基本的积分公式

被积函数 f ( x ) f(x) f(x)原函数 ∫ f ( x ) d x \int f(x)dx f(x)dx
x n , n ≠ 1 x^n,n\neq1 xn,n=1 x n + 1 n + 1 + C \frac{x^{n+1}}{n+1}+C n+1xn+1+C
1 x \frac{1}{x} x1 ln ⁡ ∣ x ∣ + C \ln\mid x\mid+C lnx+C
e x e^x ex e x + C e^x+C ex+C
a x , a > 0 a^x,a>0 ax,a>0 a x ln ⁡ a + C \frac{a^x}{\ln a}+C lnaax+C
sin ⁡ x \sin x sinx − cos ⁡ x + C -\cos x+C cosx+C
cos ⁡ x \cos x cosx sin ⁡ x + C \sin x+C sinx+C
sec ⁡ x \sec^x secx tan ⁡ x + C \tan x+C tanx+C
csc ⁡ x \csc^x cscx − cot ⁡ x + C -\cot x+C cotx+C
sec ⁡ x tan ⁡ x \sec x \tan x secxtanx sec ⁡ x + C \sec x +C secx+C
csc ⁡ x cot ⁡ x \csc x\cot x cscxcotx − csc ⁡ x + C -\csc x+C cscx+C

4.积分规则

线性

积分同样具有线性,即满足叠加和齐次性

  • ∫ [ f ( x ) + g ( x ) ] d x = ∫ f ( x ) d x + ∫ g ( x ) d x \int[f(x)+g(x)]dx=\int f(x)dx+\int g(x)dx [f(x)+g(x)]dx=f(x)dx+g(x)dx
  • ∫ c ∗ f ( x ) d x = c ∗ ∫ f ( x ) d x \int c*f(x)dx=c*\int f(x)dx cf(x)dx=cf(x)dx

替换法

对于复合函数,可以通过变量替换(u-substitution)来简化积分。例如:
∫ ( 2 x ) e x 2 d x \int (2x)e^{x^2}dx (2x)ex2dx
u = x 2 , d u = 2 x d x u=x^2,du=2xdx u=x2,du=2xdx,则
∫ e u d u = e u + C = e x 2 + C \int e^udu=e^u+C=e^{x^2}+C eudu=eu+C=ex2+C

分部积分法

分部积分法用于积分两个函数的乘积,公式为:
∫ u d v = u v − ∫ v d u \int udv=uv-\int vdu udv=uvvdu
例如:
∫ x e x d x \int xe^xdx xexdx
u = x , d v = e x d x , d u = d x , v = e x u=x,dv=e^xdx,du=dx,v=e^x u=x,dv=exdx,du=dx,v=ex,则:
∫ x e x d x = x e x − ∫ e x d x = x e x − e x + C \int xe^xdx=xe^x-\int e^xdx=xe^x-e^x+C xexdx=xexexdx=xexex+C

5.定积分计算实例

例如,现在有函数 f ( x ) = x 2 f(x) = x^2 f(x)=x2,那么求 x ∈ [ 1 , 2 ] x \in[1,2] x[1,2]时的面积:
在这里插入图片描述

  • 定积分的理解:
    假设我们把区间 [ a , b ] [a,b] [a,b]分割成 n n n等份,即 Δ x = b − a n , x 0 = a , x 1 = a + Δ , x 2 = a + 2 × Δ , . . . , x n = b \Delta x=\frac{b-a}{n},\quad x_0=a,x_1 = a+\Delta,x_2=a+2\times\Delta,...,x_n=b Δx=nba,x0=a,x1=a+Δ,x2=a+2×Δ,...,xn=b,此时当 n n n趋向无穷大时, f ( x 0 ) = f ( x 1 ) f(x_0) = f(x_1) f(x0)=f(x1),所以面积就变成了 n n n个面积的累加和,就有:
    ∫ a b f ( x ) d x = lim ⁡ n → ∞ ∑ i = 1 n f ( x i ) Δ x \int_a^bf(x)dx = \lim_{n\rightarrow\infty}\sum^n_{i=1}f(x_i)\Delta x abf(x)dx=nlimi=1nf(xi)Δx
  • 结合积分公式得结果
    ∫ 1 2 x 2 d x = F ( 2 ) − F ( 1 ) = 2 2 + 1 2 + 1 − 1 2 + 1 2 + 1 = 8 3 − 1 3 ≈ 2.33 \int_1^2x^2dx=F(2)-F(1)=\frac{2^{2+1}}{2+1}-\frac{1^{2+1}}{2+1}=\frac{8}{3}-\frac{1}{3}\approx 2.33 12x2dx=F(2)F(1)=2+122+12+112+1=38312.33
    在这里插入图片描述

6.简单描述积分在CFT作用

对于连续时间傅里叶变换
F ( ω ) = ∫ − ∞ ∞ f ( t ) e − j w t d t F(\omega)=\int^{\infty}_{-\infty}f(t)e^{-jwt}dt F(ω)=f(t)ejwtdt
f ( t ) f(t) f(t)是时域信号, F ( W ) F(W) F(W)是对应的频域信号,积分的作用是将 f ( t ) f(t) f(t) e − j w t e^{-jwt} ejwt做点积,用来测量 f ( t ) f(t) f(t)在频率 W W W上的投影。换句话说,积分计算了信号在特定频率下的权重(即幅值和相位)。

具体详细过程受文章篇幅影响,在之后的文章中给出详细解释。


总结

在本篇文章中,先介绍了对于傅里叶变换的历史、傅里叶变换的多个公式,以及对于公式中所需要的数学知识做了详细的介绍。结合图形的方式理解欧拉公式中,复指数函数和三角函数的关系,使用复指数函数来表述信号。同时介绍了积分的运算知识,简单描述了积分在傅里叶变换中的作用。

在一篇文章中,将深入解析傅里叶变换公式以及它的应用。

如果对您有所帮助,请帮忙点个赞吧

相关文章:

音频进阶学习八——傅里叶变换的介绍

文章目录 前言一、傅里叶变换1.傅里叶变换的发展2.常见的傅里叶变换3.频域 二、欧拉公式1.实数、虚数、复数2.对虚数和复数的理解3.复平面4.复数和三角函数5.复数的运算6.欧拉公式 三、积分运算1.定积分2.不定积分3.基本的积分公式4.积分规则线性替换法分部积分法 5.定积分计算…...

将4G太阳能无线监控的视频接入电子监控大屏,要考虑哪些方面?

随着科技的飞速发展,4G太阳能无线监控系统以其独特的优势在远程监控领域脱颖而出。这种系统结合了太阳能供电的环保特性和4G无线传输的便捷性,为各种环境尤其是无电或电网不稳定的地区提供了一种高效、可靠的视频监控解决方案。将这些视频流接入大屏显示…...

使用docker拉取镜像很慢或者总是超时的问题

在拉取镜像的时候比如说mysql镜像,在拉取 时总是失败: 像这种就是网络的原因,因为你是连接到了外网去进行下载的,这个时候可以添加你的访问镜像源。也就是daemon.json文件,如果你没有这个文件可以输入 vim /etc/dock…...

Redis数据库笔记

Spring cache 缓存的介绍 在springboot中如何使用redis的缓存 1、使用Cacheable的例子【一般都是在查询的方法上】 /*** 移动端的套餐查询* value 就是缓存的名称* key 就是缓存id ,就是一个缓存名称下有多个缓存,根据id来区分* 这个id一般就是多个查询…...

U盘出现USBC乱码文件的全面解析与恢复指南

一、乱码现象初探:USBC乱码文件的神秘面纱 在数字时代,U盘已成为我们日常生活中不可或缺的数据存储工具。然而,当U盘中的文件突然变成乱码,且文件名前缀显示为“USBC”时,这无疑给用户带来了极大的困扰。这些乱码文件…...

多线程 - 自旋锁

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 多线程 - 自旋锁 收录于专栏[Linux学习] 本专栏旨在分享学习Linux的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 概述 原理 优点与…...

vue2 - Day02 -计算属性(computed)、侦听器(watch)和方法(methods)

在 Vue.js 中,计算属性(computed)、侦听器(watch)和方法(methods)都是响应式的数据处理方式 文章目录 1. 方法(Methods)1.1. 是什么1.2. 怎么用示例: 1.3. 特…...

Linux C 程序 【05】异步写文件

1.开发背景 Linux 系统提供了各种外设的控制方式,其中包括文件的读写,存储文件的介质可以是 SSD 固态硬盘或者是 EMMC 等。 其中常用的写文件方式是同步写操作,但是如果是写大文件会对 CPU 造成比较大的负荷,采用异步写的方式比较…...

Liveweb视频汇聚平台支持WebRTC协议赋能H.265视频流畅传输

随着科技的飞速发展和网络技术的不断革新,视频监控已经广泛应用于社会各个领域,成为现代安全管理的重要组成部分。在视频监控领域,视频编码技术的选择尤为重要,它不仅关系到视频的质量,还直接影响到视频的传输效率和兼…...

SQL组合查询

本文讲述如何利用 UNION 操作符将多条 SELECT 语句组合成一个结果集。 1. 组合查询 多数 SQL 查询只包含从一个或多个表中返回数据的单条 SELECT 语句。但是,SQL 也允许执行多个查询(多条 SELECT 语句),并将结果作为一个查询结果…...

方正畅享全媒体新闻采编系统 screen.do SQL注入漏洞复现

0x01 产品简介 方正畅享全媒体新闻生产系统是以内容资产为核心的智能化融合媒体业务平台,融合了报、网、端、微、自媒体分发平台等全渠道内容。该平台由协调指挥调度、数据资源聚合、融合生产、全渠道发布、智能传播分析、融合考核等多个平台组成,贯穿新闻生产策、采、编、发…...

【机器学习】【集成学习——决策树、随机森林】从零起步:掌握决策树、随机森林与GBDT的机器学习之旅

这里写目录标题 一、引言机器学习中集成学习的重要性 二、决策树 (Decision Tree)2.1 基本概念2.2 组成元素2.3 工作原理分裂准则 2.4 决策树的构建过程2.5 决策树的优缺点(1)决策树的优点(2)决策树的缺点(3&#xff0…...

Flink执行模式(批和流)如何选择

DataStream API支持不同的运行时执行模式(batch/streaming),你可以根据自己的需求选择对应模式。 DataStream API的默认执行模式就是streaming,用于需要连续增量处理并且预计会一直保持在线的无界(数据源输入是无限的)作业。 而batch执行模式则用于有界(输入有限)作业…...

LeetCode:101. 对称二叉树

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:101. 对称二叉树 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输…...

LDO输入电压不满足最小压差时输出会怎样?

1、LDO最小压差 定义:低压差稳压器(Low-dropout regulator,LDO)LDO的最小压差Vdo指的是LDO正常工作时,LDO的输入电压必须高于LDO输出电压的差值,即Vin≥VdoVout   Vdo的值不是定值,会随着负载…...

源码分析之Openlayers中ZoomSlider滑块缩放控件

概述 ZoomSlider滑块缩放控件就是Zoom缩放控件的异形体,通过滑块的拖动或者点击滑槽,实现地图的缩放;另外其他方式控制地图缩放时,也会引起滑块在滑槽中的位置改变;即ZoomSlider滑块缩放控件会监听地图的缩放级别&…...

在Win11系统上安装Android Studio

诸神缄默不语-个人CSDN博文目录 下载地址:https://developer.android.google.cn/studio?hlzh-cn 官方安装教程:https://developer.android.google.cn/studio/install?hlzh-cn 点击Next,默认会同时安装Android Studio和Android虚拟机&#…...

华为ensp--BGP路径选择-AS_Path

学习新思想,争做新青年,今天学习的是BGP路径选择-AS_Path 实验目的: 理解AS_Path属性的概念 理解通过AS_Path属性进行选路的机制 掌握修改AS_Path属性的方法 实验内容: 本实验模拟了一个运营商网络场景,所有路由器都运行BGP协议&#xff…...

Android Java Ubuntu系统如何编译出 libopencv_java4.so

Cmake: cd ~ wget https://github.com/Kitware/CMake/releases/download/v3.30.3/cmake-3.30.3-linux-x86_64.tar.gztar -xzvf cmake-3.30.3-linux-x86_64.tar.gz sudo ln -sf $(pwd)/cmake-3.30.3-linux-x86_64/bin/* /usr/bin/cmake --versionAndroid NDK: wget https://…...

WPF Binding 绑定

绑定是 wpf 开发中的精髓,有绑定才有所谓的数据驱动。 1 . 背景 目前 wpf 界面可视化的控件,继承关系如下, 控件的数据绑定,基本上都要借助于 FrameworkElement 的 DataContext 属性。 只有先设置了控件的 DataContext 属性&…...

算法笔记—前缀和(动态规划)

【模板】前缀和_牛客题霸_牛客网 (nowcoder.com) #include <initializer_list> #include <iostream> #include <vector> using namespace std;int main() {//输入数据int n,q;cin>>n>>q;vector<int> arr;arr.resize(n1);for(int i1;i<…...

将HTML转换为PDF:使用Spire.Doc的详细指南(二)无水印版

目录 引言 一、准备工作 1. 下载Spire.Doc for Java破解版 2. 将JAR包安装到本地Maven (1) 打开命令提示符 (2) 输入安装命令 (3) 在pom.xml中导入依赖 二、实现HTML到PDF的转换 1. 创建Java类 2. 完整代码示例 3. 代码解析 4. 处理图像 5. 性能优化 6. 错误处理…...

V900新功能-电脑不在旁边,通过手机给PLC远程调试网关配置WIFI联网

您使用BDZL-V900时&#xff0c;是否遇到过以下这种问题&#xff1f; 去现场配置WIFI发现没带电脑&#xff0c;无法联网❌ 首次配置WIFI时需使用网线连电脑&#xff0c;不够快捷❌ 而博达智联为解决该类问题&#xff0c;专研了一款网关配网工具&#xff0c;实现用户现场使用手机…...

prober.php探针

raw.githubusercontent.com/kmvan/x-prober/master/dist/prober.php...

esp8266_TFTST7735语音识别UI界面虚拟小助手

文章目录 一 实现思路1 项目简介1.1 项目效果1.2 实现方式 2 项目构成2.1 软硬件环境2.2 完整流程总结&#xff08;重点整合&#xff09;(1) 功能逻辑图(2) 接线(3) 使用esp8266控制TFT屏(4)TFT_espI库配置方法(5) TFT_esp库常用代码详解(6)TFT屏显示图片(7) TFT屏显示汉字(8) …...

【CSS in Depth 2 精译_086】14.3:CSS 剪切路径(clip-path)的用法

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第四部分 视觉增强技术 ✔️【第 14 章 蒙版、形状与剪切】 ✔️ 14.1 滤镜 14.1.1 滤镜的类型14.1.2 背景滤镜 14.2 蒙版 14.2.1 带渐变效果的蒙版特效14.2.2 基于亮度来定义蒙版14.2.3 其他蒙版属…...

【服务器】MyBatis是如何在java中使用并进行分页的?

MyBatis 是一个支持普通 SQL 查询、存储过程和高级映射的持久层框架。它消除了几乎所有的 JDBC 代码和参数的手动设置以及结果集的检索。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java 的 POJO&#xff08;Plain Old Java Objects&#xff0c;普通老式 …...

vue 文本域 展示的内容格式要和填写时保持一致

文本域 展示的内容格式要和填写时保持一致 <el-inputtype"textarea":rows"5"placeholder"请输入内容"v-model"formCredit.point"style"width:1010px;" > </el-input> 样式加个&#xff1a; white-space: pre-w…...

linux-----进程及基本操作

进程的基本概念 定义&#xff1a;在Linux系统中&#xff0c;进程是正在执行的一个程序实例&#xff0c;它是资源分配和调度的基本单位。每个进程都有自己独立的地址空间、数据段、代码段、栈以及一组系统资源&#xff08;如文件描述符、内存等&#xff09;。进程的组成部分&am…...

[Python学习日记-73] 面向对象实战1——答题系统

[Python学习日记-73] 面向对象实战1——答题系统 简介 需求模型——5w1h8c 领域模型 设计模型 实现模型 案例&#xff1a;年会答题系统 简介 在学习完面向对象之后你会发现&#xff0c;你还是不会自己做软件做系统&#xff0c;这是非常正常的&#xff0c;这是因为计算机软…...