音频进阶学习九——离散时间傅里叶变换DTFT

文章目录


前言

按照傅里叶发展的历史,本应该先介绍傅里叶级数,但是由于DTFT更通用,且DTFT是属于核心理论,而DFS是DTFT的一种特列,所以该系列文章中先介绍DTFT,也就是离散时间傅里叶变换。

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


一、DTFT的解释

1.DTFT公式

看一下DTFT和CFT也就是连续傅里叶变换的对比:

  • DTFT
    X ( ω ) = ∑ n = − ∞ ∞ x [ n ] e − j ω n X(\omega)=\sum_{n=-\infty}^{\infty}x[n]e^{-j\omega n} X(ω)=n=x[n]ejωn
  • CFT
    F ( ω ) = ∫ − ∞ ∞ f ( t ) e − j ω t d t F(\omega)=\int^{\infty}_{-\infty}f(t)e^{-j\omega t}dt F(ω)=f(t)etdt

对比CFT,我们可以看到DTFT和CFT的差别在于,一个自变量是 n n n,一个自变量是 t t t,一个是非连续一个是连续。所以二者对比:

  • 连续信号:在CFT中,频率是连续变量,频谱 F ( ω ) F(\omega) F(ω)对应的是一个实数角频率 ω \omega ω,直接描述频率分量。
  • 离散信号: 在 DTFT ( 包括DFT) 中,由于信号是离散的,频谱的周期性引入了单位圆上的频率表示。对于 X ( ω ) X(\omega) X(ω)写作 X ( e j ω ) X(e^{j\omega}) X(e),所以DTFT写作为:
    X ( e j ω ) = ∑ n = − ∞ ∞ x [ n ] e − j ω n X(e^{j\omega})=\sum_{n=-\infty}^{\infty}x[n]e^{-j\omega n} X(e)=n=x[n]ejωn

2.DTFT右边释义

对于DTFT右边 ∑ n = − ∞ ∞ x [ n ] e − j ω n \sum_{n=-\infty}^{\infty}x[n]e^{-j\omega n} n=x[n]ejωn我们来一步步分析这个公式的作用。

1) 复指数 e − j ω n e^{-j\omega n} ejωn

上一篇文章中,我们用欧拉公式将极坐标表示为复指数形式:
e j θ = cos ⁡ ( θ ) + j sin ⁡ ( θ ) e^{j\theta}=\cos(\theta)+j\sin(\theta) ejθ=cos(θ)+jsin(θ)
由此可以得到
e − j ω n = > cos ⁡ ( j ω n ) − j s i n ( ω n ) e^{-j\omega n}=>\cos(j\omega n)-jsin(\omega n) ejωn=>cos(jωn)jsin(ωn)

  • 实部: cos ⁡ ( j ω n ) \cos(j\omega n) cos(jωn)是以频率 ω \omega ω的余弦震荡
  • 虚部: s i n ( ω n ) sin(\omega n) sin(ωn)是以频率 ω \omega ω的正弦震荡

它表示的含义是随着 n n n的增长,以频率 ω \omega ω在一个单位圆上以顺时针方式进行周期震荡,如下图:

  • n n n代表时间 t t t [ 0 , 5 ] [0,5] [0,5]区间上的变换
  • Z Z Z的指向是极坐标
  • I m Im Im是虚部比变化
  • R e Re Re是实部变化
    在这里插入图片描述

2)序列与复指数相乘 x [ n ] ∗ e − j ω n x[n]*e^{-j\omega n} x[n]ejωn

复指数序列

在上一篇文章中,我们说 z = r ∗ e i θ z=r*e^{i\theta} z=reiθ表示了极坐标的旋转, r r r代表了模长,而 x [ n ] ∗ e − j ω n x[n]*e^{-j\omega n} x[n]ejωn x [ n ] x[n] x[n]可以是实数和虚数,所以对于 x [ n ] ∗ e − j ω n x[n]*e^{-j\omega n} x[n]ejωn值得注意的是,应该理解为对于 x [ n ] x[n] x[n]进行旋转 − ω n -\omega n ωn角度,而不是理解为模长。

而对于整个 x [ n ] x[n] x[n]的旋转,我们得到的是对于以某一个频率 ω \omega ω旋转了 − ω n -\omega n ωn角度的新的序列,这就叫做复指数序列。其中对于 e − j ω n e^{-j\omega n} ejωn我们看作是对于复指数序列的基函数。

复数的共轭

