Hoeffing不等式

在李航老师的统计学习方法(第一版中) H o e f f i n g 不等式 Hoeffing不等式 Hoeffing不等式是这样子给出的

X 1 , X 2 , . . . , X N X_1,X_2,...,X_N X1,X2,...,XN是独立随机变量,且 X i ∈ [ a i , b i ] , i = 1 , 2 , . . . , N ; S N = ∑ i = 1 N X i X_i\in[a_i,b_i],i=1,2,...,N;S_N=\sum_{i=1}^NX_i Xi[ai,bi],i=1,2,...,N;SN=i=1NXi,则对任意t>0,以下不等式成立:
P [ S N − E ( S N ) ≥ t ] ≤ e x p [ − 2 t 2 ∑ i = 1 N ( b i − a i ) 2 ] P[S_N-E(S_N)≥t]≤exp[-\frac{2t^2}{\sum_{i=1}^N(b_i-a_i)^2}] P[SNE(SN)t]exp[i=1N(biai)22t2]
P [ E ( S N ) − S N ≥ t ] ≤ e x p [ − 2 t 2 ∑ i = 1 N ( b i − a i ) 2 ] P[E(S_N)-S_N≥t]≤exp[-\frac{2t^2}{\sum_{i=1}^N(b_i-a_i)^2}] P[E(SN)SNt]exp[i=1N(biai)22t2]

这两个数学公式是关于独立随机变量和它们的和的Hoeffding不等式的表达式。它们用于估计随机变量和与其期望之间的差异的概率上界。让我解释这些不等式的含义:

假设有 N N N 个独立随机变量 X 1 , X 2 , … , X N X_1, X_2, \ldots, X_N X1,X2,,XN,其中每个 X i X_i Xi 的取值范围位于区间 [ a i , b i ] [a_i, b_i] [ai,bi] 内,即 a i ≤ X i ≤ b i a_i \leq X_i \leq b_i aiXibi,并且它们是彼此独立的。我们定义一个随机变量 S N S_N SN,表示这些随机变量的和,即 S N = ∑ i = 1 N X i S_N = \sum_{i=1}^N X_i SN=i=1NXi。同时,我们有 E ( S N ) E(S_N) E(SN) 表示 S N S_N SN 的期望值,即 E ( S N ) = ∑ i = 1 N E [ X i ] E(S_N) = \sum_{i=1}^N \mathbb{E}[X_i] E(SN)=i=1NE[Xi]

现在,这两个不等式分别描述了以下情况:

  1. 第一个不等式:
    P [ S N − E ( S N ) ≥ t ] ≤ exp ⁡ ( − 2 t 2 ∑ i = 1 N ( b i − a i ) 2 ) P[S_N - E(S_N) \geq t] \leq \exp\left(-\frac{2t^2}{\sum_{i=1}^N (b_i - a_i)^2}\right) P[SNE(SN)t]exp(i=1N(biai)22t2)

这个不等式表示随机变量和 S N S_N SN 超过其期望值 E ( S N ) E(S_N) E(SN) 的值大于或等于 t t t 的概率不会超过 exp ⁡ ( − 2 t 2 ∑ i = 1 N ( b i − a i ) 2 ) \exp\left(-\frac{2t^2}{\sum_{i=1}^N (b_i - a_i)^2}\right) exp(i=1N(biai)22t2)。换句话说,它提供了一个关于 S N S_N SN 偏离其期望值的概率上界。

  1. 第二个不等式:
    P [ E ( S N ) − S N ≥ t ] ≤ exp ⁡ ( − 2 t 2 ∑ i = 1 N ( b i − a i ) 2 ) P[E(S_N) - S_N \geq t] \leq \exp\left(-\frac{2t^2}{\sum_{i=1}^N (b_i - a_i)^2}\right) P[E(SN)SNt]exp(i=1N(biai)22t2)

