Fourier分析入门——第6章——连续函数的Fourier分析

目录

第 6 章  连续函数的Fourier分析

6.1 引言

6.2 Fourier模型

6.3 求取Fourier系数的实用方法

6.4  相关定理

6.4.1 线性定理(linearity)

6.4.2 平移定理(Shift theorem)

6.4.3 伸缩定理(Scaling theorem)

6.4.4 微分定理(Differentiation theorem)

6.4.5 积分定理(Integration theorem)

6.4.6 非正弦基函数(Integration theorem)


第 6 章  连续函数的Fourier分析

6.1 引言

在第 3 章的介绍中,我们提出了一个问题,即在有限的时间或空间区间上定义的任意函数是否可以表示为一系列加权正弦曲线的总和。我们当时暂时推迟回答这个问题,因为我们处理的是一个更简单的问题,即采样函数是否可以用采样正弦曲线的加权和来表示。 我们发现确实可以通过具有 D 系数的Fourier级数模型精确地拟合一组 D 数据点。 在此过程中,我们开发了简单的公式,使我们能够为任何数据值向量计算这些未知的Fourier系数。 然后,在第 5 章中,我们回到了最初的问题,并通过扩展这些结果证明了在有限区间上定义的连续函数将具有带宽无限大的离散频谱。这是图 5.1 中所示的情况 3。 现在的任务是为这种情况制定一个合适的模型,然后确定计算未知Fourier系数的公式。

6.2 Fourier模型

对于一个任意实数函数 𝗒(𝗑),我们希望在有限区间上用一个具有无限项的Fourier级数准确地表示这个函数。因此,我们寻求的这个模型正是等式[3.34]扩展到无限项的谐波。首先,为了简化记法,我们假设函数 𝗒(𝗑) 定义在区间(-π,π)上,因此,Fourier级数是

y(x) = \frac{a_0}{2} + \sum_{k=1}^{+\infty}[a_k cos(kx)+b_k sin(kx)] x 取区间(-π,π)上任意值-------------------------[6.1]

先前用于确定未知Fourier系数的方法是计算给定离散函数与模型基函数的内积。在离散情况下,基函数是采样三角函数。现在,在连续情况下,基函数是连续三角函数。因此,我们需要依次用各谐波函数构成等式 [6.1]的内积。例如,为了求得第 k 阶谐波系数 a_k,我们用基函数构成内积并检查和式中的每一项

 cos(kx)\bullet f(x) = cos(kx)\bullet a_0/2

+ cos(kx)\bullet a_1cos(x) + cos(kx)\bullet b_1sin(x)

+ cos(kx)\bullet a_2cos(2x) + cos(kx)\bullet b_2sin(2x)

+ cos(kx)\bullet a_3cos(3x) + cos(kx)\bullet b_3sin(3x)

+ ...

+ cos(kx)\bullet a_kcos(kx) + cos(kx)\bullet b_ksin(kx)

+ ...

= a_k cos(kx) \bullet cos (kx)

= a_k\pi----------------------------------------------------------------------------------------------[6.2]

注意,等式[6.2]右边的无穷级数由于内积的正交性萎缩为一项。根据等式[5.7], cos(kx)• cos (kx)等于L/2 = π 。因为,我们可以从等式[6.2]推导出,系数 a_k 的计算公式为

a_k = \frac{1}{\pi}cos(kx)\bullet f (x) = \frac{1}{\pi}\int_{-\pi}^{\pi} y(x) cos(kx)dx -------------------------------[6.3]

注意,这个公式也适用于常数项 a_0 ,因为,假如 k = 0,则等式[6.3]产生2倍均值。当这个结果被插入到等式[6.1]中的模型时,常量项正是函数 𝗒(𝗑)所求的均值。类似的推理线路导出了正弦系数 a_k 的类似公式

b_k = \frac{1}{\pi}\int_{-\pi}^{\pi} y(x)sin(kx)dx -------------------------------------------------------------[6.4]

