简述信息论与采样定理

news2024/12/26 2:12:36

信息论

香农信息论发表于1948/1949年,它由三部分组成:信号采样、信源编码、信道编码;

  • 信号采样:采样理论研究在何种条件下对连续信号进行采样,从而得到的离散型号可以可逆地恢复出采样前的连续信号。采样得到的离散实数值代表着原来的信号,信号通常有限精度量化成一个有限的符号集中。

  • 信源编码:信源编码研究如何将采样得到的离散数字信号编码成二进制序列,它利用了信号的统计分布来将采集到的数字信号编码成最紧凑的二进制码。

  • 信道编码:信道编码研究如何给已经编码的序列中添加冗余性,从而使它对传输中引入的错误或者攻击(比如某些比特位存一定概率的翻转)更具有鲁邦性;它有时候也叫做纠错码理论。

信号采样

1.1 模拟信号与数字信号

为了能够利用数学工具分析性能,数学建模通常建立在连续信号(也称为模拟信号)上。连续信号的设定的目的是为了能够表示物理世界采集到的真实信号,比如从麦克风、数字相机或者医疗设备等传感器硬件采集的输入信号。模拟信号是一个一维函数 f 0 ∈ L 2 ( [ 0 , 1 ] ) f_0\in L^2([0,1]) f0L2([0,1]),其中 [ 0 , 1 ] [0,1] [0,1]表示的信号采集域,比如通常可能是时间轴。图像的模拟信号是一个二维函数 f 0 ∈ L 2 ( [ 0 , 1 ] 2 ) f_0\in L^2([0,1]^2) f0L2([0,1]2),其中单位正方形区域 [ 0 , 1 ] 2 [0,1]^2 [0,1]2是图像空间区域。
尽管目前仅仅关注在声音和自然图像信号的处理中,但是这些方法中绝大部分都可以延伸到多维信号数据集的处理上,多维信号具有更高的维度间的映射:

f 0 : [ 0 , 1 ] d → [ 0 , 1 ] 2 f_0:[0,1]^d\rightarrow [0,1]^2 f0:[0,1]d[0,1]2

其中 d d d是输入空间的维度( d = 1 d=1 d=1表示声音信号, d = 2 d=2 d=2表示图像信号), s s s表示特征空间的维度。比如,对于灰度图像 d = 2 , s = 1 d=2,s=1 d=2,s=1,对于视频图像 d = 3 , s = 1 d=3,s=1 d=3,s=1,对于彩色图像 d = 2 , s = 3 d=2,s=3 d=2,s=3因为彩色图像有R/G/B三个通道。对于多光谱图像 d = 2 , s ≫ 3 d=2,s\gg 3 d=2,s3因为它由大量的不同波段信号的采样。图1.1和图1.2是这样信号的一些基本例子。

Fig1.1: 声音信号d=1,图像信号d=2,视频信号d=3

Fig1.2: 彩色图像s=3,多光谱图像s=32

1.1.1 信号获取与采样

信号采集是一个通过硬件设备将连续信号采集成离散信号的低维投影映射。麦克风是一维信号采样的例子,数字相机是二维采样的例子,采样操作对应这将连续函数信号映射到N维向量N的过程,可以用如下公式表示:
f 0 ∈ L 2 ( [ 0 , 1 ] d ) → f ∈ C N f_0\in L^2([0,1]^d)\rightarrow f\in \mathbb{C}^N f0L2([0,1]d)fCN

图1.3是一些离散信号的例子

Fig1.3: 离散化的声音与图像

1.1.2 线性移不变采样器

线性移不变采样器执行采样操作是将连续信号和一个不变的脉冲响应 h h h在采样位置进行卷积运算
f n = ∫ − S / 2 S / 2 f 0 ( x ) h ( n / N − x ) d x = f 0 ⋆ h ( n / N ) (1.1) f_n=\int_{-S/2}^{S/2}f_0(x)h(n/N-x)dx=f_0\star h(n/N) \tag{1.1} fn=S/2S/2f0(x)h(n/Nx)dx=f0h(n/N)(1.1)