这个不等式表示随机变量和 S N S_N SN 低于其期望值 E ( S N ) E(S_N) E(SN) 的值大于或等于 t t t 的概率不会超过 exp ⁡ ( − 2 t 2 ∑ i = 1 N ( b i − a i ) 2 ) \exp\left(-\frac{2t^2}{\sum_{i=1}^N (b_i - a_i)^2}\right) exp(i=1N(biai)22t2)。它提供了一个关于 S N S_N SN 偏离其期望值的概率上界,但是方向与第一个不等式相反。

这些不等式是Hoeffding不等式的一种形式,它们可用于估计随机变量和的性质以及样本统计的可靠性。不等式的右侧是关于样本范围 [ a i , b i ] [a_i, b_i] [ai,bi] 的性质和观察样本数量 N N N 的函数,它们决定了概率上界的大小。这些不等式对于分析随机过程和估计样本均值的可信度非常有用。

在李航老师统计学习方法(第二版中)是这样子给出

X 1 , X 2 , . . . , X N X_1,X_2,...,X_N X1,X2,...,XN是独立随机变量,且 X i ∈ [ a i , b i ] , i = 1 , 2 , . . . , N ; X ˉ X_i\in[a_i,b_i],i=1,2,...,N;\bar{X} Xi[ai,bi],i=1,2,...,N;Xˉ X 1 , X 2 , . . . , X N X_1,X_2,...,X_N X1,X2,...,XN的经验均值, X ˉ = 1 N ∑ i = 1 N X i \bar{X}=\frac{1}{N}\sum_{i=1}^NX_i Xˉ=N1i=1NXi ,则对任意t>0,以下不等式成立
P [ X ˉ − E ( X ˉ ) ≥ t ] ≤ exp ⁡ ( − 2 N 2 t 2 ∑ i = 1 N ( b i − a i ) 2 ) P[\bar{X} - E(\bar{X}) \geq t] \leq \exp\left(-\frac{2N^2t^2}{\sum_{i=1}^N (b_i - a_i)^2}\right) P[XˉE(Xˉ)t]exp(i=1N(biai)22N2t2)
P [ E ( X ˉ ) − X ˉ ≥ t ] ≤ exp ⁡ ( − 2 N 2 t 2 ∑ i = 1 N ( b i − a i ) 2 ) P[E(\bar{X}) - \bar{X} \geq t] \leq \exp\left(-\frac{2N^2t^2}{\sum_{i=1}^N (b_i - a_i)^2}\right) P[E(Xˉ)Xˉt]exp(i=1N(biai)22N2t2)

这两个不等式是关于经验均值(样本均值) X ˉ \bar{X} Xˉ 与其期望值 E ( X ˉ ) E(\bar{X}) E(Xˉ) 之间的差异的概率上界,这些差异由Hoeffding不等式提供。让我解释这些不等式的含义:

假设有 N N N 个独立随机变量 X 1 , X 2 , … , X N X_1, X_2, \ldots, X_N X1,X2,,XN,其中每个 X i X_i Xi 的取值范围位于区间 [ a i , b i ] [a_i, b_i] [ai,bi] 内,即 a i ≤ X i ≤ b i a_i \leq X_i \leq b_i aiXibi,并且它们是彼此独立的。我们定义一个随机变量 X ˉ \bar{X} Xˉ,表示这些随机变量的经验均值(样本均值),即 X ˉ = 1 N ∑ i = 1 N X i \bar{X} = \frac{1}{N}\sum_{i=1}^N X_i Xˉ=N1i=1NXi

现在,这两个不等式分别描述了以下情况:

  1. 第一个不等式:
    P [ X ˉ − E ( X ˉ ) ≥ t ] ≤ exp ⁡ ( − 2 N 2 t 2 ∑ i = 1 N ( b i − a i ) 2 ) P[\bar{X} - E(\bar{X}) \geq t] \leq \exp\left(-\frac{2N^2t^2}{\sum_{i=1}^N (b_i - a_i)^2}\right) P[XˉE(Xˉ)t]exp(i=1N(biai)22N2t2)

