当前位置: 首页 > news >正文

论文精读:大规模MIMO波束选择问题的量子计算解决方案

论文精读:大规模MIMO波束选择问题的量子计算解决方案

概要: 随着大规模多输入多输出系统(MIMO)在5G及未来通信技术中的应用,波束选择问题(MBS)成为提升系统性能的关键。传统的波束选择方法面临计算复杂度高和计算资源不足的问题。本文提出了一种基于量子计算的解决方案,利用相干伊辛机(CIM)求解MIMO波束选择问题。通过将波束选择问题转化为QUBO模型,并映射到CIM物理设备,本文展示了量子计算在处理大规模组合优化问题中的潜力。
实验结果表明,CIM在精度和计算速度方面均显著优于如模拟退火、禁忌搜索等传统算法,,其计算速度提高了261.23倍和20.6倍。本文的研究为量子计算在通信领域中波束选择和稀疏优化问题的求解提供了一个实用的解决方案,展示了量子硬件在优化问题中的巨大潜力。

1. 文章背景

随着5G通信系统的不断发展,大规模MIMO(Massive MIMO) 技术作为一种革命性的无线传输技术,正在成为提升网络吞吐量和信号质量的关键技术。通过使用大量天线并利用波束赋形(beamforming),大规模MIMO可以同时提供多个数据流,从而显著提升数据传输速率和信号质量,进而改善蜂窝网络的覆盖范围和容量。然而,随着天线数量的增多,RF链路的数量也随之增加,导致硬件成本和功耗大幅上升。

为了解决这一问题,文章提出了波束选择(MIMO Beam Selection, MBS) 方法,通过在波束空间(beamspace)中进行波束选择,可以在不明显影响系统性能的情况下显著减少RF链路的数量,从而降低硬件成本和功耗。波束选择的核心任务是从所有可能的波束中选择一组波束,最大化网络的整体性能。然而,波束选择问题本质上是一个组合优化问题,尤其在5G系统中,存在大量的单元和天线组合,寻找最佳解非常困难。尽管有很多优化方法,如贪婪算法(Greedy Algorithm)、分支限界法(Branch-and-Bound)、模拟退火(Simulated Annealing, SA)等,但这些经典算法在处理大规模问题时常常面临计算成本过高、难以保证全局最优等问题。

量子计算被认为有潜力通过并行计算为大规模组合优化问题提供更快、更高效的解决方案。作者将波束选择问题转化为QUBO(Quadratic Unconstrained Binary Optimization) 模型,并利用CIM求解该模型,具体包括:

  1. 提出有效的MBS求解方法:本文通过构建数学模型来解决MBS问题,该模型能有效利用大规模MIMO系统的性能潜力。与传统方法相比,所提出的模型不仅简洁优雅,而且能够显著降低QUBO模型所需的比特数,同时确保生成的解是最优的。
  2. CIM实验验证:为了验证CIM在实际环境中的性能,文章通过在物理CIM系统上进行实验,展示了CIM能够在毫秒级的时间内生成最优解,体现了CIM在求解现实环境中的优化问题时的高效性和有效性。

相比经典算法,CIM通过并行化处理能力能够在较短的时间内寻找最优解,并且效率和求解质量上均显著优于经典的启发式算法。

2. MIMO波束选择问题

2.1 问题描述

在大规模MIMO系统中,波束选择问题(MBS) 的核心任务是通过选择最佳的波束集合来优化信号质量,从而提升网络的整体性能。MBS问题的目标是从多个小区中选择一定数量的波束,确保覆盖区域内的多个网格满足特定的信号强度要求。

图1 MBS问题的示意图

如图1所示,目标覆盖区域被划分为多个网格(grids)。每个网格代表一个小的地理区域,由一个或多个小区(即基站, cell)进行覆盖。每个小区发射多个MIMO波束(beams),这些波束指的是由天线阵列发射的信号,通常每个波束代表一个特定方向的信号传输。

在MBS问题中,我们的任务是从每个小区的波束集合中选择若干个波束,以最大化满足特定约束条件的网格数量。一个网格被认为是“合格的”,如果该网格的最大接收信号强度(RSS) 超过设定的阈值,并且该最大RSS与第二大RSS之间的差值超过预设的值。那么,波束选择问题的优化目标就可以表述为:通过选择适当的波束组合,使得尽可能多的网格能够满足上述条件,即保证网格内的最大信号强度达到要求,同时避免不同波束之间的干扰。通过选择合适的波束,可以减少硬件消耗和功率消耗,同时提升网络的覆盖和容量。

主要变量设定如下:

  • n n n 为波束的数量
  • m m m 为网格的数量
  • v v v 为小区的数量, V i \mathcal{V}_i Vi 为与第 i i i 个网格相关的小区集合
  • s i j k s_{ijk} sijk 为第 i i i 个网格、第 j j j 个小区、第 k k k 个波束的RSS值

2.2 识别最大RSS ( c i j c_{ij} cij) 和 第二大RSS ( b i b_i bi)