为了获得当函数 𝗒(𝗑) 是定义在任意长度为 L 的有限区间上时适用的更通用的公式,我们用 2πx/L代替x (译注:即角速度ω = 2π/L ,则随变量 x 转过的弧度数为 ωx = 2πx/L ),得到

y(x) = \frac{a_0}{2} + \sum_{k=1}^{+\infty}[a_k cos(2\pi kx/L)+b_k sin(2\pi kx/L)] ,

其中,

a_k = \frac{2}{L} \int_{L_0}^{L_0+L}y(x)cos(2\pi kx/L)dx

b_k = \frac{2}{L} \int_{L_0}^{L_0+L}y(x)sin(2\pi kx/L)dx -------------------------------------------------[6.5]

最后这个结果是教科书上常见的Fourier级数形式,因为它足够通用,可以分析任意起点的一个完整周期。

   等式 [6.1] 的三角模型仅对实值函数有用。 然而,我们可以扩展模型以包括复数值函数,就像我们之前对离散函数所做的那样(参见等式 [4.14])。 为此,Fourier级数模型用复数系数表示为

y(x) = \sum_{k=-\infty}^{+\infty}c_k e^{i(2\pi kx/L)} ------------------------------------------------------------[6.6]

其中,我们从等式 [4.12] 和 [6.5] 中获取复数系数定义的灵感:

c_k = \frac{a_k-ib_k }{2} (k > 0)

c_k = \frac{a_k+ib_k }{2} (k < 0)

c_k = \frac{1}{L} \int_{L_0}^{L_0+L}y(x)cos(2\pi kx/L)dx-i\frac{1}{L} \int_{L_0}^{L_0+L}y(x)sin(2\pi kx/L)dx

 = \frac{1}{L} \int_{L_0}^{L_0+L}y(x)e^{-i(2\pi kx/L)}dx ---------------------------------------------------------[6.7]

在该模型中,连续复数指数是表示任何复值函数的正交基函数。由于实数值函数只是复值函数的特例,等式[6.6]的模型包含等式[6.1]的模型,因此在教科书中通常是首选。

6.3 求取Fourier系数的实用方法

上一节已经证明,有限区间内的离散函数和连续函数的傅里叶分析在概念上几乎没有区别。然而,从实际的角度来看,计算模型Fourier系数的机制存在很大差异。任何会算术的人都可以计算离散函数Fourier分析中所需的内积。 但是,要对连续函数进行Fourier分析,需要具备计算微积分的能力。如果认为计算积分是最后的手段,那么下面几种替代策略值得探索。

(1) 在参考书上查一下。许多常见波形的频谱已经确定,答案在数学函数手册中(例如,参见 Bracewell 的Fourier变换对(pairs)图解词典)。

(2) 使用对称参数断言某些系数为零。

(3) 将给定的函数分解为已知Fourier级数的更多初等函数的总和。由于线性特性,函数之和的频谱等于它们的频谱之和。

(4) 通过采样D次来逼近已经函数,并在数值上计算对应的有限Fourier级数。

(5) 使用定理从现有的Fourier级数推导出新的Fourier级数,而不是做许多额外工作。

(6) 使用蛮力法(brute force)并进行微积分。一个有效的策略是将谐波数 k 保留为一个变量,以便生成一个公式,该公式可以同时确定所有Fourier系数。

下面的示例使用了对称方法和蛮力方法的组合。问题是找到符合图 6.1 所示连续函数的Fourier级数模型。尽管该函数仅在区间(-π,π)上定义,但Fourier级数也将拟合通过复制 𝗒(𝗑) 获得的周期函数以形成“方波(square waves)”。 对于给定函数,我们首先以计算等式[6.5]开始,并观察到被积函数具有奇对称性,因此所有余弦系数都为零,

