SLAM学习入门--机器学习

文章目录

  • 机器学习
    • 逻辑回归(LR)
      • 基本原理
      • 为什么 LR 要使用 sigmoid 函数?
      • LR 可以用核函数么?
      • 为什么 LR 用交叉熵损失而不是平方损失?
      • LR 能否解决非线性分类问题?
      • LR为什么要离散特征?
      • 逻辑回归是处理线性问题还是非线性问题的?
    • 线性回归
      • 基本原理
      • 线性回归与逻辑回归(LR)的区别
    • 支持向量机(SVM)
      • 基本原理
      • 支持向量中的向量是指什么?
      • 手推SVM
      • LR 与 SVM的区别和联系
      • SVM 中有哪些核函数?
      • SVM 的对偶问题
      • SMO 算法原理
      • SVM 中的优化技术有哪些?
      • SVM 的惩罚系数如何确定?
      • 正则化参数对支持向量数的影响
      • 如何解决线性不可分问题?
      • 软间隔和硬间隔
      • Hinge Loss

机器学习

逻辑回归(LR)

基本原理

逻辑回归(Logistic Regression,LR)也称为"对数几率回归",又称为"逻辑斯谛"回归。

知识点提炼

  • 分类,经典的二分类算法!
  • 逻辑回归就是这样的一个过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。
  • Logistic 回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别)
  • 回归模型中,y 是一个定性变量,比如 y = 0 或 1,logistic 方法主要应用于研究某些事件发生的概率。
  • 逻辑回归的本质:极大似然估计
  • 逻辑回归的激活函数:Sigmoid
  • 逻辑回归的代价函数:交叉熵

逻辑回归的优缺点

优点:

1)速度快,适合二分类问题

2)简单易于理解,直接看到各个特征的权重

3)能容易地更新模型吸收新的数据

缺点:

对数据和场景的适应能力有局限性,不如决策树算法适应性那么强

逻辑回归中最核心的概念是 Sigmoid 函数,Sigmoid函数可以看成逻辑回归的激活函数。

下图是逻辑回归网络:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对数几率函数(Sigmoid): y = σ ( z ) = 1 1 + e − z y = \sigma (z) = \frac{1}{1+e^{-z}} y=σ(z)=1+ez1

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过对数几率函数的作用,我们可以将输出的值限制在区间[0,1]上,p(x) 则可以用来表示概率 p(y=1|x),即当一个x发生时,y被分到1那一组的概率。可是,等等,我们上面说 y 只有两种取值,但是这里却出现了一个区间[0, 1],这是什么鬼??其实在真实情况下,我们最终得到的y的值是在 [0, 1] 这个区间上的一个数,然后我们可以选择一个阈值,通常是 0.5,当 y > 0.5 时,就将这个 x 归到 1 这一类,如果 y< 0.5 就将 x 归到 0 这一类。但是阈值是可以调整的,比如说一个比较保守的人,可能将阈值设为 0.9,也就是说有超过90%的把握,才相信这个x属于 1这一类。了解一个算法,最好的办法就是自己从头实现一次。下面是逻辑回归的具体实现。

Regression 常规步骤

  1. 寻找h函数(即预测函数)
  2. 构造J函数(损失函数)
  3. 想办法(迭代)使得J函数最小并求得回归参数(θ)

函数h(x)的值有特殊的含义,它表示结果取1的概率,于是可以看成类1的后验估计。因此对于输入x分类结果为类别1和类别0的概率分别为:

P(y=1│x;θ)=hθ (x)

P(y=0│x;θ)=1-hθ (x)

代价函数

逻辑回归一般使用交叉熵作为代价函数。关于代价函数的具体细节,请参考代价函数。

交叉熵是对「出乎意料」(译者注:原文使用suprise)的度量。神经元的目标是去计算函数 y, 且 y = y(x)。但是我们让它取而代之计算函数 a, 且 a = a(x) 。假设我们把 a 当作 y 等于 1 的概率,1−a 是 y 等于 0 的概率。那么,交叉熵衡量的是我们在知道 y 的真实值时的平均「出乎意料」程度。当输出是我们期望的值,我们的「出乎意料」程度比较低;当输出不是我们期望的,我们的「出乎意料」程度就比较高。

