音频进阶学习十六——LTI系统的差分方程与频域分析一(频率响应)

文章目录

  • 前言
  • 一、差分方程的有理式
    • 1.差分方程的有理分式
    • 2.因果系统和ROC
    • 3.稳定性与ROC
  • 二、频率响应
    • 1.定义
    • 2.幅频响应
    • 3.相频响应
    • 4.群延迟
  • 总结


前言

本篇文章会先复习Z变换的有理分式,这是之前文章中提过的内容,这里会将差分方程和有理分式进行结合来看。主要是通过有理分式进行对于冲激响应的表达,以及根据导函数对于频率响应的介绍。

本文会对Z变换的频率响应中的幅频响应、相频响应以及群延迟的表达式进行推导。

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


一、差分方程的有理式

1.差分方程的有理分式

在音频进阶学习十三——Z变换二(有理z变换、稳定性与反变换)中,其实已经对于差分方程进行有里分式的转换,对于差分方程:
y [ n ] = ∑ k = 1 N a k y [ n − k ] + ∑ i = 0 M b i x [ n − i ] y[n]= \sum_{k=1}^Na_ky[n-k] +\sum_{i = 0}^M b_ix[n-i] y[n]=k=1Naky[nk]+i=0Mbix[ni]
通过展开,然后对于Z变换的线性和时移性得到:
Y ( z ) − ( a 1 z − 1 Y ( z ) + . . . + a N z − N Y ( z ) ) = b 0 X ( z ) + b 1 z − 1 X ( z ) + . . . + b M z − M X ( z ) Y(z)-(a_1z^{-1}Y(z)+...+a_Nz^{-N}Y(z)) = b_0X(z)+b_1z^{-1}X(z)+...+b_Mz^{-M}X(z) Y(z)(a1z1Y(z)+...+aNzNY(z))=b0X(z)+b1z1X(z)+...+bMzMX(z)
使用有理分式表示为:

H ( z ) = Y ( z ) X ( z ) = b 0 + b 1 z − 1 + . . . + b M z − M 1 − ( a 1 z − 1 + . . . + a N z − N ) = ∑ k = 0 M b k z − k 1 − ∑ k = 1 N b k z − k H(z)=\frac{Y(z)}{X(z)}=\frac{b_0+b_1z^{-1}+...+b_Mz^{-M} }{1-(a_1z^{-1}+...+a_Nz^{-N})} = \frac{\sum_{k=0}^Mb_kz^{-k}}{1 -\sum_{k=1}^Nb_kz^{-k}} H(z)=X(z)Y(z)=1(a1z1+...+aNzN)b0+b1z1+...+bMzM=1k=1Nbkzkk=0Mbkzk

而对于满足松弛条件,也就是在 n < 0 , y [ n ] = 0 n<0,y[n]=0 n<0,y[n]=0时,是一个因果的LTI系统,对于LTI系统根据卷积定理又满足 Y ( z ) = X ( z ) H ( z ) Y(z)=X(z)H(z) Y(z)=X(z)H(z),所以这个导函数为有理分式中, H ( z ) H(z) H(z)是系统的单位冲激响应的Z变换,且 H ( z ) H(z) H(z)需要满足一定收敛

2.因果系统和ROC

对于因果系统,在音频进阶学习三——离散时间信号与系统中说过,是指是在任意时刻 n n n的输出仅仅依赖当前、或者之前时刻的输入,与以后的输入无关。并且在讲解LTI系统时,对于系统因果性判断的依据是 h [ n ] = 0 , n < 0 h[n] = 0, n<0 h[n]=0,n<0,则为因果系统。

在Z变换中,因果系统的必要性是需要满足ROC包含 ∣ z ∣ = + ∞ |z|=+\infty z=+,而充分性如果ROC包含 ∣ z ∣ = + ∞ |z|=+\infty z=+,那么该系统一定为因果系统,证明方法和音频进阶学习十三——Z变换二(有理z变换、稳定性与反变换)中相似