这个不等式表示经验均值 X ˉ \bar{X} Xˉ 超过其期望值 E ( X ˉ ) E(\bar{X}) E(Xˉ) 的值大于或等于 t t t 的概率不会超过 exp ⁡ ( − 2 N 2 t 2 ∑ i = 1 N ( b i − a i ) 2 ) \exp\left(-\frac{2N^2t^2}{\sum_{i=1}^N (b_i - a_i)^2}\right) exp(i=1N(biai)22N2t2)。换句话说,它提供了一个关于经验均值 X ˉ \bar{X} Xˉ 偏离其期望值 E ( X ˉ ) E(\bar{X}) E(Xˉ) 的概率上界。

  1. 第二个不等式:
    P [ E ( X ˉ ) − X ˉ ≥ t ] ≤ exp ⁡ ( − 2 N 2 t 2 ∑ i = 1 N ( b i − a i ) 2 ) P[E(\bar{X}) - \bar{X} \geq t] \leq \exp\left(-\frac{2N^2t^2}{\sum_{i=1}^N (b_i - a_i)^2}\right) P[E(Xˉ)Xˉt]exp(i=1N(biai)22N2t2)

这个不等式表示经验均值 X ˉ \bar{X} Xˉ 低于其期望值 E ( X ˉ ) E(\bar{X}) E(Xˉ) 的值大于或等于 t t t 的概率不会超过 exp ⁡ ( − 2 N 2 t 2 ∑ i = 1 N ( b i − a i ) 2 ) \exp\left(-\frac{2N^2t^2}{\sum_{i=1}^N (b_i - a_i)^2}\right) exp(i=1N(biai)22N2t2)。它提供了一个关于经验均值 X ˉ \bar{X} Xˉ 偏离其期望值 E ( X ˉ ) E(\bar{X}) E(Xˉ) 的概率上界,但方向与第一个不等式相反。

这些不等式是Hoeffding不等式的一种形式,它们可用于估计经验均值的性质以及样本统计的可靠性。不等式的右侧是关于样本范围 [ a i , b i ] [a_i, b_i] [ai,bi] 的性质和观察样本数量 N N N 的函数,它们决定了概率上界的大小。这些不等式对于分析随机过程和估计样本均值的可信度非常有用。

如何从第一版推理到第二版

要从第一组不等式推导出第二组不等式,您可以使用一些基本的概率论和数学推导的技巧。下面是一种可能的推导方法:

首先,我们有 S N = ∑ i = 1 N X i S_N = \sum_{i=1}^N X_i SN=i=1NXi,并且 X ˉ = 1 N S N \bar{X} = \frac{1}{N}S_N Xˉ=N1SN。因此,我们可以将 S N S_N SN 表示为 X ˉ \bar{X} Xˉ 的形式:

S N = N ⋅ X ˉ S_N = N \cdot \bar{X} SN=NXˉ

接下来,让我们考虑第一个不等式:
P [ S N − E ( S N ) ≥ t ] ≤ exp ⁡ ( − 2 t 2 ∑ i = 1 N ( b i − a i ) 2 ) P[S_N - E(S_N) \geq t] \leq \exp\left(-\frac{2t^2}{\sum_{i=1}^N (b_i - a_i)^2}\right) P[SNE(SN)t]exp(i=1N(biai)22t2)

现在用 S N = N ⋅ X ˉ S_N = N \cdot \bar{X} SN=NXˉ E ( S N ) = N ⋅ E ( X ˉ ) E(S_N) = N \cdot E(\bar{X}) E(SN)=NE(Xˉ) 替换右侧的 S N S_N SN E ( S N ) E(S_N) E(SN)
P [ N ⋅ X ˉ − N ⋅ E ( X ˉ ) ≥ t ] ≤ exp ⁡ ( − 2 t 2 ∑ i = 1 N ( b i − a i ) 2 ) P[N \cdot \bar{X} - N \cdot E(\bar{X}) \geq t] \leq \exp\left(-\frac{2t^2}{\sum_{i=1}^N (b_i - a_i)^2}\right) P[NXˉNE(Xˉ)t]exp(i=1N(biai)22t2)