交叉熵代价函数如下所示:

J ( w ) = − l ( w ) = − ∑ i = 1 n y ( i ) l n ( ϕ ( z ( i ) ) ) + ( 1 − y ( i ) ) l n ( 1 − ϕ ( z ( i ) ) ) J(w)=-l(w)=-\sum_{i = 1}^n y^{(i)}ln(\phi(z^{(i)})) + (1 - y^{(i)})ln(1-\phi(z^{(i)})) J(w)=l(w)=i=1ny(i)ln(ϕ(z(i)))+(1y(i))ln(1ϕ(z(i)))

J ( ϕ ( z ) , y ; w ) = − y l n ( ϕ ( z ) ) − ( 1 − y ) l n ( 1 − ϕ ( z ) ) J(\phi(z),y;w)=-yln(\phi(z))-(1-y)ln(1-\phi(z)) J(ϕ(z),y;w)=yln(ϕ(z))(1y)ln(1ϕ(z))

注:为什么要使用交叉熵函数作为代价函数,而不是平方误差函数?请参考:逻辑回归算法之交叉熵函数理解

逻辑回归伪代码

初始化线性函数参数为1
构造sigmoid函数
重复循环I次计算数据集梯度更新线性函数参数
确定最终的sigmoid函数
输入训练(测试)数据集
运用最终sigmoid函数求解分类

逻辑回归算法之Python实现

  • TODO

参考资料

  • Logistic Regression
  • 《统计学习方法》 (蓝书) 第6章 P77页
  • 《机器学习》 (西瓜书) 第3章 P57页
  • 《Machine Learning》 吴恩达 Logistic Regression
  • 逻辑回归 - 理论篇
  • 逻辑回归(logistic regression)的本质——极大似然估计
  • 机器学习算法与Python实践之(七)逻辑回归(Logistic Regression)
  • 机器学习之Logistic回归与Python实现
  • 【机器学习】逻辑回归(Logistic Regression)
  • 机器学习算法–逻辑回归原理介绍
  • 逻辑回归算法面经
  • Logistic Regression 模型简介

为什么 LR 要使用 sigmoid 函数?

1.广义模型推导所得
2.满足统计的最大熵模型
3.性质优秀,方便使用(Sigmoid函数是平滑的,而且任意阶可导,一阶二阶导数可以直接由函数值得到不用进行求导,这在实现中很实用)

参考资料

  • 为什么逻辑回归 模型要使用 sigmoid 函数

LR 可以用核函数么?

  • TODO

为什么 LR 用交叉熵损失而不是平方损失?

  • TODO

LR 能否解决非线性分类问题?

  • TODO

参考资料

  • 逻辑斯蒂回归能否解决非线性分类问题?

LR为什么要离散特征?

  • TODO

逻辑回归是处理线性问题还是非线性问题的?

  • TODO

线性回归

基本原理

  • TODO

参考资料

  • 通俗理解线性回归(一)

线性回归与逻辑回归(LR)的区别

参考资料

  • 线性回归和逻辑回归的比较

支持向量机(SVM)

基本原理

支持向量机(supporr vector machine,SVM)是一种二类分类模型,该模型是定义在特征空间上的间隔最大的线性分类器。间隔最大使它有区别于感知机;支持向量机还包括核技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的最小化问题。

知识点提炼:

  • SVM核函数
    • 多项式核函数
    • 高斯核函数
    • 字符串核函数
  • SMO
  • SVM损失函数

支持向量机的学习算法是求解凸二次规划的最优化算法。

支持向量机学习方法包含构建由简至繁的模型:

  • 线性可分支持向量机
  • 线性支持向量机
  • 非线性支持向量机(使用核函数)

当训练数据线性可分时,通过硬间隔最大化(hard margin maximization)学习一个线性的分类器,即线性可分支持向量机,又成为硬间隔支持向量机;

当训练数据近似线性可分时,通过软间隔最大化(soft margin maximization)也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;

当训练数据不可分时,通过核技巧(kernel trick)及软间隔最大化,学习非线性支持向量机。

