Logistic Regression(逻辑回归)、Maximum Likelihood Estimatio(最大似然估计)

Logistic Regression(逻辑回归)、Maximum Likelihood Estimatio(最大似然估计)

  • 逻辑回归(Logistic Regression,LR)
    • 逻辑回归的基本思想
    • 逻辑回归模型
    • 逻辑回归的目标
      • 最大似然估计
      • 优化方法
    • 逻辑回归的损失函数:对数损失
    • 逻辑回归的应用
    • 逻辑回归的优缺点
      • 优点
      • 缺点
    • 逻辑回归的扩展
    • 逻辑回归的实现(Python 示例)
  • 最大似然估计 (Maximum Likelihood Estimation, MLE)
    • 最大似然估计的基本思想
      • 似然函数
      • 对数似然函数
      • 最大化对数似然
    • 通过最大似然估计估计参数
      • 示例 1:估计高斯分布的均值和方差
      • 示例 2:伯努利分布的最大似然估计
    • 最大似然估计的优点和局限
      • 优点
      • 局限
  • 参考资料

逻辑回归(Logistic Regression,LR)

逻辑回归(Logistic Regression) 是一种广泛应用于分类问题的统计方法,尤其用于二分类问题(即预测目标变量有两个类别)。尽管它的名字中带有“回归”二字,但它实际上是一种分类算法。逻辑回归通过对输入特征进行建模,输出一个概率值,表示某个类别的可能性。

逻辑回归的基本思想

逻辑回归试图找出一个合适的数学模型,将输入特征 X = ( x 1 , x 2 , … , x n ) X=(x_1, x_2, …, x_n) X=(x1,x2,,xn) 映射到目标标签 Y Y Y 上。对于二分类问题,目标是根据输入特征预测 Y = 1 Y=1 Y=1 Y = 0 Y=0 Y=0 的概率。

逻辑回归的核心是 逻辑函数(Logistic Function) 或者称为 Sigmoid 函数,它将任何实数映射到 [0, 1] 之间,从而可以解释为概率。

逻辑回归模型

假设输入特征 X = ( x 1 , x 2 , … , x n ) X=(x_1, x_2, …, x_n) X=(x1,x2,,xn) 和权重参数 w = ( w 1 , w 2 , … , w n ) w=(w_1, w_2, …, w_n) w=(w1,w2,,wn),逻辑回归模型的输出是通过一个线性组合加上偏置项,输入到一个 Sigmoid 函数中:
z = w 1 x 1 + w 2 x 2 + ⋯ + w n x n + b z = w_1 x_1 + w_2 x_2 + \dots + w_n x_n + b z=w1x1+w2x2++wnxn+b
然后,将 z z z 通过 Sigmoid 函数 σ ( z ) σ(z) σ(z) 转换为一个概率值:
P ( Y = 1 ∣ X ) = σ ( z ) = 1 1 + e − z P(Y = 1 \mid X) = \sigma(z) = \frac{1}{1 + e^{-z}} P(Y=1X)=σ(z)=1+ez1

其中, σ ( z ) σ(z) σ(z) 是 Sigmoid 函数,它将任何实数 z z z 映射到 (0, 1) 之间,表示一个类别的概率。 P ( Y = 1 ∣ X ) P(Y=1∣X) P(Y=1X) 就是预测样本属于类别1的概率。

  • 如果 P ( Y = 1 ∣ X ) > 0.5 P(Y=1∣X)>0.5 P(Y=1X)>0.5,则预测类别为 1;
  • 如果 P ( Y = 1 ∣ X ) ≤ 0.5 P(Y=1∣X)≤0.5 P(Y=1X)0.5,则预测类别为 0。

在这里插入图片描述

逻辑回归的目标