a_k = \frac{1}{\pi}\int_{-\pi}^{\pi}y(x)cos(kx)dx = \frac{1}{\pi}\int_{-\pi}^{\pi} O(x)E(x)dx = 0 -----------------------------------------[6.8]

为了求得正弦系数,我们计算等式 [6.4] 并注意到,因为这个积分是偶数,因此积分简化为

b_k = \frac{1}{\pi}\int_{-\pi}^{\pi}y(x)sin(kx)dx = \frac{2}{\pi}\int_{0}^{\pi} y(x) sin(kx)dx

= \frac{2}{\pi}\int_{0}^{\pi} sin(kx)dx= \frac{2}{\pi}[-\frac{cos(kx)}{k}]\vert_{0}^{\pi}

=\frac{2}{k\pi}[1-cos(kx)]-----------------------------------------------------------------------------------------------[6.9]

估计前面几个谐波,我们看到

b_1=\frac{2}{\pi}[1-cos(\pi)]=\frac{4}{\pi}

b_2=\frac{2}{2\pi}[1-cos(2\pi)]=0

b_3=\frac{2}{3\pi}[1-cos(3\pi)]=\frac{4}{3\pi} --------------------------------------------------------------------------------[6.10]

这表明对所有系数的通用公式:

b_k = 0 (k = 偶数)

b_k=\frac{4}{k\pi} (k = 奇数) -----------------------------------------------------------------------------------------------[6.11]

将这些系数代回等式[6.1]的模型,我们得到

y(x) = \frac{4}{\pi} [sin(x) + \frac{1}{3} sin(3x) + \frac{1}{5} sin(5x) + ... ]

= \frac{4}{\pi}\sum_{k=odd}^{}[\frac{sin(kx)}{k}] -------------------------------------------------------------------------------------------[6.12]

因此,我们有“正弦相位(sine phase)”方波的Fourier级数模型。对于“余弦相位(cosine phase)”的方波可以确定类似的公式。

 ----------------------------------图 6.1 方波的Fourier分析------------------------------------------------------------

6.4  相关定理

6.4.1 线性定理(linearity)

   描述Fourier分析的一种常见方式是线性运算(linear operation)。任何线性运算都有两个与缩放和相加有关的通用属性。在当前背景下,这些属性是:

(a) 假如函数 f (x) 具有Fourier系数 a_k 和 b_k  ,则通过常量伸缩因子s 以产生新的函数 g (x) = s . f (x),也将同样伸缩其 Fourier 系数。即,g (x) 的Fourier系数将为 s .a_k 和 s .b_k 。通过将新函数代入等式 [6.5] 中的系数生成函数,可以轻松验证该定理。

(b) 假如函数 f (x) 具有Fourier系数  a_k 和 b_k ,函数 g(x) 具有Fourier系数 \alpha_k 和 \beta_k ,则函数 f (x) + g(x) 则具有Fourier系数 a_k+\alpha_k 和 b_k+\beta_k 。该定理源于等式中的积分这一事实。 [6.5]本身是线性运算,所以如果被积函数是两个函数之和,积分可以分解为两个积分之和,分别对应分量函数f g的Fourier系数。

6.4.2 平移定理(Shift theorem)

如果时间或空间参考系的原点移动了 𝗑',则效果是在函数的频谱中引起相移。如果原始函数 f (x) 由极坐标形式 

y(x) = \frac{a_0}{2} + \sum_{k=1}^{+\infty}m_k \cdot cos(kx-\Phi_k)  --------------------------------------------------------------[6.13]

的Fourier级数给出,则这个结果很容易用代数方法证明。接下来,我们通过将原点移动数量 𝗑' 从 y(x) 得到 g(x) 。在数学上,通过将量 xx’ 代入 x 可以求得 g(x)

g(x)=y(x-x')=\frac{a_0}{2} + \sum_{k=1}^{+\infty}m_k \cdot cos(kx-kx'-\Phi_k) ----------------------------------[6.14]

