最大化速率的智能反射面波束成形(下): ADMM_weighted sum-rate optimization for intelligent ref-程序员宅基地

技术标签: 5G  5G新兴技术:智能反射面  智能反射面  通信  通信中的常用数学  

前言

在上一篇博客中, 我们介绍了这篇文章 Weighted Sum-Rate Optimization for Intelligent Reflecting Surface Enhanced Wireless Networks 的系统建模和使用分式规划方法对问题的简化。 上一篇的遗留问题是, 具体如何对 IRS 矩阵进行优化。 作者提出了多种算法, 在本篇中会一一介绍, 比如以之命名本篇的ADMM。

最近点投影

通过分式规划, IRS波束成形问题最终可以变成求解如下的子问题:

( P 4 a ) max ⁡ θ f 4 a ( θ )  s.t.  ∣ θ n ∣ 2 ∈ F , ∀ n = 1 , ⋯   , N , \begin{aligned} (\mathrm{P} 4 a) \max _{\boldsymbol{\theta}} & f_{4 a}(\boldsymbol{\theta}) \\ \text { s.t. } &\left|\theta_{n}\right|^{2} \in \mathcal{F}, \quad \forall n=1, \cdots, N, \end{aligned} (P4a)θmax s.t. f4a(θ)θn2F,n=1,,N,

  • 理想场景: 智能反射面单元对入射信号可以进行幅度和相位的完美调整, 因此唯一的限制就是能量守恒约束, 即:
    F 1 = { θ n ∣ ∣ θ n ∣ 2 ≤ 1 } \mathcal{F}_{1}=\left\{\left.\theta_{n}|| \theta_{n}\right|^{2} \leq 1\right\} F1={ θnθn21}
  • 连续相移: 这也是最常见的假设。 认为IRS单元只起到一个相移的作用, 且假设相位可取连续的任意值。 因此, 对应为:
    F 2 = { θ n ∣ θ n = e j φ n , φ n ∈ [ 0 , 2 π ) } \mathcal{F}_{2}=\left\{\theta_{n} \mid \theta_{n}=e^{j \varphi_{n}}, \varphi_{n} \in[0,2 \pi)\right\} F2={ θnθn=ejφn,φn[0,2π)}
  • 离散相移: 顾名思义, 相较于 F 2 \mathcal{F}_2 F2, 只有有限个相位可以选取, 即:
    F 3 = { θ n ∣ θ n = e j φ n , φ n ∈ { 0 , 2 π τ , ⋯   , 2 π ( τ − 1 ) τ } } \mathcal{F}_{3}=\left\{\theta_{n} \mid \theta_{n}=e^{j \varphi_{n}}, \varphi_{n} \in\left\{0, \frac{2 \pi}{\tau}, \cdots, \frac{2 \pi(\tau-1)}{\tau}\right\}\right\} F3={ θnθn=ejφn,φn{ 0,τ2π,,τ2π(τ1)}}

其中,
f 4 a ( θ ) = − θ H U θ + 2 Re ⁡ { θ H ν } f_{4 a}(\boldsymbol{\theta})=-\boldsymbol{\theta}^{\mathrm{H}} \boldsymbol{U} \boldsymbol{\theta}+2 \operatorname{Re}\left\{\boldsymbol{\theta}^{\mathrm{H}} \boldsymbol{\nu}\right\} f4a(θ)=θHUθ+2Re{ θHν}

这里 U \boldsymbol{U} U 是半正定已知矩阵, v \mathbf{v} v是已知向量。 显然可知, f 4 a f_{4a} f4a 是一个关于 θ \theta θ 的凹函数。那么如果当 F \mathcal{F} F为凸集时 ( F \mathcal{F} F 的定义见上方), 则可以通过 SDR 方法, 直接进行求解。 然而 SDR 方法有个较大的问题在于, 复杂度过高, 且存在一定的性能损失。 因此作者旨在提出更先进的算法。 由于 ∣ θ n ∣ 2 ∈ F 1 \left|\theta_{n}\right|^{2}\in\mathcal{F}_1 θn2F1 是凸集, 而 ∣ θ n ∣ 2 ∈ F 2 \left|\theta_{n}\right|^{2}\in\mathcal{F}_2 θn2F2 ∣ θ n ∣ 2 ∈ F 3 \left|\theta_{n}\right|^{2}\in\mathcal{F}_3 θn2F3 并不是, 因此作者的思想是, 先以 ∣ θ n ∣ 2 ∈ F 1 \left|\theta_{n}\right|^{2}\in\mathcal{F}_1 θn2F1 求解问题, 然后将该解投影到 F 2 \mathcal{F}_2 F2 F 3 \mathcal{F}_3 F3上来取得一个次优解。 因此, 这个算法也被命名为 Nearest Point Projection (NPP)。