在逻辑回归中,我们的目标是通过训练数据来学习最优的权重参数 w 1 , w 2 , … , w n w_1, w_2, …, w_n w1,w2,,wn 和偏置项 b b b,使得模型能够准确地预测数据的类别。为此,我们使用最大似然估计(Maximum Likelihood Estimation, MLE)来估计这些参数。

最大似然估计

假设我们有 m m m 个训练样本,每个样本的输入为 X ( i ) X^{(i)} X(i),标签为 Y ( i ) Y^{(i)} Y(i),其中 i = 1 , 2 , … , m i = 1, 2, \dots, m i=1,2,,m

逻辑回归模型的似然函数是基于每个训练样本的预测概率和真实标签的结合。对于每个样本,预测的概率为 P ( Y = 1 ∣ X ( i ) ) P(Y = 1 \mid X^{(i)}) P(Y=1X(i)),因此整个训练集的似然函数为:
L ( w , b ) = ∏ i = 1 m P ( Y ( i ) ∣ X ( i ) ; w , b ) L(w, b) = \prod_{i=1}^{m} P(Y^{(i)} \mid X^{(i)}; w, b) L(w,b)=i=1mP(Y(i)X(i);w,b)

因为 Y ( i ) Y^{(i)} Y(i) 是 0 或 1,所以可以将似然函数写成:
L ( w , b ) = ∏ i = 1 m [ σ ( z ( i ) ) Y ( i ) ⋅ ( 1 − σ ( z ( i ) ) ) 1 − Y ( i ) ] L(w, b) = \prod_{i=1}^{m} \left[\sigma(z^{(i)})^{Y^{(i)}} \cdot (1 - \sigma(z^{(i)}))^{1 - Y^{(i)}} \right] L(w,b)=i=1m[σ(z(i))Y(i)(1σ(z(i)))1Y(i)]

为了方便优化,通常取对数似然函数(Log-Likelihood),得到:
ℓ ( w , b ) = ∑ i = 1 m [ Y ( i ) log ⁡ σ ( z ( i ) ) + ( 1 − Y ( i ) ) log ⁡ ( 1 − σ ( z ( i ) ) ) ] \ell(w, b) = \sum_{i=1}^{m} \left[Y^{(i)} \log \sigma(z^{(i)}) + (1 - Y^{(i)}) \log (1 - \sigma(z^{(i)})) \right] (w,b)=i=1m[Y(i)logσ(z(i))+(1Y(i))log(1σ(z(i)))]

目标是最大化对数似然函数 ℓ ( w , b ) \ell(w, b) (w,b),即找到使对数似然函数最大化的权重 w w w 和偏置项 b b b

优化方法

我们通常使用梯度下降法(Gradient Descent)来优化对数似然函数。梯度下降法通过计算损失函数(对数似然的负数)对模型参数的梯度来更新参数,以减小损失。

梯度下降更新规则为:
w j ← w j − α ∂ ∂ w j ℓ ( w , b ) w_j \leftarrow w_j - \alpha \frac{\partial}{\partial w_j} \ell(w, b) wjwjαwj(w,b)
b ← b − α ∂ ∂ b ℓ ( w , b ) b \leftarrow b - \alpha \frac{\partial}{\partial b} \ell(w, b) bbαb(w,b)

其中, α \alpha α 是学习率。

逻辑回归的损失函数:对数损失

由于逻辑回归是基于最大似然估计的,因此它的损失函数通常称为对数损失(Log-Loss)或交叉熵损失(Cross-Entropy Loss),公式如下:
L ( w , b ) = − 1 m ∑ i = 1 m [ Y ( i ) log ⁡ ( σ ( z ( i ) ) ) + ( 1 − Y ( i ) ) log ⁡ ( 1 − σ ( z ( i ) ) ) ] \mathcal{L}(w, b) = - \frac{1}{m} \sum_{i=1}^{m} \left[Y^{(i)} \log(\sigma(z^{(i)})) + (1 - Y^{(i)}) \log(1 - \sigma(z^{(i)})) \right] L(w,b)=m1i=1m[Y(i)log(σ(z(i)))+(1Y(i))log(1σ(z(i)))]

