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

机器学习笔记之最优化理论与方法(六)无约束优化问题——最优性条件

机器学习笔记之最优化理论与方法——无约束优化问题[最优性条件]

  • 引言
    • 无约束优化问题
      • 无约束优化问题最优解的定义
    • 无约束优化问题的最优性条件
      • 无约束优化问题的充要条件
      • 无约束优化问题的必要条件
      • 无约束优化问题的充分条件

引言

本节将介绍无约束优化问题,主要介绍无约束优化问题最优解的相关性质

本节是关于以优化算法——无约束算法概述为首,优化算法——线搜索方法(二~九)的理论补充。

无约束优化问题

无约束优化问题的数学符号表示如下:
仅需要对目标函数进行最小化,没有可行域的条件限制。
min ⁡ f ( x ) \min f(x) minf(x)
在实际问题中,很多问题可以被建模成无约束优化问题。例如:线性回归方法中的最小二乘估计问题。对应数学符号表示如下:
很明显,最小二乘函数 ∥ A x − b ∥ 2 2 \|\mathcal A x - b\|_2^2 Axb22明显是一个凸函数:其二次型系数矩阵 A T A \mathcal A^T\mathcal A ATA必然是半正定矩阵
f ( x ) = ∥ A x − b ∥ 2 2 = ( A x − b ) T ( A x − b ) = x T [ A T A ] x + b T A x − x T A T b + b T b \begin{aligned} f(x) & = \|\mathcal Ax - b\|_2^2 \\ & = (\mathcal Ax - b)^T(\mathcal Ax - b) \\ & = x^T [\mathcal A^T\mathcal A] x + b^T \mathcal A x - x^T \mathcal A^T b + b^Tb \end{aligned} f(x)=Axb22=(Axb)T(Axb)=xT[ATA]x+bTAxxTATb+bTb
因而该问题可以更精确地描述为无约束凸优化问题
min ⁡ ∥ A x − b ∥ 2 2 \min \|\mathcal A x - b\|_2^2 minAxb22

可以采用适当方法约束优化问题转换为无约束优化问题。例如最优化问题概述中提到的罚函数法。