循着这个逻辑, 限制条件先成为下面这个凸集的形式,即:
∣ θ n ∣ 2 ≤ 1 , ∀ n = 1 , ⋯   , N \left|\theta_{n}\right|^{2} \leq 1, \quad \forall n=1, \cdots, N θn21,n=1,,N
可以等价地写为:
θ H e n e n H θ ≤ 1 , ∀ n = 1 , ⋯   , N (1) \boldsymbol{\theta}^{\mathrm{H}} \mathbf{e}_{n} \mathbf{e}_{n}^{\mathrm{H}} \boldsymbol{\theta} \leq 1, \quad \forall n=1, \cdots, N \tag{1} θHenenHθ1,n=1,,N(1)
其中 e n e_n en 是 elementary vector, 即只有第 n n n 个元素为1, 其余为0。 那么通过拉格朗日乘子法,把限制条件写入到目标函数中去, 得到拉格朗日函数为:
G ( θ , λ ) = f 4 a ( θ ) − ∑ n = 1 N λ n ( θ H e n e n H θ − 1 ) \mathcal{G}(\boldsymbol{\theta}, \boldsymbol{\lambda})=f_{4 a}(\boldsymbol{\theta})-\sum_{n=1}^{N} \lambda_{n}\left(\boldsymbol{\theta}^{\mathrm{H}} \mathbf{e}_{n} \mathbf{e}_{n}^{\mathrm{H}} \boldsymbol{\theta}-1\right) G(θ,λ)=f4a(θ)n=1Nλn(θHenenHθ1)
其中 λ ≥ 0 \lambda\ge 0 λ0 确保 G \mathcal{G} G f 4 a f_{4a} f4a的上界 ( θ H e n e n H θ − 1 ≤ 0 \boldsymbol{\theta}^{\mathrm{H}} \mathbf{e}_{n} \mathbf{e}_{n}^{\mathrm{H}} \boldsymbol{\theta}-1\le 0 θHenenHθ10)。那么 通过 拉格朗日对偶法 Lagrange dual decomposition(LDD), 转换为求解对偶问题如下:
( P 4 b ) min ⁡ λ L ( λ ) = max ⁡ θ { G ( θ , λ ) }  s.t.  λ n ≥ 0 , ∀ n = 1 , ⋯   , N , \begin{aligned} (\mathrm{P} 4 b) \quad\min _{\boldsymbol{\lambda}} & \quad\mathcal{L}(\boldsymbol{\lambda})=\max _{\boldsymbol{\theta}}\{\mathcal{G}(\boldsymbol{\theta}, \boldsymbol{\lambda})\} \\ \text { s.t. } & \lambda_{n} \geq 0, \quad \forall n=1, \cdots, N, \end{aligned} (P4b)λmin s.t. L(λ)=θmax{ G(θ,λ)}λn0,n=1,,N,
由于 f 4 a f_{4a} f4a 本身是凸函数且满足 Slater 条件, 因此对偶问题的解也即原问题的解 (对偶间隙为0)。 (这一块的知识可以参见这篇博客 【凸优化】关于 KKT 条件 及其最优性)同时, θ \theta θ 的解可以直接得出, 仍是对其求导取0, 得到:
θ ∘ = ( ∑ n = 1 N λ n e n e n H + U ) − 1 v \boldsymbol{\theta}^{\circ}=\left(\sum_{n=1}^{N} \lambda_{n} \mathbf{e}_{n} \mathbf{e}_{n}^{\mathrm{H}}+\mathbf{U}\right)^{-1} \mathbf{v} θ=(n=1NλnenenH+U)1v
根据KKT条件, 再将这个表达式带回到 (1)中, 就变成了一个 λ \lambda λ 的方程, 并可以通过椭球法 (ellipsoid method) 进行求解。 这也是使用拉格朗日对偶方法来求解带约束凸问题的范式。

有了在 F 1 \mathcal{F}_1 F1约束下的闭式解, 再进行投影就非常简单了 θ n ∙ = Pj ⁡ F ( θ n ∘ ) \theta_{n}^{\bullet}=\operatorname{Pj}_{\mathcal{F}}\left(\theta_{n}^{\circ}\right) θn=PjF(θn)