对数损失衡量的是预测的概率分布与真实标签之间的差距。损失函数的值越小,模型的预测越准确。

逻辑回归的应用

逻辑回归适用于以下场景:

  • 二分类问题:例如,电子邮件分类(垃圾邮件与非垃圾邮件)、医疗诊断(是否患病)、银行贷款申请(是否批准)等。
  • 多分类问题:通过多项式逻辑回归(Multinomial Logistic Regression)扩展,可以处理多类问题,常用于文本分类或图像分类。

逻辑回归的优缺点

优点

  • 简单易懂:逻辑回归是一种线性模型,易于理解和实现。
  • 高效:逻辑回归在训练数据量较小的情况下能表现得很好,计算速度较快。
  • 概率输出:它不仅提供类别预测,还提供每个类别的概率,这对于很多应用场景非常有用。
  • 可解释性强:模型参数(即权重)能够反映特征对预测结果的影响,便于进行模型解释。

缺点

  • 线性假设:逻辑回归假设特征和目标之间的关系是线性的。如果数据呈现非线性关系,逻辑回归可能无法很好地拟合数据。
  • 对异常值敏感:逻辑回归对异常值比较敏感,异常值可能会影响模型的性能。
  • 特征相关性问题:逻辑回归对特征之间的相关性较为敏感,强相关的特征可能会导致多重共线性问题。

逻辑回归的扩展

  • 多项式逻辑回归(Multinomial Logistic Regression):用于多分类问题,模型的输出不是一个概率,而是多个类别的概率分布。
  • 正则化(Regularization):为了防止过拟合,可以在逻辑回归中加入L1或L2正则化项。L1正则化能生成稀疏解,L2正则化可以避免过大权重的出现。

逻辑回归的实现(Python 示例)

使用 scikit-learn 库,可以非常方便地实现逻辑回归模型:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score, classification_report

# 加载鸢尾花数据集
data = load_iris()
X = data.data  # 特征数据
y = data.target  # 标签数据

# 将标签转为二分类问题:1. "Setosa"(类别 0),2. 非 "Setosa"(类别 1)
y_binary = (y == 0).astype(int)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y_binary, test_size=0.3, random_state=42)

# 创建逻辑回归模型
model = LogisticRegression()

# 训练模型
model.fit(X_train, y_train)

# 打印训练后的模型参数
print(f"模型的权重 (w): {model.coef_}")
print(f"模型的偏置 (b): {model.intercept_}")

# 用测试集进行预测
y_pred = model.predict(X_test)

# 计算模型的准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型的准确率: {accuracy * 100:.2f}%")

# 输出分类报告(精确率、召回率、F1分数等)
print("\n分类报告:")
print(classification_report(y_test, y_pred))

最大似然估计 (Maximum Likelihood Estimation, MLE)

最大似然估计(MLE) 是一种常用的统计方法,用于估计模型参数,使得在给定数据下,模型的概率最大化。简单来说,最大似然估计旨在找到最有可能生成观测数据的参数值。

MLE 是一种 参数估计方法,广泛应用于许多机器学习和统计建模中,尤其在 监督学习概率模型 中应用广泛。

主要作用是利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。

当“模型已定,参数未知”时,通过若干次试验,观察其结果,利用试验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。

最大似然估计的基本思想

假设我们有一组观测数据,记为 X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \dots, x_n\} X={x1,x2,,xn},这些数据来自某个概率分布,该分布有一个参数 θ \theta θ。我们的目标是通过最大化 似然函数 来估计参数 θ \theta θ

具体来说,假设我们已知数据的分布类型(比如高斯分布、伯努利分布等),但我们并不知道分布的具体参数。最大似然估计就是通过寻找一个参数 θ \theta θ使得给定这个参数下,观测到的数据的概率最大