函数 h ( x ) h(x) h(x)的精确形状取决于采样设备,它通常是一个低通滤波器,并且在0附近取得最大值。采样器的尺寸 S S S决定了采样设备的采样精度,它通常是与 1 / N 1/N 1/N同数量级的,如果S太大,会模糊信号,如果S太小,则会产生混叠现象。

1.2 香农采样定理

傅里叶变换回顾:对于 f ∈ L 1 ( R ) f\in L^1(\mathbb{R}) fL1(R),它的傅里叶变换定义为:
∀ ω ∈ R , f ^ ( ω ) = ∫ R f ( x ) e − i x ω d x . (1.2) \forall\omega\in\mathbb{R},\hat{f}(\omega)=\int_{\mathbb{R}}f(x)e^{-ix\omega}dx.\tag{1.2} ωR,f^(ω)=Rf(x)eixωdx.(1.2)

由于有 ∣ ∣ f ^ ∣ ∣ 2 = ( 2 π ) − 1 ∣ ∣ f ∣ ∣ 2 ||\hat{f}||^2=(2\pi)^{-1}||f||^2 ∣∣f^2=(2π)1∣∣f2,因此 f → f ^ f\rightarrow\hat{f} ff^可以扩展到连续的 L 2 ( R ) L^2(\mathbb{R}) L2(R),这样计算函数 f f f的傅里叶变换 f ^ \hat{f} f^可以看做 l i m T → + ∞ ∫ − T T f ( x ) e − i x ω d x lim_{T\rightarrow +\infty}\int_{-T}^{T}f(x)e^{-ix\omega}dx limT+TTf(x)eixωdx。当 f ^ ∈ L 1 ( R ) \hat{f}\in L^1(\mathbb{R}) f^L1(R),我们可以得到傅里叶逆变换:
f ( x ) = 1 2 π ∫ R f ^ ( ω ) e i x ω d ω , (1.3) f(x)=\frac{1}{2\pi}\int_{\mathbb{R}}\hat{f}(\omega)e^{ix\omega}d\omega, \tag{1.3} f(x)=2π1Rf^(ω)eixωdω,(1.3)

这表示了函数 f f f是连续的,并且在 ± ∞ \pm\infty ±处极限趋于0。
傅里叶变换 F : f → f ^ \mathcal{F} :f\rightarrow\hat{f} F:ff^交换了函数的正则性和衰减性。例如,如果 f ∈ C p ( R ) f\in C^p(\mathbb{R}) fCp(R),具有可积的傅里叶变换,那么 F ( f ( p ) ) ( ω ) = ( i ω ) p f ^ ( ω ) \mathcal{F}(f^{(p)})(\omega)=(i\omega)^{p}\hat{f}(\omega) F(f(p))(ω)=()pf^(ω),因此 ∣ f ^ ( ω ) ∣ = O ( 1 / ∣ ω ∣ p ) |\hat{f}(\omega)|=O(1/|\omega|^p) f^(ω)=O(1/∣ωp)。相反地,
∫ R ( 1 + ∣ ω ∣ ) p ∣ f ^ ( ω ) ∣ d ω < + ∞ ⇒ f ∈ C p ( R ) (1.4) \int_{\mathbb{R}}(1+|\omega|)^p|\hat{f}(\omega)|d\omega<+\infty\Rightarrow f\in C^p(\mathbb{R}) \tag{1.4} R(1+ω)pf^(ω)dω<+fCp(R)(1.4)

例如,当 f ^ ( ω ) = O ( 1 / ∣ ω ∣ p + 2 ) \hat{f}(\omega) =O(1/|\omega|^{p+2}) f^(ω)=O(1/∣ωp+2),可以推出 f ∈ C p ( R ) f\in C^p(\mathbb{R}) fCp(R)

