最大化速率的智能反射面波束成形(下): 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语言编程题及答案-程序员宅基地

文章浏览阅读248次。资源描述:C C 语言编程题及答案(三)语言编程题及答案(三) 1. 给小学生出加法考试题 编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列 要求以循序渐进的方式编程。 程程序序 1 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示 “Right” , 否则显示“Not correct Try again” ,程序结束。 程程序序 2 通过输入两个加数给..._1)通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“right!”,

给定一个只包含小写字母的字符串,删除重复的字母,每个字母只出现一次。在所有结果中,输出字典顺序最小的。_给定一个仅包含小写字母的字符串,去除字符串中重复的字母,使得每个字母只出现一次-程序员宅基地

文章浏览阅读1.6w次,点赞5次,收藏6次。本题源自leetcode 316---------------------------------------------------------------------------------思路:1 用俩个vector 标记字符在串中的出现的次数,以及这个字符是否访问过。 2 先遍历一遍字符串,统计字符出现的次数3 第二遍遍历字符,每次访问一个字符都将字符出现的次数减一,如_给定一个仅包含小写字母的字符串,去除字符串中重复的字母,使得每个字母只出现一次

郝健: Linux内存管理学习笔记-第5节课-程序员宅基地

文章浏览阅读1.1k次。前序文章:郝健: Linux内存管理学习笔记-第1节课郝健: Linux内存管理学习笔记-第2节课郝健: Linux内存管理学习笔记-第3节课郝健: Linux内存管理学..._cache coherent interconnect

Android最新面试题(3-5年经验个人面试经历),2024年最新华为面试题及答案1+4=5-程序员宅基地

文章浏览阅读661次,点赞9次,收藏9次。附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。PS:有家小公司(规模写假的,给骗过去了),直接把项目给我看,让我说实现原理。(1)内存溢出(OOM)和内存泄露(对象无法被回收)的区别。(1)AIDL,(2)广播,(3)Messenger。(1)内存缓存,(2)本地缓存,(3)网络。

java公路北京_北京java程序员,失业150天的我的转行之路-程序员宅基地

文章浏览阅读134次。Java:我是谁?Java是1995年问世的,因为它具有卓越的通用性、高效性、平台移植性和安全性等特性,后来就成为了全球范围内应用范围zui广的开发语言。并且在这么多年的发展过程中,一直保持着常青藤的地位。Java:我在哪?Java软件工程师其实就是说要用java这种开发语言去完成软件产品的软件程序设计、开发、测试和维护升级等,这样的工作就是java工程师做的。Java:我要干什么?Java可以编..._北京程序员转行

【加速】Ubuntu 22.04 LTS Steam++ Watt Toolkit 加速 github_ubuntu steam++-程序员宅基地

文章浏览阅读3.3k次,点赞15次,收藏29次。解决第一个错误,第二个错误:the SSL connection could not be established。不管他,测试github,edge。再次点击意见加速,报错 没有权限。解压到/opt/steam++同时弹出浏览器,提示操作方法。点击一键加速,弹出提示。参考Linux版本修改。测试登录stream。_ubuntu steam++

随便推点

信息系统项目管理师(2022年) —— 第 3 章 项目立项管理_论信息系统项目的立项管理-程序员宅基地

文章浏览阅读2.3k次。1、立项内容管理项目立项一般包括提交项目建议书、项目可行性研究、项目招标与投标等内容。1.1 项目建议书项目建议书(又称立项申请)是项目建设单位向上级主管部门提交项目申请时所必须的文件,是该项目建设筹建单位或项目法人,提出的某一具体项目的建议文件,是对拟建项目提出的框架性的总体设想。项目建议书是项目发展周期的初始阶段,也是可行性研究的依据,在项目建议书批准后,方可开展对外工作。1.1.1 项目建议书内容(1)项目的必要性。(2)项目的市场预测。(3)产品方案或服务的市场预测。(4)项_论信息系统项目的立项管理

【转】android获取所有安装的非系统应用_app读取应用列表怎么区分是否系统应用-程序员宅基地

文章浏览阅读5.3k次,点赞2次,收藏3次。程序大概分成三个部分:1.获取手机已安装的所有应用package的信息(其中包括用户自己安装的,还有系统自带的);2.滤除系统自带应用;3.通过列表显示出应用程序的图标(icon),和其他文字信息(应用名称,包名称package name,版本号等等)首先,我们定义一个数据结构,来保存应用程序信息(icon,name,packageName,versionName,_app读取应用列表怎么区分是否系统应用

wamp集成环境自己的项目访问时出现地址栏自动去掉localhost的问题-程序员宅基地

文章浏览阅读95次。这是在www目录下的index.php文件有参数没有设置好。然后修改里面查找$projectContents,或直接查看338行代码,修改'http://'为'http://localhost/'即可(再试应该就可以了) ..._php a herf 链接跳转外部页面 去掉开头的 localhost 目录信息

图象工具:可将SWING组件外观输出成图片的工具 - SWING组件_swing打印出组件的图片-程序员宅基地

文章浏览阅读1.8k次。图象工具:可将SWING组件外观输出成图片的工具---------------------------------------- 我的自定义SWING组件 !!! 王 晋 (Edward W.J.)Email:[email protected]:(0)13482058688_swing打印出组件的图片

15、system V 与 posix 信号量的简单比较-程序员宅基地

文章浏览阅读52次。1、XSI system V的信号量是信号量集,可以包括多个信号灯(有个数组),每个操作可以同时操作多个信号灯 posix是单个信号灯,POSIX有名信号灯支持进程间通信,无名信号灯放在共享内存中时可以用于进程间通信。 2、POSIX信号量在有些平台并没有被实现,比如:SUSE8,而SYSTEM V大多数LINUX/UNIX都已经实现。两者都可以用于进程和线程间通信。 3、..._posix信号量和systemv优缺点

在 Ubuntu 20.04 LTS 桌面版上安装 MS 字体_ms字体-程序员宅基地

文章浏览阅读1w次。在 Ubuntu 18.04 LTS 桌面版上安装 MS 字体如下所示安装 MS TrueType 字体:$ sudo apt update $ sudo apt install ttf-mscorefonts-installer然后将会出现 Microsoft 的最终用户协议向导,点击OK以继续。点击Yes已接受 Microsoft 的协议:安装字体之后, 我..._ms字体

推荐文章

热门文章

相关标签