似然函数

给定数据集 X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \dots, x_n\} X={x1,x2,,xn} 和模型的参数 θ \theta θ似然函数(Likelihood Function)表示在给定参数 θ \theta θ 下,观察到数据的概率。假设数据集中的样本独立且同分布(i.i.d.),则似然函数可以表示为:
L ( θ ; X ) = P ( X ∣ θ ) = ∏ i = 1 n P ( x i ∣ θ ) L(\theta; X) = P(X \mid \theta) = \prod_{i=1}^{n} P(x_i \mid \theta) L(θ;X)=P(Xθ)=i=1nP(xiθ)

其中, P ( x i ∣ θ ) P(x_i \mid \theta) P(xiθ) 是在参数 θ \theta θ 下,样本 x i x_i xi 出现的概率。

对数似然函数

由于似然函数通常涉及乘法,计算起来可能会很复杂。为了解决这个问题,我们通常使用 对数似然函数,因为对数函数是单调递增的,因此最大化似然函数和最大化对数似然函数是等价的。对数似然函数为:
ℓ ( θ ; X ) = log ⁡ L ( θ ; X ) = ∑ i = 1 n log ⁡ P ( x i ∣ θ ) \ell(\theta; X) = \log L(\theta; X) = \sum_{i=1}^{n} \log P(x_i \mid \theta) (θ;X)=logL(θ;X)=i=1nlogP(xiθ)

对数似然函数将乘积转化为求和,计算更为简便。

最大化对数似然

最大似然估计的目标是找到一个参数值 θ ^ \hat{\theta} θ^,使得对数似然函数最大化,即:
θ ^ = arg ⁡ max ⁡ θ ℓ ( θ ; X ) \hat{\theta} = \arg\max_\theta \ell(\theta; X) θ^=argθmax(θ;X)

这就是最大似然估计的核心思想:通过找到参数 θ \theta θ 使得在该参数下,数据的对数似然值最大。

通过最大似然估计估计参数

示例 1:估计高斯分布的均值和方差

假设我们有一个来自高斯分布的数据集 X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \dots, x_n\} X={x1,x2,,xn},我们想通过最大似然估计来估计其 均值 μ \mu μ方差 σ 2 \sigma^2 σ2

高斯分布的概率密度函数为:
P ( x ∣ μ , σ 2 ) = 1 2 π σ 2 exp ⁡ ( − ( x − μ ) 2 2 σ 2 ) P(x \mid \mu, \sigma^2) = \frac{1}{\sqrt{2\pi \sigma^2}} \exp\left( -\frac{(x - \mu)^2}{2\sigma^2} \right) P(xμ,σ2)=2πσ2 1exp(2σ2(xμ)2)

根据似然函数的定义,数据集的似然函数为:
L ( μ , σ 2 ; X ) = ∏ i = 1 n 1 2 π σ 2 exp ⁡ ( − ( x i − μ ) 2 2 σ 2 ) L(\mu, \sigma^2; X) = \prod_{i=1}^{n} \frac{1}{\sqrt{2\pi \sigma^2}} \exp\left( -\frac{(x_i - \mu)^2}{2\sigma^2} \right) L(μ,σ2;X)=i=1n2πσ2 1exp(2σ2(xiμ)2)

对似然函数取对数得到对数似然函数:
ℓ ( μ , σ 2 ; X ) = ∑ i = 1 n [ − 1 2 log ⁡ ( 2 π σ 2 ) − ( x i − μ ) 2 2 σ 2 ] \ell(\mu, \sigma^2; X) = \sum_{i=1}^{n} \left[ -\frac{1}{2} \log(2\pi \sigma^2) - \frac{(x_i - \mu)^2}{2\sigma^2} \right] (μ,σ2;X)=i=1n[21log(2πσ2)2σ2(xiμ)2]