傅里叶级数回顾:我们记 T = R / 2 π Z \mathbb{T}=\mathbb{R}/2\pi\mathbb{Z} T=R/2πZ为一系列的 2 π 2\pi 2π为周期的区间列。函数 f ∈ L 2 ( T ) f\in L^2(\mathbb{T}) fL2(T)是一个以 2 π 2\pi 2π为周期的函数,它可以看成 f ∈ L 2 ( [ 0 , 2 π ] ) f\in L^2([0,2\pi]) fL2([0,2π]),于是它的傅里叶系数为:
∀ n ∈ Z , f n ^ = 1 2 π ∫ 0 2 π f ( x ) e − i x n d x . \forall n\in\mathbb{Z},\hat{f_n}=\frac{1}{2\pi}\int_{0}^{2\pi}f(x)e^{-ixn}dx. nZ,fn^=2π102πf(x)eixndx.

这个公式等价于求函数 f f f与基函数 e n e_n en的内积 f n ^ = < f , e n > \hat{f_n}=<f,e_n> fn^=<f,en>,内积定义为 < f , g > = 1 2 π ∫ T f ( x ) g ‾ ( x ) d x <f,g>=\frac{1}{2\pi}\int_{\mathbb{T}}f(x)\overline{g}(x)dx <f,g>=2π1Tf(x)g(x)dx。在这里的内积中, e n e_n en是希尔伯特空间中的正交基,这意味着,可以通过如下收敛级数进行重建
f = ∑ n ∈ Z < f , e n > e n (1.5) f=\sum_{n\in\mathbb{Z}}<f,e_n>e_n \tag{1.5} f=nZ<f,en>en(1.5)

这意味着,在 N → + ∞ N\rightarrow +\infty N+时, ∣ ∣ f − ∑ n = − N N < f , e n > e n ∣ ∣ L 2 ( T ) → 0 ||f-\sum_{n=-N}^{N}<f,e_n>e_n||_{L^2(\mathbb{T})}\rightarrow 0 ∣∣fn=NN<f,en>enL2(T)0。如果函数 f f f可微,那么在 x ∈ T x\in\mathbb{T} xT上可以保证公式(1.5)按点收敛。如果函数存在阶跃点,那么在这些点数存在Gibbs震荡,从而不能保证一致收敛,但是级数仍然收敛域该点的左极限和右极限的一半。

泊松公式:泊松公式连接了傅里叶变换与傅里叶技术到信号采样与周期化操作。对于某个定义在 R \mathbb{R} R的函数 h ( ω ) h(\omega) h(ω),它的周期化为:
h P ( ω ) = ∑ n h ( ω − 2 π n ) (1.6) h_P(\omega)=\sum_{n}h(\omega-2\pi n) \tag{1.6} hP(ω)=nh(ω2πn)(1.6)

这个公式有意义的前提是 h ∈ L 1 ( R ) h\in L^1(\mathbb{R}) hL1(R), 并且在这种情况下 ∣ ∣ h P ∣ ∣ L 1 ( T ) ≤ ∣ ∣ h ∣ ∣ L 1 ( R ) ||h_P||_{L^1(\mathbb{T})}\le ||h||_{L^1(\mathbb{R})} ∣∣hPL1(T)∣∣hL1(R)。泊松公式阐明了如下关系:
(1)信号 f ( x ) f(x) f(x)通过采样得到采样序列 ( f ( n ) ) n (f(n))_n (f(n))n,对采样采样序列的傅里叶级数为 ∑ n f ( n ) e − i ω n \sum_{n}f(n)e^{-i\omega n} nf(n)eiωn
(2)信号 f ( x ) f(x) f(x)做傅里叶变换得到 f ^ ( ω ) \hat{f}(\omega) f^(ω),对傅里叶此福利也变化进行周期化,得到傅里叶级数 ∑ n f ( n ) e − i ω n \sum_{n}f(n)e^{-i\omega n} nf(n)eiωn

引理1 (泊松公式):假设 f ^ \hat{f} f^是紧支撑的,并且 ∣ f ( x ) ∣ ≤ C ( 1 + ∣ x ∣ ) − 3 |f(x)|\le C(1+|x|)^{-3} f(x)C(1+x)3,其中C为某个常数,于是有
∀ ω ∈ R , ∑ n f ( n ) e − i ω n = f ^ P ( ω ) . (1.7) \forall\omega\in\mathbb{R}, \sum_{n}f(n)e^{-i\omega n}=\hat{f}_P(\omega). \tag{1.7} ωR,nf(n)eiωn=f^P(ω).(1.7)