然后,我们可以将 N N N 提取出来,并且在不等式两侧都除以 N N N,得到:
P [ X ˉ − E ( X ˉ ) ≥ t N ] ≤ exp ⁡ ( − 2 t 2 ∑ i = 1 N ( b i − a i ) 2 ) P[\bar{X} - E(\bar{X}) \geq \frac{t}{N}] \leq \exp\left(-\frac{2t^2}{\sum_{i=1}^N (b_i - a_i)^2}\right) P[XˉE(Xˉ)Nt]exp(i=1N(biai)22t2)

最后,为了得到形式与第二组不等式相同的表达式,让 t ′ = t N t' = \frac{t}{N} t=Nt,则不等式变为:
P [ X ˉ − E ( X ˉ ) ≥ t ′ ] ≤ exp ⁡ ( − 2 N 2 t ′ 2 ∑ i = 1 N ( b i − a i ) 2 ) P[\bar{X} - E(\bar{X}) \geq t'] \leq \exp\left(-\frac{2N^2t'^2}{\sum_{i=1}^N (b_i - a_i)^2}\right) P[XˉE(Xˉ)t]exp(i=1N(biai)22N2t′2)

这就得到了第二组不等式。现在,第二组不等式的形式与第一组不等式相同,只是将 t t t 替换为了 t ′ = t N t' = \frac{t}{N} t=Nt,而其他部分保持不变。这个过程用到了线性变换的性质以及概率论的基本规则,允许我们从一个不等式推导到另一个不等式,只需简单的代换。

如何推理得到泛化误差上界

证明:

  1. 第一步
    假设在每一个样本点 x i x_i xi y i y_i yi处的损失为 X i , X i = L ( y i , f ( x i ) ) X_i,X_i=L(y_i,f(x_i)) XiXi=L(yi,f(xi)),则
    X ˉ = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) = R ^ ( f ) \bar{X}=\frac{1}{N} \sum_{i=1}^NL(y_i,f(x_i))=\hat{R}(f) Xˉ=N1i=1NL(yi,f(xi))=R^(f)
    E ( X ˉ ) = E ( 1 N ∑ i = 1 N L ( y i , f ( x i ) ) ) = 1 N ∑ i = 1 N E ( L ( y i , f ( x i ) ) ) = 1 N ∑ i = 1 N E ( L ( Y , f ( X ) ) ) = E ( L ( Y , F ( X ) ) ) = R ( f ) E(\bar{X})=E(\frac{1}{N} \sum_{i=1}^NL(y_i,f(x_i)))=\frac{1}{N} \sum_{i=1}^NE(L(y_i,f(x_i))) =\frac{1}{N} \sum_{i=1}^NE(L(Y,f(X)))=E(L(Y,F(X)))=R(f) E(Xˉ)=E(N1i=1NL(yi,f(xi)))=N1i=1NE(L(yi,f(xi)))=N1i=1NE(L(Y,f(X)))=E(L(Y,F(X)))=R(f)
    对二分类问题,对于所有 i , [ a i , b i ] = [ 0 , 1 ] i,[a_i,b_i]=[0,1] i[ai,bi]=[0,1]

这些等式是关于损失、经验风险和泛化误差的表达式,针对二分类问题,其中每个样本点都有一个损失函数 X i X_i Xi,损失函数的定义为 X i = L ( y i , f ( x i ) ) X_i = L(y_i, f(x_i)) Xi=L(yi,f(xi)),其中 y i y_i yi 是真实标签, f ( x i ) f(x_i) f(xi) 是模型 f f f 对输入 x i x_i xi 的预测。