F = F 2 \mathcal{F}=\mathcal{F}_2 F=F2时, ∠ θ n ∙ = ∠ θ n ∘ \angle \theta_{n}^{\bullet}=\angle \theta_{n}^{\circ} θn=θn
F = F 3 \mathcal{F}=\mathcal{F}_3 F=F3时, ∠ θ n ∙ = arg ⁡ min ⁡ ϕ n ∈ { 0 , 2 π τ , ⋯   , 2 π ( τ − 1 ) τ } ∣ ϕ n − ∠ θ n ∘ ∣ . \angle \theta_{n}^{\bullet}=\arg \min _{\phi_{n} \in\left\{0, \frac{2 \pi}{\tau}, \cdots, \frac{2 \pi(\tau-1)}{\tau}\right\}}\left|\phi_{n}-\angle \theta_{n}^{\circ}\right| . θn=argminϕn{ 0,τ2π,,τ2π(τ1)}ϕnθn.

很显然, 这样的优化是次优的, 且显见有性能损失。 因此, 还需要对算法进一步优化。

元素迭代

这个算法的思路非常简单, 由于限制条件都是针对 θ \theta θ 的单一元素的(和其他元素并不耦合), 因此一个直接的想法就是可以固定向量中的其余元素,单独优化一个元素, 并循环往复进行迭代。

这样做的好处就在于, 此时限制条件极易处理了。 由于这个方法在HBF问题中也极为常用, 因此这里就不展开赘述了。 感兴趣的读者可以自行参考原文,很通俗易懂。 我们重点讲 ADMM 算法。

ADMM

本文是一个ADMM算法非常非常经典的应用, 强调推荐想学习这个算法的人都可以来看看这个实例。 这里我推荐另外一些资料, 首先就是引用过万的 凸优化宗师 Boyd 的 巨作 Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers, 重点看前五章的内容, 再来看本文的实例就更得心应手一些。 然后推荐另一篇 毫米波信道估计的文章 Wideband MIMO Channel Estimation for Hybrid Beamforming Millimeter Wave Systems via Random Spatial Sampling, 也是使用了 ADMM 算法, 可以作为另一个 深入理解的 实例 。

关于 ADMM 的 最基本思想, 在 ADMM算法简介 一文中, 已经做了基本的介绍。 知乎上也有不错的相关回答。 建议大家先了解其基本概念后, 再往下看。 那么 ADMM 一种常见的使用, 就是应对 有约束的 问题。 具体而言, 对于如下问题:
minimize ⁡ f ( x )  subject to  x ∈ C \begin{array}{ll} \operatorname{minimize} & f(x) \\ \text { subject to } & x \in \mathcal{C} \end{array} minimize subject to f(x)xC
可以将问题等价地写为:
minimize ⁡ f ( x ) + g ( z )  subject to  x − z = 0 \begin{array}{ll} \operatorname{minimize} & f(x)+g(z) \\ \text { subject to } & x-z=0 \end{array} minimize subject to f(x)+g(z)xz=0
这里 g ( z ) g(z) g(z) C \mathcal{C} C 的 示性函数 (indicator function)。示性函数很简单, 就是 当 z ∈ C z\in \mathcal{C} zC 时, g ( z ) = 0 g(z)=0 g(z)=0, 否则 g ( z ) = ∞ g(z)=\infty g(z)=. 而如果了解ADMM算法的话, 可以知道上面这个等效问题,就是ADMM的标准形式