证明:由于 f ^ \hat{f} f^是紧支撑的, f ^ P \hat{f}_P f^P是良定义的,并且 f f f很快衰减,由公式(1.4)可知 ( f ^ ) P (\hat{f})_P (f^)P C 1 C^1 C1。于是可以由傅里叶级数展开
( f ^ ) P ( ω ) = ∑ k c k e i k ω (1.8) (\hat{f})_P(\omega)=\sum_{k}c_ke^{ik\omega} \tag{1.8} (f^)P(ω)=kckeikω(1.8)

其中
c k = 1 2 π ∫ 0 2 π ( f ^ ) P ( ω ) e − i k ω d ω = 1 2 π ∫ 0 2 π ∑ n f ^ ( ω − 2 π n ) e − i k ω d ω c_k=\frac{1}{2\pi}\int_{0}^{2\pi}(\hat{f})_P(\omega)e^{-ik\omega}d\omega=\frac{1}{2\pi}\int_{0}^{2\pi}\sum_{n}\hat{f}(\omega-2\pi n)e^{-ik\omega}d\omega ck=2π102π(f^)P(ω)eikωdω=2π102πnf^(ω2πn)eikωdω

又有
∫ 0 2 π ∑ n ∣ f ^ ( ω − i π n ) e − i k ω ∣ d ω = ∫ R ∣ f ^ ∣ \int_{0}^{2\pi}\sum_{n}|\hat{f}(\omega-i\pi n)e^{-ik\omega}|d\omega = \int_{\mathbb{R}}|\hat{f}| 02πnf^(ωiπn)eikωdω=Rf^

由于 f ^ ∈ L 1 ( R ) \hat{f}\in L^{1}(\mathbb{R}) f^L1(R)是有界的,因此可以交换求和符号与积分号的运算顺序
c k = ∑ n 1 2 π ∫ 0 2 π f ^ ( ω − 2 π n ) e − i k ω d ω = 1 2 π ∫ m a t h b b R f ^ ( ω ) e − i k ω d ω = f ( − k ) c_k=\sum_{n}\frac{1}{2\pi}\int_{0}^{2\pi}\hat{f}(\omega-2\pi n)e^{-ik\omega}d\omega=\frac{1}{2\pi}\int_{mathbb{R}}\hat{f}(\omega)e^{-ik\omega}d\omega=f(-k) ck=n2π102πf^(ω2πn)eikωdω=2π1mathbbRf^(ω)eikωdω=f(k)

由于 f ^ ∈ L 1 ( R ) \hat{f}\in L^1(\mathbb{R}) f^L1(R),因此这里我们运用(1.3)式中的傅里叶反变换是合理的。

注:这里我们进一步解释一下引理1的内容,信号 f ( t ) f(t) f(t)的傅里叶变换为 f ^ ( ω ) \hat{f}(\omega) f^(ω),我们对信号 f ( t ) f(t) f(t)在离散点 n n n处进行采样得到离散信号 f ( n ) f(n) f(n),离散信号 f ( n ) f(n) f(n)的福利变换为 ∑ n f ( n ) e − i ω n \sum_{n}f(n)e^{-i\omega n} nf(n)eiωn,而引理1则说明了离散采样信号 f ( n ) f(n) f(n)的傅里叶变换等于原始连续信号 f ( t ) f(t) f(t)的傅里叶变换按照以 2 π 2\pi 2π为周期进行周期化的结果。

香农采样定理:香农采样定理描述在什么采样步长 s > 0 s>0 s>0的采样操作 f → ( f ( n s ) ) n f\rightarrow (f(ns))_n f(f(ns))n下信号可以可逆恢复出原始信号的充分条件。它需要采样信号的频谱满足 s u p p ( f ^ ) ⊂ [ − π / s , π / s ] supp(\hat{f})\subset [-\pi/s,\pi/s] supp(f^)[π/s,π/s]。这个定理被奈奎斯特在1928年重新证明。它由于香农将其放于数字通信的论文中而变得非常出名。