以下是这些等式的解释:

  1. X ˉ = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) = R ^ ( f ) \bar{X}=\frac{1}{N} \sum_{i=1}^NL(y_i,f(x_i))=\hat{R}(f) Xˉ=N1i=1NL(yi,f(xi))=R^(f)

    • X ˉ \bar{X} Xˉ 表示样本均值,也就是所有损失函数 X i X_i Xi 的平均值。
    • R ^ ( f ) \hat{R}(f) R^(f) 表示经验风险,它是模型 f f f 在训练数据上的平均损失。
    • 这个等式表示,样本均值 X ˉ \bar{X} Xˉ 等于模型 f f f 在训练数据上的经验风险 R ^ ( f ) \hat{R}(f) R^(f)
  2. E ( X ˉ ) = E ( 1 N ∑ i = 1 N L ( y i , f ( x i ) ) ) = 1 N ∑ i = 1 N E ( L ( y i , f ( x i ) ) ) = 1 N ∑ i = 1 N E ( L ( Y , f ( X ) ) ) = E ( L ( Y , F ( X ) ) ) = R ( f ) E(\bar{X})=E(\frac{1}{N} \sum_{i=1}^NL(y_i,f(x_i))) =\frac{1}{N} \sum_{i=1}^NE(L(y_i,f(x_i))) =\frac{1}{N} \sum_{i=1}^NE(L(Y,f(X)))=E(L(Y,F(X)))=R(f) E(Xˉ)=E(N1i=1NL(yi,f(xi)))=N1i=1NE(L(yi,f(xi)))=N1i=1NE(L(Y,f(X)))=E(L(Y,F(X)))=R(f)

    • E ( X ˉ ) E(\bar{X}) E(Xˉ) 表示样本均值 X ˉ \bar{X} Xˉ 的期望值,即在所有可能的训练数据集上取平均得到的损失的期望值。
    • E ( L ( y i , f ( x i ) ) ) E(L(y_i,f(x_i))) E(L(yi,f(xi))) 表示在单个样本点上的损失函数的期望值。
    • 1 N ∑ i = 1 N E ( L ( y i , f ( x i ) ) ) \frac{1}{N} \sum_{i=1}^NE(L(y_i,f(x_i))) N1i=1NE(L(yi,f(xi))) 表示在整个训练数据集上的平均损失函数的期望值,也就是经验风险 R ^ ( f ) \hat{R}(f) R^(f) 的期望值。
    • 1 N ∑ i = 1 N E ( L ( Y , f ( X ) ) ) \frac{1}{N} \sum_{i=1}^NE(L(Y,f(X))) N1i=1NE(L(Y,f(X))) 表示在所有可能的训练数据集上取平均得到的泛化误差的期望值。
    • E ( L ( Y , F ( X ) ) ) E(L(Y,F(X))) E(L(Y,F(X))) 表示在所有可能的输入数据和真实标签上取平均得到的模型 f f f 的泛化误差的期望值。
    • R ( f ) R(f) R(f) 表示模型 f f f 的泛化误差。
    • 这个等式表示,样本均值 X ˉ \bar{X} Xˉ 的期望值等于模型 f f f 的泛化误差 R ( f ) R(f) R(f)

总结起来,这些等式说明了在二分类问题中,经验风险 R ^ ( f ) \hat{R}(f) R^(f) 等于样本均值 X ˉ \bar{X} Xˉ,而模型 f f f 的泛化误差 R ( f ) R(f) R(f) 等于样本均值的期望值 E ( X ˉ ) E(\bar{X}) E(Xˉ)。这些等式强调了模型的经验风险和泛化误差之间的关系。