注:以上各SVM的数学推导应该熟悉:硬间隔最大化(几何间隔)—学习的对偶问题—软间隔最大化(引入松弛变量)—非线性支持向量机(核技巧)。

SVM的主要特点

(1)非线性映射-理论基础

(2)最大化分类边界-方法核心

(3)支持向量-计算结果

(4)小样本学习方法

(5)最终的决策函数只有少量支持向量决定,避免了“维数灾难”

(6)少数支持向量决定最终结果—->可“剔除”大量冗余样本+算法简单+具有鲁棒性(体现在3个方面)

(7)学习问题可表示为凸优化问题—->全局最小值

(8)可自动通过最大化边界控制模型,但需要用户指定核函数类型和引入松弛变量

(9)适合于小样本,优秀泛化能力(因为结构风险最小)

(10)泛化错误率低,分类速度快,结果易解释

SVM为什么采用间隔最大化?

当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。

感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。

线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。

然后应该借此阐述,几何间隔,函数间隔,及从函数间隔—>求解最小化1/2 ||w||^2 时的w和b。即线性可分支持向量机学习算法—最大间隔法的由来。

为什么要将求解SVM的原始问题转换为其对偶问题?

  1. 对偶问题往往更易求解(当我们寻找约束存在时的最优点的时候,约束的存在虽然减小了需要搜寻的范围,但是却使问题变得更加复杂。为了使问题变得易于处理,我们的方法是把目标函数和约束全部融入一个新的函数,即拉格朗日函数,再通过这个函数来寻找最优点。)
  2. 自然引入核函数,进而推广到非线性分类问题

为什么SVM要引入核函数?

当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。

SVM核函数有哪些?

  • 线性(Linear)核函数:主要用于线性可分的情形。参数少,速度快。
  • 多项式核函数
  • 高斯(RBF)核函数:主要用于线性不可分的情形。参数多,分类结果非常依赖于参数。
  • Sigmoid核函数
  • 拉普拉斯(Laplac)核函数

注:如果feature数量很大,跟样本数量差不多,建议使用LR或者Linear kernel的SVM。如果feature数量较少,样本数量一般,建议使用Gaussian Kernel的SVM。

SVM如何处理多分类问题?

一般有两种做法:

  1. 直接法:直接在目标函数上修改,将多个分类面的参数求解合并到一个最优化问题里面。看似简单但是计算量却非常的大。

  2. 间接法:对训练器进行组合。其中比较典型的有一对一,和一对多。

    • 一对多:对每个类都训练出一个分类器,由svm是二分类,所以将此而分类器的两类设定为目标类为一类,其余类为另外一类。这样针对k个类可以训练出k个分类器,当有一个新的样本来的时候,用这k个分类器来测试,那个分类器的概率高,那么这个样本就属于哪一类。这种方法效果不太好,bias比较高。
    • 一对一:针对任意两个类训练出一个分类器,如果有k类,一共训练出C(2,k) 个分类器,这样当有一个新的样本要来的时候,用这C(2,k) 个分类器来测试,每当被判定属于某一类的时候,该类就加一,最后票数最多的类别被认定为该样本的类。

SVM中硬间隔和软间隔

硬间隔分类即线性可分支持向量机,软间隔分类即线性不可分支持向量机,利用软间隔分类时是因为存在一些训练集样本不满足函数间隔(泛函间隔)大于等于1的条件,于是加入一个非负的参数 ζ (松弛变量),让得出的函数间隔加上 ζ 满足条件。于是软间隔分类法对应的拉格朗日方程对比于硬间隔分类法的方程就多了两个参数(一个ζ ,一个 β),但是当我们求出对偶问题的方程时惊奇的发现这两种情况下的方程是一致的。下面我说下自己对这个问题的理解。

我们可以先考虑软间隔分类法为什么会加入ζ 这个参数呢?硬间隔的分类法其结果容易受少数点的控制,这是很危险的,由于一定要满足函数间隔大于等于1的条件,而存在的少数离群点会让算法无法得到最优解,于是引入松弛变量,从字面就可以看出这个变量是为了缓和判定条件,所以当存在一些离群点时我们只要对应给他一个ζi,就可以在不变更最优分类超平面的情况下让这个离群点满足分类条件。