对于一个复数 z = a + b i z=a+bi z=a+bi,它的共轭复数为 z ‾ = a − b i \overline{z}=a-bi z=abi

  • 复数共轭的几何意义是以实轴为对称轴反射。
  • 共轭复数在许多计算中很重要,例如求复数的模: ∣ z ∣ = z ∗ z ‾ |z|=\sqrt{z*\overline{z}} z=zz ,展开来为:
    ( a + b i ) ∗ a ( − b i ) = a 2 − a b i + a b i − b 2 ∗ i 2 , ( i 2 = − 1 ) = > a 2 + b 2 (a+bi)*a(-bi)=a^2-abi+abi-b^2*i^2,\quad (i^2=-1)=>a^2+b^2 (a+bi)a(bi)=a2abi+abib2i2,(i2=1)=>a2+b2

复数空间的内积使用了共轭来确保以下性质:

  • 共轭对称性
    < f , g > = < g , f > ‾ <f,g>=\overline{<g,f>} <f,g>=<g,f>
  • 非负性
    < f , f > ≥ 0 <f,f> \geq 0 <f,f>≥0
正交

正交:在数学中,正交(orthogonality)通常用于描述两个向量或函数之间的一种关系,表示它们彼此垂直或互不相关。

  • 向量正交:在欧几里得空间中,两个向量 u , v u,v u,v 如果它们的内积为 0,则称它们是正交的,即: u ∗ v = 0 u*v=0 uv=0
  • 函数正交:两个函数 f ( x ) , g ( x ) f(x),g(x) f(x),g(x)在区间 [ a , b ] [a,b] [a,b]上内积为0,表示为函数正交,即: < f , g > = ∫ a b f ( x ) g ( x ) ∗ d x = 0 <f,g>=\int_a^bf(x)g(x)^*dx =0 <f,g>=abf(x)g(x)dx=0

正交意味着在平面上,角度为90°,例如 ( 1 , i ) , ( 1 , − i ) (1,i),(1,-i) (1,i),(1,i)
在这里插入图片描述

正交集

正交集是由一组两两正交的向量或函数组成的集合。在这种集合中,任意两个不同的元素的内积为 0。而对于复指数序列的基函数 e − j ω n e^{-j\omega n} ejωn则有:
< e − j ω l n , e − j ω m n > = ∑ n = 0 N − 1 e − j ω l n ∗ ( e − j ω m n ) ∗ ( e − j ω m n ) ∗ = e j ω m n , 由于复共轭 < e − j ω l n , e − j ω m n > = ∑ n = 0 N − 1 e − j ω l n ∗ e j ω m n = > ∑ n = 0 N − 1 e j ( ω m − ω l ) n <e^{-j\omega_l n}, e^{-j\omega_m n}>=\sum_{n=0}^{N-1}e^{-j\omega_l n}* (e^{-j\omega_m n})^*\\ (e^{-j\omega_m n})^*=e^{j\omega_m n},\quad 由于复共轭 \\ <e^{-j\omega_l n}, e^{-j\omega_m n}>=\sum_{n=0}^{N-1}e^{-j\omega_l n}*e^{j\omega_m n} =>\\ \sum_{n=0}^{N-1}e^{j(\omega_m-\omega_l)n} <ejωln,ejωmn>=n=0N1ejωln(ejωmn)(ejωmn)=ejωmn,由于复共轭<ejωln,ejωmn>=n=0N1ejωlnejωmn=>n=0N1ej(ωmωl)n
ω m ≠ ω l \omega_m\neq \omega_l ωm=ωl时, e j ( ω m − ω l ) n e^{j(\omega_m-\omega_l)n} ej(ωmωl)n表示的是一个周期性复数,几何上表示在复平面上绕原点画圆,如同上文中对于 e − j ω n e^{-j\omega n} ejωn解释的图像,所以对于累加和 ∑ n = 0 N − 1 e j ( ω m − ω l ) n \sum_{n=0}^{N-1}e^{j(\omega_m-\omega_l)n} n=0N1ej(ωmωl)n为0。

也就是说对于任意复指数序列的基函数,当 ω m ≠ ω l \omega_m\neq \omega_l ωm=ωl时,两者之间相互不影响,这也正是DTFT使用复指数来进行运算的原因!

3)复指数序列求和

DTFT右边对于复指数序列为什么要进行求和,即 ∑ n = − ∞ ∞ x [ n ] e − j ω n \sum_{n=-\infty}^{\infty}x[n]e^{-j\omega n} n=x[n]ejωn