1 N ∑ i = 1 N E ( L ( y i , f ( x i ) ) ) = 1 N ∑ i = 1 N E ( L ( Y , f ( X ) ) ) \frac{1}{N} \sum_{i=1}^NE(L(y_i,f(x_i))) =\frac{1}{N} \sum_{i=1}^NE(L(Y,f(X))) N1i=1NE(L(yi,f(xi)))=N1i=1NE(L(Y,f(X)))
这两个表达式之所以相等,是因为它们表示了相同的概念,只是在符号上稍有不同。让我解释一下它们的含义:

  1. 1 N ∑ i = 1 N E ( L ( y i , f ( x i ) ) ) \frac{1}{N} \sum_{i=1}^N E(L(y_i, f(x_i))) N1i=1NE(L(yi,f(xi)))

    • 这个表达式的意思是,首先对每个样本点 i i i 计算损失函数 L ( y i , f ( x i ) ) L(y_i, f(x_i)) L(yi,f(xi)) 的期望值,然后将这些期望值相加并取平均,其中 N N N 是样本数量。
    • 损失函数 L ( y i , f ( x i ) ) L(y_i, f(x_i)) L(yi,f(xi)) 的期望值表示在给定输入 x i x_i xi 和真实标签 y i y_i yi 的情况下,模型 f f f 预测的损失的期望值。
  2. 1 N ∑ i = 1 N E ( L ( Y , f ( X ) ) ) \frac{1}{N} \sum_{i=1}^N E(L(Y, f(X))) N1i=1NE(L(Y,f(X)))

    • 这个表达式的意思是,在所有可能的输入数据 X X X 和真实标签 Y Y Y 的情况下,首先计算模型 f f f 预测的损失函数 L ( Y , f ( X ) ) L(Y, f(X)) L(Y,f(X)) 的期望值,然后将这些期望值相加并取平均,其中 N N N 仍然表示样本数量。
    • 这相当于对所有可能的训练数据集(每个训练数据集都有不同的 X X X Y Y Y)计算模型的平均损失。

这两个表达式之所以相等,是因为它们都试图描述模型的平均损失,只是计算的方式略有不同。第一个表达式是在给定特定的训练数据集上计算平均损失,而第二个表达式是在考虑所有可能的训练数据集时计算平均损失。在实际应用中,通常只有一个训练数据集,因此第一个表达式更常见,但理论上它们等价。

X ˉ = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) \bar{X}=\frac{1}{N} \sum_{i=1}^NL(y_i,f(x_i)) Xˉ=N1i=1NL(yi,f(xi))
这个等式是关于样本均值( X ˉ \bar{X} Xˉ)的定义,其中损失函数的期望值被表示为平均损失。让我解释一下这个等式是如何来的:

假设我们有一个包含 N N N 个样本的训练数据集,每个样本都由一个输入 x i x_i xi 和对应的真实标签 y i y_i yi 组成。我们使用模型 f f f 对每个输入 x i x_i xi 进行预测,并计算损失函数 L ( y i , f ( x i ) ) L(y_i, f(x_i)) L(yi,f(xi)) 的值。这个损失函数表示了模型对于每个样本的预测与真实标签之间的误差。

现在, 1 N ∑ i = 1 N L ( y i , f ( x i ) ) \frac{1}{N} \sum_{i=1}^N L(y_i, f(x_i)) N1i=1NL(yi,f(xi)) 表示的是计算了所有样本上的损失函数值,然后取了这些值的平均。这就是样本均值,表示了模型在整个训练数据集上的平均损失。

换句话说, X ˉ \bar{X} Xˉ 是模型 f f f 在训练数据集上的平均损失。这个等式的右侧表示对每个样本的损失函数 L ( y i , f ( x i ) ) L(y_i, f(x_i)) L(yi,f(xi)) 求期望值,然后将这些期望值相加并除以样本数量 N N N,这与计算平均损失的概念一致。