将单位冲激响应的Z变换单独拿出来
X ( z ) = ∑ n = − ∞ − 1 x [ n ] z − n + ∑ n = 0 + ∞ x [ n ] z − n X(z)=\sum_{n=-\infty}^{-1}x[n]z^{-n}+\sum_{n=0}^{+\infty}x[n]z^{-n} X(z)=n=1x[n]zn+n=0+x[n]zn

  • 必要性
    当系统为因果系统时,只需要关注 X ( z ) = ∑ n = 0 + ∞ x [ n ] z − n X(z)=\sum_{n=0}^{+\infty}x[n]z^{-n} X(z)=n=0+x[n]zn,此时满足收敛就要求 ∑ n = 0 + ∞ ∣ x [ n ] ∣ ∣ z ∣ − n < ∞ \sum_{n=0}^{+\infty}|x[n]||z|^{-n} < \infty n=0+x[n]∣∣zn<,即当 ∣ Z ∣ > R |Z|>R Z>R也就是某个圆外部分,所以ROC包含 ∣ z ∣ = + ∞ |z|=+\infty z=+
  • 充分性
    n → − ∞ , − n → + ∞ n\rightarrow -\infty, -n \rightarrow +\infty n,n+,此时对于 ∑ n = − ∞ − 1 x [ n ] z − n \sum_{n=-\infty}^{-1}x[n]z^{-n} n=1x[n]zn部分, x [ n ] x[n] x[n]求和趋于无穷大,那么 z − n z^{-n} zn需要区域无穷小才满足ROC收敛,那么 ∣ z ∣ < 1 |z|<1 z<1和条件 ∣ z ∣ = + ∞ |z|=+\infty z=+不符合,所以当 ∣ z ∣ = + ∞ |z|=+\infty z=+时,不存在左边部分,系统也一定为因果系统。

3.稳定性与ROC

对于LTI系统如果一定稳定,那么 h [ n ] h[n] h[n]一定满足绝对可和,而对于
H ( z ) = ∑ n = − ∞ + ∞ h [ n ] z − n H(z)=\sum_{n=-\infty}^{+\infty}h[n]z^{-n} H(z)=n=+h[n]zn

  • 稳定性的必要条件:当 ∑ n = − ∞ + ∞ ∣ h [ n ] ∣ < ∞ \sum_{n=-\infty}^{+\infty}|h[n]|<\infty n=+h[n]<时,系统稳定的必要条件是ROC一定包含单位圆,当 ∣ z ∣ = 1 |z|=1 z=1时,相当于一定稳定
  • 稳定性的充分条件:当系统为因果系统,那么 H ( z ) H(z) H(z)也一定是绝对可和的,即 ∣ z ∣ = + ∞ |z|=+\infty z=+,因为需要该系统稳定,所以一定要包含单位圆,此时所有的极点应该在单位圆内

二、频率响应

1.定义

在上一篇文章中介绍过对于频率响应是指单位冲激响应在频域上的特征,对于卷积公式使用的是DTFT进行的分析,而对于差分方程,使用的是Z变换的方式对于单位冲激响应在频域上的特征。

而对于LTI系统,上文中给出了传递函数,也就是有理分式表达的单位冲激响应Z变换,根据音频进阶学习十三——Z变换二(有理z变换、稳定性与反变换)中对于有理分式的分析,我们可以把累加变成累积的形式:
H ( z ) = ∑ k = 0 M b k z − k ∑ k = 0 N a k z − k = ∏ m = 1 M ( 1 − c m z − 1 ) ∏ n = 1 N ( 1 − d n z − 1 ) H(z)=\frac{\sum_{k=0}^Mb_kz^{-k}}{\sum_{k=0}^Na_kz^{-k}}=\frac{\prod_{m=1}^M(1-c_mz^{-1})}{\prod_{n=1}^N(1-d_nz^{-1})} H(z)=k=0Nakzkk=0Mbkzk=n=1N(1dnz1)m=1M(1cmz1)

  • c m c_m cm:是频率响应的零点,存在 M M M
  • d n d_n dn:是频率响应的极点,存在 N N N