回到论文中, 对于 (P4a) 这个问题 (本文最开始的那个优化问题), 我们同样可以用类似的思路, 将其转化为:
maximize ⁡ f 4 a ( q ) − ∑ n = 1 N g ( [ θ ] n )  subject to  q = θ \begin{array}{ll} \operatorname{maximize} & f_{4a}(\boldsymbol{q})-\sum_{n=1}^Ng([\boldsymbol{\theta}]_n) \\ \text { subject to } & \boldsymbol{q} = \boldsymbol{\theta} \end{array} maximize subject to f4a(q)n=1Ng([θ]n)q=θ
这里由于问题是最大化问题, 所以形式稍有不同, 但思想是完全一样可以直接拓展的。 g g g 此处是 F \mathcal{F} F 的示性函数。 那么其对应的 拉格朗日增广函数为:
G ( q , θ , λ R , λ I ) = − q H U q − ∑ n = 1 N 1 F ( θ n ) − μ 2 ∥ q − θ ∥ 2 2 + Re ⁡ { 2 q H ν + ( λ R + j λ I ) H ( q − θ ) } \begin{aligned} \mathcal{G}\left(\mathrm{q}, \theta, \lambda_{\mathrm{R}}, \lambda_{\mathrm{I}}\right)=&-q^{\mathrm{H}} U q-\sum_{n=1}^{N} \mathbb{1}_{\mathcal{F}}\left(\theta_{n}\right)-\frac{\mu}{2}\|\mathrm{q}-\theta\|_{2}^{2} +\operatorname{Re}\left\{2 q^{\mathrm{H}} \nu+\left(\lambda_{\mathrm{R}}+j \lambda_{\mathrm{I}}\right)^{\mathrm{H}}(\mathrm{q}-\theta)\right\} \end{aligned} G(q,θ,λR,λI)=qHUqn=1N1F(θn)2μqθ22+Re{ 2qHν+(λR+jλI)H(qθ)}
其中 λ R = [ λ R , 1 , ⋯   , λ R , N ] T \boldsymbol{\lambda}_{\mathrm{R}}=\left[\lambda_{\mathrm{R}, 1}, \cdots, \lambda_{\mathrm{R}, N}\right]^{\mathrm{T}} λR=[λR,1,,λR,N]T λ I = [ λ I , 1 , ⋯   , λ I , N ] T \boldsymbol{\lambda}_{\mathrm{I}}=\left[\lambda_{\mathrm{I}, 1}, \cdots, \lambda_{\mathrm{I}, N}\right]^{\mathrm{T}} λI=[λI,1,,λI,N]T 是分别对应于 Re ⁡ { q − θ } = 0 \operatorname{Re}\{\mathrm{q}-\theta\}=0 Re{ qθ}=0 Im ⁡ { q − θ } = 0 \operatorname{Im}\{\mathrm{q}-\theta\}=0 Im{ qθ}=0 两个限制的 拉格朗日系数。 − μ 2 ∥ q − θ ∥ 2 2 -\frac{\mu}{2}\|\mathrm{q}-\theta\|_{2}^{2} 2μqθ22 是惩罚项。 至此, 我们开始以 G \mathcal{G} G 为目标进行求解这一对偶问题如下:
min ⁡ λ R , λ I L ( λ R , λ I ) = max ⁡ θ , q { G ( q , θ , λ R , λ I ) } \min _{\lambda_{\mathrm{R}}, \lambda_{\mathrm{I}}} \mathcal{L}\left(\lambda_{\mathrm{R}}, \lambda_{\mathrm{I}}\right)=\max _{\theta, q}\left\{\mathcal{G}\left(\mathbf{q}, \theta, \lambda_{\mathrm{R}}, \lambda_{\mathrm{I}}\right)\right\} λR,λIminL(λR,λI)=θ,qmax{ G(q,θ,λR,λI)}

如果 F = F 1 \mathcal{F}=\mathcal{F}_1 F=F1, 那么原问题和对偶问题的最优解是一致的, 即没有 duality gap. 否则, 是存在一定最优性损失的。 这个可以参考 博客 【凸优化】关于 KKT 条件 及其最优性。 接下来, 通过 ADMM 算法求解 该对偶问题, 为:
θ t + 1 = arg ⁡ max ⁡ θ G ( q t , θ , λ ˉ t ) q t + 1 = arg ⁡ max ⁡ q G ( q , θ t + 1 , λ ˉ t ) λ ˉ t + 1 = λ ˉ t − μ ( q t + 1 − θ t + 1 ) \begin{aligned} &\theta^{t+1}=\arg \max _{\theta} \mathcal{G}\left(\mathrm{q}^{t}, \theta, \bar{\lambda}^{t}\right) \\ &\mathrm{q}^{t+1}=\arg \max _{\mathrm{q}} \mathcal{G}\left(\mathrm{q}, \theta^{t+1}, \bar{\lambda}^{t}\right) \\ &\bar{\lambda}^{t+1}=\bar{\lambda}^{t}-\mu\left(\mathrm{q}^{t+1}-\theta^{t+1}\right) \end{aligned} θt+1=argθmaxG(qt,θ,λˉt)qt+1=argqmaxG(q,θt+1,λˉt)λˉt+1=λˉtμ(qt+1θt+1)
其中, λ ˉ = λ R + j λ I \bar{\lambda}=\lambda_{\mathrm{R}}+j \lambda_{\mathrm{I}} λˉ=λR+jλI t t t 代表迭代次数。 可以看到实质上则是固定其余变量优化单一变量的 交替优化方法。