为了最大化对数似然函数,我们分别对 μ \mu μ σ 2 \sigma^2 σ2 求导,并令其为 0,得到最大似然估计的参数值。

  1. μ \mu μ 求导:
    ∂ ℓ ∂ μ = ∑ i = 1 n x i − μ σ 2 = 0 \frac{\partial \ell}{\partial \mu} = \sum_{i=1}^{n} \frac{x_i - \mu}{\sigma^2} = 0 μ=i=1nσ2xiμ=0
    解得:
    μ ^ = 1 n ∑ i = 1 n x i \hat{\mu} = \frac{1}{n} \sum_{i=1}^{n} x_i μ^=n1i=1nxi
    这就是样本均值的最大似然估计。

  2. σ 2 \sigma^2 σ2 求导:
    ∂ ℓ ∂ σ 2 = − n 2 σ 2 + 1 2 σ 4 ∑ i = 1 n ( x i − μ ) 2 = 0 \frac{\partial \ell}{\partial \sigma^2} = -\frac{n}{2\sigma^2} + \frac{1}{2\sigma^4} \sum_{i=1}^{n} (x_i - \mu)^2 = 0 σ2=2σ2n+2σ41i=1n(xiμ)2=0
    解得:

σ 2 ^ = 1 n ∑ i = 1 n ( x i − μ ^ ) 2 \hat{\sigma^2} = \frac{1}{n} \sum_{i=1}^{n} (x_i - \hat{\mu})^2 σ2^=n1i=1n(xiμ^)2
这就是样本方差的最大似然估计。

示例 2:伯努利分布的最大似然估计

假设我们有一组来自 伯努利分布 的观测数据。伯努利分布的概率质量函数为:
P ( x ∣ p ) = p x ( 1 − p ) 1 − x P(x \mid p) = p^x (1 - p)^{1 - x} P(xp)=px(1p)1x

其中, x ∈ { 0 , 1 } x \in \{0, 1\} x{0,1} p p p 是成功的概率。

假设我们有 n n n 个独立的伯努利试验观测值 X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \dots, x_n\} X={x1,x2,,xn},我们要估计参数 p p p。则似然函数为:
L ( p ; X ) = ∏ i = 1 n p x i ( 1 − p ) 1 − x i L(p; X) = \prod_{i=1}^{n} p^{x_i} (1 - p)^{1 - x_i} L(p;X)=i=1npxi(1p)1xi

对其取对数得到对数似然函数:
ℓ ( p ; X ) = ∑ i = 1 n [ x i log ⁡ p + ( 1 − x i ) log ⁡ ( 1 − p ) ] \ell(p; X) = \sum_{i=1}^{n} \left[ x_i \log p + (1 - x_i) \log(1 - p) \right] (p;X)=i=1n[xilogp+(1xi)log(1p)]

最大化对数似然函数,求导并令其为 0:
∂ ℓ ∂ p = ∑ i = 1 n x i p − 1 − x i 1 − p = 0 \frac{\partial \ell}{\partial p} = \sum_{i=1}^{n} \frac{x_i}{p} - \frac{1 - x_i}{1 - p} = 0 p=i=1npxi1p1xi=0

解得:
p ^ = 1 n ∑ i = 1 n x i \hat{p} = \frac{1}{n} \sum_{i=1}^{n} x_i p^=n1i=1nxi

这就是样本中 1 的比例的最大似然估计。

最大似然估计的优点和局限

优点

  • 一致性:随着样本数量 n n n 的增加,最大似然估计趋近于真实的参数值(在大样本下是无偏的)。
  • 有效性:MLE 是在满足正则条件下具有最小方差的估计量(在大样本下)。
  • 广泛适用:最大似然估计可以用于各种类型的概率分布,不仅限于常见的分布(如高斯分布、伯努利分布等)。