上面我们说了对于任意复指数序列的基函数,当 ω m ≠ ω l \omega_m\neq \omega_l ωm=ωl时,两者之间相互不影响。所以对于 x [ n ] ∗ e − j ω n x[n]*e^{-j\omega n} x[n]ejωn中,对于某一个 ω k \omega_k ωk x [ n ] ∗ e − j ω k n x[n]*e^{-j\omega_k n} x[n]ejωkn中,将不会包含其他频率的影响。

在欧几里得空间中,投影的定义是: 投影 = < v ∗ u > u 投影=<v*u>u 投影=<vu>u,其中

  • v v v 是要投影的向量
  • u u u是基向量
  • ⟨ v , u ⟩ ⟨v,u⟩ v,u 是内积,量化了 v v v u u u的相似程度

而对于复指数序列投影,则有:
< x [ n ] , e − j ω n > = ∑ n = − ∞ ∞ x [ n ] ∗ e − j ω n ‾ e − j ω n ‾ = e j ω n 共轭性 < x [ n ] , e − j ω n > = ∑ n = − ∞ ∞ x [ n ] e − j ω n <x[n],e^{-j\omega n}>=\sum_{n=-\infty}^{\infty}x[n]*\overline{e^{-j\omega n}} \\ \overline{e^{-j\omega n}} =e^{j\omega n} 共轭性\\ <x[n],e^{-j\omega n}> =\sum_{n=-\infty}^{\infty}x[n]e^{-j\omega n} <x[n],ejωn>=n=x[n]ejωnejωn=ejωn共轭性<x[n],ejωn>=n=x[n]ejωn
其实就是DTFT函数,它的目的就是为了不同频率之间的影响。即如果 < x [ n ] , e − j ω k n > = ∑ n = − ∞ ∞ x [ n ] e − j ω k n = 0 <x[n],e^{-j\omega_k n}> =\sum_{n=-\infty}^{\infty}x[n]e^{-j\omega_k n}=0 <x[n],ejωkn>=n=x[n]ejωkn=0,那么序列 x [ n ] x[n] x[n]对于频率 ω k \omega_k ωk没有影响。

3.DTFT左边边释义

1)实部与虚部

上文中解释了DTFT函数的由来,即 ∑ n = − ∞ ∞ x [ n ] e − j ω n \sum_{n=-\infty}^{\infty}x[n]e^{-j\omega n} n=x[n]ejωn可以看作是对信号进行“投影”,找出信号与每个频率基函数的匹配程度。那么如果
< x [ n ] , e − j ω k n > = ∑ n = − ∞ ∞ x [ n ] e − j ω k n ≠ 0 <x[n],e^{-j\omega_k n}> =\sum_{n=-\infty}^{\infty}x[n]e^{-j\omega_k n}\neq 0 <x[n],ejωkn>=n=x[n]ejωkn=0这个值我们表示为 X ( ω k ) X(\omega_k) X(ωk)有什么含义?或者说有什么作用?