换句话说,这个等式表示,为了计算 g(x),我们从 x 中减去数量 x´,并将结果提交给函数 y。 结果是Fourier系数的大小不受影响,但每个谐波项的相位增加了 kx´ 量。 图 6.2 中显示了一个示例,其中函数 y(x) 具有两个谐波分量。请注意,数量 x = π/2 的横向偏移会使基波的相位偏移 1/4 个周期,而对二次谐波的影响是 1/2 个周期的相移。

-----------------------------------图 6.2 X轴平移产生相移------------------------------------------------------

f (x) 的频谱用复数Fourier 级数

y(x) = \sum_{k=-\infty}^{+\infty}c_k e^{ikx} --------------------------------------------------------------------------------------[6.15]

表示的时候,以上结论同样可以很容易地使用代数方法证明。

g(x) = y( xx’) 为 ( x ) 的平移函数,且在等式[6.15]中用 xx’ 代入 x ,得到 g(x) 的频谱

g(x) = \sum_{k=-\infty}^{+\infty}c_k e^{ik(x-x')}

=\sum_{k=-\infty}^{+\infty}(c_k e^{-ikx'})e^{ikx}------------------------------------------------------------------------------------[6.16]

因此,新的Fourier系数可以看成是原来系数的 e^{ikx'} 倍。但我们从第2章知道,用单位相量 e^{i\theta} 的乘法具有对已知相量按角 θ 旋转的效果,也就是说相量按θ 的量平移。注意到,平移的相量数直接与谐波数 k 和位移数(displacement)x’ 成正比。

虽然在代数上更麻烦,但该定理的笛卡尔形式可能会为学生提供一些见解。假如函数f (x)由Fourier级数

y(x) = \frac{a_0}{2} + \sum_{k=1}^{+\infty}[a_{k}cos(kx)+b_{k}sin(kx)] -----------------------------------------------------[6.17]

给出,且 g(x) 是从 f (x) 按 x’ 平移原点而获得

g(x) = \frac{a_0}{2} + \sum_{k=1}^{+\infty}[a_{k}cos(k(x-x'))+b_{k}sin(k(x-x'))]。------------------------------[6.18]

按照标准Fourier级数重写最后一个等式,于是就产生了一个新的Fourier系数

g(x) = \frac{a_0}{2} + \sum_{k=1}^{+\infty}[a_{k}'cos(kx)+b_{k}'sin(kx)]------------------------------------------------------[6.19]

我们应用等式[2.7]的三角恒等式

cos(α + δ ) = cos(α) cos(δ )- sin(α) sin(δ )

sin(α + δ ) = cos(α) sin(δ )+ sin(α) cos(δ ) 。--------------------------[2.7]

为了理解如何证明这个结论,考虑阶谐波项

a_k.cos(k(x-x'))+b_k.sin(k(x-x'))

= a_k \cdot [cos(kx) cos(kx')+sin(kx) sin(kx')]+b_k \cdot [sin(kx)cos(kx')-cos(kx)sin(kx')]

= [a_kcos(kx') -b_ksin(kx')]cos(kx) + [b_kcos(kx')+a_ksin(kx')]sin(kx)------------[6.20]

因此,新的Fourier系数是

a_k' =a_kcos(kx')-b_ksin(kx')

b_k' =b_kcos(kx')+a_ksin(kx') -------------------------------------------------------------------------[6.21]

这被识别为相量 (a_k,b_k) 的旋转版。与以上所求得的极坐标形式的解一致,旋转量是 kx

6.4.3 伸缩定理(Scaling theorem)

如果时间或空间参考系的尺度按因子 s 变化,则效果是反向缩放函数频谱的频率轴。假如函数f (x)由Fourier级数

y(x) = \frac{a_0}{2} + \sum_{k=1}^{+\infty}[a_k cos(2\pi kx/L)+b_k sin(2\pi kx/L)]------------------------------[6.22]

给出,这个结论就很容易在代数上加以证明。我们现在通过按伸缩因子伸缩x轴从 y(x) 创建新的函数 g(x) 。可以推断,我们仅需用量 sx 代替 x 即可产生函数g(x),即

g(x) = \frac{a_0}{2} + \sum_{k=1}^{+\infty}[a_k cos(2\pi ksx/L)+b_k sin(2\pi ksx/L)] --------------------------[6.23]

总之,这个等式指的是,为了计算 g(x),我们用常量 s 乘以自变量 x,并将乘积结果作为函数 y 的自变量提交给函数 y 。 这个结论表明,现在,每个谐波的新频率是旧频率的 s 倍。另一种说法是,频谱被拉伸了 1/s 倍。 图 6.3 显示了 s = 2 情况的图形示例。

-----------------------------------图 6.3 X轴缩放扩展频谱-----------------------------------------------------

如果从谐波数而不是物理频率的角度来考虑频谱,这个结果可能更容易理解。由于谐波数不依赖于区间长度 L,因此缩放 x 轴前后的谐波频谱将完全相同。然而,将谐波数转换为物理频率需要了解基本周期。如果观察周期被比例因子s压缩,则基频相应地变大,因此频谱将被因子s扩展。

6.4.4 微分定理(Differentiation theorem)

假如函数f (x)由Fourier级数

y(x) = \frac{a_0}{2} + \sum_{k=1}^{+\infty}[a_k cos(kx)+b_k sin(kx)] --------------------------------------------------[6.24]

给出,且新的函数 g(x)通过函数y(x)对 x 微分而得到,则 g(x) 的模型为

g(x) = \frac{a_0}{2} + \sum_{k=1}^{+\infty}[kb_{k} cos(kx)-ka_{k}sin(kx)] ----------------------------------------------[6.25]

这表明,新的系数 a_k 等于原来的系数 b_k  的 k 倍,新的系数 b_k 等于原来的系数 a_k 的 -k 倍。系数按谐波数缩放的原因是高次谐波的变化率更大因此导数必须更大。例如,图 6.1中的函数 y(x)具有Fourier系数 b_1=2 ,b_2=1 。根据这个微分定理,y(x)的导数应当有Fourier系数 a_1=2 ,a_2=-2 。可通过直接微分 y(x) 得到 2cos(x) − 2 cos(2x) , 从而得到验证。

    以上结论可以解释为频谱在复平面上的旋转和伸缩。为了理解这一点,令函数f (x)由Fourier级数

y(x) = \sum_{k=-\infty}^{+\infty}c_k e^{ikx} -----------------------------------------------------------------------------------[6.26]

所表示,则新的函数由y(x)对 x 微分而得到,则g(x)的模型为

g(x) = \frac{dy(x)}{dx}

= \frac{d}{dx}(\sum_{k=-\infty}^{+\infty}c_k e^{ikx})

= \frac{d}{dx}(\sum_{k=-\infty}^{+\infty}ikc_k e^{ikx})

总之,微分一个函数的效果就是按90°旋转每个相量 c_k (因子为i)并按谐波数k伸缩Fourier系数。

6.4.5 积分定理(Integration theorem)

假如函数f (x)由Fourier级数

y(x) = \frac{a_0}{2} + \sum_{k=1}^{+\infty}[a_k cos(kx)+b_k sin(kx)] --------------------------------------------------[6.28]

给出,且新的函数 g(x) 通过函数y(x)对 x 微分而得到,则 g(x) 的模型为

g(x) = \int_{-\pi}^xy(u)du

=\int_{-\pi}^{x}\{\frac{a_0}{2} + \sum_{k=1}^{+\infty}[a_k cos(ku)+b_k sin(ku)]\}du

=\int_{-\pi}^{x}\frac{a_0}{2}du + \int_{-\pi}^{x}\sum_{k=1}^{+\infty}[a_k cos(ku)du]+ \int_{-\pi}^{x}\sum_{k=1}^{+\infty}[b_k sin(ku)]du------------------[6.29]

等式[6.29]中的最后一步这样写是可行的,因为和的积分等于每个单独项的积分之和。计算这些项的积分,我们得到

g(x) = \frac{a_0}{2}u|_{-\pi}^{x}+\sum_{k=1}^{+\infty}[\frac{a_k}{k}sin(ku)|_{-\pi}^{x}]+ \sum_{k=1}^{+\infty}[\frac{-b_k}{k}cos(ku)|_{-\pi}^{x}]

=\frac{a_0\pi}{2}+\frac{a_0x}{2} +\sum_{k=1}^{+\infty}\{\frac{a_k}{k}[sin(kx)-sin(-k\pi)]\}+\sum_{k=1}^{+\infty}\{\frac{-b_k}{k}[cos(kx)-cos(-k\pi)]\}

=C+\frac{a_0x}{2} +\sum_{k=1}^{+\infty}\frac{a_k}{k}[sin(kx)]+\sum_{k=1}^{+\infty}\frac{-b_k}{k}[cos(kx)]------------------------------------[6.30]

等式 [6.30] 中的变量 C 是积分的一个常数,它吸收了cos()项和 a_0  项。注意,假如原来函数的均值不等于0 , 则积分后会出现一个线性项。因此,若非 a_0 = 0 ,否则这个结果不必一定是一个专属的Fourier级数。这个结论表明,新的系数 a_k 等于原来的系数 b_k 的 -1/k 倍,新的系数 bk 等于原来的系数  a_k  的 1/k 倍。系数与谐波数成反比的原因是正弦曲线下的面积随着频率变大而变小,因此积分变小。

以类似于上面第 4 节中所示的方式,等式 [6.30] 可以解释为复平面上的频谱旋转。因此,对一个函数积分的效果就是按90°旋转每个相量 c_k (因子为i )并按谐波数k伸缩Fourier系数。 

图 6.4 显示了使用积分定理的示例,其中对图 6.1 的方波进行积分以产生三角波。通过检查,我们发现,g(𝗑) 的均值为–π/2 。为了求得其它的Fourier系数,我们应用这个定理到上面等式[6.12]中求得的函数 (𝗑)的Fourier 系数

a_k = 0

b_k = \frac{4}{\pi k} ( k 为奇数)------------------------------------------------(6.11)

由于旧的 a 系数为零,因此新的 b 系数为零。新的 a 系数等于旧 b 系数的 -1/k 倍。 因此,我们得出结论,新函数 g(𝗑) 具有Fourier系数

a_0=-\frac{\pi}{2}

a_k=\frac{4}{\pi k^2}( k 为奇数)

b_k=0 ---------------------------------------------------------------------------------------------------------(6.31)

在这种情况下,g(𝗑) 的Fourier级数是

g(x) = -\frac{\pi}{2}-\frac{4}{\pi} \sum_{k=odd}^{}\frac{cos(kx)}{k^2} ------------------------------------------------------------------------(6.32)

------------------------------------------------图6.4 方波积分----------------------------------------------------------

6.4.6 非正弦基函数(Integration theorem)

三角函数 sin(kθ) 和 cos(kθ)的谐波级数的显著特征之一是它们在区间 [0, 2π] 上对于整数 k 是相互正交的,不仅作为 x 的连续函数,而且当以整数 D 个点均匀采样时也是如此。这种正交性是这些基函数的一个基本特征,它允许开发简单的方程来计算开发离散数据和连续函数的Fourier级数模型所需的Fourier系数。

尽管存在其他连续的、相互正交的函数族,但并不是所有的函数都具有在采样时保持正交的方便属性。来自光学的一个例子是 Zernike 圆多项式族,它定义在 (x,y)平面中单位半径的圆形域上。这些正交多项式在极坐标( ρ ,θ ) 中最简单地表示为

Z_n^m = Z_n^m R_n^m(\rho )M(m\theta) ----------------------------------------------------------------------------------(6.33)

其中,N是一个归一化常量 ,R 是一个以ρ表示的 N 阶多项式,而 M 是三角函数,当 m ≥ 0 时为 cos() ,当 m < 0 时为 sin(-) 。采样时,这些函数会失去正交性,因此必须使用其他方法(例如最小二乘拟合)来计算 Zernike 系数

内容来源:

<< Fourier Analysis for Beginners>> Larry N. Thibos

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/23062.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring源码阅读:Spring事务传播特性

一、概述 我们平常工作中经常会听到事务的传播级别&#xff0c;但是使用中基本不会太调整这个事务传播级别&#xff0c;因为没什么业务场景需要我们这么做&#xff0c;只需要使用原有的事务传播级别即可解决95%的业务场景。但是为了那5%的业务场景&#xff0c;我们还是还要学习…

完美解决接口测试难题,数据驱动带签名混合封装框架实现

目录 前言&#xff1a; 一、框架概述 二、框架架构 三、代码实现 四、实战步骤 五、总结 前言&#xff1a; 接口自动化测试是保障软件质量的重要手段之一&#xff0c;其自动化程度越高&#xff0c;越能有效提高软件测试效率。而接口自动化测试中&#xff0c;接口测试框架…

Springboot +spring security,解决跨域问题

一.简介 这篇文章主要是解释什么是跨域&#xff0c;在Spring中如何解决跨域&#xff0c;引入Spring Security后Spring解决跨域的方式失效&#xff0c;Spring Security 如何解决跨域的问题。 二.什么是跨域 跨域的概率&#xff1a; 浏览器不能执行其他网站的脚本&#xff0c…

【新星计划-2023】TCP/IP协议讲解

相信大家在学习的过程中一定听到过TCP/IP这个协议&#xff0c;那么&#xff0c;TCP/IP协议是什么&#xff1f;为什么会有TCP/IP协议&#xff1f; 一、TCP/IP是什么&#xff1f; TCP/IP是用于计算机通信的一组协议&#xff0c;我们通常称它为TCP/IP协议族。它是70年代中期美国…

Taro 项目怎么获取元素的高度和视口高度

最近做小程序&#xff0c;用的Taro&#xff0c;需要设置空状态居中显示&#xff0c;因为空状态出现的地方不一样&#xff0c;所以需要动态设置&#xff0c;那么就需要获取元素的高度来计算 文档翻了一遍也没有找到&#xff0c;原生js获取高度得到的是null&#xff0c;百度了下…

考研数据结构--图

文章目录 图图的基本概念图的定义种类 图的抽象数据类型图的基本术语1. 端点和邻接点2. 顶点的度、入度和出度3. 完全图4. 稠密图、稀疏图5. 子图6. 路径和路径长度7. 回路或环8. 连通、连通图和连通分量9. 强连通图和强连通分量在一个图中找强连通分量的方法 10. 权和网 图的存…

自信裸辞:一晃 ,失业都3个月了.....

最近&#xff0c;找了很多软测行业的朋友聊天、吃饭 &#xff0c;了解了一些很意外的现状 。 我一直觉得他们技术非常不错&#xff0c;也走的测开/管理的路径&#xff1b;二三月份裸辞的&#xff0c;然后一直在找工作&#xff0c;现在还没找到工作 。 经过我的分析&#xff0…

2023年广东省中职网络安全Web渗透测试解析(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 1.访问地址http://靶机IP/task1,分析页面内容,获取flag值,Flag格式为flag{xxx}; 2.访问地址http://靶机IP/task2,访问登录页面。用户user01的密码为1-1000以内的数,获取用户user01的密码,将密码作为Flag进行提交,Flag格式…

如何真正开启docker远程访问2375

注意看官方文档 Configure remote access for Docker daemon | Docker Documentation 1. windows上Docker Desktop开启远程访问端口2375 系统版本&#xff1a; win10专业版 Docker Desktop版本&#xff1a;4.18.0 很简单勾上&#xff0c; 应用并重启即可 2. linux上开启 尝…

设计模式—“接口隔离”

在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题、甚至根本无法实现。采样添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案。 典型模式有:Fascade、Proxy、Adapter、Mediator 一、Fascade 动机 上述A方案的问题在于组件的客户和…

性能测试重要知识与TPS上不去原因分析,测试进阶之路卷起来...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 常见性能测试术语…

音视频使用qt测试ffmpeg接口时无法运行

仅仅时把自己过程中遇到的稍微阻塞疑惑问题做出整理&#xff0c;疑惑的是拿到的ffmpeg包中没有dll文件&#xff0c;导致自己研究了一系列。 使用qt加载音视频ffmpeg对应的相关lib库&#xff0c;进行接口&#xff0c;源码的研究。 1&#xff1a;使用源码安装的方式获取相关的动…

易基因:全基因组DNA甲基化分析揭示DNMT1在斑马鱼模型听觉系统发育中的作用 | 胚胎发育

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 听力障碍通常与内耳发育不全或损伤有关&#xff0c;是影响生活质量的严重健康问题。因此研究听觉器官发生过程中的关键基因对于探索听力损伤的潜在策略至关重要。斑马鱼模型在理解内耳发…

基于SSM的校园办公管理系统的设计与实现(源码完整)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据你想解决的问题&#xff0c;今天给…

噶了呀,现在的00后这么卷的吗?

现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪20K&#xff0c;都快接近我了。 后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天&#xff0c;原来这位小老弟家里…

企业微信也能接入ChatGPT啦~你也能成功,步骤超详细~

文章目录 配置企业微信创建企业创建应用 配置项目一、OpenAI账号注册二、克隆项目代码三、复制配置文件四、企业微信配置 服务器购买运行项目安装Python安装核心依赖启动项目 个人微信绑定 上次我把ChatGPT接入了微信&#xff08;请看这篇文章当ChatGpt接入微信群之后&#xff…

前几天面了个30岁左右的测试员,年薪50w问题基本都能回答上,必是刷了不少八股文···

互联网行业竞争是一年比一年严峻&#xff0c;作为测试工程师的我们唯有不停地学习&#xff0c;不断的提升自己才能保证自己的核心竞争力从而拿到更好的薪水&#xff0c;进入心仪的企业&#xff08;阿里、字节、美团、腾讯等大厂.....&#xff09; 所以&#xff0c;大家就迎来了…

论文笔记: Trajectory Clustering: A Partition-and-Group Framework

07 Sigmoid 使用类DBSCAN的思路对轨迹聚类 1 intro 1.1 轨迹聚类 现有的轨迹聚类算法是将相似的轨迹作为一个整体进行聚类&#xff0c;从而发现共同的轨迹。 但是这样容易错过一些共同的子轨迹&#xff08;sub-trajectories&#xff09;。而在实际中&#xff0c;当我们对特…

Redis主从复制,哨兵模式和集群模式

一、主从复制 1、主从复制-哨兵-集群 主从复制&#xff1a;主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份&#xff0c;以及对于读操作的负载均衡和简单的故障恢复。缺陷&#xff1a;故障恢复无法自…

服务器被勒索病毒攻击怎么办,如何进行勒索病毒解密与预防工作?

在当今社会中服务器已经成为企业关键数据存储和传输的重要载体&#xff0c;同样也成为黑客攻击和勒索病毒的首要目标。一旦服务器被勒索病毒攻击&#xff0c;企业的正常运转与经济利益和核心数据都将受到威胁。下面将为大家介绍一下服务器被勒索病毒攻击后应该采取怎样的措施及…