首先,定义最大接收信号强度(RSS),即在网格 i i i和小区 j j j中,所有波束的最大RSS值。这个最大值是由所有波束信号的强度决定的。公式如下:
M = max ⁡ 1 ≤ i ≤ m , j ∈ V i , 1 ≤ k ≤ n s i j k M = \max_{1 \leq i \leq m, j \in \mathcal{V}_i, 1 \leq k \leq n} s_{ijk} M=1im,jVi,1knmaxsijk
接下来,决策变量为 x j k x_{jk} xjk,表示在第 j j j 个小区是否选择第 k k k 个波束:
x j k = { 1 , 如果第  j 个小区选择了第  k 个波束 0 , 否则 x_{jk} = \begin{cases} 1, & \text{如果第 $j$ 个小区选择了第 $k$ 个波束} \\ 0, & \text{否则} \end{cases} xjk={1,0,如果第 j 个小区选择了第 k 个波束否则
对于网格 i i i和小区 j j j的最大RSS(记作 c i j c_{ij} cij),它由所选择的波束来决定。选择的波束的接收信号强度 s i j k s_{ijk} sijk与决策变量 x j k x_{jk} xjk的乘积表示该波束的贡献。最终的最大RSS值 c i j c_{ij} cij就是所有波束中最大值的结果,即:
c i j = max ⁡ 1 ≤ k ≤ n s i j k x j k c_{ij} = \max_{1 \leq k \leq n} s_{ijk} x_{jk} cij=1knmaxsijkxjk
对于网格 i i i、小区 j j j的最大RSS值 c i j c_{ij} cij,可以使用以下约束来确保其正确性:
c i j ≥ s i j k x j k , ∀ j ∈ V i , 1 ≤ k ≤ n c i j ≤ s i j k x j k + ( 1 − d i j k ) M , ∀ 1 ≤ k ≤ n ∑ k = 1 n d i j k = 1 , ∀ j ∈ V i \begin{aligned} &c_{ij} \geq s_{ijk} x_{jk}, \quad &\forall j \in \mathcal{V}_i, 1 \leq k \leq n \\ &c_{ij} \leq s_{ijk} x_{jk} + (1 - d_{ijk}) M, \quad &\forall 1 \leq k \leq n \\ &\sum_{k=1}^{n} d_{ijk} = 1, \quad &\forall j \in \mathcal{V}_i \end{aligned} cijsijkxjk,cijsijkxjk+(1dijk)M,k=1ndijk=1,jVi,1kn∀1knjVi
第一个约束确保 c i j c_{ij} cij至少等于所有波束信号强度 s i j k s_{ijk} sijk与决策变量 x j k x_{jk} xjk的乘积中的最大值。也就是说, c i j c_{ij} cij必须大于等于任何波束的贡献。第二个约束确保 c i j c_{ij} cij的值不会超过波束贡献的最大值加上一项由 d i j k d_{ijk} dijk决定的惩罚项。当 d i j k = 1 d_{ijk} = 1 dijk=1时,表示该波束被选择,从而确保最大RSS值 c i j c_{ij} cij被正确地选定。若 d i j k = 0 d_{ijk} = 0 dijk=0,则该波束不影响最大RSS以此确保 c i j c_{ij} cij是正确的最大RSS值。第三个约束确保对于每个网格 i i i和小区 j j j,仅有一个波束会影响最大RSS值,因此对每个 d i j k d_{ijk} dijk进行求和,确保只有一个波束的 d i j k d_{ijk} dijk等于 1。

最大RSS值 a i a_i ai是网格 i i i中所有小区的最大RSS值:

a i = max ⁡ j ∈ V i c i j a_i = \max_{j \in \mathcal{V}_i} c_{ij} ai=jVimaxcij

第二大RSS值 b i b_i bi是网格 i i i中所有小区的第二大RSS值,引入以下约束:
b i ≥ c i j − p i j M , ∀ j ∈ V i b i ≤ c i j + ( 1 − q i j ) M , ∀ j ∈ V i ∑ j ∈ V i q i j = 2 , q i j ∈ { 0 , 1 } \begin{aligned} &b_i \geq c_{ij} - p_{ij} M, \quad &\forall j \in \mathcal{V}_i \\ &b_i \leq c_{ij} + (1 - q_{ij}) M, \quad &\forall j \in \mathcal{V}_i \\ &\sum_{j \in \mathcal{V}_i} q_{ij} = 2, \quad &q_{ij} \in \{0, 1\} \end{aligned} bicijpijM,bicij+(1qij)M,jViqij=2,jVijViqij{0,1}
第一个约束确保第二大RSS值 b i b_i bi不小于 c i j c_{ij} cij减去 p i j p_{ij} pij的惩罚项,这里的 p i j p_{ij} pij表示是否为最大RSS的值。如果 p i j = 1 p_{ij} = 1 pij=1,则 b i b_i bi应该是第二大RSS。第二个约束确保 b i b_i bi不大于 c i j c_{ij} cij加上一项由 q i j q_{ij} qij控制的惩罚项, q i j q_{ij} qij控制是否为第二大RSS。第三个约束确保在网格 i i i中有两个小区对应最大RSS和第二大RSS的选择,意味着 q i j q_{ij} qij的总和为2。

接下来,定义变量 z i z_i zi来表示网格 i i i是否满足以下两个条件:

  1. 最大RSS大于或等于阈值 δ 1 \delta_1 δ1,即 a i ≥ δ 1 a_i \geq \delta_1 aiδ1
  2. 最大RSS与第二大RSS之间的差值大于或等于阈值 δ 2 \delta_2 δ2,即 a i − b i ≥ δ 2 a_i - b_i \geq \delta_2 aibiδ2

2.3 构建优化问题

识别出最大和第二大的波束之后,回到MBS要解决的核心问题。MBS的最终目标是最大化网格 i i i满足上述条件的数量,即最大化所有网格的 z i z_i zi之和,即:
max ⁡ ∑ i = 1 m z i \max \sum_{i=1}^m z_i maxi=1mzi
相应的约束条件为:
δ 1 − a i ≤ M ( 1 − z i ) δ 2 − ( a i − b i ) ≤ M ( 1 − z i ) \begin{aligned} &\delta_1 - a_i \leq M(1 - z_i) \\ &\delta_2 - (a_i - b_i) \leq M(1 - z_i) \end{aligned} δ1aiM(1zi)δ2(aibi)M(1zi)
以此确保当网格不满足条件时, z i z_i zi被强制设置为0,否则 z i z_i zi为1。最后,选择的波束数目不能超过预定义的上限:
∑ k = 1 n x j k ≤ r , ∀ 1 ≤ j ≤ v \sum_{k=1}^{n} x_{jk} \leq r, \quad \forall 1 \leq j \leq v k=1nxjkr,∀1jv
由于波束选择问题是一个组合优化问题,且变量数量随着天线和小区的增加呈指数增长,因此,MBS问题是NP-hard的。

2.4 原优化问题转化为QUBO/Ising

为了解决包含约束的不等式问题,本文引入了松弛变量,将约束条件转化为等式,从而使得原问题可以表示为无约束的最小化问题。每个松弛变量可以表示为一个二进制展开的形式,定义为:
slack = ∑ t = 0 ℓ 2 t ⋅ slack t (13) \text{slack} = \sum_{t=0}^{\ell} 2^t \cdot \text{slack}_t \tag{13} slack=t=02tslackt(13)
其中, slack t \text{slack}_t slackt取值为0或1, ℓ \ell 与松弛变量的范围有关。这里, ℓ = ⌈ log ⁡ 2 M ⌉ \ell = \lceil \log_2 M \rceil =log2M,因为所有的松弛变量都不超过 M M M。通过引入这些松弛变量,原来的约束最大化问题被转化为了无约束最小化问题。最优解与原始约束最大化问题的最优解是相同的。

进一步,为求解无约束问题,文章使用了罚函数法,将约束违反程度的平方作为罚项加到目标函数中,从而转化为一个无约束的优化问题。具体的罚函数为:
Penalty = λ ⋅ ∑ violations ( violation ) 2 \text{Penalty} = \lambda \cdot \sum_{\text{violations}} (\text{violation})^2 Penalty=λviolations(violation)2
其中, λ \lambda λ是控制罚项强度的参数,确保约束的违反程度最小。为了转换为QUBO模型,文章表示变量 a i a_i ai b i b_i bi c i j c_{ij} cij为整数变量,并使用二进制表示法表示它们:
a i = ∑ t = 1 ℓ 2 t ⋅ a i t , b i = ∑ t = 1 ℓ 2 t ⋅ b i t , c i j = ∑ t = 1 ℓ 2 t ⋅ c i j t a_i = \sum_{t=1}^{\ell} 2^t \cdot a_{it}, \quad b_i = \sum_{t=1}^{\ell} 2^t \cdot b_{it}, \quad c_{ij} = \sum_{t=1}^{\ell} 2^t \cdot c_{ijt} ai=t=12tait,bi=t=12tbit,cij=t=12tcijt
此时,问题已经转化为QUBO形式 min ⁡ f Q ( x ) = min ⁡ x T Q x \min f_Q(x) =\min x^T Q x minfQ(x)=minxTQx。其中, Q ∈ R n × n Q \in \mathbb{R}^{n \times n} QRn×n是一个实值上三角矩阵, f Q : { 0 , 1 } n → R f_Q : \{0, 1\}^n \to \mathbb{R} fQ:{0,1}nR是一个二进制向量到实数的映射。

利用量子计算中的相干伊辛机(CIM),我们可以通过伊辛模型,以及调节参数来求解QUBO问题。伊辛模型与QUBO问题有着密切的关系。在伊辛模型中,系统的哈密顿量函数(Hamiltonian)表示为:
H ( σ ) = − ∑ i , j J i j σ i σ j − ∑ i h i σ i H(\sigma) = - \sum_{i,j} J_{ij} \sigma_i \sigma_j - \sum_{i} h_i \sigma_i H(σ)=i,jJijσiσjihiσi
其中, σ i \sigma_i σi是取值为 − 1 -1 1 + 1 +1 +1的自旋变量, J i j J_{ij} Jij h i h_i hi分别是二次和线性系数。通过替换 σ i → 2 x i − 1 \sigma_i \to 2x_i - 1 σi2xi1,可以得到等效的QUBO问题。CIM利用可调的量子相变过程,从而在物理层面上实现优化,最终得到问题的最优解。

3. 简化模型与后处理

为了减少QUBO模型中比特的数量,文章提出了一种简化模型,仅考虑最大RSS值大于或等于阈值 δ 1 \delta_1 δ1的约束条件,即 a i ≥ δ 1 a_i \geq \delta_1 aiδ1。与原始模型相比,简化模型简化了约束条件,目的是减少QUBO模型中的比特数,并降低计算复杂度。为了评估模型的有效性,文章利用CIM(相干伊辛机)返回的最佳100个解,从中选出符合原始模型约束的最佳可行解。在简化模型中,我们定义了一个新的RSS标记变量 s ˉ i j k \bar{s}_{ijk} sˉijk,当 s i j k ≥ δ 1 s_{ijk} \geq \delta_1 sijkδ1 时, s ˉ i j k = 1 \bar{s}_{ijk} = 1 sˉijk=1,否则 s ˉ i j k = 0 \bar{s}_{ijk} = 0 sˉijk=0。简化模型可以通过以下形式来表示:
max ⁡ ∑ i = 1 m z i (14) \max \sum_{i=1}^m z_i \tag{14} maxi=1mzi(14)
其中 z i z_i zi表示网格 i i i是否满足要求。约束条件为:
z i ≤ ∑ j ∈ V i ∑ k = 1 n x j k s s ˉ i j k , ∀ 1 ≤ i ≤ m ∑ k = 1 n x j k ≤ r , ∀ 1 ≤ j ≤ v \begin{aligned} &z_i \leq \sum_{j \in \mathcal{V}_i} \sum_{k=1}^{n} x_{jks} \bar{s}_{ijk},& \quad \forall 1 \leq i \leq m \\ &\sum_{k=1}^{n} x_{jk} \leq r, &\quad \forall 1 \leq j \leq v \end{aligned} zijVik=1nxjkssˉijk,k=1nxjkr,∀1im∀1jv
其中第一个约束确保了 z i = 1 z_i = 1 zi=1当且仅当网格 i i i满足最大RSS大于或等于阈值 δ 1 \delta_1 δ1。当所有 x j k s s ˉ i j k = 0 x_{jks} \bar{s}_{ijk} = 0 xjkssˉijk=0时,表示没有选择满足阈值的RSS, z i z_i zi必须为0;如果存在某些 j j j k k k使得 x j k s s ˉ i j k = 1 x_{jks} \bar{s}_{ijk} = 1 xjkssˉijk=1,则 z i z_i zi为1。

接下来,我们将简化模型的目标函数转化为QUBO形式,方法是将上面两个约束引入松弛变量。简化模型的优化问题如下所示:
min ⁡ − ∑ i = 1 m z i + λ ⋅ ∑ i = 1 m ( z i + slack 1 , i − ∑ j ∈ V i ∑ k = 1 n x j k s s ˉ i j k ) 2 + λ ⋅ ∑ j = 1 v ( ∑ k = 1 n x j k + slack 2 , j − r ) 2 \begin{aligned} \min - \sum_{i=1}^m z_i &+ \lambda \cdot \sum_{i=1}^m \left( z_i + \text{slack}_{1,i} - \sum_{j \in \mathcal{V}_i} \sum_{k=1}^{n} x_{jks} \bar{s}_{ijk} \right)^2 \\ &+ \lambda \cdot\sum_{j=1}^v \left( \sum_{k=1}^{n} x_{jk} + \text{slack}_{2,j} - r \right)^2 \end{aligned} mini=1mzi+λi=1m zi+slack1,ijVik=1nxjkssˉijk 2+λj=1v(k=1nxjk+slack2,jr)2
这里, slack 1 , i \text{slack}_{1,i} slack1,i slack 2 , j \text{slack}_{2,j} slack2,j是松弛变量,用于解决约束条件中的不等式,QUBO问题的规模被缩减,同时仍然保持了原始问题的解的最优性。这个简化模型相比于原始模型减少了比特数,使得QUBO模型的求解更加高效。该简化模型的变量数量为 m + n v + m ⋅ ⌈ log ⁡ 2 ( n v ) ⌉ + v ⋅ ⌈ log ⁡ 2 r ⌉ m + nv + m \cdot \lceil \log_2(nv) \rceil + v \cdot \lceil \log_2 r \rceil m+nv+mlog2(nv)⌉+vlog2r,相较于原始模型,这种简化显著降低了计算复杂度,尤其是在大规模网络情况下具有明显优势。

4. 实验结果

在这一部分中,作者通过一系列实验评估了CIM在MIMO波束选择问题(MBS)中的可行性,重点比较了CIM物理机、模拟退火(SA)算法和禁忌搜索(Tabu Search)算法的性能。实验数据来自中国吉安市,通过测量4857个网格、217个小区和148个波束的信号强度,包含了1048575条数据记录。

实验假设波束数和小区数固定为5,而网格大小从5到10不等。所有六种设置的比特数都小于100,并选择这些设置来研究CIM物理机在不同网格大小下的性能,同时控制其他变量,进而转换成了一个著名的NP难问题——最大割(Max-Cut)问题。根据已知理论,伊辛模型在没有外加磁场的情况下找到最低能量态的问题可以重新表述为最大割问题。

图2 求解割值的演化过程

图2绘制了CIM在计算过程中得到的割值随时间变化的曲线。数据点显示了在CIM的中间阶段评估的割值。每两个数据点之间的时间间隔为2.11微秒。事实上,光纤环路中有211个振荡脉冲,脉冲之间的时间间隔为10纳秒,因此,光脉冲在环路中的传输时间为2.11微秒。从图中可以看出,随着时间的推移,割值逐渐增加,随着泵浦光功率逐渐增加并达到临界阈值,发生了相变。作者期望在最低能量附近找到最优解,图3中的红点标示了找到的最优解。在六种不同的设置中,CIM物理机分别进行了1940、361、1084、1057、1276和1377次循环,以找到最优解。相应的运行时间分别为4.096毫秒、0.764毫秒、2.289毫秒、2.232毫秒、2.694毫秒和2.908毫秒。

图3 CIM 物理机在m = 5时得到的结果

图3展示了CIM物理机在5个网格下的解。图中,蓝色节点代表自旋值为 +1,绿色节点代表自旋值为 -1。我们可以观察到,图中节点之间有许多连接边,几乎是全连接的,表明MBS问题具有高度复杂性。

表格I展示了CIM物理机与模拟退火(SA)算法和禁忌搜索(Tabu Search)算法的综合性能比较。在目标值方面,CIM物理机在所有案例中都取得了最好的目标函数值。对于每种算法,作者还进行了一百次重复实验,计算了找到可行解的平均时间,以及对应可行解的目标函数值。

表格I:CIM物理机、SA和Tabu Search在目标值和运行时间上的比较

网格数量比特数量CIM物理机时间CIM目标值哈密顿值SA时间SA目标值Tabu时间Tabu目标值
m = 5614.096ms-1636500253-1636753751.5134ms2.0713.7ms1.8
m = 6680.764ms-1961998250-1962503752147ms1.5514.3ms2.6
m = 7752.289ms-2286992748-2288253752.5131ms1.8717.3ms2.94
m = 8822.232ms-2619998246-2621753753133ms2.2816.7ms3.15
m = 9892.694ms-2899621246-2963128752.5139ms220.2ms3.04
m = 10962.908ms-3310865745-3312378751146ms2.1222ms2.7

表格I显示了六种不同设置下,CIM物理机、SA和Tabu算法在运行时间和目标值方面的性能对比。可以看到,CIM在所有场景中都实现了最优的目标值,并且在计算时间上明显优于经典算法。为了评估CIM的性能,文章定义了效率比,即:
γ CIM,sa/tabu = f CIM / t CIM f sa/tabu / t sa/tabu (18) \gamma_{\text{CIM,sa/tabu}} = \frac{f_{\text{CIM}} / t_{\text{CIM}}}{f_{\text{sa/tabu}} / t_{\text{sa/tabu}}} \tag{18} γCIM,sa/tabu=fsa/tabu/tsa/tabufCIM/tCIM(18)
效率比由两个部分组成:节省的时间和提高的精度。节省时间衡量了使用CIM相比传统方法节省的时间量,精度提高衡量了算法输出与正确解匹配的程度。较大的效率比意味着CIM的表现更好。从图4中可以看出,CIM相较于Tabu和SA,效率比提高了数十倍到数百倍。具体来说,CIM与Tabu的平均效率比为261.23,与SA的平均效率比为20.66。

图4 效率比随比特数的变化

5. 总结

本文提出了一种基于QUBO模型的新方法来解决MIMO波束选择问题(MBS),这一问题是5G系统中的关键问题之一。除了精心设计的模型,本文的贡献还包括成功应用CIM模拟器和物理机来求解MBS问题。实验结果表明,CIM求解器在准确性和速度方面超越了经典启发式算法,提供了数十到数百倍的性能提升。作者认为,所提出的解决方案在实际5G网络运营中具有巨大的潜力。

论文链接:

[1]ArXiv Version

[2]IEEE Published Version

[3]此外欢迎点击链接,在开物量子开发者社区阅读原文:

相关文章:

论文精读:大规模MIMO波束选择问题的量子计算解决方案

论文精读:大规模MIMO波束选择问题的量子计算解决方案 概要: 随着大规模多输入多输出系统(MIMO)在5G及未来通信技术中的应用,波束选择问题(MBS)成为提升系统性能的关键。传统的波束选择方法面临计…...

将 MySQL 8 主从复制延迟优化到极致

目录 一、网络资源不足引起的复制延迟 1. 执行监控确认延迟原因 2. 估算所需带宽 (1)基本公式 (2)实际测量方法 二、大事务或大查询引起的复制延迟 1. 主库大事务 2. 从库大查询 3. 估算所需 I/O 能力 (1&am…...

路由与OSPF学习

【路由是跨网段通讯的必要条件】 路由指的是在网络中,数据包从源主机传输到目的主机的路径选择过程。 路由通常涉及以下几个关键元素: 1.路由器:是一种网络设备,负责将数据包从一个网络传输到另一个网络。路由器根据路由表来决定…...

Spring Security:企业级安全架构的设计哲学与工程实践

一、核心架构与设计理念 Spring Security作为Spring生态中的安全基石,其架构设计遵循**“分层过滤"与"组件化扩展”**两大原则。整个安全框架本质上是一个由多个过滤器构成的链式处理模型(Filter Chain),每个过滤器负责…...

NLP高频面试题(五十二)——BERT 变体详解

在现代自然语言处理领域,BERT 系列模型不断演进,衍生出多种变体,它们通过改进预训练任务、模型结构和训练策略,在不同应用场景下取得了更优表现。本文首先概览主要 BERT 变体(如 ALBERT、RoBERTa、ELECTRA、SpanBERT、Transformer-XL 等),随后针对以下几个关键问题逐一展…...

C++Primer 编程练习 第二章

最近想重新看一下CPrimer&#xff0c;顺便敲一下他的编程练习题&#xff0c;虽然很简单&#xff0c;但是就当是锻炼一下vim的熟练度和手感 由于按照章节顺序来说是初学者&#xff0c;不会对输入内容做过多的判断&#xff0c;只对问题作出基本实现 第二章 1 #include <ios…...

Vue.js 新手小白指南:从起源到实战

&#x1f31f; Vue 的来源 Vue.js 由**尤雨溪&#xff08;Evan You&#xff09;**在2014年创建&#xff0c;最初是作为个人项目开发&#xff0c;灵感来源于他在 Google 使用 AngularJS 的经验。Vue 的设计目标是提供一个更轻量级、更易上手的前端框架。 如今&#xff0c;Vue …...

策略模式:动态切换算法的设计智慧

策略模式&#xff1a;动态切换算法的设计智慧 一、模式核心&#xff1a;定义一系列算法并可相互替换 在软件开发中&#xff0c;常常会遇到需要根据不同情况选择不同算法的场景。例如&#xff0c;在电商系统中&#xff0c;根据不同的促销活动&#xff08;如满减、折扣、赠品&a…...

Vm免安装直接使用虚拟机win7系统

教程 一、下载并解压资料里面的vmx压缩包 二、使用Vm软件打开刚刚解压的vmx文件即可使用虚拟机的win7系统 资料下载 点击下载...

LSTM-GAN生成数据技术

1. 项目概述 本项目利用生成对抗网络&#xff08;GAN&#xff09;技术来填补时间序列数据中的缺失值。项目实现了两种不同的GAN模型&#xff1a;基于LSTM的GAN&#xff08;LSTM-GAN&#xff09;和基于多层感知机的GAN&#xff08;MLP-GAN&#xff09;&#xff0c;并对两种模型…...

26、C# 中是否可以继承String类?为什么?

在 C# 中&#xff0c;不能直接继承 String 类&#xff08;System.String&#xff09;。这是由于以下几个原因&#xff1a; 1、String 类是 sealed 的 String 类在 .NET 中被标记为 sealed&#xff0c;这意味着它是一个密封类&#xff0c;不能被继承。 sealed 关键字的作用是防…...

gem5教程第五章 了解gem5默认配置脚本

在本章中,我们将探讨如何使用gem5附带的默认配置脚本。 gem5附带了许多配置脚本,使您能够非常快速地使用gem5。 然而,一个常见的陷阱是在不完全理解所模拟内容的情况下使用这些脚本。在使用gem5进行计算机架构研究时,充分了解您正在模拟的系统非常重要。本章将引导您了解默…...

什么是鸿蒙南向开发?什么是北向开发?

文章目录 鸿蒙南向开发 vs 北向开发&#xff1a;底层与生态的双向赋能一、鸿蒙南向开发&#xff1a;连接硬件的底层基石二、鸿蒙北向开发&#xff1a;构建全场景应用生态三、南向与北向&#xff1a;互补与协同四、如何选择开发方向?结语 鸿蒙南向开发 vs 北向开发&#xff1a;…...

蓝桥杯 19. 最大比例

最大比例 原题目链接 题目描述 X 星球的某个大奖赛设了 M 级奖励。每个级别的奖金是一个正整数。 并且&#xff0c;相邻两个级别间的比例是一个固定值&#xff0c;也就是说&#xff1a;所有级别的奖金构成一个等比数列。 例如&#xff1a; 奖金数列为 16, 24, 36, 54&…...

制造业数字化转型标杆解析:从冀凯机电到君乐宝的启示

1. 执行摘要 数字化转型已成为现代制造业提升竞争力、实现高质量发展的核心驱动力。本文旨在通过深入剖析冀凯装备制造股份有限公司&#xff08;冀凯机电&#xff09;和君乐宝乳业集团&#xff08;君乐宝&#xff09;两家不同行业背景企业的数字化转型实践&#xff0c;提炼可供…...

【OSCP-vulnhub】Raven-2

目录 端口扫描 本地/etc/hosts文件解析 目录扫描&#xff1a; 第一个flag 利用msf下载exp flag2 flag3 Mysql登录 查看mysql的运行权限 MySql提权&#xff1a;UDF 查看数据库写入条件 查看插件目录 查看是否可以远程登录 gcc编译.o文件 创建so文件 创建临时监听…...

配置MambaIRv2: Attentive State Space Restoration的环境

github上代码的地址&#xff1a; csguoh/MambaIR: [ECCV2024, CVPR2025] MambaIR and MambaIRv2! 一开始直接输入命令 conda env create -f environment.yaml 安装了半天爆出来好几个错误&#xff0c;其中一个是没有nvcc 输入以下命令&#xff1a; module avail 发现没有…...

4.23晚间工作总结

主要工作&#xff1a;将ClassicDetail界面拆分成utils,apis,stores,css,vue多个文件&#xff0c;方便后续重用 具体代码截图&#xff1a;...

Maven 项目中引入本地 JAR 包

在日常开发过程中&#xff0c;我们有时会遇到一些未上传到 Maven 中央仓库或公司私有仓库的 JAR 包&#xff0c;比如第三方提供的 SDK 或自己编译的库。这时候&#xff0c;我们就需要将这些 JAR 包手动引入到 Maven 项目中。本文将介绍两种常见方式&#xff1a;将 JAR 安装到本…...

SpringBoot整合SSE,基于okhttp

一、引入依赖 <dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.10.0</version> </dependency> <dependency><groupId>com.squareup.okhttp3</groupId><…...

从云端到边缘:云原生后端架构在边缘计算中的演进与实践

📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:为何云原生后端正在走向边缘? 随着物联网(IoT)、5G 和实时应用的快速发展,越来越多的数据在终端产生并需要即时处理。传统云计算虽强大,但将所有数据上送云端再处理,带来高延迟与带宽压力。…...

pytest心得体会

一、如何单独运行某条用例 在参数化测试中总有些用例失败&#xff0c;由于前后置数据的关系需要单独运行那条用例如何运行呢 方法一&#xff1a;直接查看控制台运行用例 确定是[2-case_data8] pytest.main(["-sv","testcase/违规告警/test_违规告警_非合同车…...

《Cesium 中两点绘制线的实现:实线、虚线、动态线、流动线详解》

摘要 在 Cesium 三维地球可视化开发中,两点之间绘制线是常见的需求。本文详细介绍如何在 Cesium 中实现两点间绘制实线、虚线、动态线和流动线,并提供完整的代码示例,方便开发者快速上手,满足不同场景下的可视化需求。 一、环境与依赖 本文代码基于 Cesium 库进行开发,…...

【EasyPan】MySQL FIELD() 函数实现自定义排序

【EasyPan】项目常见问题解答&#xff08;自用&持续更新中…&#xff09;汇总版 MySQL FIELD() 函数解析 一、FIELD() 函数技术解析 /* 基础语法 */ FIELD(column_name, value1, value2, ..., valueN)核心特性 特性说明返回值机制返回字段值在参数列表中的索引位置&…...

搭建TypeScript单元测试环境

我们在学习TypeScript的时候如果能够搭建一个单元测试的环境&#xff0c;那写些demo会很简单&#xff0c;下面我们使用jest来搭建一个单元测试环境 Jest 是一个由 Facebook 开发并开源的 JavaScript 测试框架&#xff0c;被广泛应用于前端和 Node.js 项目的单元测试。以下是关…...

Vue3父子组件数据同步方法

在 Vue 3 中&#xff0c;当子组件需要修改父组件传递的数据副本并同步更新时&#xff0c;可以通过以下步骤实现&#xff1a; 方法 1&#xff1a;使用 v-model 和计算属性&#xff08;实时同步&#xff09; 父组件&#xff1a; vue <template><ChildComponent v-mo…...

免费且开源的企业级监控解决方案:Zabbix

一、Zabbix 简介 Zabbix 是一款功能强大的企业级开源监控解决方案。它可以监控各种 IT 基础设施组件&#xff0c;包括网络设备、服务器、虚拟机、云服务、应用程序和数据库等。Zabbix 提供实时的监控、告警、报表和可视化功能&#xff0c;帮助用户及时发现和解决 IT 系统中的问…...

高并发系统的通用设计方法是什么?

背景 高并发系统的通用设计方法是解决系统在面对大量用户访问时的性能瓶颈问题。当系统遇到性能瓶颈时&#xff0c;通常是因为某个单点资源&#xff08;如数据库、后端云服务器、网络带宽等&#xff09;达到了极限。 为了提升整个系统的容量&#xff0c;需要找到这个瓶颈资源…...

ubuntu系统下部署使用git教程

在ubuntu系统下部署并使用git教程 1.下载并安装 sudo apt update sudo apt install git2.检验安装是否成功 git --version若输出git版本号即为成功。 3.配置参数 git config --global user.name "你的名字" git config --global user.email "你的邮箱&quo…...

redis client.ttl(key)

对应 Redis 的 TTL 命令&#xff1a; bash 复制 下载 TTL key 使用示例 1. 基本用法 java 复制 下载 try (Jedis jedis jedisPool.getResource()) {long ttl jedis.ttl("user:1001:session");if (ttl > 0) {System.out.println("键将在 " t…...

基于ACL方式手动建立站点间 IPSec 隧道

换句话说 不使用 IKE 自动协商&#xff0c;而是静态配置密钥和 SPI&#xff08;安全参数索引&#xff09;来配置隧道规则 环境基础 还是使用eNSP软件进行模拟&#xff0c;等后面再更新实际通信中的环境 没有框架&#xff0c;就没有基本思路 还是使用前面文章GRE VPN的拓扑&…...

电池大脑的基准测试及AI拓展

从为我们的智能手机供电到驱动电动汽车&#xff0c;我们的日常生活都离不开锂离子电池&#xff08;LIB&#xff09;。但是&#xff0c;理解其复杂的内部运作并预测其性能需要精密的工具。由此引入了多孔电极理论&#xff08;PET&#xff09;模型&#xff0c;我们可以将其视为模…...

数据通信学习笔记之OSPF的基础术语

Router ID RouterID 用于在自治系统中唯一标识一省运行 OSPF 的路由器&#xff0c;它是一个 32 位的无符号整数 配置完成后&#xff0c;如果需要修改 Router ID 的话&#xff0c;需要重启进程才能上生效 ​<Huawei>reset ospf 1 process​ // 重启 ospf 进程 1 Route…...

Android Cordova 开发 - Cordova 快速入门(Cordova 环境配置、Cordova 第一个应用程序)

一、Cordova 1、Cordova 概述 Cordova 是使用 HTML&#xff0c;CSS 和 JavaScript 构建混合移动应用程序的平台 2、Cordova 特征 &#xff08;1&#xff09;命令行界面&#xff08;Cordova CLI&#xff09; 这是可用于启动项目&#xff0c;构建不同平台的进程&#xff0c;…...

AndroidAutomotive模块介绍(四)VehicleHal介绍

前言 前面的文章中&#xff0c;描述了 Android Automotive 的框架中应用、Framework 层服务等知识&#xff0c;本篇文章将会继续按照 Android Automotive 框架介绍 Vehicle Hal 层服务的内容。 上一篇&#xff1a;AndroidAutomotive模块介绍&#xff08;三&#xff09;CarSer…...

Pingora vs. Nginx vs. 其他主流代理服务器性能对比

Pingora vs. Nginx vs. 其他主流代理服务器性能对比 核心对比概览 特性Pingora (Cloudflare)NginxEnvoyHAProxyCaddyTraefik开发公司CloudflareNginx, Inc/F5Lyft/CNCFHAProxy TechApache 2.0社区Containous核心语言RustCCCGoGo并发模型异步/多线程事件驱动事件驱动事件驱动协…...

4月23日作业

需求&#xff1a; 1&#xff0c;R5为ISP&#xff0c;其上只能配置IP地址&#xff1b; R5与其他所有直连设备间均使用公有IP&#xff1b;环回地址为100.1.1.1/32 2&#xff0c;R4设备为企业出口路由器 3&#xff0c;整个OSPF环境IP基于172.16.0.0/16划分&#xff1b; 4&…...

5.学习笔记-SpringMVC(P53-P60)

1.响应 &#xff08;1&#xff09;响应页面 &#xff08;2&#xff09;响应数据&#xff08;异步提交&#xff09;&#xff1a;文本数据、json数据 2.REST风格 (1)REST:表现形式状态转换。 (2)传统风格资源描述形式 3.Restful入门案例 5.基于RESTful页面数据…...

安卓14默认赋予应用权限

安卓14上赋予应用默认权限的方式跟之前的不太一样了 需要修改两个地方&#xff0c;一个是frameworks\base\services\core\java\com\android\server\pm\permission\Permission.java public boolean isNormal() {//eturn (mPermissionInfo.protectionLevel & PermissionInfo…...

数据的加载与保存

加载数据的方法 选项参数&#xff1a;可以通过选项参数传入URL地址、用户名、密码和数据表名称等。 路径参数&#xff1a;可以传入加载数据的路径。 MySQL语句&#xff1a;可以直接导入MySQL语句来加载数据。 保存数据的方法通用方法&#xff1a;使用df.write方法保存数据。…...

网络编程——通信三要素

一、概述 &#xff08;一&#xff09;网络编程 可以让设备中的程序与网络上的其他设备中的程序进行数据交互&#xff0c;实现网络通信 Java.net包下提供了网络编程的解决方案。 &#xff08;二&#xff09;通信的基本架构 1. CS架构&#xff08;Client客户端/Server服务端…...

es-存储与搜索优化

字段选型优化 链接&#xff1a;es-字段类型详解与优化建议 存储优化 es的底层使用Lucene,Lucene的存储的核心文件包括&#xff1a; 原始数据存储&#xff08;Store&#xff09;、倒排索引&#xff08;Inverted Index&#xff09;、列式存储&#xff08;DocValues&#xff09…...

Hadoop 集群扩容新增节点操作文档

Hadoop 集群扩容新增节点操作文档 一、前期准备 1. 环境检查&#xff08;所有新节点&#xff09; 确保 JDK 安装&#xff1a; java -version确保 Hadoop 安装&#xff1a; hadoop version添加主机名映射&#xff08;所有节点&#xff09;&#xff1a; cat >> /etc/h…...

高光谱相机在工业检测中的应用:LED屏检、PCB板缺陷检测

随着工业检测精度要求的不断提升&#xff0c;传统机器视觉技术逐渐暴露出对非可见光物质特性识别不足、复杂缺陷检出率低等局限性。高光谱相机凭借其独特的光谱分析能力&#xff0c;为工业检测提供了革命性的解决方案。以下结合中达瑞和VIX系列推扫式高光谱相机的技术特点与实际…...

07-IDEA企业开发工具-开发入门程序

1. IDEA创建Java项目的代码结构 项目结构: IDEA中的Java项目包含四种主要结构&#xff1a;工程(Project)、模块(Module)、包(Package)、类(Class)。 工程(Project): 代表整个项目&#xff0c;通常是一个磁盘目录或文件夹。模块(Module): 工程下的子单元&#xff0c;用于划分项…...

即插即用模块(3) -LSK 特征提取

paper&#xff1a;LSKNet: A Foundation Lightweight Backbone for Remote Sensing Code&#xff1a;https://github.com/zcablii/LSKNet 大型选择性内核块 (LSK Block) 功能 通过动态调整感受野&#xff0c;自适应提取遥感图像中目标的上下文信息&#xff0c;增强目标与环境关…...

彩虹表攻击与Nest密码存储

文章目录 前言&#x1f9e8; 什么是彩虹表攻击&#xff1f;&#x1f4f7; 图中解析左侧是彩虹表&#xff1a;右侧是用户数据库中的数据&#xff1a; &#x1f510; 如何防御彩虹表攻击&#xff1f;✅ 1. **使用 Salt 加密&#xff08;推荐&#xff09;**✅ 2. **使用强哈希函数…...

vue keep-alive标签的运用

keep-alive&#xff0c;想必大家都不会很陌生&#xff0c;在一些选项卡中会使用到。其实&#xff0c;它的作用大概就是把组件的数据给缓存起来。 比如果我有一个选项卡&#xff0c;标签一&#xff0c;标签二&#xff0c;标签三。现在&#xff0c;我需要实现&#xff0c;当我在标…...

python编写一段爱心代码

代码编写 1. 导入模块和常量定义 python import random from math import sin, cos, pi, log from tkinter import *CANVAS_WIDTH 640 # 画布的宽 CANVAS_HEIGHT 480 # 画布的高 CANVAS_CENTER_X CANVAS_WIDTH / 2 # 画布中心的X轴坐标 CANVAS_CENTER_Y CANVAS_HEIGH…...

Python流程控制

目录 一&#xff0c;条件判断&#xff1a;if语句 1.基本语法与示例 2.多重条件判断&#xff08;elif&#xff09; 3.常见错误与避坑指南 1.缩进错误 2.遗漏冒号 二&#xff0c;循环结构&#xff1a;while与for 1.while循环 2.Python的注释 3.字符串的格式化输出 4.fo…...