对于第二步, 这是一个关于 q \mathbf{q} q 的凸函数, 因此很容易用求导得到闭式解:
q t + 1 = ( 2 U + μ I N ) − 1 ( 2 v + λ ˉ t + μ θ t + 1 ) \mathbf{q}^{t+1}=\left(2 \mathbf{U}+\mu \mathbf{I}_{N}\right)^{-1}\left(2 \mathbf{v}+\bar{\lambda}^{t}+\mu \theta^{t+1}\right) qt+1=(2U+μIN)1(2v+λˉt+μθt+1)
关键我们看第一步, 把 G \mathcal{G} G 中 与 θ \theta θ 相关的项取出, 问题可写为:
max ⁡ θ − μ 2 ∥ q t − θ ∥ 2 2 + Re ⁡ { ( λ R t + j λ I t ) H ( q t − θ ) } − ∑ n = 1 N g ( [ θ ] n ) \max_\theta -\frac{\mu}{2}\|\mathrm{q}^t-\theta\|_{2}^{2} +\operatorname{Re}\left\{\left(\lambda_{\mathrm{R}}^t+j \lambda_{\mathrm{I}}^t\right)^{\mathrm{H}}(\mathrm{q}^t-\theta)\right\} - \sum_{n=1}^Ng([\boldsymbol{\theta}]_n) θmax2μqtθ22+Re{ (λRt+jλIt)H(qtθ)}n=1Ng([θ]n)
通过加入无关的常数项, 目标函数可以改写为:
− μ 2 ( ∥ q t − 1 μ λ t − θ ∥ 2 ) − ∑ n = 1 N g ( [ θ ] n ) -\frac{\mu}{2}(\|q^t-\frac{1}{\mu}\lambda^t-\theta\|^2) -\sum_{n=1}^Ng([\boldsymbol{\theta}]_n) 2μ(qtμ1λtθ2)n=1Ng([θ]n)

要想最大化上式, 结果为:
θ t + 1 = P j F ( q t − 1 μ λ ˉ t ) \theta^{t+1}=\mathrm{P} \mathrm{j}_{\mathcal{F}}\left(\mathrm{q}^{t}-\frac{1}{\mu} \bar{\lambda}^{t}\right) θt+1=PjF(qtμ1λˉt)
其中 P j \mathrm{Pj} Pj代表投影操作。 这里解释下为什么是这个解: 首先必须满足 θ ∈ F \theta\in\mathcal{F} θF, 否则由于示性函数的存在, 目标函数直接变为 − ∞ -\infty 。 在看第一项, 代表的物理意义就是, 寻找离 向量 q t − 1 μ λ t q^t-\frac{1}{\mu}\lambda^t qtμ1λt 最近的向量。 结合起来就变为: 寻找 在 F \mathcal{F} F中的, 离 向量 q t − 1 μ λ t q^t-\frac{1}{\mu}\lambda^t qtμ1λt 最近的向量, 那这不正是投影操作的定义么! 因此:

  • When θ n ∈ F 1 \theta_{n} \in \mathcal{F}_{1} θnF1 :
    θ n t + 1 = θ ˉ n ∣ θ ˉ n ∣ min ⁡ { 1 , ∣ θ ˉ n ∣ } \theta_{n}^{t+1}=\frac{\bar{\theta}_{n}}{\left|\bar{\theta}_{n}\right|} \min \left\{1,\left|\bar{\theta}_{n}\right|\right\} θnt+1=θˉnθˉnmin{ 1,θˉn}
  • When θ n ∈ F 2 \theta_{n} \in \mathcal{F}_{2} θnF2 :
    ∠ θ n t + 1 = ∠ θ ˉ n \angle \theta_{n}^{t+1}=\angle \bar{\theta}_{n} θnt+1=θˉn
  • When θ n ∈ F 3 \theta_{n} \in \mathcal{F}_{3} θnF3 :
    ∠ θ n t + 1 = arg ⁡ min ⁡ φ n ∈ { 0 , 2 π τ , ⋯   , 2 π ( τ − 1 ) τ } ∣ φ n − ∠ θ ˉ n ∣ \angle \theta_{n}^{t+1}=\arg \min _{\varphi_{n} \in\left\{0, \frac{2 \pi}{\tau}, \cdots, \frac{2 \pi(\tau-1)}{\tau}\right\}}\left|\varphi_{n}-\angle \bar{\theta}_{n}\right| θnt+1=argφn{ 0,τ2π,,τ2π(τ1)}minφnθˉn
    至此, 可以用ADMM对问题进行求解。 在这个例子中我们可以看到, 作为非凸限制的 F 2 \mathcal{F}_2 F2 F 3 \mathcal{F}_3 F3, 可以通过ADMM的方式, 简单地用投影算子解决, 这不得不说是一种算是求解特定非凸问题的利刃, 值得大家掌握。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39274659/article/details/121192360

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签