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

【傅里叶级数与傅里叶变换】数学推导——3、[Part4:傅里叶级数的复数形式] + [Part5:从傅里叶级数推导傅里叶变换] + 总结


文章内容来自DR_CAN关于傅里叶变换的视频,本篇文章提供了一些基础知识点,比如三角函数常用的导数、三角函数换算公式等。

文章全部链接:
基础知识点
Part1:三角函数系的正交性
Part2:T=2π的周期函数的傅里叶级数展开
Part3:周期为T=2L的函数展开
Part4:傅里叶级数的复数形式
Part5:从傅里叶级数推导傅里叶变换
总结


文章目录

  • Part4:傅里叶级数的复数形式
  • Part5:从傅里叶级数推导傅里叶变换
  • 总结


Part4:傅里叶级数的复数形式

前面的部分得到了对于周期为 T T T的函数,有 L = 2 T L = \frac{2}{T} L=T2其傅里叶级数的展开函数形式:

f ( t ) = a 0 2 + ∑ n = 1 ∞ ( a n c o s n ω t + b n s i n n ω t ) a 0 = 2 T ∫ 0 T f ( t ) d t a n = 2 T ∫ 0 T f ( t ) c o s n ω t d t b n = 2 T ∫ 0 T f ( t ) s i n n ω t d t \begin{align} f(t) & = \frac{a_0}{2} + \sum_{n=1}^{\infty} \left( a_n cos n \omega t + b_n sin n \omega t \right) \\ a_0 & = \frac{2}{T} \int_{0}^{T} f(t) dt \\ a_n & = \frac{2}{T} \int_{0}^{T} f(t) cos n \omega t dt \\ b_n & = \frac{2} {T} \int_{0}^{T} f(t) sin n \omega t dt \end{align} f(t)a0anbn=2a0+n=1(ancost+bnsinnωt)=T20Tf(t)dt=T20Tf(t)costdt=T20Tf(t)sinnωtdt

在了解傅里叶级数的复数形式之前,需要了解欧拉公式

e i θ = c o s θ + i s i n θ e^{i \theta} = cos \theta + i sin \theta eiθ=cosθ+isinθ

由欧拉公式可以得到:

c o s θ = e i θ + e − i θ 2 s i n θ = − i 2 ( e i θ − e − i θ ) \begin{align} cos \theta = \frac{e^{i \theta } + e^{-i \theta}}{2} \\ sin \theta = - \frac{i}{2} (e^{i \theta } - e^{-i \theta}) \end{align} cosθ=2eiθ+eiθsinθ=2i(eiθeiθ)