因此, X ˉ = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) \bar{X} = \frac{1}{N} \sum_{i=1}^N L(y_i, f(x_i)) Xˉ=N1i=1NL(yi,f(xi)) 是样本均值的定义,它代表了模型在训练数据集上的平均损失。这个概念在机器学习中非常重要,因为我们经常希望了解模型在训练数据上的性能以及优化模型的损失函数。

  1. 第二步
    推不下去了,等补补基础再来吧^_^

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

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

相关文章

servlet实现登录功能【当用户当前未登陆,跳转登录页面才能访问,若已经登录了,才可以直接访问】

1. 前端 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><form action"login" method"POST"><input type"text&q…

ros开发中编译cpp文件的2个办法

方式一&#xff1a; 在Ubuntu控制台输入指令 cd catkin_ws 进入到工作空间 然后在输入&#xff1a; catkin_make --pkg catkin_practice 注释&#xff1a;以上catkin_ws是工作空间名称&#xff0c;catkin_practice是工作空间中将要被编译的包的名称 方式二&#xff1a; …

Java 基本数据类型

目录 Java 基本数据类型 内置数据类型 引用类型 Java常量 Java 基本数据类型 变量就是申请内存来存储值。也就是说&#xff0c;当创建变量的时候&#xff0c;需要在内存中申请空间。 内存管理系统根据变量的类型为变量分配存储空间&#xff0c;分配的空间只能用来储存该类型…

获取唯一的短邀请码

/*** 获取唯一的邀请码** return the string*/private String generateUserUniqueShareCode() {Set<String> arr getSetArr();String code;do {code generateCode(arr);} while (isCodeUserExists(code));return code;}/*** Gets set arr.** return the set arr*/NotNu…

极客时间:左耳听风【文章笔记 思考总结】

本篇博客是学习过程中的笔记、思考和总结。原文链接&#xff1a;https://time.geekbang.org/column/intro/100002201 开篇词 | 洞悉技术的本质&#xff0c;享受科技的乐趣01 | 程序员如何用技术变现&#xff08;上&#xff09;02 | 程序员如何用技术变现&#xff08;下&#xf…

glibc: strlcpy

https://zine.dev/2023/07/strlcpy-and-strlcat-added-to-glibc/ https://sourceware.org/git/?pglibc.git;acommit;h454a20c8756c9c1d55419153255fc7692b3d2199 https://linux.die.net/man/3/strlcpy https://lwn.net/Articles/612244/ 从这里看&#xff0c;这个strlcpy、st…

前端控制小数点精度及数字千位分割

前端控制小数点精度及数字千位分割&#xff0c;表头居中&#xff0c;每行单元格内容居右。 前端控制小数点精度&#xff1a; <el-table-column prop"cycz" label"差异产值" header-align"center" align"right"><template s…

JVM高级性能调试

标准的JVM是配置为了高吞吐量&#xff0c;吞吐量是为了科学计算和后台运行使用&#xff0c;而互联网商业应用&#xff0c;更多是为追求更短的响应时间&#xff0c;更低的延迟Latency&#xff08;说白了就是更快速度&#xff09;&#xff0c;当用户打开网页没有快速响应&#xf…

安卓机型-MTK芯片掉串码 掉基带 如何用工具进行修复 改写参数

在早期MTK芯片机型中较多使用AP BP方式来修复mtk芯片机型的串码。目前MTK机型对于丢基带 掉串码问题大都使用MODEM META工具来进行修复串码或者改写参数。今天以一款mtk芯片机型来做个演示&#xff0c; 高通芯片类的可以参考; 高通改串相关 工具仅支持在联发科芯片组上运行的…

经纬度相关计算

最近在做经纬度相关的需求&#xff0c;遇到了2个需求。 1、根据2个经纬度计算之间的距离 2、根据1个经纬度&#xff0c;一个距离&#xff0c;求另一个经纬度 我找了好久&#xff0c;没有发现能用的api&#xff0c;高德官方貌似也没有给java的工具文档&#xff0c;希望官方能支持…