定理1的证明过程示意---采样与混叠

定理1:如果对于某个常数C有 ∣ f ( x ) ∣ ≤ C ( 1 + ∣ x ∣ ) − 3 |f(x)|\le C(1+|x|)^{-3} f(x)C(1+x)3 s u p p f ^ ⊂ [ − π / s , π / s ] supp\hat{f}\subset [-\pi/s,\pi/s] suppf^[π/s,π/s],于是有
∀ x ∈ R f ( x ) = ∑ n f ( n s ) s i n c ( x / s − n ) ,其中 s i n c ( u ) = s i n ( π u ) π u (1.9) \forall x\in\mathbb{R}f(x)=\sum_{n}f(ns)sinc(x/s-n),其中sinc(u)=\frac{sin(\pi u)}{\pi u} \tag{1.9} xRf(x)=nf(ns)sinc(x/sn),其中sinc(u)=πusin(πu)(1.9)

一致收敛。
证明:令 g ( x ) = f ( s x ) g(x)=f(sx) g(x)=f(sx),那么 g ^ ( ω ) = 1 / s f ^ ( ω / s ) \hat{g}(\omega)=1/s\hat{f}(\omega/s) g^(ω)=1/sf^(ω/s),事实上,令 z = s x z=sx z=sx,那么有
g ^ ( ω ) = ∫ f ( s x ) e − i ω x d x = 1 s ∫ f ( z ) e − i ( ω / s ) z d z = f ^ ( ω / s ) / s , \hat{g}(\omega)=\int f(sx)e^{-i\omega x}dx=\frac{1}{s}\int f(z)e^{-i(\omega/s)z}dz=\hat{f}(\omega/s)/s, g^(ω)=f(sx)exdx=s1f(z)ei(ω/s)zdz=f^(ω/s)/s,

为了研究方便,我们把 s s s置为1。紧支撑假设含有 f ^ ( ω ) = 1 [ − p i , p i ] ( ω ) f ^ P ( ω ) \hat{f}(\omega)=1_{[-pi,pi]}(\omega)\hat{f}_P(\omega) f^(ω)=1[pi,pi](ω)f^P(ω)。联合(1.3)式的逆变换与泊松公式(1.8),有
f ( x ) = 1 2 π ∫ − ∞ + ∞ f ^ ( ω ) e i ω x d ω = 1 2 π ∫ π π f ^ P ( ω ) e i ω x = 1 2 π ∫ − π π ∑ n f ( n ) e i ω ( x − n ) d ω . f(x)=\frac{1}{2\pi}\int_{-\infty}^{+\infty}\hat{f}(\omega)e^{i\omega x}d\omega=\frac{1}{2\pi}\int_{\pi}^{\pi}\hat{f}_P(\omega)e^{i\omega x}=\frac{1}{2\pi}\int_{-\pi}^{\pi}\sum_nf(n)e^{i\omega (x-n)}d\omega. f(x)=2π1+f^(ω)exdω=2π1ππf^P(ω)ex=2π1ππnf(n)e(xn)dω.

Fig1-5:sinc核函数

由于 f f f很快衰减,于是 ∫ − π π ∑ n ∣ f ( n ) e i ω ( x − n ) ∣ d ω = ∑ n ∣ f ( n ) ∣ < + ∞ \int_{-\pi}^{\pi}\sum_{n}|f(n)e^{i\omega(x-n)}|d\omega=\sum_n|f(n)|<+\infty ππnf(n)e(xn)dω=nf(n)<+,因此可以交换求和与积分运算顺序,于是有
f ( x ) = ∑ n f ( n ) 1 2 π ∫ − π π e i ω ( x − n ) d ω = ∑ n f ( x ) s i n c ( x − n ) f(x)=\sum_{n}f(n)\frac{1}{2\pi}\int_{-\pi}^{\pi}e^{i\omega (x-n)}d\omega=\sum_{n}f(x)sinc(x-n) f(x)=nf(n)2π1ππe(xn)dω=nf(x)sinc(xn)