局限

  • 计算复杂度高:当样本量大或分布复杂时,最大似然估计的计算可能非常复杂,需要使用数值优化方法。
  • 模型假设的依赖性:MLE 假设我们知道数据的分布类型,如果选择了错误的模型分布,估计结果可能会偏差。
  • 需要大量数据:对于小样本数据,最大似然估计可能会导致过拟合,或者估计不准确。

参考资料

Simplifying Logistic Regression — A Beginner’s Guide with a Real-world Practical Example

【五分钟机器学习】机器分类的基石:逻辑回归Logistic Regression

最大似然估计(通俗讲解)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据类型.

数据类型分类 数值类型 tinyint类型 以tinyint为例所有数值类型默认都是有符号的,无符号的需要在后面加unsignedtinyint的范围在-128~127之间无符号的范围在0~255之间(类比char) create database test_db; use test_db;建表时一定要跟着写上属性 mysql> creat…

IDEA使用HotSwapHelper进行热部署

目录 前言JDK1.8特殊准备DECVM安装插件安装与配置参考文档相关下载 前言 碰到了一个项目,用jrebel启动项目时一直报错,不用jrebel时又没问题,找不到原因,又不想放弃热部署功能 因此思考能否通过其他方式进行热部署,找…

机器学习算法(六)---逻辑回归