由于使用连乘形式对于频率响应分析比较方便,下文中使用的是连乘的方式来进行表示,同时以 z = e j ω z=e^{j\omega} z=e为单位圆方便分析。即:

对于Z变换中 H ( z ) = H ( e j ω ) ∣ z = e j ω H(z)=H(e^{j\omega})|_{z=e^{j\omega}} H(z)=H(e)z=e,也就是 z = e j ω z=e^{j\omega} z=e为单位圆时,有:
H ( e j ω ) = ∑ k = 0 M b k e j ω ∑ k = 0 N a k e j ω = b 0 a 0 ∏ m = 1 M ( 1 − c m e j ω ) ∏ n = 1 N ( 1 − d n e j ω ) H(e^{j\omega})=\frac{\sum_{k=0}^Mb_ke^{j\omega}}{\sum_{k=0}^Na_ke^{j\omega}}=\frac{b_0}{a_0}\frac{\prod_{m=1}^M(1-c_me^{j\omega})}{\prod_{n=1}^N(1-d_ne^{j\omega})} H(e)=k=0Nakek=0Mbke=a0b0n=1N(1dne)m=1M(1cme)

2.幅频响应

和DTFT一样,对于幅频响应一样是计算Z变换的模,对于模长的求解应该还记得吧,就是虚部和实部的平方求根,具体可看音频进阶学习九——离散时间傅里叶变换DTFT中对于实部和虚部的介绍,而对于Z变换的模,就是分子和分母的幅频相除
∣ H ( e j ω ) ∣ = b 0 a 0 ∏ m = 1 M ∣ ( 1 − c k e j ω ) ∣ ∏ n = 1 N ∣ ( 1 − d k e j ω ) ∣ |H(e^{j\omega})|=\frac{b_0}{a_0}\frac{\prod_{m=1}^M|(1-c_ke^{j\omega})|}{\prod_{n=1}^N|(1-d_ke^{j\omega})|} H(e)=a0b0n=1N(1dke)m=1M(1cke)
为了方便分析,对于Z变换中幅频响应一般是看模平方,也就是:
∣ H ( e j ω ) ∣ 2 = H ( e j ω ) × H ∗ ( e j ω ) |H(e^{j\omega})|^2=H(e^{j\omega})\times H^*(e^{j\omega}) H(e)2=H(e)×H(e)
代入进去,分子和分母也用共轭表示为:
∣ H ( e j ω ) ∣ 2 = ( b 0 a 0 ) 2 ∏ m = 1 M ( 1 − c k e j ω ) ( 1 − c k ∗ e j ω ) ∏ n = 1 N ( 1 − d k e j ω ) ( 1 − d k ∗ e j ω ) |H(e^{j\omega})|^2=\Big(\frac{b_0}{a_0}\Big)^2\frac{\prod_{m=1}^M(1-c_ke^{j\omega})(1-c_k^*e^{j\omega})}{\prod_{n=1}^N(1-d_ke^{j\omega})(1-d_k^*e^{j\omega})} H(e)2=(a0b0)2n=1N(1dke)(1dke)m=1M(1cke)(1cke)
如果使用对数,表示为:
20 log ⁡ 10 ∣ H ( e j ω ) ∣ = 20 log ⁡ 10 ( b 0 a 0 ) + ∑ k = 1 M 20 log ⁡ 10 ( 1 − c k e j ω ) − ∑ k = 1 N 20 log ⁡ 10 ( 1 − d k e j ω ) 20\log_{10}|H(e^{j\omega})|=20\log_{10}\Big(\frac{b_0}{a_0}\Big)+\sum_{k=1}^M20\log_{10}(1-c_ke^{j\omega})-\sum_{k=1}^N20\log_{10}(1-d_ke^{j\omega}) 20log10H(e)=20log10(a0b0)+k=1M20log10(1cke)k=1N20log10(1dke)

  • c k c_k ck:是频率响应的零点,存在 M M M
  • d k d_k dk:是频率响应的极点,存在 N N N