我们知道对于欧拉公式:
e j θ = cos ⁡ ( θ ) + j sin ⁡ ( θ ) e^{j\theta}=\cos(\theta)+j\sin(\theta) ejθ=cos(θ)+jsin(θ)
它的实部表示了相位(两波之间的时间或空间偏移),虚部表示了幅度,那么对于DTFT公式:
X ( e j ω ) = ∑ n = − ∞ ∞ x [ n ] e − j ω n X(e^{j\omega})=\sum_{n=-\infty}^{\infty}x[n]e^{-j\omega n} X(e)=n=x[n]ejωn
其中复指数通过欧拉公式得到
e − j ω n = cos ⁡ ( ω n ) − j sin ⁡ ( ω n ) e^{-j\omega n}=\cos(\omega n)-j\sin(\omega n) ejωn=cos(ωn)jsin(ωn)
因此DTFT可以拆解为:
X ( e j ω ) = ∑ n = − ∞ ∞ x [ n ] ( cos ⁡ ( ω n ) − j sin ⁡ ( ω n ) ) X ( e j ω ) = ∑ n = − ∞ ∞ x [ n ] cos ⁡ ( ω n ) ⏟ R e ( X ( e j ω ) ) − ∑ n = − ∞ ∞ x [ n ] j sin ⁡ ( ω n ) ⏟ I e ( X ( e j ω ) ) X(e^{j\omega})=\sum_{n=-\infty}^{\infty}x[n](\cos(\omega n)-j\sin(\omega n)) \\ X(e^{j\omega})=\underbrace{\sum_{n=-\infty}^{\infty}x[n]\cos(\omega n)}_{Re(X(e^{j\omega}))}-\underbrace{\sum_{n=-\infty}^{\infty}x[n]j\sin(\omega n)}_{Ie(X(e^{j\omega}))} X(e)=n=x[n](cos(ωn)jsin(ωn))X(e)=Re(X(e)) n=x[n]cos(ωn)Ie(X(e)) n=x[n]jsin(ωn)

  • R e ( X ( e j ω ) Re(X(e^{j\omega}) Re(X(e)是实部
  • I m ( X ( e j ω ) Im(X(e^{j\omega}) Im(X(e)是虚部

2)幅度与相位

  • 幅度:幅度是频谱中每个频率分量的强度或大小,实部和虚部的模长,可以得出该频率分量的幅度。使用 ∣ X ( e j ω ) ∣ |X(e^{j\omega})| X(e)表示信号在频率 ω \omega ω处的能量强度或振幅
    ∣ X ( e j ω ) ∣ = R e ( X ( e j ω ) 2 + I m ( X ( e j ω ) 2 |X(e^{j\omega})|=\sqrt{Re(X(e^{j\omega})^2+Im(X(e^{j\omega})^2} X(e)=Re(X(e)2+Im(X(e)2
  • 相位:相位是频谱中每个频率分量相对于其他频率分量的相位偏移,通过实部和虚部的比值,可以计算相位。使用 arg ⁡ ( X ( e j ω ) ) 或 ∠ ( X ( e j ω ) ) \arg(X(e^{j\omega}))或\angle(X(e^{j\omega})) arg(X(e))(X(e))表示:
    ∠ ( X ( e j ω ) ) = tan ⁡ − 1 I m ( X ( e j ω ) R e ( X ( e j ω ) \angle(X(e^{j\omega}))=\tan^{-1}\frac{Im(X(e^{j\omega})}{Re(X(e^{j\omega})} (X(e))=tan1Re(X(e)Im(X(e)

二、IDTFT

1.逆离散时间的傅里叶变换

上文中我们使用的傅里叶变换将序列从时域转成了频域,那么从频域恢复到时域我们成为逆傅里叶变换,逆离散时间的傅里叶变换表示为IDTFT。
在这里插入图片描述
它的公式为:
x [ n ] = 1 2 π ∫ − π π X ( e j ω ) e j ω n d ω x[n]=\frac{1}{2\pi}\int_{-\pi}^{\pi}X(e^{j\omega})e^{j\omega n}d\omega x[n]=2π1ππX(e)ejωndω

2.IDTFT验证

我们将 X ( e j ω ) X(e^{j\omega}) X(e)代入到公式中:
x [ n ] = 1 2 π ∫ − π π ( ∑ k = − ∞ ∞ x [ k ] e − j ω k ) e j ω n d ω x[n]=\frac{1}{2\pi}\int_{-\pi}^{\pi}\big(\sum_{k=-\infty}^{\infty}x[k]e^{-j\omega k}\big)e^{j\omega n}d\omega x[n]=2π1ππ(k=x[k]ejωk)ejωndω
根据之前文章积分和求和的特性
x [ n ] = ∑ k = − ∞ ∞ x [ k ] ( 1 2 π ∫ − π π e − j ω ( n − k ) d w ) x[n]=\sum_{k=-\infty}^{\infty}x[k]\big(\frac{1}{2\pi}\int_{-\pi}^{\pi}e^{-j\omega (n-k)}dw\big) x[n]=k=x[k](2π1ππe(nk)dw)
先看积分项
1 2 π ∫ − π π e − j ω ( n − k ) d w \frac{1}{2\pi}\int_{-\pi}^{\pi}e^{-j\omega (n-k)}dw 2π1ππe(nk)dw

  • k = n k=n k=n时:
    1 2 π ∫ − π π e − j ω ( n − k ) d w = 1 2 π ∫ − π π 1 d w = 1 \frac{1}{2\pi}\int_{-\pi}^{\pi}e^{-j\omega (n-k)}dw=\frac{1}{2\pi}\int_{-\pi}^{\pi}1dw=1 2π1ππe(nk)dw=2π1ππ1dw=1
  • k ≠ n k\neq n k=n时,上文中说过,因为 e j ( ω m − ω l ) n e^{j(\omega_m-\omega_l)n} ej(ωmωl)n表示的是一个周期性复数,其积分结果为零:
    1 2 π ∫ − π π e − j ω ( n − k ) d w = 1 2 π ∗ 0 = 0 \frac{1}{2\pi}\int_{-\pi}^{\pi}e^{-j\omega (n-k)}dw=\frac{1}{2\pi}*0=0 2π1ππe(nk)dw=2π10=0

因此
1 2 π ∫ − π π e − j ω ( n − k ) d w = { 1 , n = k 0 , n ≠ k \frac{1}{2\pi}\int_{-\pi}^{\pi}e^{-j\omega (n-k)}dw=\begin{cases}1,\quad n=k \\ 0,\quad n\neq k\end{cases} 2π1ππe(nk)dw={1,n=k0,n=k
我们用单位脉冲 δ \delta δ表示0,1,所以可以得到
x [ n ] = ∑ k = − ∞ ∞ x [ k ] δ [ n − k ] x[n]=\sum_{k=-\infty}^{\infty}x[k]\delta[n-k] x[n]=k=x[k]δ[nk]
有没有看起来很熟悉,这不就是冲激分解,使用单位冲激序列表示的加权和


总结

本篇文章中,我们对于DTFT做了深入的了解,附带着介绍了一些使用的数学知识,同时得到了IDTFT的公式。受到篇幅限制,本章只对DTFT公式进行了展示,并没有深入了解DTFT存在的条件和性质,那么在下一篇文章中会进行进一步介绍DTFT相关性质和条件。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

#渗透测试#红蓝攻防#红队打点web服务突破口总结01

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

25年1月更新。Windows 上搭建 Python 开发环境:PyCharm 安装全攻略(文中有安装包不用官网下载)

python环境没有安装的可以点击这里先安装好python环境&#xff0c;python环境安装教程 安装 PyCharm IDE 获取 PyCharm PyCharm 提供两种主要版本——社区版&#xff08;免费&#xff09;和专业版&#xff08;付费&#xff09;。对于初学者和个人开发者而言&#xff0c;社区…

JavaScript中Map与Object的区别

在JavaScript中&#xff0c;Map和Object是用于存储键值对数据的两种不同的数据结构&#xff08;Map是ES6新增的数据结构&#xff09;&#xff0c;它们在构造方式、键的类型以及原型继承等方面存在区别。 一、主要区别 1.构造方式 Map&#xff1a;Map只能通过构造函数new Map…

双目视觉:reprojectImageTo3D函数

前言 reprojectImageTo3D 是 OpenCV 中用于从视差图生成三维点云的函数。它的原理是利用视差图和相机的校准参数&#xff0c;通过三角测量法&#xff0c;计算每个像素对应的三维坐标。以下内容根据源码分析所写&#xff0c;觉得可以的话&#xff0c;点赞收藏哈&#xff01;&am…

Spring Boot(快速上手)

Spring Boot 零、环境配置 1. 创建项目 2. 热部署 添加依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> </dependency&…

TTL 传输中过期问题定位

问题&#xff1a; 工作环境中有一个acap的环境&#xff0c;ac的wan口ip是192.168.186.195/24&#xff0c;ac上lan上有vlan205&#xff0c;其ip子接口地址192.168.205.1/24&#xff0c;ac采用非nat模式&#xff0c;而是路由模式&#xff0c;在上级路由器上有192.168.205.0/24指向…

MySQL中distinct和group by去重的区别

MySQL中distinct和group by去重的区别 在MySQL中&#xff0c;我们经常需要对查询结果进行去重&#xff0c;而DISTINCT和GROUP BY是实现这一功能的两种常见方法。虽然它们在很多情况下可以互换使用&#xff0c;但它们之间还是存在一些差异的。接下来&#xff0c;我们将通过创建测…

AI 驱动研发模式升级,蓝凌软件探索效率提升之道

深圳市蓝凌软件股份有限公司&#xff08;以下简称蓝凌软件&#xff09;&#xff0c;自2001年成立以来&#xff0c;一直走在数智化办公领域的前沿。作为国家认定的高新技术企业、知识管理国家标准的参编者以及信创供应商10强之一&#xff0c;蓝凌软件始终以“让组织更智慧”为使…

GPU 进阶笔记(四):NVIDIA GH200 芯片、服务器及集群组网

大家读完觉得有意义记得关注和点赞&#xff01;&#xff01;&#xff01; 1 传统原厂 GPU 服务器&#xff1a;Intel/AMD x86 CPU NVIDIA GPU2 新一代原厂 GPU 服务器&#xff1a;NVIDIA CPU NVIDIA GPU 2.1 CPU 芯片&#xff1a;Grace (ARM)2.2 GPU 芯片&#xff1a;Hopper/B…

SpringMVC(二)原理

目录 一、配置Maven&#xff08;为了提升速度&#xff09; 二、流程&&原理 SpringMVC中心控制器 完整流程&#xff1a; 一、配置Maven&#xff08;为了提升速度&#xff09; 在SpringMVC&#xff08;一&#xff09;配置-CSDN博客的配置中&#xff0c;导入Maven会非…

springboot集成qq邮箱服务

springboot集成qq邮箱服务 1.获取QQ邮箱授权码 1.1 登录QQ邮箱 1.2 开启SMTP服务 找到下图中的SMTP服务区域&#xff0c;如果当前账号未开启的话自己手动开启。 1.3 获取授权码 进入上图中的【管理服务】后&#xff1a;在【安全设置中生成授权码】,也可以直接点击【继续生成…

Word2Vec解读

Word2Vec: 一种词向量的训练方法 简单地讲&#xff0c;Word2Vec是建模了一个单词预测的任务&#xff0c;通过这个任务来学习词向量。假设有这样一句话Pineapples are spiked and yellow&#xff0c;现在假设spiked这个单词被删掉了&#xff0c;现在要预测这个位置原本的单词是…

VBA批量插入图片到PPT,一页一图

Sub InsertPicturesIntoSlides()Dim pptApp As ObjectDim pptPres As ObjectDim pptSlide As ObjectDim strFolderPath As StringDim strFileName As StringDim i As Integer 设置图片文件夹路径strFolderPath "C:\您的图片文件夹路径\" 请替换为您的图片文件夹路径…

国内Ubuntu环境Docker部署Stable Diffusion入坑记录

国内Ubuntu环境Docker部署Stable Diffusion入坑记录 本文旨在记录使用dockerpython进行部署 stable-diffusion-webui 项目时遇到的一些问题&#xff0c;以及解决方案&#xff0c;原项目地址: https://github.com/AUTOMATIC1111/stable-diffusion-webui 问题一览&#xff1a; …

【Linux报告】实训一:GNME桌面环境的设置及应用

实训一&#xff1a;GNME桌面环境的设置及应用 【练习1】在图形模式和文本模式下登录Linux系统。 1、开启Linux虚拟机。 答&#xff1a;打开此虚拟机如图所示 2、观察屏幕上显示的启动信息。 3、当系统启动到图形界面时&#xff0c;用普通用户身份登录。 答&#xff1a;如图…

SQL 中的 EXISTS

我们先从 SQL 中最基础的 WHERE 子句开始。 比如下面这条 SQL 语句&#xff1a; 很显然&#xff0c;在执行这条 SQL 语句的时候&#xff0c;DBMS 会扫描 Student 表中的每一条记录&#xff0c;然后把符合 Sdept IS 这个条件的所有记录筛选出来&#xff0c;并放到结果集里面去…

设计模式の状态策略责任链模式

文章目录 前言一、状态模式二、策略模式三、责任链模式 前言 本篇是关于设计模式中的状态模式、策略模式、以及责任链模式的学习笔记。 一、状态模式 状态模式是一种行为设计模式&#xff0c;核心思想在于&#xff0c;使某个对象在其内部状态改变时&#xff0c;改变该对象的行为…

无人机飞手培训机构大量新增,考取飞手证参军入伍还有优势吗?

尽管无人机飞手培训机构大量新增&#xff0c;考取飞手证参军入伍仍然具有显著优势。以下是对这一观点的详细阐述&#xff1a; 一、无人机飞手证在军队中的通用优势 1. 法规遵从与安全保障&#xff1a; 根据《民用无人驾驶航空器系统驾驶员管理暂行规定》等相关法规&#xff0…

解决Spring3.4版本中使用QueryDSL中出现MongoAnnotationProcessor使用问题

spring boot更新到3.4版本后&#xff0c;Spring官方也是提供了AnnotationProcessor工具&#xff0c;可以不用使用maven-apt这个老旧的不行的依赖了。 但是按照官方教程会出现两个问题 1. maven找不到MongoAnnotationProcessor 如果你按照Spring Boot上的教程直接配置完成后&…

【Linux】:多线程(读写锁 自旋锁)

✨ 倘若南方知我意&#xff0c;莫将晚霞落黄昏 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;Linux—登神长阶 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#…