正交编码与正交沃尔什函数详解

news2025/2/25 8:17:20

本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。

文章目录

    • 正交编码
      • 正交编码的基本概念
        • 正交性
        • 互相关系数
        • 正交编码
        • 自相关系数
        • 超正交码
        • 双正交编码
      • 正交沃尔什函数
        • 离散沃尔什函数的构成
        • 沃尔什函数的基本性质

正交编码

正交编码的基本概念

正交性

若两个周期为 T 的模拟信号 s 1 ( t ) s_{1}(t) s1(t) s 2 ( t ) s_{2}(t) s2(t) 互相正交, 则有
∫ 0 T s 1 ( t ) s 2 ( t ) d t = 0 \int_{0}^{T} s_{1}(t) s_{2}(t) d t=0 0Ts1(t)s2(t)dt=0
同理, 若 M 个周期为 T 的模拟信号 s 1 ( t ) s_{1}(t) s1(t), s 2 ( t ) s_{2}(t) s2(t), … \ldots , s M ( t ) s_{M}(t) sM(t) 构成一个正交信号集合,则有
∫ 0 T s i ( t ) s j ( t ) d t = 0 i ≠ j ; i , j = 1 , 2 , … , M \int_{0}^{T} s_{i}(t) s_{j}(t) d t=0 \quad i \neq j ; \quad i, j=1,2, \ldots, M 0Tsi(t)sj(t)dt=0i=j;i,j=1,2,,M

互相关系数

对于二进制数字信号, 用一数字序列表示码组。这里, 我们只讨论二进制且码长相同的编码。这时, 两个码组的正交性可用如下形式的互相 关系数来表述。

设长为 n \boldsymbol{n} n 的编码中码元只取值 +1 和 -1 , 假设 x \boldsymbol{x} x y \boldsymbol{y} y 是其中两个码组:
x = ( x 1 , x 2 , x 3 , ⋯   , x n ) y = ( y 1 , y 2 , y 3 , ⋯   , y n ) x=(x_{1}, x_{2}, x_{3}, \cdots, x_{n}) \quad y=(y_{1}, y_{2}, y_{3}, \cdots, y_{n}) x=(x1,x2,x3,,xn)y=(y1,y2,y3,,yn)
其中: x i , y i ∈ ( + 1 , − 1 ) , i = 1 , 2 , ⋯   , n x_{i}, y_{i} \in(+1,-1), \quad i=1,2, \cdots, n xi,yi(+1,1),i=1,2,,n

若码组 x 和 y 正交, 则必有 ρ ( x , y ) = 0 \rho(x, y)=0 ρ(x,y)=0
ρ ( x , y ) = 1 n ∑ i = 1 n x i y i \rho(x, y)=\frac{1}{n} \sum_{i=1}^{n} x_{i} y_{i} ρ(x,y)=n1i=1nxiyi

正交编码

例如, 右图所示 4 个数字信号可以看作是如下4 个码组:

{ s 1 ( t ) : ( + 1 , + 1 , + 1 , + 1 ) s 2 ( t ) : ( + 1 , + 1 , − 1 , − 1 ) s 3 ( t ) : ( + 1 , − 1 , − 1 , + 1 ) s 4 ( t ) : ( + 1 , − 1 , + 1 , − 1 ) . \{\begin{array}{l} s_{1}(t):(+1,+1,+1,+1) \\ s_{2}(t):(+1,+1,-1,-1) \\ s_{3}(t):(+1,-1,-1,+1) \\ s_{4}(t):(+1,-1,+1,-1) \end{array}. {s1(t):(+1,+1,+1,+1)s2(t):(+1,+1,1,1)s3(t):(+1,1,1,+1)s4(t):(+1,1,+1,1).

按照互相关系数定义式计算容易得知, 这 4 个码组中任意两者之间的相关系数都为 0 , 即这 4 个码组两两正交。我们把这种两两正交的编码称为正交编码

用二进制数字表示互相关系数

在二进制编码理论中, 常采用二进 制数字 “ 0 ”和 “ 1 ”表示码元的可能 取值。这时, 若规定用二进制数字 “0”代替上述码组中的 “+ 1 ”, 用 二进制数字 “ 1 ”代替 “ -1 ”, 则上 述互相关系数定义式将变为
ρ ( x , y ) = A − D A + D \rho(x, y)=\frac{A-D}{A+D} ρ(x,y)=A+DAD
式中, A——x 和 y 中对应码元相同的个数;

D—— x 和 y 中对应码元不同的个数。

例如, 按照左式规定, 上面例 子可以改写成

{ s 1 ( t ) : ( 0 , 0 , 0 , 0 ) s 2 ( t ) : ( 0 , 0 , 1 , 1 ) s 3 ( t ) : ( 0 , 1 , 1 , 0 ) s 4 ( t ) : ( 0 , 1 , 0 , 1 ) . \{\begin{array}{l} s_{1}(t):(0,0,0,0) \\ s_{2}(t):(0,0,1,1) \\ s_{3}(t):(0,1,1,0) \\ s_{4}(t):(0,1,0,1) \end{array}. {s1(t):(0,0,0,0)s2(t):(0,0,1,1)s3(t):(0,1,1,0)s4(t):(0,1,0,1).

可以验证互相关系数 ρ = 0 \boldsymbol{\rho}=\mathbf{0} ρ=0 .

自相关系数

上式中, 若用 x 的 j 次循环移位代替 y , 就得到 x 的自相关系数 ρ x ( j ) \rho_{x}(j) ρx(j) 。 具体地讲,令
x = ( x 1 , x 2 , ⋯   , x n ) y = ( x 1 + j , x 2 + j , ⋯   , x n , x 1 , x 2 , ⋯ x j ) \begin{array}{l} x=(x_{1}, x_{2}, \cdots, x_{n}) \\ y=(x_{1+j}, x_{2+j}, \cdots, x_{n}, x_{1}, x_{2}, \cdots x_{j}) \end{array} x=(x1,x2,,xn)y=(x1+j,x2+j,,xn,x1,x2,xj)
代入定义式
ρ ( x , y ) = A − D A + D \rho(x, y)=\frac{A-D}{A+D} ρ(x,y)=A+DAD

就得到自相关系数 ρ x ( j ) \rho_{x}(j) ρx(j) :
ρ x ( j ) = ( A − D ) / n \rho_{x}(j)=(A-D) / n ρx(j)=(AD)/n
类似上述互相关系数的定义, 可以对于一个长为 n 的码组 x 定义其自相关系数为
ρ x ( j ) = 1 n ∑ i = 1 n x i x i + j , j = 0 , 1 , ⋯   , ( n − 1 ) \rho_{x}(j)=\frac{1}{n} \sum_{i=1}^{n} x_{i} x_{i+j}, \quad j=0,1, \cdots,(n-1) ρx(j)=n1i=1nxixi+j,j=0,1,,(n1)
式中, x 的下标按模 n 运算, 即有 x n + k ≡ x k x_{n+k} \equiv \mathbf{x}_{k} xn+kxk 。例如, 设

x = ( x 1 , x 2 , x 3 , x 4 ) = ( + 1 , − 1 , − 1 , + 1 ) x=(x_{1}, x_{2}, x_{3}, x_{4})=(+1,-1,-1,+1) x=(x1,x2,x3,x4)=(+1,1,1,+1)
则有
ρ x ( 0 ) = 1 4 ∑ i = 1 4 x i 2 = 1 ρ x ( 1 ) = 1 4 ∑ i = 1 4 ‾ ‾ 4 x i x i + 1 = 1 4 ( x 1 x 2 + x 2 x 3 + x 3 x 4 + x 4 x 1 ) = 1 4 ( − 1 + 1 − 1 + 1 ) = 0 ρ x ( 2 ) = 1 4 ∑ i = 1 1 x i x i + 2 = 1 4 ( x 1 x 3 + x 2 x 4 + x 3 x 1 + x 4 x 2 ) = − 1 ρ x ( 3 ) = 1 4 ∑ i = 1 4 ‾ 1 x i x i + 3 = 1 4 ( x 1 x 4 + x 2 x 1 + x 3 x 2 + x 4 x 3 ) = 0 \begin{array}{l} \rho_{x}(0)=\frac{1}{4} \sum_{i=1}^{4} x_{i}^{2}=1\\ \rho_{x}(1)=\frac{1}{4} \sum_{i=1}^{\overline{\overline{4}}^{4}} x_{i} x_{i+1}=\frac{1}{4}(x_{1} x_{2}+x_{2} x_{3}+x_{3} x_{4}+x_{4} x_{1})=\frac{1}{4}(-1+1-1+1)=0 \\ \rho_{x}(2)=\frac{1}{4} \sum_{i=1}^{1} x_{i} x_{i+2}=\frac{1}{4}(x_{1} x_{3}+x_{2} x_{4}+x_{3} x_{1}+x_{4} x_{2})=-1 \\ \rho_{x}(3)=\frac{1}{4} \sum_{i=1}^{\overline{4}^{1}} x_{i} x_{i+3}=\frac{1}{4}(x_{1} x_{4}+x_{2} x_{1}+x_{3} x_{2}+x_{4} x_{3})=0 \end{array} ρx(0)=41i=14xi2=1ρx(1)=41i=144xixi+1=41(x1x2+x2x3+x3x4+x4x1)=41(1+11+1)=0ρx(2)=41i=11xixi+2=41(x1x3+x2x4+x3x1+x4x2)=1ρx(3)=41i=141xixi+3=41(x1x4+x2x1+x3x2+x4x3)=0

超正交码

超正交码:相关系数 ρ \rho ρ 的取值范围在 ± 1 \pm 1 ±1 之间, 即有 $ -1 \leq \rho \leq+1$ 。 若两个码组间的相关系数 ρ < 0 \rho<0 ρ<0 , 则称这两个码组互相超正交。如果一种编码中任两码组间均超正交, 则称这种编码为超正交码。

例如, 在上例中, 若仅取后 3 个码组, 并且删去其第一位, 构成如下新的编码:

{ s 1 ′ ( t ) : ( 0 , 1 , 1 ) s 2 ′ ( t ) : ( 1 , 1 , 0 ) s 3 ′ ( t ) : ( 1 , 0 , 1 ) . \{\begin{array}{l} s_{1}{ }^{\prime}(t):(0,1,1) \\ s_{2}{ }^{\prime}(t):(1,1,0) \\ s_{3}{ }^{\prime}(t):(1,0,1) \end{array}. {s1(t):(0,1,1)s2(t):(1,1,0)s3(t):(1,0,1).

则不难验证, 由这 3 个码组所构成的编码是超正交码。

双正交编码

由正交编码和其反码便可以构成双正交编码。

例:上例中

正交码为

{ s 1 ( t ) : ( 0 , 0 , 0 , 0 ) s 2 ( t ) : ( 0 , 0 , 1 , 1 ) s 3 ( t ) : ( 0 , 1 , 1 , 0 ) s 4 ( t ) : ( 0 , 1 , 0 , 1 ) \{\begin{array}{l}s_{1}(t):(0,0,0,0) \\ s_{2}(t):(0,0,1,1) \\ s_{3}(t):(0,1,1,0) \\ s_{4}(t):(0,1,0,1)\end{array} {s1(t):(0,0,0,0)s2(t):(0,0,1,1)s3(t):(0,1,1,0)s4(t):(0,1,0,1)

其反码为

{ ( 1 , 1 , 1 , 1 ) ( 1 , 1 , 0 , 0 ) ( 1 , 0 , 0 , 1 ) ( 1 , 0 , 1 , 0 ) \{\begin{array}{l}(1,1,1,1) \\ (1,1,0,0) \\ (1,0,0,1) \\ (1,0,1,0)\end{array} {(1,1,1,1)(1,1,0,0)(1,0,0,1)(1,0,1,0)

上两者的总体即构成如下双正交码:

( 0 , 0 , 0 , 0 ) ( 1 , 1 , 1 , 1 ) ( 0 , 0 , 1 , 1 ) ( 1 , 1 , 0 , 0 ) ( 0 , 1 , 1 , 0 ) ( 1 , 0 , 0 , 1 ) ( 0 , 1 , 0 , 1 ) ( 1 , 0 , 1 , 0 ) (0,0,0,0) \quad(1,1,1,1) \quad(0,0,1,1) \quad(1,1,0,0)(0,1,1,0) \quad(1,0,0,1) \quad(0,1,0,1) \quad(1,0,1,0) (0,0,0,0)(1,1,1,1)(0,0,1,1)(1,1,0,0)(0,1,1,0)(1,0,0,1)(0,1,0,1)(1,0,1,0)

此码共有 8 种码组, 码长为 4 。

正交沃尔什函数

沃尔什(Walsh)函数集是完备的非正弦型的二元(取值为+1与-1)正交函数集, 其相应的离散沃尔什函数简称为沃尔什序列或沃尔什码。 沃尔什函数是定义在半开区间 [0,1) 的矩形波族, 每个矩形波有一个编号 n( n = 0 , 1 , 2 , 3 , … n=0,1,2,3, \ldots n=0,1,2,3,) 。

矩形波幅度的取值为 +1 或 -1 , 规定起始时矩形波的取值为 +1 , 然后在 +1 与 -1 之间变化, 变化的次数 (+1 变 -1 与 -1 变 +1 的次数之和) m = n m=n m=n , 在 +1 或 -1 上持续的时间可以相等, 也可以不相等 (不相等时较长的持续时间 T 1 T_{1} T1 为较短的持续时间 T s T_{\mathrm{s}} Ts 的两倍)。 编号为 n 的沃尔什函数用 W a l ( n , t ) \mathrm{Wal}(n, t) Wal(n,t) 表示, 沃尔什函数的波形如图所示。

补充(度量空间)的完备性定义:

度量空间 X = ( X , d ) X=(X, d) X=(X,d) 中的序列 ( x n ) (x_{n}) (xn) , 如果对任意给定的 $ \varepsilon \gt 0 $, 都存在一个 N = N ( ε ) \mathrm{N}=\mathrm{N}(\varepsilon) N=N(ε) , 使得对每个 m \mathrm{m} m, n > N \mathrm{n}>\mathrm{N} n>N 都有
d ( x m , x n ) < ε \mathrm{d}(\mathrm{x}_{\mathrm{m}}, \mathrm{x}_{\mathrm{n}})<\varepsilon d(xm,xn)<ε
则称它是一个柯西序列。如果空间 X 中的每个柯西序列都收敛, 则称 X 是完备的。

一个完备的函数集, 应该能表示出其空间上的所有函数。

离散沃尔什函数的构成

离散沃尔什函数也称沃尔什序列或沃尔什码, 用哈达马矩阵的行(或列)可以构成离散沃尔什函数

一阶哈达马矩阵为
H 1 =  [1]  H_{1}=\text { [1] } H1= [1] 
高阶哈达马矩阵的递推公式如下:
H N m = [ H N m − 1 H N m − 1 H N m − 1 − H N m − 1 ] H_{N_{m}}=[\begin{array}{rr} H_{N_{m-1}} & H_{N_{m-1}} \\ H_{N_{m-1}} & -H_{N_{m-1}} \end{array}] HNm=[HNm1HNm1HNm1HNm1]
式中, N m = 2 m N_{m}=2^{m} Nm=2m, m = 1 , 2 , 3 , … m=1,2,3, \ldots m=1,2,3,

例如, m=1 时
H N 1 = H 2 = [ H 1 H 1 H 1 − H 1 ] = [ 1 1 1 − 1 ] H N 2 = H 4 = [ H 2 H 2 H 2 − H 2 ] = [ 1 1 1 1 1 1 1 − 1 1 1 − 1 − 1 1 − 1 − 1 1 ] \begin{array}{c} H_{N_{1}}=H_{2}=[\begin{array}{rr} H_{1} & H_{1} \\ H_{1} & -H_{1} \end{array}]=[\begin{array}{rr} 1 & \mathbf{1} \\ \mathbf{1} & \mathbf{- 1} \end{array}] \\ H_{N_{2}}=H_{4}=[\begin{array}{rr} H_{2} & H_{2} \\ H_{2} & -H_{2} \end{array}]=[\begin{array}{rrrr} 1 & \mathbf{1} & \mathbf{1} & \mathbf{1} \\ \mathbf{1} & \mathbf{1} & \mathbf{1} & -\mathbf{1} \\ \mathbf{1} & \mathbf{1} & \mathbf{- 1} & -\mathbf{1} \\ \mathbf{1} & \mathbf{- 1} & -\mathbf{1} & \mathbf{1} \end{array}] \end{array} HN1=H2=[H1H1H1H1]=[1111]HN2=H4=[H2H2H2H2]=[1111111111111111]

m=3 时
H N 3 = H 8 = [ H 4 H 4 H 4 − H 4 ] = [ 1 1 1 1 1 1 1 1 1 − 1 1 − 1 1 − 1 1 − 1 1 1 − 1 − 1 1 1 − 1 − 1 1 − 1 − 1 1 1 − 1 − 1 1 1 1 1 1 − 1 − 1 − 1 − 1 1 − 1 1 − 1 − 1 1 − 1 1 1 1 − 1 − 1 − 1 − 1 1 1 1 − 1 − 1 1 − 1 1 1 − 1 ] \begin{array}{c} H_{N_{3}}=H_{8} \\ =[\begin{array}{rr} H_{4} & H_{4} \\ H_{4} & -H_{4} \end{array}]=[\begin{array}{cccccccc} 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 & 1 & -1 & 1 & -1 \\ 1 & 1 & -1 & -1 & 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1 & 1 & -1 & -1 & 1 \\ 1 & 1 & 1 & 1 & -1 & -1 & -1 & -1 \\ 1 & -1 & 1 & -1 & -1 & 1 & -1 & 1 \\ 1 & 1 & -1 & -1 & -1 & -1 & 1 & 1 \\ 1 & -1 & -1 & 1 & -1 & 1 & 1 & -1 \end{array}] \end{array} HN3=H8=[H4H4H4H4]=[1111111111111111111111111111111111111111111111111111111111111111]
N_{m} 阶哈达马矩阵的通式可表示为
H N m = [ h 11 h 12 h 13 ⋯ h 1 N m h 21 h 22 h 23 ⋯ h 2 N m ⋮ ⋮ h N m 1 h N m 2 h N m 3 ⋯ h N m N m ] H_{N_{m}}=[\begin{array}{ccccc} h_{11} & h_{12} & h_{13} & \cdots & h_{1 N_{m}} \\ h_{21} & h_{22} & h_{23} & \cdots & h_{2 N_{m}} \\ \vdots & & & \vdots \\ h_{N_{m} 1} & h_{N_{m} 2} & h_{N_{m} 3} & \cdots & h_{N_{m} N_{m}} \end{array}] HNm=[h11h21hNm1h12h22hNm2h13h23hNm3h1Nmh2NmhNmNm]
式中, N m = 2 m , m = 1 , 2 , 3 , … , h i k ∈ ( + 1 , − 1 ) N_{m}=2^{m}, m=1,2,3, \ldots, h_{i k} \in(+1,-1) Nm=2m,m=1,2,3,,hik(+1,1)
用哈达马矩阵 $H_{N m} $ 的行 (或列)可以构成离散沃尔什函数 W a l [ i , t ] W a l[i, t] Wal[i,t] , 它们的对应关系如下:

Wal ⁡ [ i , t ] = ∑ k = 1 N m h i k g ( t − ( k − 1 ) T c ) g ( t ) = { 1 , 0 ≤ t ≤ T c 0 ,  others  \begin{array}{c} \operatorname{Wal}[i, t]=\sum_{k=1}^{N m} h_{i k} g(t-(k-1) T_{c}) \\ g(t)=\{\begin{array}{c} 1,0 \leq t \leq T_{c} \\ 0, \text { others } \end{array} \end{array} Wal[i,t]=k=1Nmhikg(t(k1)Tc)g(t)={1,0tTc0, others 

沃尔什函数的基本性质

(1) 在半开区间 [0,1) 上正交, 即

∫ 0 1 wal ⁡ ( i , t ) wal ⁡ ( j , t ) d t = { 1 , i = j 0 , i ≠ j i , j = 0 , 1 , 2 , ⋯   . \int_{0}^{1} \operatorname{wal}(i, t) \operatorname{wal}(j, t) \mathrm{d} t=\{\begin{array}{cc} 1, & i=j \\ 0, & i \neq j \end{array} \quad i, j=0,1,2, \cdots. 01wal(i,t)wal(j,t)dt={1,0,i=ji=ji,j=0,1,2,.

该性质为沃尔什函数基本性质中最重要的性质。

(2) 除 W a l ( 0 , t ) \mathrm{Wal}(0, t) Wal(0,t) 外,其他 W a l ( n , t ) \mathrm{Wal}(n, t) Wal(n,t) 在半开区间 [0,1) 上的均值为 0 .

(3) 两个沃尔什函数相乘仍为沃尔什函数,即
Wal ⁡ ( i , t ) Wal ⁡ ( j , t ) = Wal ⁡ ( k t ) \operatorname{Wal}(i, t) \operatorname{Wal}(j, t)=\operatorname{Wal}(kt) Wal(i,t)Wal(j,t)=Wal(kt)
这表示沃尔什函数对于乘法是自闭的。

(4) 沃尔什函数集是完备的, 即长度为 N \mathrm{N} N 的离散沃尔什函数 (沃尔什序列)一共有 N \mathrm{N} N 个。

(5) 沃尔什函数在同步时是完全正交的。

(6) 沃尔什函数在不同步时, 其自相关和互相关特性均不理想, 并随同步误差值的增大而快速恶化。

(7) 同长度不同编号的walsh函数的频带宽度不同。

参考文献:

  1. Proakis, John G., et al. Communication systems engineering. Vol. 2. New Jersey: Prentice Hall, 1994.
  2. Proakis, John G., et al. SOLUTIONS MANUAL Communication Systems Engineering. Vol. 2. New Jersey: Prentice Hall, 1994.
  3. 周炯槃. 通信原理(第3版)[M]. 北京:北京邮电大学出版社, 2008.
  4. 樊昌信, 曹丽娜. 通信原理(第7版) [M]. 北京:国防工业出版社, 2012.

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

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

相关文章

Spring Boot 集成 WebSocket 实现服务端推送消息到客户端

假设有这样一个场景&#xff1a;服务端的资源经常在更新&#xff0c;客户端需要尽量及时地了解到这些更新发生后展示给用户&#xff0c;如果是 HTTP 1.1&#xff0c;通常会开启 ajax 请求询问服务端是否有更新&#xff0c;通过定时器反复轮询服务端响应的资源是否有更新。 在长…

css基础(二)

目录 1. CSS 的复合选择器 1.1 什么是复合选择器 1.2 后代选择器(重要&#xff09; 1.3 子选择器(重要&#xff09; 1.4 并集选择器(重要&#xff09; 1.5 伪类选择器 1.6 链接伪类选择器 1.7 :focus伪类选择器 1.8 复合选择器总结 二、 CSS 的元素显示模式 2.1什么是元素显示模…

多线程编程和并行计算的实例:期货交易及打车软件算法

多线程编程和并行计算的实例:期货交易及打车软件算法 解决现实生活中的问题时&#xff0c;多处理器和多核系统的普及使并行计算成为一个关键的性能提升手段。在这篇博客中&#xff0c;我们将通过深入讨论两个引人入胜而又具有实际意义的场景——期货交易和打车匹配算法&#xf…

CSS圆角进化论

CSS圆角发展过程 大致经历了3个阶段&#xff0c;包括&#xff1a; 背景图片实现圆角CSS2.0标签模拟圆角CSS3.0圆角属性&#xff08;border-radius属性)实现圆角 ☛背景图片实现圆角&#xff1a;使用背景图片实现圆角的方式很多&#xff0c;实现的方式和圆角的切图方式关系密…

AI绘图软件分享:Midjourney 基础教程(三)

大家好&#xff0c;我是权知星球&#xff0c;今天继续给大家分享Midjourney 基础教程&#xff08;三&#xff09;&#xff1a;Midjourney 图生图。 刚开始学习使⽤ AI 绘画时&#xff0c;⼤部分⼈的绘画⽅式&#xff1a; 有⼀个想象中的画⾯&#xff0c;⽤中⽂将这个画⾯描述…

【文件操作与IO】Java中如何操作文件

目录 Java 中操作文件 File 概述 属性 构造方法 方法 代码示例 文件内容的读写 —— 数据流 InputStream 概述 FileInputStream 概述 利用 Scanner 进行字符读取 OutputStream 概述 利用 OutputStreamWriter 进行字符写入 利用 PrintWriter 找到我们熟悉的方法 代码…

D. A Wide, Wide Graph(树的直径)

Problem - 1805D - Codeforces 给定一棵包含n个节点的树&#xff08;一个无环联通图&#xff09;&#xff0c;对于一个固定的整数k&#xff0c;定义Gk为一个具有n个节点的无向图&#xff0c;其中只有当在给定树中节点u和v之间的距离至少为k时才存在边。 对于从1到n的每个k&…

undefined reference to `tputs‘

昨天在Debian11 上编译 bluez 的时候&#xff0c;看这里&#xff0c;出现了如下这个错误&#xff0c;一般这种未定义的错误提示都是没有链接正确的库导致&#xff0c;但是搞了很久都没解决。 奇怪的是之前在 Centos 上编译却没有遇到这个问题&#xff0c;而且在 configure 时也…

做Java开发,真的“穷途末路”了吗?浅谈从2018-2023年,这行到底“卷”成了啥样

文章目录 一、火爆的行业1、裁员潮引发的行业惶恐2、国情下的行业现状3、时代的快速发展 二、Java开发“卷”成了啥样1、2013年2、2018年3、2013年4、真的需要这么多知识吗 三、大龄程序员何去何从引用来处 一、火爆的行业 “程序员”这个代名词&#xff0c;似乎总是跟“高薪”…

基于多进程并发-进程通讯之管道(pipe)

一、管道&#xff08;pipe&#xff09; 所谓的管道&#xff0c;就是内核⾥⾯的⼀串缓存&#xff08;Pipe&#xff09;。一个进程从管道的⼀端写⼊的数据&#xff0c;实际上是缓存在内核中的&#xff0c;另⼀端读取&#xff0c;也就是从内核中读取这段数据。 特性&#xff1a;…

windwos2016 由于没有远程桌面授权服务器可以提供许可证

一、问题&#xff1a; 经常会遇到&#xff0c;server2016、server2012、server2008操作系统&#xff0c;安装远程桌面服务之后没有激活&#xff0c;经过120天到期之后&#xff0c;没办法再使用&#xff0c;重新安装激活远程桌面服务也不能用。 二、具体的报错如下图&#xff…

归并排序详解-附Python代码

排序思路 将输入的列表递归分解成若干个有序的子列表&#xff08;只含有一个元素&#xff09;&#xff1b;将分解后的有序子列表两两归并成一个新的有序列表&#xff1b;重复步骤2&#xff0c;直到完成排序。 重点&#xff1a;如何定义一个归并函数&#xff0c;可以将两个有序…

Qt-自定义控件

Qt-自定义控件 简单使用 首先创建一个工程 在现有的工程上添加文件&#xff0c;选择Qt设计师界面类 选择Widget 添加两个控件之后&#xff0c;选择水平布局 将刚刚自定义的控件smallWidget放置在原始的控件中 首先在原始工程的ui界面 随便放置一个widget 选择&#xff…

我的内网渗透-代理转发(1)

概念 网关 必须经过 用来进行路由转发的设备&#xff0c;网关的作用是让不同网段之间能够通信 代理 委托访问 无论代理后面挂了几台设备&#xff0c;都认为是从代理进行访问&#xff0c;对外只表现为代理一台。外部认为是与代理进行…

计算机提示xinput1_3.dll丢失,三个详细修复方法

打开《绝地求生》游戏的时候&#xff0c;计算机提示xinput1_3.dll丢失&#xff0c;无法启动运行。重新安装一遍游戏依然无法启动运行。这个是由于xinput1_3.dll文件是属于电脑系统DirectX9.0的一个组件&#xff0c;用于提供输入和输出功能。它包含了各种接口和函数&#xff0c;…

spi控制器和spi设备的加载过程

spi控制器都是挂在platform总线上的&#xff0c;所以要等platform总线上的设备驱动加载spi控制器完成后才能加载spi设备。 1.spi控制器加载 由spi控制器驱动程序调用spi_register_master来完成spi控制器驱动加载 int spi_register_master(struct spi_master *master) { ... s…

【ubuntu20.04上构建qemu启动linux kernel】

参考Ubuntu环境下使用qemu搭建arm64运行环境 - 简书 一、交叉编译工具 sudo apt install gcc-aarch64-linux-gnu aarch64-linux-gnu-gcc -v 二、linux内核编译 git clone https://github.com/torvalds/linux.git cp arch/arm64/configs/virt.config .config make ARCHarm64 m…

并网逆变器杂记1-VO-DCC双环控制

NOTE1&#xff1a; 母线电压恒定的条件是&#xff1a; PV输出功率 &#xff0c;等于逆变侧消耗功率 假设&#xff1a;PV侧给母线输入10A &#xff0c;但是逆变侧消耗1A&#xff0c;此时母线Udc会升高 反之PV输入1A&#xff0c;消耗10A&#xff0c;母线Udc会降低。 NOTE2&#…

【IP地址】使用这个免费工具轻松获取地理位置

文章目录 前言一、Ip-API二、使用示例2.1、语言2.2、数据格式 三、简单示例四、更好的服务五、需要注意的点结尾 前言 今天分享一个免费的在线工具来查询IP地址所在的地理位置。可以通过IP地址所属的网络运营商和其他相关信息来确定设备的位置&#xff0c;包括国家、地区、城市…

CentOs中操作用户命令(添加或删除)

1、不添加任何参数,创建 zhangsan 用户 不加参数时,创建用户默认创建一个用户目录以及用户和组同名,且UID和GID相同 useradd zhangsan 用 id和 ll 命令查看一下,是否成功创建用户目录以及用户和用户组 id ll uid1003( zhangsan) gid1003( zhangsan) 组1003( zhangsan) 2…