常见的十大机器学习算法: 机器学习算法(一)—决策树 机器学习算法(二)—支持向量机SVM 机器学习算法(三)—K近邻 机器学习算法(四)—集成算法 机器学习算法(五…

【Electron学习笔记(四)】进程通信(IPC)

进程通信(IPC) 进程通信(IPC)前言正文1、渲染进程→主进程(单向)2、渲染进程⇌主进程(双向)3、主进程→渲染进程 进程通信(IPC) 前言 在Electron框架中&…

GateWay使用手册

好的&#xff0c;下面是优化后的版本。为了提高可读性和规范性&#xff0c;我对内容进行了结构化、简化了部分代码&#xff0c;同时增加了注释说明&#xff0c;便于理解。 1. 引入依赖 在 pom.xml 中添加以下依赖&#xff1a; <dependencies><!-- Spring Cloud Gate…

【Go 基础】channel

Go 基础 channel 什么是channel&#xff0c;为什么它可以做到线程安全 Go 的设计思想就是&#xff1a;不要通过共享内存来通信&#xff0c;而是通过通信来共享内存。 前者就是传统的加锁&#xff0c;后者就是 channel。也即&#xff0c;channel 的主要目的就是在多任务间传递…

C# 解决【托管调试助手 “ContextSwitchDeadlock“:……】问题

文章目录 一、遇到问题二、解决办法 一、遇到问题 托管调试助手 “ContextSwitchDeadlock”:“CLR 无法从 COM 上下文 0x56e81e70 转换为 COM 上下文 0x56e81d48&#xff0c;这种状态已持续 60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows …

Spring AI 框架介绍

Spring AI是一个面向人工智能工程的应用框架。它的目标是将Spring生态系统的设计原则&#xff08;如可移植性和模块化设计&#xff09;应用于AI领域&#xff0c;并推广使用pojo作为AI领域应用的构建模块。 概述 Spring AI 现在(2024/12)已经支持语言&#xff0c;图像&#xf…

使用Grafana K6来测测你的系统负载能力

背景 近期我们有个号称会有很高很高并发的系统要上线&#xff0c;为了测试一下自己开发的系统的负载能力&#xff0c;准备了点海克斯科技&#xff0c;来看看抗不抗的住。 之前笔者写过用Apache JMeter进行压力测试的文章&#xff08;传送门&#x1f449;&#xff1a;https://…

32 从前序与中序遍历序列构造二叉树

32 从前序与中序遍历序列构造二叉树 32.1 从前序与中序遍历序列构造二叉树解决方案 class Solution { public:TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {return buildTreeHelper(preorder, inorder, 0, 0, inorder.size() - 1)…

【C++boost::asio网络编程】有关异步读写api的笔记

异步读写api 异步写操作async_write_someasync_send 异步读操作async_read_someasync_receive 定义一个Session类&#xff0c;主要是为了服务端专门为客户端服务创建的管理类 class Session { public:Session(std::shared_ptr<asio::ip::tcp::socket> socket);void Conn…

Flutter如何适配RTL

阿拉伯语和希伯来语等是使用的从右到左书写的文字系统。世界上估计有4.22亿人以阿拉伯语做为母语。使用从右至左的人口可以说是更多了。所以对于出海项目来说&#xff0c;是不能忽视的一部分。 RTL可以说是本地化适配中比较麻烦的一项&#xff0c;并没有多语言适配来的简单。RT…

【Django-xadmin】

时间长不用,会忘的系列 1、Django-xadmin后台字段显示处理 主要是修改每个模块下adminx.py文件 代码解释&#xff1a;第1行控制表单字段显示第2行控制列表字段显示第3行控制搜索条件第4行控制过滤条件第5行支持单个或多个字段信息修改第6行列表分页&#xff0c;每页显示多少行…

Pytest --capture 参数详解:如何控制测试执行过程中的输出行为

--capture 选项用于控制测试用例执行过程中标准输出&#xff08;stdout&#xff09;和标准错误输出&#xff08;stderr&#xff09;的捕获行为。 --capture 的选项值&#xff1a; fd&#xff08;默认&#xff09; 捕获文件描述符级别的输出&#xff08;stdout 和 stderr&#x…

整合SSM框架:构建Java Web应用

目录 简介 项目结构 配置文件详解 db.properties mybatis-config.xml spring-mybatis.xml springmvc.xml web.xml pom.xml 整合步骤 为什么这样整合&#xff1f; 简介 SSM框架整合指的是Spring、Spring MVC和MyBatis三个开源框架的整合。这种整合方式在Java Web开发…

Solidity开发智能合约

05-Solidity开发智能合约 0 Solidity和智能合约 Solidity开发可运行的智能合约步骤&#xff1a; 源代码通过编译成字节码&#xff08;Bytecode&#xff09;&#xff0c;同时会产生二进制接口规范&#xff08;ABI&#xff09; 通过交易将字节码部署到以太坊网络&#xff0c;部署…

Java基础之控制语句:开启编程逻辑之门

一、Java控制语句概述 Java 中的控制语句主要分为选择结构、循环结构和跳转语句三大类&#xff0c;它们在程序中起着至关重要的作用&#xff0c;能够决定程序的执行流程。 选择结构用于根据不同的条件执行不同的代码路径&#xff0c;主要包括 if 语句和 switch 语句。if 语句有…

Vue教程|搭建vue项目|Vue-CLI2.x 模板脚手架

一、项目构建环境准备 在构建Vue项目之前&#xff0c;需要搭建Node环境以及Vue-CLI脚手架&#xff0c;由于本篇文章为上一篇文章的补充&#xff0c;也是为了给大家分享更为完整的搭建vue项目方式&#xff0c;所以环境准备部分采用Vue教程&#xff5c;搭建vue项目&#xff5c;V…

shell脚本30个案例(五)

前言&#xff1a; 通过一个多月的shell学习&#xff0c;总共写出30个案例&#xff0c;分批次进行发布&#xff0c;这次总共发布了5个案例&#xff0c;希望能够对大家的学习和使用有所帮助&#xff0c;更多案例会在下期进行发布。 案例二十一、系统内核优化 1.问题&#xff1…

分布式集群下如何做到唯一序列号

优质博文&#xff1a;IT-BLOG-CN 分布式架构下&#xff0c;生成唯一序列号是设计系统常常会遇到的一个问题。例如&#xff0c;数据库使用分库分表的时候&#xff0c;当分成若干个sharding表后&#xff0c;如何能够快速拿到一个唯一序列号&#xff0c;是经常遇到的问题。实现思…