3.相频响应

对于上文中的 H ( e j ω ) H(e^{j\omega}) H(e)
H ( e j ω ) = ∑ k = 0 M b k e j ω ∑ k = 0 N a k e j ω = B ( e j ω ) A ( e j ω ) H(e^{j\omega})=\frac{\sum_{k=0}^Mb_ke^{j\omega}}{\sum_{k=0}^Na_ke^{j\omega}}=\frac{B(e^{j\omega})}{A(e^{j\omega})} H(e)=k=0Nakek=0Mbke=A(e)B(e)
而对于 H ( e j ω ) H(e^{j\omega}) H(e)的实部和虚部分别为

  • H R e ( e j ω ) = R e ( B ( e j ω ) ) R e ( A ( e j ω ) ) + I m ( B ( e j ω ) ) I m ( A ( e j ω ) ) R e ( A ( e j ω ) ) 2 + I m ( B ( e j ω ) 2 H_{Re}(e^{j\omega}) = \frac{Re(B(e^{j\omega}))Re(A(e^{j\omega}))+Im(B(e^{j\omega}))Im(A(e^{j\omega}))}{Re(A(e^{j\omega}))^2+Im(B(e^{j\omega})^2} HRe(e)=Re(A(e))2+Im(B(e)2Re(B(e))Re(A(e))+Im(B(e))Im(A(e))
  • H I e ( e j ω ) = I m ( B ( e j ω ) ) R e ( A ( e j ω ) ) − R e ( B ( e j ω ) ) I m ( A ( e j ω ) ) R e ( A ( e j ω ) ) 2 + I m ( B ( e j ω ) 2 H_{Ie}(e^{j\omega}) = \frac{Im(B(e^{j\omega}))Re(A(e^{j\omega}))-Re(B(e^{j\omega}))Im(A(e^{j\omega}))}{Re(A(e^{j\omega}))^2+Im(B(e^{j\omega})^2} HIe(e)=Re(A(e))2+Im(B(e)2Im(B(e))Re(A(e))Re(B(e))Im(A(e))

而对于相频响应有:
∠ H ( e j ω ) = tan ⁡ − 1 H I m ( e j ω ) H R e ( e j ω ) = ∠ H I m ( e j ω ) + ∠ H R e ( e j ω ) \angle H(e^{j\omega})=\tan^{-1}\frac{H_{Im}(e^{j\omega})}{H_{Re}(e^{j\omega})}=\angle{H_{Im}(e^{j\omega})}+\angle{H_{Re}(e^{j\omega})} H(e)=tan1HRe(e)HIm(e)=HIm(e)+HRe(e)
但是这里值得注意的是,对于DTFT,如果满足则一定收敛,而我们在分析相位响应时,默认周期是在 [ − π , π ] [-\pi,\pi] [π,π]之间。

而对于Z变换,当 r = 1 r=1 r=1时,Z变换和DTFT一样,但是由于 z z z存在系统稳定性、极点和零点的问题,会在整个复平面上的变换,相位也会随着复平面中 z z z的变化而连续变化。

我们对于相位响应的分析是为了相位的变化率,此时就存在一个相位卷绕的问题:当相位从 π \pi π − π -\pi π时,会出现相位跳跃,下一篇文章会有图片直观看到。此时则需要区分:

  • 主值相位:描述的相位变换在 [ − π , π ] [-\pi,\pi] [π,π]之间,对于DTFT而言,它意味着相位不连续,但这种不连续性在离散时间信号处理中并不会影响信号的分析。
  • 连续相位:相位变换在 θ + 2 k π \theta + 2k\pi θ+2,其中 k k k为整数,为了保证保持相位的平滑变化Z变换需要考虑连续相位

综上对于Z变换它的相位响应使用 A R G ARG ARG表示为主值响应,使用 a r g arg arg表示为连续相位响应

  • 主值相频响应:
    A R G [ H ( e j ω ) ] ∈ [ − π , π ] = tan ⁡ − 1 H I m ( e j ω ) H R e ( e j ω ) ARG[H(e^{j\omega})]\in[-\pi, \pi]=\tan^{-1}\frac{H_{Im}(e^{j\omega})}{H_{Re}(e^{j\omega})} ARG[H(e)][π,π]=tan1HRe(e)HIm(e)
  • 连续相位响应:
    a r g [ H ( e j ω ) ] = A R G [ H ( e j ω ) ] + 2 π r arg[H(e^{j\omega})] = ARG[H(e^{j\omega})]+2\pi r arg[H(e)]=ARG[H(e)]+2πr

根据上文可知,对于相频响应将有理式进行展开,分别将实部和虚部进行归纳转换(复数相位的性质,分子和分母相位之差即为整体相位响应),最终可以表示为

  • 主值相频响应:
    ∠ ∣ H ( e j ω ) ∣ = ∠ [ b 0 a 0 ] + ∠ ∑ k = 1 M [ 1 − c k e j ω ] − ∠ ∑ k = 1 N [ 1 − d k e j ω ] \angle|H(e^{j\omega})|=\angle\Big[\frac{b_0}{a_0}\Big]+\angle\sum_{k=1}^M[1-c_ke^{j\omega}]-\angle\sum_{k=1}^N[1-d_ke^{j\omega}] ∠∣H(e)=[a0b0]+k=1M[1cke]k=1N[1dke]
  • 连续相频响应:
    ∠ ∣ H ( e j ω ) ∣ = A R G [ b 0 a 0 ] + A R G ∑ k = 1 M [ 1 − c k e j ω ] − A R G ∑ k = 1 N [ 1 − d k e j ω ] + 2 π r \angle|H(e^{j\omega})|=ARG\Big[\frac{b_0}{a_0}\Big]+ARG\sum_{k=1}^M[1-c_ke^{j\omega}]-ARG\sum_{k=1}^N[1-d_ke^{j\omega}]+2\pi r ∠∣H(e)=ARG[a0b0]+ARGk=1M[1cke]ARGk=1N[1dke]+2πr

4.群延迟

由上文一样可以知道群延迟(信号不同频率分量通过系统的延迟)就是求相位响应的导数,下式为连续相位响应的群延迟:
g r d [ H ( e j ω ] = − d d w a r g [ H ( e j ω ) ] = > − ∑ k = 1 M d d ω ( arg ⁡ [ 1 − c k e j ω ] ) + ∑ k = 1 N d d ω ( arg ⁡ [ 1 − d k e j ω ] ) grd[H(e^{j\omega}]=-\frac{d}{dw}arg[H(e^{j\omega})]=>-\sum_{k=1}^M\frac{d}{d\omega}(\arg[1-c_ke^{j\omega}])+\sum_{k=1}^N\frac{d}{d\omega}(\arg[1-d_ke^{j\omega}]) grd[H(e]=dwdarg[H(e)]=>k=1Mdωd(arg[1cke])+k=1Ndωd(arg[1dke])
负值的原因是因为相位和频率之间的反向关系。

对于主值相位响应群延迟和连续相位响应群延迟可以使用下图表示:
在这里插入图片描述
可以看到对于不同的 r r r,主值相位响应式跳跃的,而连续相位响应式连续的。


总结

由于受到篇幅的原因,本篇文章只是对Z变换的频率响应中的幅频响应、相频响应以及群延迟进行了推导。但是在本篇文章中,反复提及了Z变换中的零点与极点,那么极点和零点到底有什么作用,会对于系统带来什么影响,这会在下一篇文章中进行介绍。

反正收藏也不会看,不如点个赞吧

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

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

相关文章

一周学会Flask3 Python Web开发-Jinja2模板访问对象

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 如果渲染模板传的是对象&#xff0c;如果如何来访问呢&#xff1f; 我们看下下面示例&#xff1a; 定义一个Student类 cla…

APISIX Dashboard上的配置操作

文章目录 登录配置路由配置消费者创建后端服务项目配置上游再创建一个路由测试 登录 http://192.168.10.101:9000/user/login?redirect%2Fdashboard 根据docker 容器里的指定端口&#xff1a; 配置路由 通过apisix 的API管理接口来创建&#xff08;此路由&#xff0c;直接…

【学习笔记】三维点云空洞修复介绍(二)Grids-based

1 研究领域内网格的定义 网格&#xff08;有研究也成格网&#xff09;指的是三维多边形网格模型&#xff0c;简称“网格”。简单的定义为&#xff1a;由多边形集合定义&#xff0c;用以表示三维模型表面轮廓的拓扑和空间结构&#xff0c;英文为polygon mesh或mesh。 其中&am…

助力DeepSeek私有化部署服务:让企业AI落地更简单、更安全

在数字化转型的浪潮中&#xff0c;越来越多的企业选择私有化部署AI技术&#xff0c;以保障数据安全、提升业务效率并实现自主可控。DeepSeek作为行业领先的AI开源技术&#xff0c;其技术可以支持企业私有化部署&#xff0c;企业需要一站式服务私有化部署&#xff0c;涵盖硬件采…

嵌入式开发:傅里叶变换(4):在 STM32上面实现FFT(基于STM32L071KZT6 HAL库+DSP库)

目录 步骤 1&#xff1a;准备工作 步骤 2&#xff1a;创建 Keil 项目&#xff0c;并配置工程 步骤 3&#xff1a;在MDK工程上添加 CMSIS-DSP 库 步骤 5&#xff1a;编写代码 步骤 6&#xff1a;配置时钟和优化 步骤 7&#xff1a;调试与验证 步骤 8&#xff1a;优化和调…

SQLark 数据迁移|断点续迁已上线(Oracle-达梦)

数据迁移是 SQLark 最受企业和个人用户欢迎的功能之一&#xff0c;截止目前已帮助政府、金融、能源、通信等 50 家单位完成从 Oracle、MySQL 到达梦的全量迁移&#xff0c;自动化迁移成功率达 96% 以上。 在 Oracle 到达梦数据库迁移过程中&#xff0c;SQLark V3.3 新增 断点续…

从哪里下载WinPrefetchView最安全?

WinPrefetchView 是一款用于读取和显示 Windows 系统中预读取文件&#xff08;Prefetch&#xff09;信息的工具&#xff0c;能够帮助用户了解系统启动时加载了哪些文件以及应用程序的运行情况。为了确保下载安全&#xff0c;建议从以下可信来源获取&#xff1a; 1. MajorGeeks…

计算机毕业设计SpringBoot+Vue.js智能物流管理系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

深度学习每周学习总结Y1(Yolov5 调用官方权重进行检测 )

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客Y1中的内容 &#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 ** 注意该训练营出现故意不退押金&#xff0c;恶意揣测偷懒用假的结果冒充真实打卡记录&#xff0c;在提出能够拿到视频录像…

内容中台是什么?内容管理平台解析

内容中台的核心价值 现代企业数字化转型进程中&#xff0c;内容中台作为中枢系统&#xff0c;通过构建统一化的内容管理平台实现数据资产的高效整合与智能调度。其核心价值体现在打破传统信息孤岛&#xff0c;将分散于CRM、ERP等系统的文档、知识库、产品资料进行标准化归集&a…

多模态人物视频驱动技术回顾与业务应用

一种新的商品表现形态&#xff0c;内容几乎存在于手淘用户动线全流程&#xff0c;例如信息流种草内容、搜索消费决策内容、详情页种草内容等。通过低成本、高时效的AIGC内容生成能力&#xff0c;能够从供给端缓解内容生产成本高的问题&#xff0c;通过源源不断的低成本供给倒推…

additional-spring-configuration-metadata.json实现springboot自定义提示

在配置additional-spring-configuration-metadata.json文件后&#xff0c;在开发人员的IDE工具使用个人编写的配置读取很有效的在application.properties或application.yml文件下完成提示。 配置元数据文件位于jar下面。 META-INF/spring-configuration-metadata.json它们使用简…

使用vscode导出Markdown的PDF无法显示数学公式的问题

我的硬件环境是M2的MacBook air&#xff0c;在vscode中使用了Markdown PDF来导出md文件对应的PDF。但不管导出html还是PDF文件&#xff0c;数学公式都是显示的源代码。 我看了许多教程&#xff0c;给的是这个方法&#xff1a;在md文件对应的html文件中加上以下代码&#xff1a…

SpringBoot3—快速入门

一、简介 &#xff08;1&#xff09;前置知识 Java17Spring、SpringMVC、MyBatisMaven、IDEA &#xff08;2&#xff09;环境要求 &#xff08;3&#xff09;SpringBoot3是什么 核心概念&#xff1a;Spring Boot 底层是 Spring&#xff0c;能简单、快速地创建一个独立的、生…

DeepSeek 15天指导手册——从入门到精通 PDF(附下载)

DeepSeek使用教程系列--DeepSeek 15天指导手册——从入门到精通pdf下载&#xff1a; https://pan.baidu.com/s/1PrIo0Xo0h5s6Plcc_smS8w?pwd1234 提取码: 1234 或 https://pan.quark.cn/s/2e8de75027d3 《DeepSeek 15天指导手册——从入门到精通》以系统化学习路径为核心&…

AWS S3 如何设置公开访问权限?

1.让整个bucket都有公开访问权限 1.1关闭【阻止公共读】 1.2关闭ACL访问控制 1.3打开桶策略 这样桶内所有的图片就能访问了 2.只开放特定文件让其具有访问权限&#xff1f; 2.1关闭【阻止公共读】 如之前的图示 2.2打开ACL控制 2.3单个文件打开公共读

深入了解 Python 中的 MRO(方法解析顺序)

文章目录 深入了解 Python 中的 MRO&#xff08;方法解析顺序&#xff09;什么是 MRO&#xff1f;如何计算 MRO&#xff1f;C3 算法的合并规则C3 算法的合并步骤示例&#xff1a;合并过程解析 MRO 解析失败的场景使用 mro() 方法查看 MRO示例 1&#xff1a;基本用法 菱形继承与…

二、IDE集成DeepSeek保姆级教学(使用篇)

各位看官老爷好&#xff0c;如果还没有安装DeepSeek请查阅前一篇 一、IDE集成DeepSeek保姆级教学(安装篇) 一、DeepSeek在CodeGPT中使用教学 1.1、Edit Code 编辑代码 选中代码片段 —> 右键 —> CodeGPT —> Edit Code, 输入自然语言可编辑代码&#xff0c;点击S…

一劳永逸解决vsocde模块import引用问题

这里写目录标题 原因解决方案 原因解决方案 原因&#xff1a; VSCode中需要显式地声明PYTHONPATH&#xff0c;不然根本找不到本项目内的模块和包的路径。 解决方法&#xff0c;加入到setting。json里当前Project路径&#xff0c;以后运行就自动添加了&#xff1a; 打开设置 …

网页制作10-html,css,javascript初认识の适用XHTML

一、简介&#xff1a; Xhtml是extensible hypertext markup language的缩写。它是由国际W3C组织制定并公布发行的。是一个过渡技术&#xff0c;结合了部分xml的强大功能及大多数html的简单特性。 Advantage. Xhtml提倡更简洁规范的代码。 Xhtml.文档在旧的基于的浏览器中&…