计算 c o s θ cos \theta cosθ s i n θ sin \theta sinθ的方法,令 θ = − θ \theta = - \theta θ=θ,代入欧拉公式,组成一个方程组:
{ e i θ = c o s θ + i s i n θ e − i θ = c o s θ − i s i n θ \left\{\begin{matrix} e^{i \theta} = cos \theta + i sin \theta \\ e^{-i \theta} = cos \theta - i sin \theta \end{matrix}\right. {eiθ=cosθ+isinθeiθ=cosθisinθ
两式相加得到 c o s θ cos \theta cosθ,两式相减得到 s i n θ sin \theta sinθ


将复数形式得到的 c o s θ cos \theta cosθ s i n θ sin \theta sinθ代入傅里叶级数展开函数,有:

f ( t ) = a 0 2 + ∑ n = 1 ∞ ( a n 2 ( e i n ω t + e − i n ω t ) − i b n 2 ( e i n ω t − e − i n ω t ) ) = a 0 2 + ∑ n = 1 ∞ ( a n − i b n 2 e i n ω t + a n + i b n 2 e − i n ω t ) = a 0 2 + ∑ n = 1 ∞ a n − i b n 2 e i n ω t + ∑ n = 1 ∞ a n + i b n 2 e − i n ω t \begin{align} f(t) & = \frac{a_0}{2} + \sum_{n=1}^{\infty} \left( \frac{a_n}{2} (e^{in \omega t} + e^{-i n \omega t}) - \frac{i b_n} {2} (e^{i n \omega t} - e^{-i n \omega t}) \right) \\ & = \frac{a_0}{2} + \sum_{n=1}^{\infty} \left( \frac{a_n - i b_n}{2} e^{in \omega t} + \frac{a _n + i b_n}{2} e^{-i n \omega t}\right) \\ & = \frac{a_0}{2} + \sum_{n=1}^{\infty} \frac{a_n - i b_n}{2} e^{in \omega t} + \sum_{n=1}^{\infty} \frac{a _n + i b_n}{2} e^{-i n \omega t} \end{align} f(t)=2a0+n=1(2an(einωt+einωt)2ibn(einωteinωt))=2a0+n=1(2anibneinωt+2an+ibneinωt)=2a0+n=12anibneinωt+n=12an+ibneinωt

对上式第三项,令 n = − n n=-n n=n,转换为:

f ( t ) = ∑ n = 0 0 a 0 2 e i n ω t + ∑ n = 1 ∞ a n − i b n 2 e i n ω t + ∑ n = − ∞ − 1 a − n + i b − n 2 e i n ω t f(t) = \sum_{n=0}^{0} \frac{a_0}{2} e^{i n \omega t} + \sum_{n=1}^{\infty} \frac{a_n - i b_n}{2} e^{in \omega t} + \sum_{n=- \infty}^{-1} \frac{a _{-n} + i b_{-n} } {2} e^{i n \omega t} f(t)=n=002a0einωt+n=12anibneinωt+n=12an+ibneinωt

可以发现在区间 ( − ∞ , ∞ ) (- \infty, \infty) (,)之间有共同项 e i n ω t e^{i n \omega t} einωt,令共同项的系数为 C n C_n Cn,那么就得到:

f ( t ) = ∑ − ∞ ∞ C n e i n ω t C n = { a 0 2 , n = 0 1 2 ( a n − i b n ) , n = 1 , 2 , 3 , . . . 1 2 ( a − n + i b − n ) , n = − 1 , − 2 , − 3 , . . . f(t) = \sum_{- \infty}^{\infty} C_n e^{in \omega t} \\ C_n = \left\{\begin{matrix} \frac{a_0}{2}, & n=0 \\ \frac{1}{2}\left( a_n - i b_n \right), & n= 1, 2,3,... \\ \frac{1}{2} \left ( a_{-n} + i b_{-n} \right), & n = -1, -2, -3, ... \end{matrix}\right. f(t)=CneinωtCn= 2a0,21(anibn)21(an+ibn)n=0n=1,2,3,...n=1,2,3,...

a 0 a_0 a0 a n a_n an b n b_n bn代入到 C n C_n Cn

f ( t ) = a 0 2 + ∑ n = 1 ∞ ( a n c o s n ω t + b n s i n n ω t ) a 0 = 2 T ∫ 0 T f ( t ) d t a n = 2 T ∫ 0 T f ( t ) c o s n ω t d t b n = 2 T ∫ 0 T f ( t ) s i n n ω t d t \begin{align} f(t) & = \frac{a_0}{2} + \sum_{n=1}^{\infty} \left( a_n cos n \omega t + b_n sin n \omega t \right) \\ a_0 & = \frac{2}{T} \int_{0}^{T} f(t) dt \\ a_n & = \frac{2}{T} \int_{0}^{T} f(t) cos n \omega t dt \\ b_n & = \frac{2} {T} \int_{0}^{T} f(t) sin n \omega t dt \end{align} f(t)a0anbn=2a0+n=1(ancost+bnsinnωt)=T20Tf(t)dt=T20Tf(t)costdt=T20Tf(t)sinnωtdt

n = 0 n=0 n=0时,

C n = a 0 2 = 1 2 ⋅ 2 T ∫ 0 T f ( t ) d t = 1 T ∫ 0 T f ( t ) d t C_n = \frac{a_0}{2} = \frac{1}{2} \cdot \frac{2}{T} \int_{0}^{T} f(t)dt = \frac{1}{T} \int_{0}^{T} f(t) dt Cn=2a0=21T20Tf(t)dt=T10Tf(t)dt

n > 0 , n ∈ Z n>0, n \in Z n>0,nZ时,

C n = 1 2 [ 2 T ∫ 0 T f ( t ) c o s n ω t d t − i 2 T ∫ 0 T f ( t ) s i n n ω t d t ] = 1 T ∫ 0 T f ( t ) ( c o s n ω t − s i n n ω t ) d t c o s n ω t − s i n n ω t = c o s ( − n ω t ) + s i n ( − n ω t ) = e − i n ω t C n = 1 T ∫ 0 T f ( t ) e − i n ω t d t C_n = \frac{1}{2}\left[ \frac{2}{T} \int_{0}^{T} f(t) cos n \omega t dt - i \frac{2} {T} \int_{0}^{T} f(t) sin n \omega t dt \right] \\ = \frac{1}{T} \int_{0}^{T} f(t) \left ( cos n \omega t - sin n \omega t \right) dt \\ cos n \omega t - sin n \omega t = cos (- n \omega t) + sin (- n \omega t) = e^{- i n \omega t} \\ C_n = \frac{1}{T} \int_{0}^{T} f(t) e^{- i n \omega t} dt Cn=21[T20Tf(t)costdtiT20Tf(t)sinnωtdt]=T10Tf(t)(costsinnωt)dtcostsinnωt=cos(t)+sin(t)=einωtCn=T10Tf(t)einωtdt

n < 0 , n ∈ Z n<0, n \in Z n<0,nZ时,

C n = 1 2 ( a − n + i b − n ) = 1 2 [ 2 T ∫ 0 T f ( t ) c o s ( − n ω t ) d t + i ⋅ 2 T ∫ 0 T f ( t ) s i n ( − n ω t ) d t ] = 1 T ∫ 0 T f ( t ) [ c o s ( − n ω t ) + s i n ( − n ω t ) ] d t = 1 T ∫ 0 T f ( t ) e − i n ω t C_n = \frac{1}{2} \left ( a_{-n} + i b_{-n} \right) \\ = \frac{1}{2} \left[ \frac{2}{T} \int_{0}^{T} f(t) cos \left( - n \omega t \right) dt + i \cdot \frac{2}{T} \int_{0}^{T} f(t) sin (- n \omega t) dt \right] \\ = \frac{1}{T}\int_{0}^{T} f(t) \left[ cos (- n \omega t) + sin (- n \omega t) \right] dt \\ = \frac{1}{T} \int_{0}^{T} f(t) e^{- i n \omega t} Cn=21(an+ibn)=21[T20Tf(t)cos(t)dt+iT20Tf(t)sin(t)dt]=T10Tf(t)[cos(t)+sin(t)]dt=T10Tf(t)einωt

n = 0 n=0 n=0时,

C n = 1 T ∫ 0 T f ( t ) d t = 1 T ∫ 0 T f ( t ) e − i n ω t d t C_n = \frac{1}{T} \int_{0}^{T} f(t) dt = \frac{1}{T} \int_{0}^{T} f(t) e^{- i n \omega t} dt Cn=T10Tf(t)dt=T10Tf(t)einωtdt

从上面可以看出来,在 ( − ∞ , ∞ ) (- \infty , \infty) (,)区间内, C n C_n Cn可以统一到一个形式: C n = 1 T ∫ 0 T f ( t ) e − i n ω t d t C_n = \frac{1}{T} \int_{0}^{T} f(t) e ^{- i n \omega t}dt Cn=T10Tf(t)einωtdt


总结,对于一个周期为 T T T的函数 f ( t ) = f ( t + T ) f(t) = f(t+T) f(t)=f(t+T),其复数形式的傅里叶展开函数为:
f ( t ) = ∑ − ∞ ∞ C n e i n ω t C n = 1 T ∫ 0 T f ( t ) e − i n ω t d t f(t) = \sum_{- \infty}^{\infty} C_n e^{i n \omega t} \\ C_n = \frac{1}{T} \int_{0}^{T} f(t) e^{- i n \omega t}dt f(t)=CneinωtCn=T10Tf(t)einωtdt


Part5:从傅里叶级数推导傅里叶变换

前面得到了周期函数复数形式的傅里叶展开函数,令 ω 0 = 2 π T \omega _0 = \frac{2 \pi}{T} ω0=T2π ω 0 \omega_0 ω0被称为基频率。

f T ( t ) = ∑ − ∞ ∞ C n e i n ω 0 t C n = 1 T ∫ − T 2 T 2 f T ( t ) e − i n ω 0 t d t 其中 n ∈ Z \begin{align} & f_T(t) = \sum_{- \infty}^{\infty} C_n e^{i n \omega_0 t} \\ & C_n = \frac{1}{T} \int_{- \frac{T}{2}}^{\frac{T}{2}} f_T(t) e^{- i n \omega_0 t}dt \\ & 其中n \in Z \end{align} fT(t)=Cneinω0tCn=T12T2TfT(t)einω0tdt其中nZ

对于一个周期函数,假设其图示如下,横坐标为 t t t,纵坐标为对应的值,这是在时域空间上的图。

在这里插入图片描述

如果采用如下图所示的坐标系,以 n ω 0 n \omega_0 nω0 x x x坐标,实轴和虚轴分别为 z z z y y y坐标,这是在频域空间上的图,也称为频谱图。可能其分布如下(如下值是随机绘制的,不对应上图,假设存在这样的频谱图)。

在这里插入图片描述

令两个频率之间的距离为 Δ ω \Delta \omega Δω,那么 Δ ω = ( n + 1 ) ω 0 − n ω 0 = ω 0 = 2 π T \Delta \omega = (n+1) \omega_0 - n \omega_0 = \omega_0 = \frac{2 \pi}{T} Δω=(n+1)ω0nω0=ω0=T2π,可以得到 1 T = Δ ω 2 π \frac{1}{T} = \frac{\Delta \omega}{2 \pi} T1=2πΔω

当周期 T T T趋近于 ∞ \infty 时,周期函数就变为了非周期函数 lim ⁡ T → ∞ f T ( t ) = f ( t ) \lim_{T \to \infty} f_T(t) = f(t) limTfT(t)=f(t) Δ ω \Delta \omega Δω就变成了0,从而离散函数变为了连续函数。

C n C_n Cn 1 T \frac{1}{T} T1代入到傅里叶级数展开函数:

f T ( t ) = ∑ − ∞ ∞ Δ ω 2 π ∫ − T 2 T 2 f T ( t ) e − i n ω 0 t d t e i n ω 0 t f_T(t) = \sum_{- \infty}^{\infty} \frac{\Delta \omega}{2 \pi} \int_{-\frac{T}{2}}^{\frac{T}{2}} f_T(t) e^{-i n \omega_0 t} dt e^{i n \omega_0 t} fT(t)=2πΔω2T2TfT(t)einω0tdteinω0t

T → ∞ T \to \infty T时,令 n ω 0 = ω n \omega_0 = \omega nω0=ω ∫ − T 2 T 2 d t → ∫ − ∞ ∞ d t \int_{- \frac{T}{2}}^{\frac{T}{2}} dt \to \int_{- \infty}^{\infty} dt 2T2Tdtdt ∑ − ∞ ∞ Δ ω → ∫ − ∞ ∞ d ω \sum_{- \infty}^{\infty} \Delta \omega \to \int_{- \infty}^{\infty} d \omega Δωdω。代入到上面的式子:

lim ⁡ T → ∞ f T ( t ) = f ( t ) = 1 2 π ∫ − ∞ ∞ ( ∫ − ∞ ∞ f ( t ) e − i ω t d t ) e i ω t d ω \lim_{T \to \infty} f_T(t) = f(t) = \frac{1}{2 \pi} \int_{- \infty}^{\infty} \left( \int_{- \infty}^{\infty} f(t) e^{- i \omega t} dt \right) e^{i \omega t} d \omega TlimfT(t)=f(t)=2π1(f(t)etdt)etdω

中间括号括起来的部分就是傅里叶变换函数 F ( ω ) = ∫ − ∞ ∞ f ( t ) e − i ω t d t F(\omega) = \int_{- \infty}^{\infty} f(t) e^{- i \omega t} dt F(ω)=f(t)etdt,而 f ( t ) = 1 2 π ∫ − ∞ ∞ f ( T ) e i ω t d ω f(t) = \frac{1}{2 \pi} \int_{- \infty}^{\infty} f(T) e^{i \omega t} d \omega f(t)=2π1f(T)etdω是傅里叶变换的逆变换。


总结

在Part1中,认识到三角函数系的正交性,有:

∫ − π π s i n n x c o s m x = 0 ∫ − π π c o s n x s i n m x = 0 ∫ − π π c o s n x c o s m x = { 0 , m ≠ n 2 π , m = n = 0 π , m = n ≠ 0 ∫ − π π s i n n x c o s m x = { 0 , m ≠ n 或 m = n = 0 π , m = n ≠ 0 \begin{align} & \int_{-\pi}^{\pi} sin n x cos m x = 0 \\ & \int_{- \pi}^{\pi}cos n x sin m x = 0 \\ & \int_{- \pi}^{\pi} cos n x cos m x = \left\{ \begin{matrix} 0 , & m \ne n \\ 2 \pi , & m = n =0 \\ \pi , & m = n \ne 0 \end{matrix} \right. \\ & \int_{- \pi}^{\pi} sin n x cos m x = \left\{ \begin{matrix} 0, & m \ne n 或 m = n =0 \\ \pi , & m = n \ne 0 \end{matrix} \right. \end{align} ππsinnxcosmx=0ππcosnxsinmx=0ππcosnxcosmx= 0,2π,π,m=nm=n=0m=n=0ππsinnxcosmx={0,π,m=nm=n=0m=n=0

在Part2中,推导了 T = 2 π T = 2 \pi T=2π的周期函数的傅里叶级数展开为:

f ( x ) = a 0 2 + ∑ n = 1 ∞ ( a n c o s n x + b n s i n n x ) f(x) = \frac{a_0}{2} + \sum_{n=1}^{\infty}\left( a_n cos nx + b_n sin nx \right) f(x)=2a0+n=1(ancosnx+bnsinnx)

计算 a 0 a_0 a0,对 f ( x ) f(x) f(x)在区间 [ − π , π ] [-\pi, \pi] [π,π]之间积分,得到 a 0 = 1 π ∫ − π π f ( x ) d x a_0 = \frac{1}{\pi} \int_{-\pi}^{\pi}f(x)dx a0=π1ππf(x)dx
计算 a n a_n an,等式两边同乘以 c o s m x cos mx cosmx,然后计算在 [ − π , π ] [- \pi, \pi] [π,π]之间的积分,得到 a n = 1 π ∫ − π π f ( x ) c o s n x d x a_n = \frac{1}{\pi} \int_{-\pi}^{\pi} f(x) cos nx dx an=π1ππf(x)cosnxdx

计算 b n b_n bn,等式两边同乘以 s i n m x sin mx sinmx,然后计算在 [ − π , π ] [-\pi, \pi] [π,π]之间的积分,得到 b n = 1 π ∫ − π π f ( x ) s i n n x d x b_n = \frac{1}{\pi} \int_{-\pi}^{\pi} f(x) sin nx dx bn=π1ππf(x)sinnxdx

在Part3中,推导了 T = 2 L T=2L T=2L的周期函数的傅里叶级数展开为,令 x = π L t → t = L π x x = \frac{\pi}{L}t \to t = \frac{L}{\pi}x x=Lπtt=πLx,将 x x x代入Part2中的公式,得到:

f ( t ) = a 0 2 + ∑ n = 1 ∞ ( a n c o s n π L t + b n s i n n π L t ) a 0 = 1 L ∫ − L L f ( t ) d t a n = 1 L ∫ − L L f ( t ) c o s n π L t d t b n = 1 L ∫ − L L f ( t ) s i n n π L d t \begin{align} & f(t) = \frac{a_0}{2} + \sum_{n=1}^{\infty} \left(a_n cos \frac{n \pi}{L}t + b_n sin \frac{n \pi}{L}t \right) \\ & a_0 = \frac{1}{L} \int_{-L}^{L} f(t) dt \\ & a_n = \frac{1}{L} \int_{-L}^{L} f(t) cos \frac{n \pi}{L}t dt \\ & b_n = \frac{1}{L} \int_{-L}^{L} f(t) sin \frac{n \pi}{L}dt \end{align} f(t)=2a0+n=1(ancosLt+bnsinLt)a0=L1LLf(t)dtan=L1LLf(t)cosLtdtbn=L1LLf(t)sinLdt

在Part4中,使用欧拉公式,用复指数的形式得到周期为 T T T的周期函数的傅里叶级数展开,该形式使得函数看起来更简洁,经过一系列变换,用 C n C_n Cn替代了上面复杂的系数,令 ω 0 = 2 π T \omega _0 = \frac{2 \pi}{T} ω0=T2π

f ( t ) = ∑ − ∞ ∞ C n e i n ω 0 t C n = 1 T ∫ 0 T f ( t ) e − i n ω 0 t d t f(t) = \sum_{- \infty}^{\infty} C_n e^{i n \omega_0 t} \\ C_n = \frac{1}{T} \int_{0}^{T} f(t) e^{-i n \omega_0 t}dt f(t)=Cneinω0tCn=T10Tf(t)einω0tdt

在Part5中,从傅里叶级数展开函数推导出傅里叶变换及反变换函数。当周期 T T T趋近于 ∞ \infty 时,周期函数会变为非周期函数,此时从离散数据变为了连续数据,令 ω = n ω 0 \omega = n \omega_0 ω=nω0;又有 ∑ − ∞ ∞ ω 0 → ∫ − ∞ ∞ d ω \sum_{- \infty}^{\infty} \omega_0 \to \int_{-\infty}^{\infty}d \omega ω0dω ∫ 0 T d t → ∫ − ∞ ∞ d t \int_{0}^{T} dt \to \int_{- \infty}^{\infty} dt 0Tdtdt,就得到非周期函数的傅里叶级数展开函数为:

f ( t ) = 1 2 π ∫ − ∞ ∞ ( ∫ − ∞ ∞ f ( t ) e − i ω t d t ) e i ω t d ω f(t) = \frac{1}{2 \pi} \int_{-\infty}^{\infty} \left ( \int_{- \infty}^{\infty} f(t)e ^{- i \omega t} dt \right) e^{i \omega t } d \omega f(t)=2π1(f(t)etdt)etdω

中间括号部分就是傅里叶变换函数$F(\omega) = \int_{- \infty}^{\infty} f(t) e^{-i \omega t} dt ,而 ,而 ,而f(t) = \frac{1}{2 \pi} \int_{- \infty}^{\infty}F(\omega) e^{i \omega t} d \omega$是傅里叶变换的逆变换。

相关文章:

【傅里叶级数与傅里叶变换】数学推导——3、[Part4:傅里叶级数的复数形式] + [Part5:从傅里叶级数推导傅里叶变换] + 总结

文章内容来自DR_CAN关于傅里叶变换的视频&#xff0c;本篇文章提供了一些基础知识点&#xff0c;比如三角函数常用的导数、三角函数换算公式等。 文章全部链接&#xff1a; 基础知识点 Part1&#xff1a;三角函数系的正交性 Part2&#xff1a;T2π的周期函数的傅里叶级数展开 P…...

第二章MyBatis入门程序

入门程序 创建maven程序 导入MyBatis依赖。pom.xml下导入如下依赖 <dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><dependen…...

AgentBench::AI智能体发展的潜在问题(二)

从历史上看&#xff0c;几乎每一种新技术的广泛应用都会在带来新机遇的同时引发很多新问题&#xff0c;AI智能体也不例外。从目前的发展看&#xff0c;AI智能体的发展可能带来的新问题可能包括如下方面&#xff1a; 第二是AI智能体的普及将有可能进一步加剧AI造成的技术性失业。…...

C++中的运算符总结(4):逻辑运算符(上)

C中的运算符总结&#xff08;4&#xff09;&#xff1a;逻辑运算符&#xff08;上&#xff09; 8、逻辑运算 NOT、 AND、 OR 和 XOR 逻辑 NOT 运算用运算符!表示&#xff0c;用于单个操作数。表 1是逻辑 NOT 运算的真值表&#xff0c;这种运算将提供的布尔标记反转&#xff1…...

Flink安装与使用

1.安装准备工作 下载flink Apache Flink: 下载 解压 [dodahost166 bigdata]$ tar -zxvf flink-1.12.0-bin-scala_2.11.tgz 2.Flinnk的standalone模式安装 2.1修改配置文件并启动 修改&#xff0c;好像使用默认的就可以了 [dodahost166 conf]$ more flink-conf.yaml 启动 …...

CentOS系统环境搭建(七)——Centos7安装MySQL

centos系统环境搭建专栏&#x1f517;点击跳转 坦诚地说&#xff0c;本文中百分之九十的内容都来自于该文章&#x1f517;Linux&#xff1a;CentOS7安装MySQL8&#xff08;详&#xff09;&#xff0c;十分佩服大佬文章结构合理&#xff0c;文笔清晰&#xff0c;我曾经在这篇文章…...

3.react useRef使用与常见问题

react useRef使用与常见问题 文章目录 react useRef使用与常见问题1. Dom操作: useRef()2. 函数组件的转发: React.forwardRef()3. 对普通值进行记忆, 类似于一个class的实例属性4. 结合useEffect,只在更新时触发FAQ 1. Dom操作: useRef() // 1. Dom操作: useRef()let app doc…...

Axios使用CancelToken取消重复请求

处理重复请求&#xff1a;没有响应完成的请求&#xff0c;再去请求一个相同的请求&#xff0c;会把之前的请求取消掉 新增一个cancelRequest.js文件 import axios from "axios" const cancelTokens {}export const addPending (config) > {const requestKey …...

九耶丨阁瑞钛伦特-Spring boot与Spring cloud 之间的关系

Spring Boot和Spring Cloud是两个相互关联的项目&#xff0c;它们可以一起使用来构建微服务架构。 Spring Boot是一个用于简化Spring应用程序开发的框架&#xff0c;它提供了自动配置、快速开发的特性&#xff0c;使得开发人员可以更加轻松地创建独立的、生产级别的Spring应用程…...

总结,由于顺丰的问题,产生了电脑近期一个月死机问题集锦

由于我搬家&#xff0c;我妈搞顺丰发回家&#xff0c;但是没有检查有没有坏&#xff0c;并且我自己由于不可抗力因素&#xff0c;超过了索赔时间&#xff0c;反馈给顺丰客服&#xff0c;说超过了造成了无法索赔的情况&#xff0c;现在总结发生了损坏配件有几件&#xff0c;显卡…...

C#程序配置读写例子 - 开源研究系列文章

今天讲讲关于C#的配置文件读写的例子。 对于应用程序的配置文件&#xff0c;以前都是用的ini文件进行读写的&#xff0c;这个与现在的json类似&#xff0c;都是键值对应的&#xff0c;这次介绍的是基于XML的序列化和反序列化的读写例子。对于ini文件&#xff0c;操作系统已经提…...

Angular中的管道Pipes

Angular中的管道&#xff08;Pipes&#xff09;是一种强大的工具&#xff0c;它可以处理和转换数据&#xff0c;然后将其呈现在视图中。它们可以被用于排序、格式化和过滤数据等任务。在本文中&#xff0c;我们将介绍Angular中的管道以及如何使用它们来简化开发过程。 管道的基…...

React入门 jsx学习笔记

一、JSX介绍 概念&#xff1a;JSX是 JavaScript XML&#xff08;HTML&#xff09;的缩写&#xff0c;表示在 JS 代码中书写 HTML 结构 作用&#xff1a;在React中创建HTML结构&#xff08;页面UI结构&#xff09; 优势&#xff1a; 采用类似于HTML的语法&#xff0c;降低学…...

sqlserver数据库中把一张表中的数据复制到另一张表中

我们在使用ERP时经常会遇到&#xff0c;把老系统的单据直接拉过来使用&#xff0c;但是对应的数据却没有&#xff0c;为空&#xff0c;这时候就需要把老系统数据库里的数据复制一份到新系统里&#xff0c;&#xff08;方法如下&#xff09; 1、如果是整个表复制表达如下&#…...

el-table 多个表格切换多选框显示bug

今天写了个功能&#xff0c;点击左侧的树做判断&#xff0c;一级树节点显示系统页面&#xff0c;二级树节点显示数据库页面&#xff0c;三级树节点显示表页面。 数据库页面和表页面分别有2个el-table ,上面的没有多选框&#xff0c;下面的有多选框 现在出现bug&#xff0c;在…...

UE5.2程序发布及运行问题记录

发布后的程序默认是以全屏模式启动运行的&#xff0c;通过添加以下命令行参数&#xff0c;可实现程序的窗口模式运行&#xff1a; -ResX1280 -ResY720 -WINDOWED 发布后的程序&#xff0c;启动时&#xff0c;提示显卡驱动警告&#xff08;如图1所示&#xff09;&#xff0c;但是…...

c语言strtol函数、strtod函数、strtoul函数浅悉

---------------- | strtol | ---------------- i.e. string to long long int strtol(const char *nptr, char **endptr, int base) strtol()会将nptr指向的字符串&#xff0c;根据参数base&#xff0c;按权转化为long int, 然后返回这个值。 参数base的范…...

Spark第三课

1.分区规则 1.分区规则 shuffle 1.打乱顺序 2.重新组合 1.分区的规则 默认与MapReduce的规则一致,都是按照哈希值取余进行分配. 一个分区可以多个组,一个组的数据必须一个分区 2. 分组的分区导致数据倾斜怎么解决? 扩容 让分区变多修改分区规则 3.HashMap扩容为什么必须…...

LangChain手记 Chains

整理并翻译自DeepLearning.AILangChain的官方课程&#xff1a;Chains&#xff08;源代码可见&#xff09; Chains 直译链&#xff0c;表达的意思更像是对话链&#xff0c;对话链的背后是思维链 LLM Chain&#xff08;LLM链&#xff09; 首先介绍了一个最简单的例子&#xff0c…...

ONNX版本YOLOV5-DeepSort (rknn版本已经Ready)

目录 1. 前言 2. 储备知识 3. 准备工作 4. 代码修改的地方 5.结果展示 1. 前言 之前一直在忙着写文档&#xff0c;之前一直做分类&#xff0c;检测和分割&#xff0c;现在看到跟踪算法&#xff0c;花了几天时间找代码调试&#xff0c;看了看&#xff0c;展示效果比单纯的检…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

微信小程序之bind和catch

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

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...