对于 s s s取其他值,上面的证明过程类似。
定理1的重构公式存在一个问题,它用了一个衰减缓慢且震荡剧烈的 s i n c ( x ) sinc(x) sinc(x)核函数。在实际应用中,我们很少用这样的核函数的来插值,而是更新换选择更光滑且局部性能更好的核函数。如果 s u p p ( f ^ ) ⊂ [ − π / s ′ , π / s ′ ] supp(\hat{f})\subset [-\pi/s^{'},\pi/s^{'}] supp(f^)[π/s,π/s],其中 s ′ > s s^{'}>s s>s(也就是,具有更窄的频带),我们也可以重新证明这个采样与重构过程,于是可以具有更多的自由度来设计重构核函数,现在可以选则在频域更窄,在时域指数衰减的核函数。
样条插值函数的定义为: ϕ 0 = 1 [ − 1 / 2 , 1 / 2 ] \phi_0=1_{[-1/2,1/2]} ϕ0=1[1/2,1/2],且 ϕ k = ϕ k − 1 ∗ ϕ 0 \phi_k=\phi_{k-1}*\phi_0 ϕk=ϕk1ϕ0,它是一个分线多项式函数,阶数为 k k k,并且有 k k k阶有界导数,在区间 [ − ( k + 1 ) / 2 , ( k + 1 ) / 2 ] [-(k+1)/2,(k+1)/2] [(k+1)/2,(k+1)/2]上紧支撑。采用样条函数作为插值核函数的重构公式为 f ( x ) ≈ f ~ ( x ) = ∑ n a n ϕ ( x − n ) f(x)\approx\tilde{f}(x)=\sum_{n}a_n\phi(x-n) f(x)f~(x)=nanϕ(xn),其中 ( a n ) n (a_n)_n (an)n通过 ( f ( n ) ) n (f(n))_n (f(n))n求解线性系统求得。仅在 k ∈ 0 , 1 k\in {0,1} k0,1时有 a n = f ( n ) a_n = f(n) an=f(n)。在实际经常用的是三次样条插值,对应的 k = 3 k=3 k=3

Fig1-6:样条函数插值基函数

这个理论也解释了在信号 f f f的傅里叶变换 f ^ \hat{f} f^的支撑区间不是 [ − π / s , p i / s ] [-\pi/s,pi/s] [π/s,pi/s]时会发生什么。这是会发生信号混叠现象,在支撑区间 [ − π / s , p i / s ] [-\pi/s,pi/s] [π/s,pi/s]的高频信号引起低频信号的的混乱叠加,通常称为混叠现象。如果输入信号不是带宽有限的,那么在采样之前进行一个预滤波(平滑),过滤掉频率支撑区间 [ − π / s , p i / s ] [-\pi/s,pi/s] [π/s,pi/s]之外的高频信号非常重要,这样可以有效的避免混叠现象。

Fig1-7:采样率不够时存在频谱混叠现象

量化:在已经采集得到信号的离散序列之后,为了能够有效存储和传输,需要把信号用有限精度去量化。后面的信号压缩章节会详细降到如何通过变换编码在变换域中进行高效编码与量化,这对于增强信源编码的性能非常有用。然而,常用的量化策略是直接在采样信号上进行量化操作。

Fig1-8:量化

例如,在采样步长为 s = 1 / N s=1/N s=1/N时,采集到长度问N的信号向量 ( u n = f ( n / N ) ) n = 1 N ∈ R N (u_n=f(n/N))_{n=1}^{N}\in \mathbb{R}^N (un=f(n/N))n=1NRN,由于函数 f f f在有限的空间区间与香农采样定理需要函数的傅里叶变换 f ^ \hat{f} f^也是带宽有限互相矛盾,因为一个函数 f f f不可能同时在时间域与频率域同时具有紧支撑特性,因此在有限的存储空间上完美重构信号是不可能的。
选择一个量化步长 T T T,量化算子 v n = Q T ( u n ) ∈ Z v_n=Q_T(u_n)\in\mathbb{Z} vn=QT(un)Z在距离 T T T的整数倍附近取整,例如
v = Q t ( u ) ⇔ v − 1 2 ≤ u / T < v + 1 2 , v=Q_t(u)\Leftrightarrow v-\frac{1}{2}\le u/T \lt v+\frac{1}{2}, v=Qt(u)v21u/T<v+21,

如图1.8所示。恢复信号的过程需要去量化,最好的重构是 D T ( v ) = T v D_T(v)=Tv DT(v)=Tv。量化然后取量化过程引入的最大误差是 T / 2 T/2 T/2,因为 ∣ D T ( Q T ( u ) ) − u ∣ ≤ T / 2 |D_T(Q_T(u))-u|\le T/2 DT(QT(u))uT/2。量化过程是香农标准过程中唯一的误差引入源。

Fig1-9:图像量化示意

信号与图像的编码理论后续会单独开一个章节详细讲述,这里暂时略过。
信道编码及纠错码理论是数字通信领域的核心内容,数字通信不是我们研究的重点,后续章节变不会继续论述。

注:未经授权,严谨转载!!!

如有错误或者不解,欢迎批评指正,欢迎私信笔者讨论。
在这里插入图片描述

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

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

相关文章

网络安全--防火墙旁挂部署方式和高可靠性技术

目录 一、防火墙 二、防火墙旁挂部署方式 使用策略路由实现 第一步、IP地址配置 第二步、配置路由 第三步、在防火墙上做策略 第四步、在R2上使用策略路由引流 三、防火墙高可靠性技术--HRP 拓扑图 第一步、配置SW1、SW2、FW1、FW2 第二步、进入防火墙Web页面进行配…

分布式网络在移动医疗场景中的应用

随着医疗信息化建设实践的深入&#xff0c;越来越多的医疗机构开始借助网络信息技术改善其运营及管理模式&#xff0c;为患者提供更高质量、更高效率、更加安全体贴的医疗服务。移动医疗便是在此背景下产生的新业务需求。 常见的移动医疗场景 住院部&#xff1a;移动查房、智…

【好文推荐】openGauss 5.0.0 数据库安全——全密态探究

前言 写此文章的目的&#xff0c;主要是验证&#xff1a; openGauss 5.0.0 数据库能够实现哪种加密方式的全密态全密态数据库的特点 一、全密态介绍 全密态数据库意在解决数据全生命周期的隐私保护问题&#xff0c;使得系统无论在何种业务场景和环境下&#xff0c;数据在传…

Spring面试题23:Spring支持哪些事务管理类型?Spring框架的事务管理有哪些优点?你更倾向用哪种事务管理类型?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring支持哪些事务管理类型? Spring 支持以下几种事务管理类型: 编程式事务管理:通过在代码中显式地使用事务管理 API(如 TransactionTempla…

AMEYA360:瑞萨电子整合Reality AI工具与e² studio IDE,扩大其在AIoT领域的卓越地位

全球半导体解决方案供应商瑞萨电21日宣布已在其Reality AI Tools?和e2 studio集成开发环境间建立接口&#xff0c;使设计人员能够在两个程序间无缝共享数据、项目及AI代码模块。实时数据处理模块已集成至瑞萨MCU软件开发工具套件&#xff08;注&#xff09;&#xff0c;以方便…

腾讯mini项目-【指标监控服务重构】2023-08-26

今日已办 Venus 的 Trace 无感化 定义 handler 函数 fiber.Handler 的主要处理逻辑返回处理中出现的 error返回处理中响应 json 的函数 // handler // Description: // Author xzx 2023-08-26 18:00:03 // Param c // Return error // Return func() error : function for …

【Redis】记录一次K8S存储故障导致Redis集群拓扑异常的修复过程

文章目录 背景处理新节点遗忘旧节点 背景 集群部署在K8S环境内&#xff0c;存储使用的localpv&#xff0c;有一台K8S主机节点磁盘故障&#xff0c;导致在该节点上的redis节点均出现故障&#xff0c;主要表现为持久化失败、集群拓扑异常&#xff0c;持久化失败可以临时关闭RDB和…

Python:pyts库中的GramianAngularField

您想要使用pyts库中的GramianAngularField类&#xff0c;这是一个用于时间序列数据图像转换的工具。要使用这个类&#xff0c;首先确保您已经安装了pyts库。如果尚未安装&#xff0c;您可以使用以下命令来安装它&#xff1a; pip install pyts一旦安装完成&#xff0c;您可以通…

sql分词查询,实现类似ES的效果

需求&#xff1a;希望通过缩写查询到全称&#xff0c;列如输入常州一院&#xff0c;要得到常州市第一人民医院。 1、创建全文索引 # 创建全文索引 create FULLTEXT INDEX ft_hospitalname ON hospital_information(hospitalname) with parser ngram;2、编写查询sql # 自然语…

计算机专业毕业设计项目推荐09-个人医疗系统(Spring+Js+Mysql)

个人医疗系统&#xff08;SpringJsMysql&#xff09; **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设计流程以及…

【python】pycharm导入anaconda环境

参考 Pycharm导入anaconda环境的教程图解 - 知乎 (zhihu.com)

el-table实现穿梭功能

第一种 <template><el-row :gutter"20"><el-col :span"10"><!-- 搜索 --><div class"search-bg"><YcSearchInput title"手机号" v-model"search.phone" /><div class"search-s…

【算法训练-动态规划】一 连续子数组的最大和

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【动态规划】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…

代数——第2章——群

第 2 章 群(Groups) II est peu de notions en mathematiques qui soient plus primitives que celle de loi de composition. (数学中很少有比合成律更原始的概念了。) --------------------------------------------------------Nicolas Bourbaki 2.1 合成律(LAWS OF CO…

Python中的封装

迷途小书童 读完需要 3分钟 速读仅需 1 分钟 当我们谈到 Python 中的封装时&#xff0c;可以将其类比为一个礼物盒子。封装是面向对象编程的一个重要概念&#xff0c;它允许我们将数据和相关的方法包装在一个单独的单元中&#xff0c;就像将礼物放在一个盒子里一样。 在 Python…

nginx_0.7.65_00截断_nginx解析漏洞

nginx_0.7.65_00截断_nginx解析漏洞 文章目录 nginx_0.7.65_00截断_nginx解析漏洞1 环境搭建1 解压nginx_0.7.652 双击启动&#xff0c;如有闪退&#xff0c;端口占用的情况&#xff0c;在conf文件nginx.conf修改一下端口号3 查看一下进程有nginx4 启动成功访问127.0.0.1:18080…

SpringBoot全局异常处理源码

SpringBoot全局异常处理源码 一、SpringMVC执行流程二、SpringBoot源码跟踪三、自定义优雅的全局异常处理脚手架starter自定义异常国际化引入封装基础异常封装基础异常扫描器&#xff0c;并注册到ExceptionHandler中项目分享以及改进点 一、SpringMVC执行流程 今天这里叙述的全…

一、imx6ull 最新交叉编译工具下载地址,及安装方法

IMX6ULL为Cortex-A7单核处理器&#xff0c;架构为32位&#xff0c;支持硬件浮点功能。所以下载如下图所示交叉编译工具 linaro GNU-A 针对Cortex-A系列版本 ARM官方稳定版本&#xff0c; ARM官网下载地址:https://developer.arm.com/downloads/-/gnu-a 百度网盘地址&#xff…

消息队列(RabbitMQ+RocketMQ+Kafka)

消息队列是一种应用程序之间通过异步通信进行数据交换的通信模式 消息队列的类型&#xff1a; 点对点&#xff0c;一对一的消息传递模型&#xff0c;其中每个消息只能被一个接收者消费。发送者将消息发送到队列中&#xff0c;而接收者从队列中获取消息并进行处理&#xff0c;…

ElasticSearch - DSL查询文档语法,以及深度分页问题、解决方案

目录 一、DSL 查询文档语法 前言 1.1、DSL Query 基本语法 1.2、全文检索查询 1.2.1、match 查询 1.2.2、multi_match 1.3、精确查询 1.3.1、term 查询 1.3.2、range 查询 1.4、地理查询 1.4.1、geo_bounding_box 1.4.2、geo_distance 1.5、复合查询 1.5.1、相关…