WEB使用VUE3实现地图导航跳转

我们在用手机查看网页时可以通过传入经纬度去设置目的地然后跳转到对应的地图导航软件&#xff0c;如果没有下载软件则会跳转到下载界面 注意&#xff1a; 高德地图是一定会跳转到一个新网页然后去询问用户是否需要打开软件百度和腾讯地图是直接调用软件的这个方法有缺陷&…

iOS——引用计数(一)

自动引用计数 自动引用计数&#xff08;ARC&#xff0c;Automatic Reference Counting&#xff09;是指内存管理中对引用采取自动计数的技术。 满足以下要求后&#xff0c;我们的代码就无需再次键入retain或者是release代码了&#xff1a; 使用Xcode 4.2或以上版本使用LLVM编…

Android 启动优化案例:WebView非预期初始化排查

去年年底做启动优化时&#xff0c;有个比较好玩的 case 给大家分享下&#xff0c;希望大家能从我的分享里 get 到我在做一些问题排查修复时是怎么看上去又low又土又高效的。 1. 现象 在我们使用 Perfetto 进行app 启动过程性能观测时&#xff0c;在 UI 线程发现了一段 几十毫…

Docker注入环境变量且设置多个环境变量

方式一 运行docker命令修改 在运行docker时&#xff0c;直接使用-e或–env&#xff0c;输入需要改变的变量 例如&#xff1a;springboot配置文件如下,可注入环境变量启动端口SERVER_PORT&#xff0c;以及启动配置文件NODE_ENV:dev server:port: ${SERVER_PORT:8400} spring…

mysql 每日自动备份数据库

在 MySQL 中&#xff0c;你可以使用定时任务来每日自动备份数据库。通常&#xff0c;最常用的方法是使用操作系统的定时任务工具&#xff08;如cron&#xff09;来调度备份操作。以下是一些步骤来设置每日定时备份MySQL数据库&#xff1a; 创建备份脚本&#xff1a;首先&#x…

Mybatis分页框架-PageHelper

Mybatis分页框架-PageHelper 一、PageHelper基础使用1.引入jar包2.配置conifg3.测试使用 二、PageHelper的多种用法1.使用PageHelper.startPage传入对象2.不使用PageHelper.startPage,而使用PageHelper.offsetPage3.使用Lambda进行分页4.不使用PageHelper直接分页5.想要使用分页…

Google拟放弃博通自行研发AI芯片 | 百能云芯

谷歌计划自行研发人工智能&#xff08;AI&#xff09;芯片&#xff0c;考虑将博通&#xff08;Broadcom&#xff09;从其供应商名单中剔除&#xff0c;但谷歌强调双方的合作关系不会受到影响。 根据美国网络媒体《The Information》的报道&#xff0c;谷歌高层正在讨论可能在20…

【计算机网络】图解路由器(二)

本系列包含&#xff1a; 图解路由器&#xff08;一&#xff09;图解路由器&#xff08;二&#xff09; 图解路由器&#xff08;二&#xff09; 21、什么是静态路由&#xff1f;22、什么是动态路由&#xff1f;23、动态路由有哪些类型&#xff1f;24、什么是 RIP &#xff1f;2…

Python教程(14)——Python函数的入门学习

函数是什么&#xff1f;在编程中&#xff0c;函数是一段可重用的代码块&#xff0c;用于完成特定任务或执行特定操作。它可以接输入参数并返回一个值或执行一系列操作。函数可以帮助程序员将代码模块化&#xff0c;提高代码的可读性和可维护性。 函数通常包括以下组成部分&…

排序算法之归并排序

一、归并排序的形象理解 原题链接 示例代码 void merge_sort(int q[], int l, int r) {if (l > r) return;int mid l r >> 1;merge_sort(q, l, mid), merge_sort(q, mid 1, r);int k 0, i l, j mid 1;while (i < mid && j < r) //第一处if (q[i]…