无约束优化问题最优解的定义

  • 局部最优解 :假设 x ˉ \bar{x} xˉ是关于目标函数 f ( ⋅ ) f(\cdot) f()无约束优化问题的局部最优解,对于 ∀ x ∈ N ϵ ( x ˉ ) \forall x \in \mathcal N_\epsilon(\bar{x}) xNϵ(xˉ),必然有:
    其中 N ϵ ( x ˉ ) \mathcal N_{\epsilon}(\bar{x}) Nϵ(xˉ)表示包含点 x ˉ \bar{x} xˉ,并且使用 ϵ \epsilon ϵ表示范围的邻域。例如: ( x ˉ − ϵ , x ˉ + ϵ ) (\bar{x} - \epsilon,\bar{x} + \epsilon) (xˉϵ,xˉ+ϵ)
    f ( x ) ≥ f ( x ˉ ) f(x) \geq f(\bar{x}) f(x)f(xˉ)
  • 全局最优解:相比于局部最优解,假设 x ∗ x^* x是关于目标函数 f ( ⋅ ) f(\cdot) f()无约束优化问题的全局最优解,对于 ∀ x ∈ R n \forall x \in \mathbb R^n xRn,必然有:
    f ( x ) ≥ f ( x ∗ ) f(x) \geq f(x^*) f(x)f(x)
  • 严格最优解:与凸函数:定义与基本性质中提到的严格凸函数类似,其核心是消除掉取等的情况。关于严格最优解,同样可以分为严格局部最优解严格全局最优解。对应数学符号表示如下:
    { ∀ x ∈ R n , x ≠ x ∗ ⇒ f ( x ) > f ( x ∗ ) ∀ x ∈ N ϵ ( x ˉ ) , x ≠ x ˉ ⇒ f ( x ) > f ( x ˉ ) \begin{cases} \forall x \in \mathbb R^n,x \neq x^* \Rightarrow f(x) > f(x^*) \\ \forall x \in \mathcal N_{\epsilon}(\bar{x}), x \neq \bar{x} \Rightarrow f(x) > f(\bar{x}) \end{cases} {xRn,x=xf(x)>f(x)xNϵ(xˉ),x=xˉf(x)>f(xˉ)
    对应图像表示如下:
    最优解与严格最优解
    根据凸函数的定义可以看出, f ( ⋅ ) , G ( ⋅ ) f(\cdot),\mathcal G(\cdot) f(),G()都是凸函数。其中 f ( ⋅ ) f(\cdot) f()中描述的红色点是严格最优解;而红色点 G ( x ∗ ) \mathcal G(x^*) G(x)是最优解的条件下, ∃ x ≠ x ∗ ⇒ f ( x ) = f ( x ∗ ) \exist x \neq x^* \Rightarrow f(x) = f(x^*) x=xf(x)=f(x)。那么该函数的最优解不是严格最优解

无约束优化问题的最优性条件

针对无约束优化问题 ⇒ min ⁡ f ( x ) \Rightarrow \min f(x) minf(x)

无约束优化问题的充要条件

如果目标函数 f ( x ) f(x) f(x)凸函数,则存在如下等价条件
关于无约束凸优化问题,详细解释见最优化理论与方法——凸优化问题(上),这里不再赘述。
x ∗ is Optimal  ⇔ ∇ f ( x ∗ ) = 0 x^* \text{ is Optimal } \Leftrightarrow \nabla f(x^*) = 0 x is Optimal f(x)=0

无约束优化问题的必要条件

如果目标函数 f ( x ) f(x) f(x)不是凸函数,只是一般函数,上述的充要条件不一定成立,但一定满足如下必要条件

  • 如果 x ∗ x^* x是最优解,那么它一定是平稳点
  • 如果 f ( ⋅ ) f(\cdot) f() x ∗ x^* x位置的 Hessian Matrix ⇒ ∇ 2 f ( x ∗ ) \text{Hessian Matrix} \Rightarrow \nabla^2 f(x^*) Hessian Matrix2f(x)存在,那么该矩阵至少是半正定矩阵如果将 f ( ⋅ ) f(\cdot) f()退化成一元函数,必然有: f ′ ′ ( x ∗ ) ≥ 0 f''(x^*) \geq 0 f′′(x)0
    x ∗ is Optimal  ⇒ { ∇ f ( x ∗ ) = 0 ∇ 2 f ( x ∗ ) ≽ 0 x^* \text{ is Optimal } \Rightarrow \begin{cases} \nabla f(x^*) = 0 \\ \nabla^2 f(x^*) \succcurlyeq 0 \end{cases} x is Optimal {f(x)=02f(x)0

证明

  • 已知 x ∗ x^* x最优解不妨设 ∇ f ( x ∗ ) ≠ 0 \nabla f(x^*) \neq 0 f(x)=0,必然存在负梯度方向: d = − ∇ f ( x ∗ ) d = - \nabla f(x^*) d=f(x)
    x ∗ x^* x起始点,沿着负梯度方向前进较小的一段距离: f ( x ∗ + λ ⋅ d ) f(x^* + \lambda \cdot d) f(x+λd),并将其进行泰勒展开
    思路:前进一小段距离后,必然会导致目标函数值下降;从而 x ∗ x^* x不是最优解了,产生矛盾。
    f ( x ∗ + λ ⋅ d ) = f ( x ∗ ) + 1 1 ! λ [ ∇ f ( x ∗ ) ] T d + O ( λ ∥ d ∥ ) λ ∈ ( 0 , 1 ) f(x^* + \lambda \cdot d) = f(x^*) + \frac{1}{1!} \lambda [\nabla f(x^*)]^Td + \mathcal O(\lambda \|d\|) \quad \lambda \in (0,1) f(x+λd)=f(x)+1!1λ[f(x)]Td+O(λd)λ(0,1)
    经过整理,有:
    关于 λ \lambda λ范围后面不再赘述。
    f ( x ∗ + λ ⋅ d ) − f ( x ∗ ) λ = [ ∇ f ( x ∗ ) ] T d + O ( λ ∥ d ∥ ) λ \frac{f(x^* + \lambda \cdot d) - f(x^*)}{\lambda} = [\nabla f(x^*)]^T d + \frac{\mathcal O(\lambda \|d\|)}{\lambda} λf(x+λd)f(x)=[f(x)]Td+λO(λd)
    d = − ∇ f ( x ∗ ) d = -\nabla f(x^*) d=f(x)代入,必然有:
    [ ∇ f ( x ∗ ) ] T d = − ∣ ∣ ∇ f ( x ∗ ) ∣ ∣ 2 < 0 [\nabla f(x^*)]^T d = - ||\nabla f(x^*)||^2 < 0 [f(x)]Td=∣∣∇f(x)2<0
    λ ⇒ 0 \lambda \Rightarrow 0 λ0时,有:
    lim ⁡ λ ⇒ 0 f ( x ∗ + λ ⋅ d ) − f ( x ∗ ) λ = lim ⁡ λ ⇒ 0 { [ ∇ f ( x ∗ ) ] T d ⏟ < 0 + O ( λ ⋅ ∥ d ∥ ) λ ⏟ = 0 } < 0 \mathop{\lim}\limits_{\lambda \Rightarrow 0} \frac{f(x^* + \lambda \cdot d) - f(x^*)}{\lambda} = \mathop{\lim}\limits_{\lambda \Rightarrow 0} \left\{\underbrace{[\nabla f(x^*)]^T d}_{< 0} + \underbrace{\frac{\mathcal O(\lambda \cdot \|d\|)}{\lambda}}_{=0}\right\} < 0 λ0limλf(x+λd)f(x)=λ0lim <0 [f(x)]Td+=0 λO(λd) <0
    从而:
    lim ⁡ λ ⇒ 0 f ( x ∗ + λ ⋅ d ) − f ( x ∗ ) λ < 0 ⇒ lim ⁡ λ ⇒ 0 f ( x ∗ + λ ⋅ d ) < f ( x ∗ ) \mathop{\lim}\limits_{\lambda \Rightarrow 0} \frac{f(x^* + \lambda \cdot d) - f(x^*)}{\lambda} < 0 \Rightarrow \mathop{\lim}\limits_{\lambda \Rightarrow 0} f(x^* + \lambda \cdot d) < f(x^*) λ0limλf(x+λd)f(x)<0λ0limf(x+λd)<f(x)
    此时,发现了存在比 f ( x ∗ ) f(x^*) f(x)还要小的函数值 f ( x ∗ + λ ⋅ d ) f(x^* + \lambda \cdot d) f(x+λd),这意味着: x ∗ x^* x不是最优解。与条件矛盾,得证。也将 ∇ f ( x ∗ ) = 0 \nabla f(x^*) = 0 f(x)=0称作一般函数 f ( ⋅ ) f(\cdot) f() x ∗ x^* x是最优解的一阶必要条件
  • 二阶必要条件证明:已知 x ∗ x^* x是最优解,必然有: ∇ f ( x ∗ ) = 0 \nabla f(x^*) = 0 f(x)=0。假设 x ∗ x^* x位置的 Hessian Matrix ⇒ ∇ 2 f ( x ∗ ) \text{Hessian Matrix} \Rightarrow \nabla^2 f(x^*) Hessian Matrix2f(x)低于半正定矩阵,必然有:
    ∃ d ≠ 0 ⇒ d T ∇ 2 f ( x ∗ ) d < 0 \exist d \neq 0 \Rightarrow d^T \nabla^2 f(x^*) d < 0 d=0dT2f(x)d<0
    x ∗ x^* x起始点 d d d下降方向前进较小的一段距离: f ( x ∗ + λ ⋅ d ) f(x^* + \lambda \cdot d) f(x+λd),并将其进行泰勒展开
    与平稳点的证明相似,只不过需要二阶泰勒展开~
    f ( x ∗ + λ ⋅ d ) = f ( x ∗ ) + 1 1 ! λ ⋅ [ ∇ f ( x ∗ ) ] T ⏟ = 0 d + 1 2 ! λ ⋅ d T ∇ 2 f ( x ∗ ) d + O ( λ 2 ⋅ ∥ d ∥ 2 ) = f ( x ∗ ) + 1 2 ! λ ⋅ d T ∇ 2 f ( x ∗ ) d + O ( λ 2 ⋅ ∥ d ∥ 2 ) \begin{aligned} f(x^* + \lambda \cdot d) & = f(x^*) + \frac{1}{1!} \lambda \cdot \underbrace{[\nabla f(x^*)]^T}_{=0}d + \frac{1}{2!} \lambda \cdot d^T \nabla^2 f(x^*) d + \mathcal O(\lambda^2 \cdot \|d\|^2) \\ & = f(x^*) + \frac{1}{2!} \lambda \cdot d^T \nabla^2 f(x^*) d + \mathcal O(\lambda^2 \cdot \|d\|^2) \end{aligned} f(x+λd)=f(x)+1!1λ=0 [f(x)]Td+2!1λdT2f(x)d+O(λ2d2)=f(x)+2!1λdT2f(x)d+O(λ2d2)
    经过整理,并令 λ ⇒ 0 \lambda \Rightarrow 0 λ0,有:
    lim ⁡ λ ⇒ 0 f ( x ∗ + λ ⋅ d ) − f ( x ∗ ) λ 2 = 1 2 d T ∇ 2 f ( x ∗ ) d ⏟ < 0 + O ( λ 2 ⋅ ∥ d ∥ 2 ) λ 2 ⏟ = 0 < 0 \mathop{\lim}\limits_{\lambda \Rightarrow 0} \frac{f(x^* + \lambda \cdot d) - f(x^*)}{\lambda^2} = \frac{1}{2}\underbrace{d^T \nabla^2 f(x^*) d}_{<0} + \underbrace{\frac{\mathcal O(\lambda^2 \cdot \|d\|^2)}{\lambda^2}}_{=0} < 0 λ0limλ2f(x+λd)f(x)=21<0 dT2f(x)d+=0 λ2O(λ2d2)<0
    从而 f ( x ∗ + λ ⋅ d ) < f ( x ∗ ) f(x^* + \lambda \cdot d) < f(x^*) f(x+λd)<f(x),从而与条件矛盾。因此:最优解 x ∗ x^* x对应的 ∇ 2 f ( x ∗ ) ≽ 0 \nabla^2 f(x^*) \succcurlyeq 0 2f(x)0恒成立。

相反,如果存在某点 x ∗ x^* x,使得: ∇ f ( x ∗ ) = 0 \nabla f(x^*) = 0 f(x)=0 ∇ 2 f ( x ∗ ) ≽ 0 \nabla^2 f(x^*) \succcurlyeq 0 2f(x)0,那么点 x ∗ x^* x是否为最优解 ? ? ?不一定。例如: f ( x ) = x 3 f(x) = x^3 f(x)=x3,其函数图像表示如下:
x立方函数图像
x = 0 x = 0 x=0处的梯度 ∇ f ( x ) ∣ x = 0 = 0 \nabla f(x)|_{x=0} = 0 f(x)x=0=0二阶梯度 ∇ 2 f ( x ) ∣ x = 0 = 0 \nabla^2 f(x) |_{x = 0} = 0 2f(x)x=0=0,均满足条件;但该点是一个鞍点,而不是最优解点。

无约束优化问题的充分条件

如果 f ( ⋅ ) f(\cdot) f()不是凸函数,只是一般函数,如果存在某点 x ∗ x^* x,满足: ∇ f ( x ∗ ) = 0 , ∇ 2 f ( x ∗ ) ≻ 0 \nabla f(x^*) =0,\nabla^2 f(x^*) \succ 0 f(x)=0,2f(x)0,那么 x ∗ x^* x严格最优解

  • 其中 ∇ 2 f ( x ∗ ) ≻ 0 \nabla^2 f(x^*) \succ 0 2f(x)0表示函数 f ( ⋅ ) f(\cdot) f() x ∗ x^* x点处的 Hessian Matrix \text{Hessian Matrix} Hessian Matrix正定矩阵
  • 需要注意的是,这里的严格最优解可能是严格局部最优解或者严格全局最优解

证明
要证上式,即证: ∀ x ∈ N ϵ ( x ∗ ) , f ( x ∗ ) < f ( x ) \forall x \in \mathcal N_{\epsilon}(x^*),f(x^*) < f(x) xNϵ(x),f(x)<f(x)

  • x ∗ x^* x起始点,朝着任意方向 d d d前进较小的距离,得到新的函数结果: f ( x ∗ + λ ⋅ d ) f(x^* + \lambda \cdot d) f(x+λd)。观察: f ( x ∗ + λ ⋅ d ) f(x^* + \lambda \cdot d) f(x+λd) f ( x ∗ ) f(x^*) f(x)之间的大小情况。使用泰勒公式展开
    为了简单起见,仅关注 d d d的方向,而令 d d d大小 ∥ d ∥ = 1 \|d\| = 1 d=1
    f ( x ∗ + λ ⋅ d ) = f ( x ∗ ) + 1 1 ! λ ⋅ [ ∇ f ( x ∗ ) ] T ⏟ = 0 d + 1 2 ! λ 2 d T ∇ 2 f ( x ∗ ) ⏟ ≻ 0 d + O ( λ 2 ) ∥ d ∥ 2 = 1 f(x^* + \lambda \cdot d) = f(x^*) + \frac{1}{1!} \lambda \cdot\underbrace{[\nabla f(x^*)]^T}_{=0} d + \frac{1}{2!} \lambda^2 d^T \underbrace{\nabla^2 f(x^*)}_{\succ 0}d + \mathcal O(\lambda^2) \quad \|d\|^2 = 1 f(x+λd)=f(x)+1!1λ=0 [f(x)]Td+2!1λ2dT0 2f(x)d+O(λ2)d2=1
    整理上式,观察 f ( x ∗ + λ ⋅ d ) − f ( x ∗ ) f(x^* + \lambda \cdot d) - f(x^*) f(x+λd)f(x)结果:
    lim ⁡ λ ⇒ 0 f ( x ∗ + λ ⋅ d ) − f ( x ∗ ) λ 2 = 1 2 d T ∇ 2 f ( x ∗ ) d > 0 \mathop{\lim}\limits_{\lambda \Rightarrow 0} \frac{f(x^* + \lambda \cdot d) - f(x^*)}{\lambda^2} = \frac{1}{2}d^T \nabla^2 f(x^*) d > 0 λ0limλ2f(x+λd)f(x)=21dT2f(x)d>0
    从而 f ( x ∗ + λ ⋅ d ) > f ( x ∗ ) f(x^* + \lambda \cdot d) > f(x^*) f(x+λd)>f(x)。这意味着: x ∗ x^* x范围的小的邻域内, f ( x ∗ ) f(x^*) f(x)是最小值,并且是严格最小值,得证。

Reference \text{Reference} Reference
最优化理论与方法-第五讲-无约束优化问题(一)

相关文章:

机器学习笔记之最优化理论与方法(六)无约束优化问题——最优性条件

机器学习笔记之最优化理论与方法——无约束优化问题[最优性条件] 引言无约束优化问题无约束优化问题最优解的定义 无约束优化问题的最优性条件无约束优化问题的充要条件无约束优化问题的必要条件无约束优化问题的充分条件 引言 本节将介绍无约束优化问题&#xff0c;主要介绍无…...

E5061B/是德科技keysight E5061B网络分析仪

181/2461/8938产品概述 是德科技E5061B(安捷伦)网络分析仪在从5 Hz到3 GHz的宽频率范围内提供通用的高性能网络分析。E5061B提供ENA系列常见的出色RF性能&#xff0c;还提供全面的LF(低频)网络测量能力&#xff1b;包括内置1 Mohm输入的增益相位测试端口。E5061B从低频到高频的…...

2.4 PE结构:节表详细解析

节表&#xff08;Section Table&#xff09;是Windows PE/COFF格式的可执行文件中一个非常重要的数据结构&#xff0c;它记录了各个代码段、数据段、资源段、重定向表等在文件中的位置和大小信息&#xff0c;是操作系统加载文件时根据节表来进行各个段的映射和初始化的重要依据…...

Vue2项目练手——通用后台管理项目第五节

Vue2项目练手——通用后台管理项目 首页组件布局面包屑&tag面包屑使用组件使用vuex存储面包屑数据src/store/tab.jssrc/components/CommonAside.vuesrc/components/CommonHeader.vue tag使用组件文件目录CommonTag.vueMain.vuetabs.js 用户管理页新增功能使用的组件页面布局…...

软件工程学术顶会——ESEC/FSE 2022 议题(网络安全方向)清单、摘要与总结

总结 本次会议中网络安全相关议题涵盖区块链、智能合约、符号执行、浏览器API模糊测试等不同研究领域。 热门研究方向: 1. 基于深度学习的漏洞检测与修复 2. 基于AI的自动漏洞修复 3. 模糊测试与漏洞发现 冷门研究方向: 1. 多语言代码的漏洞分析 2. 代码审查中的软件安全 3. 浏…...

从C语言到C++_36(智能指针RAII)auto_ptr+unique_ptr+shared_ptr+weak_ptr

目录 1. 智能指针的引入_内存泄漏 1.1 内存泄漏 1.2 如何避免内存泄漏 2. RAII思想 2.1 RAII解决异常安全问题 2.2 智能指针原理 3. auto_ptr 3.1 auto_ptr模拟代码 4. unique_ptr 4.1 unique_ptr模拟代码 5. shared_ptr 5.1 shared_ptr模拟代码 5.2 循环引用 6.…...

C++信息学奥赛1187:统计字符数

#include <bits/stdc.h> using namespace std; int main() {string arr;cin >> arr; // 输入一个字符串int n, a, max; // 定义变量n, a, maxchar ArrMax; // 定义字符变量ArrMaxn arr.length(); // 获取字符串长度max a 0; // 初始化max和a为0// 外层循环&…...

计算机毕设 大数据商城人流数据分析与可视化 - python 大数据分析

文章目录 0 前言课题背景分析方法与过程初步分析&#xff1a;总体流程&#xff1a;1.数据探索分析2.数据预处理3.构建模型 总结 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到…...

vscode上搭建go开发环境

前言 Go语言介绍&#xff1a; Go语言适合用于开发各种类型的应用程序&#xff0c;包括网络应用、分布式系统、云计算、大数据处理等。由于Go语言具有高效的并发处理能力和内置的网络库&#xff0c;它特别适合构建高并发、高性能的服务器端应用。以下是一些常见的Go语言应用开发…...

10.(Python数模)(预测模型二)LSTM回归网络(1→1)

LSTM回归网络&#xff08;1→1&#xff09; 长短期记忆网络 - 通常只称为“LSTM” - 是一种特殊的RNN&#xff0c;能够学习长期的规律。 它们是由Hochreiter&#xff06;Schmidhuber&#xff08;1997&#xff09;首先提出的&#xff0c;并且在后来的工作中被许多人精炼和推广。…...

mac常见问题(五) Mac 无法开机

在mac的使用过程中难免会碰到这样或者那样的问题&#xff0c;本期为您带来Mac 无法开机怎么进行操作。 1、按下 Mac 上的电源按钮。每台 Mac 电脑都有一个电源按钮&#xff0c;通常标有电源符号 。然后检查有没有通电迹象&#xff0c;例如&#xff1a; 发声&#xff0c;例如由风…...

WebSocket与SSE区别

一&#xff0c;websocket WebSocket是HTML5下一种新的协议&#xff08;websocket协议本质上是一个基于tcp的协议&#xff09; 它实现了浏览器与服务器全双工通信&#xff0c;能更好的节省服务器资源和带宽并达到实时通讯的目的 Websocket是一个持久化的协议 websocket的原理 …...

Qt鼠标点击事件处理:显示鼠标点击位置(完整示例)

Qt 入门实战教程&#xff08;目录&#xff09; 前驱文章&#xff1a; Qt Creator 创建 Qt 默认窗口程序&#xff08;推荐&#xff09; 什么是事件 事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。 事件&#xff08;event&#xff09;驱动…...

OpenCV:实现图像的负片

负片 负片是摄影中会经常接触到的一个词语&#xff0c;在最早的胶卷照片冲印中是指经曝光和显影加工后得到的影像。负片操作在很多图像处理软件中也叫反色&#xff0c;其明暗与原图像相反&#xff0c;其色彩则为原图像的补色。例如&#xff0c;颜色值A与颜色值B互为补色&#…...

HZOJ#237. 递归实现排列型枚举

题目描述 ​ 从 1−n这 n个整数排成一排并打乱次序&#xff0c;按字典序输出所有可能的选择方案。 输入 ​ 输入一个整数 n。&#xff08;1≤n≤8&#xff09; 输出 ​ 每行一组方案&#xff0c;每组方案中两个数之间用空格分隔。 ​ 注意每行最后一个数后没有空格。 样例…...

C++ PIMPL 编程技巧

C PIMPL 编程技巧 文章目录 C PIMPL 编程技巧什么是pimpl&#xff1f;pimpl优点举例实现 什么是pimpl&#xff1f; Pimpl (Pointer to Implementation) 是一种常见的 C 设计模式&#xff0c;用于隐藏类的实现细节&#xff0c;从而减少编译依赖和提高编译速度。它的基本思想是将…...

一个通用的EXCEL生成下载方法

Excel是一个Java开发中必须会用到的东西&#xff0c;之前博主也发过一篇关于使用Excel的文章&#xff0c;但是最近工作中&#xff0c;发现了一个更好的使用方法&#xff0c;所以&#xff0c;就对之前的博客进行总结&#xff0c;然后就有了这篇新的&#xff0c;万能通用的方法说…...

介绍 TensorFlow 的基本概念和使用场景。

TensorFlow&#xff08;简称TF&#xff09;是由Google开发的开源机器学习框架&#xff0c;它具有强大的数值计算和深度学习功能&#xff0c;广泛用于构建、训练和部署机器学习模型。以下是TensorFlow的基本概念和使用场景&#xff1a; 基本概念&#xff1a; 张量&#xff08;T…...

【力扣】304. 二维区域和检索 - 矩阵不可变 <二维前缀和>

目录 【力扣】304. 二维区域和检索 - 矩阵不可变二维前缀和理论初始化计算面积 题解 【力扣】304. 二维区域和检索 - 矩阵不可变 给定一个二维矩阵 matrix&#xff0c;以下类型的多个请求&#xff1a; 计算其子矩形范围内元素的总和&#xff0c;该子矩阵的 左上角 为 (row1, …...

线上问诊:数仓开发(三)

系列文章目录 线上问诊&#xff1a;业务数据采集 线上问诊&#xff1a;数仓数据同步 线上问诊&#xff1a;数仓开发(一) 线上问诊&#xff1a;数仓开发(二) 线上问诊&#xff1a;数仓开发(三) 文章目录 系列文章目录前言一、ADS1.交易主题1.交易综合统计2.各医院交易统计3.各性…...

微信小程序 通过响应式数据控制元素class属性

我想大家照这个和我最初的目的一样 希望有和vue中v-bind:class一样方便的指令 但答案不太尽人意 这里 我们只能采用 三元运算符的形式 参考代码如下 <view class"item {{ userId item.userId ? isThisUser : }}"> </view>这里 我们判断 如果当前ite…...

linux并发服务器 —— linux网络编程(七)

网络结构模式 C/S结构 - 客户机/服务器&#xff1b;采用两层结构&#xff0c;服务器负责数据的管理&#xff0c;客户机负责完成与用户的交互&#xff1b;C/S结构中&#xff0c;服务器 - 后台服务&#xff0c;客户机 - 前台功能&#xff1b; 优点 1. 充分发挥客户端PC处理能力…...

Java后端开发面试题——企业场景篇

单点登录这块怎么实现的 单点登录的英文名叫做&#xff1a;Single Sign On&#xff08;简称SSO&#xff09;,只需要登录一次&#xff0c;就可以访问所有信任的应用系统 JWT解决单点登录 用户访问其他系统&#xff0c;会在网关判断token是否有效 如果token无效则会返回401&am…...

TiDB x 安能物流丨打造一栈式物流数据平台

作者&#xff1a;李家林 安能物流数据库团队负责人 本文以安能物流作为案例&#xff0c;探讨了在数字化转型中&#xff0c;企业如何利用 TiDB 分布式数据库来应对复杂的业务需求和挑战。 安能物流作为中国领先的综合型物流集团&#xff0c;需要应对大规模的业务流程&#xff…...

负载均衡算法实现

负载均衡算法实现 负载均衡介绍 负责均衡主要有以下五种方法实现: 1、轮询法 将请求按顺序轮流地分配到后端服务器上&#xff0c;它均衡地对待后端的每一台服务器&#xff0c;而不关心服务器实际的连接数和当前的系统负载&#xff1b; 2、随机法 通过系统的随机算法&#…...

Flutter 完美的验证码输入框 转载

刚开始看到这个功能的时候一定觉得so easy&#xff0c;开始的时候我也是这么觉得的&#xff0c;这还不简单&#xff0c;然而真正写的时候才发现并没有想象的那么简单。 先上图&#xff0c;不上图你们都不想看&#xff0c;我难啊&#xff0c;到Github&#xff1a; https://gith…...

SpringBoot整合Jpa实现增删改查功能(提供Gitee源码)

前言&#xff1a;在日常开发中&#xff0c;总是撰写一些简单的SQL会非常耗时间&#xff0c;Jpa可以完美的帮我们提高开发的效率&#xff0c;对于常规的SQL不需要我们自己撰写&#xff0c;相对于MyBatis有着更简单易用的功能&#xff0c;但是MyBatis自由度相对于Jpa会更高一些&a…...

微服务[Nacos]

CAP 1&#xff09;一致性(Consistency) (所有节点在同一时间具有相同的数据) 2&#xff09;可用性(Availability)(保证每个请求不管成功或者失败都有响应) 3&#xff09;分区容错(Partition tolerance)(系统中任意信息的丢失或失败不会影响系统的继续运作) 一、虚拟机镜像准备 …...

8K视频来了,8K 视频编辑的最低系统要求

当今 RED、Canon、Ikegami、Sony 等公司的 8K 摄像机以及 8K 电视&#xff0c;许多视频内容制作人和电影制作人正在认真考虑 8K 拍摄、编辑和后期处理&#xff0c;需要什么样的系统来处理如此海量的数据&#xff1f; 中央处理器&#xff08;CPU&#xff09; 首先&#xff0c;…...

AsyncContext优雅实现HTTP长轮询接口

一、背景 接到一个需求&#xff0c;实现方案时需要提供一个HTTP接口&#xff0c;接口需要hold住5-8秒&#xff0c;轮询查询数据库&#xff0c;一旦数据库中值有变化&#xff0c;取出变化的值进行处理&#xff0c;处理完成后返回响应。这不就是长轮询吗&#xff0c;如何优雅的实…...

沧州做网站/百度seo关键词排名优化

http://blog.csdn.net/p96114/archive/2004/09/10/100617.aspx /** Created on 2004-9-10** 单链表中的结点类型声明.*/package org.arliang;/*** author 李梁** 单链表中的结点.*/public class node{private int data; //存放数据private node link; //链接的下一个接点.publi…...

西宁市精神文明建设网站/软文标题和内容

东莞八景,值得一游.松湖烟雨松湖烟雨位于“科技共山水一色”的松山湖科技产业园区。8平方公里水面的松山湖&#xff0c;四周峰峦环抱&#xff0c;湖水清澈&#xff0c;湖鸟轻鸣。每当晨霭雨烟&#xff0c;松山湖宛如薄纱遮面的少女&#xff0c;含羞玉立&#xff0c;静穆凝神&am…...

赚钱网站在线进入/nba最新排行榜

下面的示例向您展示了如何自定义JButton摇摆组件的图标。package org.nhooo.example.swing;import javax.swing.*;import java.awt.*;public class JButtonCustomIcon extends JFrame {public JButtonCustomIcon() throws HeadlessException {initialize();}private void initi…...

wordpress 特色照片/中国时事新闻网

矩阵的乘方运算与开方运算 在matlab7.0中&#xff0c;可以使用A^p来计算A的p次方&#xff0c;使用sqrtm()来对矩阵开方运算&#xff0c;如果有X*XA,则有sqrtm(A)X; 矩阵的开方运算与乘方运算互为逆运算。 矩阵的指数运算用expm函数来实现&#xff0c;expm(X)V*diag(exp(diag(…...

网站开发大概需要多少钱/谷歌官方网站注册

摘自《APUE中文版第三版》 每个程序都接收到一张环境表。与参数表一样&#xff0c;环境表也是一个字符串指针数组&#xff0c;其中每个指针包含一个以null结束的字符串的地址。全局变量environ则包含了该指针数组的地址。 extern char **environ; 例如&#xff1a;如果该环境包…...

上海做网站最专业/百度收录入口在哪里

今天看到一篇文章介绍2012中的分页&#xff0c;就想测试一下新的分页方法比原先的有多少性能的提升&#xff0c;下面是我的测试过程&#xff08;2012的分页语法这里不在做多的说明,MSDN上一搜就有&#xff09;&#xff1a; 首先我们来构造测试数据&#xff1a; --建表 CREATE T…...