综上,我们可以看出来软间隔分类法加入ζ 参数,使得最优分类超平面不会受到离群点的影响,不会向离群点靠近或远离,相当于我们去求解排除了离群点之后,样本点已经线性可分的情况下的硬间隔分类问题,所以两者的对偶问题是一致的。

支持向量中的向量是指什么?

  • TODO

手推SVM

参考资料

  • Support-vector machine
  • 支持向量机通俗导论(理解SVM的三层境界)
  • 数据挖掘(机器学习)面试–SVM面试常考问题
  • 机器学习实战教程(八):支持向量机原理篇之手撕线性SVM
  • 支持向量机(SVM)入门理解与推导
  • 数据挖掘领域十大经典算法之—SVM算法(超详细附代码)

LR 与 SVM的区别和联系

相同点

第一,LR和SVM都是分类算法。

看到这里很多人就不会认同了,因为在很大一部分人眼里,LR是回归算法。我是非常不赞同这一点的,因为我认为判断一个算法是分类还是回归算法的唯一标准就是样本label的类型,如果label是离散的,就是分类算法,如果label是连续的,就是回归算法。很明显,LR的训练数据的label是“0或者1”,当然是分类算法。其实这样不重要啦,暂且迁就我认为它是分类算法吧,再说了,SVM也可以回归用呢。

第二,如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的。

这里要先说明一点,那就是LR也是可以用核函数的,至于为什么通常在SVM中运用核函数而不在LR中运用,后面讲到他们之间区别的时候会重点分析。总之,原始的LR和SVM都是线性分类器,这也是为什么通常没人问你决策树和LR什么区别,决策树和SVM什么区别,你说一个非线性分类器和一个线性分类器有什么区别?

第三,LR和SVM都是监督学习算法。

这个就不赘述什么是监督学习,什么是半监督学习,什么是非监督学习了。

第四,LR和SVM都是判别模型。

判别模型会生成一个表示P(Y|X)的判别函数(或预测模型),而生成模型先计算联合概率p(Y,X)然后通过贝叶斯公式转化为条件概率。简单来说,在计算判别模型时,不会计算联合概率,而在计算生成模型时,必须先计算联合概率。或者这样理解:生成算法尝试去找到底这个数据是怎么生成的(产生的),然后再对一个信号进行分类。基于你的生成假设,那么那个类别最有可能产生这个信号,这个信号就属于那个类别。判别模型不关心数据是怎么生成的,它只关心信号之间的差别,然后用差别来简单对给定的一个信号进行分类。常见的判别模型有:KNN、SVM、LR,常见的生成模型有:朴素贝叶斯,隐马尔可夫模型。当然,这也是为什么很少有人问你朴素贝叶斯和LR以及朴素贝叶斯和SVM有什么区别(哈哈,废话是不是太多)。

不同点

第一,本质上是其损失函数(loss function)不同。

注:lr的损失函数是 cross entropy loss, adaboost的损失函数是 expotional loss ,svm是hinge loss,常见的回归模型通常用 均方误差 loss。

逻辑回归的损失函数

SVM的目标函数

不同的loss function代表了不同的假设前提,也就代表了不同的分类原理,也就代表了一切!!!简单来说,​逻辑回归方法基于概率理论,假设样本为1的概率可以用sigmoid函数来表示,然后通过极大似然估计的方法估计出参数的值,具体细节参考逻辑回归。支持向量机​基于几何间隔最大化原理,认为存在最大几何间隔的分类面为最优分类面,具体细节参考支持向量机通俗导论(理解SVM的三层境界)

第二,支持向量机只考虑局部的边界线附近的点,而逻辑回归考虑全局(远离的点对边界线的确定也起作用)。

当​你读完上面两个网址的内容,深入了解了LR和SVM的原理过后,会发现影响SVM决策面的样本点只有少数的结构支持向量,当在支持向量外添加或减少任何样本点对分类决策面没有任何影响;而在LR中,每个样本点都会影响决策面的结果。用下图进行说明:

支持向量机改变非支持向量样本并不会引起决策面的变化

逻辑回归中改变任何样本都会引起决策面的变化

理解了这一点,有可能你会问,然后呢?有什么用呢?有什么意义吗?对使用两种算法有什么帮助么?一句话回答:

因为上面的原因,得知:线性SVM不直接依赖于数据分布,分类平面不受一类点影响;LR则受所有数据点的影响,如果数据不同类别strongly unbalance,一般需要先对数据做balancing。​(引自http://www.zhihu.com/question/26768865/answer/34078149)

第三,在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。

这个问题理解起来非常简单。分类模型的结果就是计算决策面,模型训练的过程就是决策面的计算过程。通过上面的第二点不同点可以了解,在计算决策面时,SVM算法里只有少数几个代表支持向量的样本参与了计算,也就是只有少数几个样本需要参与核计算(即kernal machine解的系数是稀疏的)。然而,LR算法里,每个样本点都必须参与决策面的计算过程,也就是说,假设我们在LR里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制。​

第四,​线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization,LR不受其影响。(引自http://www.zhihu.com/question/26768865/answer/34078149)

一个机遇概率,一个机遇距离!​

第五,SVM的损失函数就自带正则!!!(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因!!!而LR必须另外在损失函数上添加正则项!!!

以前一直不理解为什么SVM叫做结构风险最小化算法,所谓结构风险最小化,意思就是在训练误差和模型复杂度之间寻求平衡,防止过拟合,从而达到真实误差的最小化。未达到结构风险最小化的目的,最常用的方法就是添加正则项,后面的博客我会具体分析各种正则因子的不同,这里就不扯远了。但是,你发现没,SVM的目标函数里居然自带正则项!!!再看一下上面提到过的SVM目标函数:

SVM目标函数

有木有,那不就是L2正则项吗?

不用多说了,如果不明白看看L1正则与L2正则吧,参考http://www.mamicode.com/info-detail-517504.html

http://www.zhihu.com/question/26768865/answer/34078149

快速理解LR和SVM的区别

两种方法都是常见的分类算法,从目标函数来看,区别在于逻辑回归采用的是logistical loss,svm采用的是hinge loss。这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。两者的根本目的都是一样的。此外,根据需要,两个方法都可以增加不同的正则化项,如l1,l2等等。所以在很多实验中,两种算法的结果是很接近的。但是逻辑回归相对来说模型更简单,好理解,实现起来,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些。但是SVM的理论基础更加牢固,有一套结构化风险最小化的理论基础,虽然一般使用的人不太会去关注。还有很重要的一点,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算量。

SVM与LR的区别与联系

联系:(1)分类(二分类) (2)可加入正则化项

区别:(1)LR–参数模型;SVM–非参数模型?(2)目标函数:LR—logistical loss;SVM–hinge loss (3)SVM–support vectors;LR–减少较远点的权重 (4)LR–模型简单,好理解,精度低,可能局部最优;SVM–理解、优化复杂,精度高,全局最优,转化为对偶问题—>简化模型和计算 (5)LR可以做的SVM可以做(线性可分),SVM能做的LR不一定能做(线性不可分)

总结一下

  • Linear SVM和LR都是线性分类器
  • Linear SVM不直接依赖数据分布,分类平面不受一类点影响;LR则受所有数据点的影响,如果数据不同类别strongly unbalance,一般需要对数据先做balancing。
  • Linear SVM依赖数据表打对距离测度,所以需要对数据先做normalization;LR不受影响
  • Linear SVM依赖penalty的系数,实验中需要做validation
  • Linear SVM的LR的performance都会收到outlier的影响,就敏感程度而言,无法给出明确结论。

参考资料

  • LR与SVM的异同
  • SVM和logistic回归分别在什么情况下使用?
  • Linear SVM 和 LR 有什么异同?

SVM 中有哪些核函数?

  • TODO

参考资料

  • svm常用核函数及选择核函数的方法
  • SVM由浅入深的尝试(五)核函数的理解

SVM 的对偶问题

  • TODO

SMO 算法原理

  • TODO

SVM 为什么可以处理非线性问题?

  • TODO

SVM 中的优化技术有哪些?

  • TODO

SVM 的惩罚系数如何确定?

  • TODO

正则化参数对支持向量数的影响

  • TODO

如何解决线性不可分问题?

  • TODO

软间隔和硬间隔

  • TODO

Hinge Loss

  • TODO

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

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

相关文章

Linux文件系统结构及相关命令2 什么是Shell? help cd cd的用法 ls 的用法

Shell 是一种用于与操作系统进行交互的命令行解释器。它是用户与操作系统内核之间的接口&#xff0c;接受用户的命令并将其传递给操作系统进行执行。 在大多数的 Unix-like 操作系统&#xff08;如 Linux 和 macOS&#xff09;以及类 Unix 系统中&#xff0c;Shell 是默认的命…

如何开发一个google插件(二)

前言 在上一篇文章如何开发一个google插件(一)里主要介绍了google插件的基本结构。 在这篇文章中主要结合reactwebpack进行一个代码演示&#xff0c;源码地址&#xff1a;源码地址 下载源码后打开浏览器的扩展程序管理->加载已解压的扩展程序&#xff0c;即可调试插件 此…

在线客服选择要点分析:如何挑选适合您需求的客服解决方案

选择一款好的在线客服系统&#xff0c;可以帮助企业多渠道的触达客户&#xff0c;与客户进行高效的沟通&#xff0c;最终达成转化的目的。 市面上现在成熟的客服系统产品有很多&#xff0c;企业在进行选择时要考虑以下几点&#xff1a; 1、企业需求 市场上的客服系统产品主要…

ArkTS - 组件生命周期

一、先说下自定义组件 在arkTs中&#xff0c;自定义组件分为两种&#xff08;我的总结&#xff09;&#xff1a; 一种是&#xff1a;根组件&#xff0c;就是被装饰器Entry装饰的入口组件&#xff0c;这也是自定义组件(父组件)。 另一种是&#xff1a;没有被Entry装饰的自定义…

分布式存储考点梳理 + 高频面试题

欢迎来到分布式存储模环节&#xff0c;本文我将和你一起梳理面试中分布式系统的数据库的高频考点&#xff0c;做到温故知新。 面试中如何考察分布式存储 广义的分布式存储根据不同的应用领域&#xff0c;划分为以下的类别&#xff1a; 分布式协同系统 分布式文件系统 分布式…

Xline command 去重机制(一)—— RIFL 介绍

为什么要对 command 去重&#xff1f; 在一个接收外部 command 的系统中&#xff0c;通常一个 command 至少要执行一次&#xff0c;我们称其为 at-least-once semantics。如果一个 command 执行失败&#xff0c;系统内部经常会实现一套重试结构来尝试恢复这个问题&#xff0c;…

HTML 基础

文章目录 01-标签语法标签结构 03-HTML骨架04-标签的关系05-注释06-标题标签07-段落标签08-换行和水平线09-文本格式化标签10-图像标签图像属性 11-路径相对路径绝对路径 12-超链接标签13-音频14-视频 01-标签语法 HTML 超文本标记语言——HyperText Markup Language。 超文本…

【分布式配置中心】聊聊Apollo的安装与具体配置变更的原理

【管理设计篇】聊聊分布式配置中心 之前就写过一篇文章&#xff0c;介绍配置中心&#xff0c;但是也只是简单描述了下配置中心的设计点。本篇从apollo的安装到部署架构到核心原理进一步解读&#xff0c;大概看了下apollo的原理&#xff0c;感觉没有必要深究&#xff0c;所以就…

2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项样题卷③

2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项&#xff08;高职组&#xff09; 样题&#xff08;第3套&#xff09; 目录 2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项&#xff08;高职组&#xff09; 样题&#xff08;第3套&#xff09; 模块…

【北亚数据恢复】mysql表被truncate,表数据被delete的数据恢复案例

云服务器数据恢复环境&#xff1a; 华为ECS云服务器&#xff0c;linux操作系统&#xff0c;mysql数据库&#xff08;innodb引擎&#xff09;。作为网站服务器使用。 云服务器故障&#xff1a; 在执行mysql数据库版本更新测试时&#xff0c;误将本应该在测试库上执行的sql脚本执…

亚马逊云科技Amazon Q,一款基于生成式人工智能的新型助手

近日&#xff0c;亚马逊云科技宣布推出Amazon Q&#xff0c;这是一款基于生成式人工智能&#xff08;AI&#xff09;的新型助手&#xff0c;专为辅助工作而设计&#xff0c;可以根据您的业务量身定制。通过连接到公司的信息存储库、代码、数据和企业系统&#xff0c;可以使用Am…

个人游戏启动器 | 游戏数据库 playnite 折腾记录

环境&#xff1a;Windows 11 问题&#xff1a;使用平板串联PC游戏后&#xff0c;需要一个本地的PC启动器 解决办法&#xff1a;使用playnite搭配插件 背景&#xff1a;我是个单机游戏爱好者&#xff0c;因为某些原因&#xff0c;需要串流游玩&#xff0c;需要一个方便手柄操作的…

arkts状态管理使用(@State、@Prop、@Link、@Provide、@Consume、@objectLink和@observed)

一、状态管理 1.在声明式UI中&#xff0c;是以状态驱动视图更新&#xff1a; ①状态&#xff08;State&#xff09;:指驱动视图更新的数据&#xff08;被装饰器标记的变量&#xff09; ②视图&#xff08;View&#xff09;:基于UI描述渲染得到用户界面 注意&#xff1a; ①…

【零基础入门VUE】VueJS - 模板

✍面向读者&#xff1a;所有人 ✍所属专栏&#xff1a;零基础入门VUE专栏https://blog.csdn.net/arthas777/category_12537076.html 我们在前面的章节中学习了如何在屏幕上以文本内容的形式输出。在本章中&#xff0c;我们将学习如何在屏幕上以 HTML 模板的形式获取输出。 为了…

什么是AI PC,又有哪些产品

最近一段时间&#xff0c;AI PC成为一个流行词。Intel在发布Core Ultra处理器的时候&#xff0c;直接使用了AI PC这个词语&#xff0c;而各大厂商发布相应的笔记本产品时&#xff0c;也使用了AI Ready的宣传词。而在Intel之前&#xff0c;AMD在发布自己的新一代APU的时候&#…

Linux中安装了openjdk后jps command not found

一、问题场景 在Linux中用yum安装了openjdk-17&#xff0c;也在.bashrc中配置了环境变量JAVA_HOME以及bin目录的PATH。 但是在运行jps命令时依然报错找不到命令 二、原因分析 进入到$JAVA_HOME/bin目录查看&#xff0c;发现只有寥寥几个命令&#xff0c;压根没有jps命令&…

《现代操作系统》第十二章习题答案

计算机硬件的改进主要归功于更小的晶体管。一些限制因素包括&#xff1a;(a) 光的波动性可能限制传统光刻技术制造集成电路的能力&#xff0c;(b) 固体中个别原子的迁移性可能导致非常薄的半导体、绝缘体和导体层的性能退化&#xff0c;(c) 背景辐射活性可能破坏分子键或影响非…

ARCGIS PRO SDK GeometryEngine处理独立几何图形

1、面积类&#xff1a;pol为Polygon 1).Area&#xff1a;获取几何图形的面积。这是使用二维笛卡尔数学来计算面积的平面测量 double d GeometryEngine.Instance.Area(pol) 2).GeodesicArea:获取几何图形的椭球面积 …

【Redis-08】Redis主从复制的实现原理

在Redis中&#xff0c;可以通过slaveof命令或者设置slaveof选项实现两台Redis服务器的主从复制&#xff0c;比如我们有两个Redis机器&#xff0c;地址分别是 127.0.0.1:6379 和 127.0.0.1:6380&#xff0c;现在我们在前者上面执行&#xff1a; 127.0.0.1:6379 > SLAVEOF 12…

图片预览 element-plus 带页码

vue3、element-plus项目中&#xff0c;点击预览图片&#xff0c;并显示页码效果如图 安装 | Element Plus <div class"image__preview"><el-imagestyle"width: 100px; height: 100px":src"imgListArr[0]":zoom-rate"1.2":max…