机器学习——线性回归篇

基本概念

在这里插入图片描述
什么是回归预测?什么是分类预测?

模型输入变量预测结果应用
回归预测实值离散一个连续值域上的任意值预测值的分布情况
分类预测实值离散两个或多个分类将输入变量分类到不同类别

思考一个问题:分类问题是否可以转变为回归问题?

回答:当然可以!

例子:检测癌症患者患病概率,检查值可能是40%、50%、60%等连续值,但是如果我们给定一个划分标准,如高于50%的检查值认定为患病,那么我们就把一个回归问题转化成了分类问题。

什么是线性?

  • 可加性,又称叠加性
    • f(x+y)=f(x)+f(y)
  • 齐次性,又称均匀性
    • f(ax)=af(x),其中a为与x无关的常数
  • f(x,y)=f(ax+by)=af(x)+bf(y)

什么是线性回归(LinearRegression)?

顾名思义:用一条线来进行回归预测。

例子:已知房屋面积和房屋价格的对应关系,100平60w;120平70w;130平75w。根据对应的散列点在二维空间描绘出来得到下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M97b9Dlj-1685858452095)(C:\Users\liyi0\AppData\Roaming\Typora\typora-user-images\image-20230601085044975.png)]

线性回归在这种背景下的工作就是寻找一条直线,尽可能的拟合这些离散点。

什么是拟合?

专业的来说:针对数据(x1,y1)、(x2,y2),…,(xn,yn),确定一个函数f(x)使得尽可能的准确表达这些变量间的关系。

拟合不一定是百分百的,如上图的这些离散点,根据两点确定一条直线的原则,你无法找到一条能够完全穿过这些点的直线,因此不同人可能会找到不同的直线,如下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这么多条线,我们的应该选取哪一条作为最终的f(x)呢?针对这个问题,我们引入了一个评判指标——损失函数

什么是损失函数(loss function)?

首先我们明确一个概念:

图上这条直线上的点称为预测点,图上这些离散的点称为真实点。既然是预测就会存在误差,这里我们把真实值和预测值之间的差值称为——残差

残差公式:
e = y − y ^ e = y - \hat y e=yy^
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VzQhEmg3-1685858452100)(C:\Users\liyi0\AppData\Roaming\Typora\typora-user-images\image-20230601091424515.png)]

对于单个具体点我们可以用残差来衡量评估标准,但对于图中所有的点,我们要进行整体评估,因此数学上一般将所有点的残差的平方加和等到一个总和

残差平方和公式(SSE):
Q = ∑ i = 1 n ( y i − y ^ i ) 2 = ∑ i = 1 n ( y i − ( β ^ 0 + β ^ 1 x i ) ) 2 Q = \sum_{i=1}^{n}(y_i-\hat y_i)^2=\sum_{i=1}^{n}(y_i-(\hat \beta_0+\hat \beta_1x_i))^2 Q=i=1n(yiy^i)2=i=1n(yi(β^0+β^1xi))2
我们可以通过这个SSE公式来评估我们的直线的误差,不断动态调整我们的直线,尽可能逼近最小误差

这个时候又会有另外一个疑问,误差评判标准是唯一不变的吗?

针对这个问题,马克思曾说过:要具体问题具体分析。因此损失函数的选择不是唯一的,但是有些函数常常会被我们用到,举例如下:

  • 均方误差MSE

1 n ∑ i = 1 n ( y i − y ^ i ) 2 \frac{1}{n}\sum_{i=1}^{n}(y_i-\hat y_i)^2 n1i=1n(yiy^i)2

  • 均方根误差RMSE

1 n ∑ i = 1 n ( y i − y ^ i ) 2 \sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat y_i)^2} n1i=1n(yiy^i)2

  • 平均绝对误差MAE

1 n ∑ i = 1 n ∣ y i − y ^ i ∣ \frac{1}{n}\sum_{i=1}^{n}|y_i-\hat y_i| n1i=1nyiy^i

  • 根均方百分比误差RMSPE

1 n ∑ i = 1 n ( y i − y ^ i y i ) 2 \frac{1}{n}\sqrt{\sum_{i=1}^{n}(\frac{y_i-\hat y_i}{y_i})^2} n1i=1n(yiyiy^i)2

由于篇幅有限加上初期接触,这里不再过多拓展,更多详情在损失函数拓展篇

这个时候就会有人说,是不是我选择了一个好的损失函数,并且使其损失值最小化。我的模型就可以在工业应用中有着优秀表现呢?

答案可能是不一定的,还是那句话具体问题要具体分析,因此我们引入了另外一个评估角度——评价指标

什么是评价指标(evaluation metric)?

既然要去评价一个东西,那必须多维度全方面的去评估,因此机器学习中给出了一些常用的评价指标。

这里我们以“二分类”问题为例,所谓二分类就是把一个东西分成两类,看各自分类的正确率和错误率。

  • Confusion Matrix(混淆矩阵)
真实情况预测结果
正例反例
正例(P)TP(真正例)FN(假反例)
反例(N)FP(假正例)TN(真反例)

  • Accuracy(准确率)

真实情况和预测结果一致的样本占总样本的比例
A c c u r a c y = T P + T N P + N Accuracy =\frac{TP+TN}{P+N} Accuracy=P+NTP+TN

  • Precision(精准率)(又称查准率)

被分为正例中真实情况为正例的比例
P r e c i s i o n = T P T P + F P Precision =\frac{TP}{TP+FP} Precision=TP+FPTP

  • Recall(召回率)(又称查全率)

真实情况中正例被正确分类的比例
R e c a l l = T P T P + F N Recall =\frac{TP}{TP+FN} Recall=TP+FNTP

  • F1 Score(F1分数)

F1值是评估二元分类模型性能中精准性和召回率综合效果的指标
F 1 = 2 ⋅ P r e c i s i o n ⋅ R e c a l l P r e c i s i o n + R e c a l l = 2 T P 2 T P + T P + F N F_1 =\frac{2·Precision·Recall}{Precision+Recall}=\frac{2TP}{2TP+TP+FN} F1=Precision+Recall2PrecisionRecall=2TP+TP+FN2TP

  • AUC(ROC曲线下面积)

AUC的值可以表示为预测模型对于随机选择一个正样本和一个负样本能够给出正确的分类预测的概率大小。因此AUC的值越大,说明模型的分类效果越优秀

ROC曲线以真阳性率为纵坐标,以假阳性率为横坐标绘制的性能评价曲线。

其中真阳性率为
T P P \frac{TP}{P} PTP
假阳性率为
F P N \frac{FP}{N} NFP
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EUeiADSa-1685858452101)(C:\Users\liyi0\AppData\Roaming\Typora\typora-user-images\image-20230601110704055.png)]

ROC曲线越靠近左上角,说明其对应模型越可靠。ROC曲线下面的面积(Area Under Curve, AUC)越大,模型越可靠。

  • R-squared(R平方)

R方,决定系数,又称拟合优度,通常用来描述数据对模型拟合程度的好坏,表示自变量X对因变量Y的解释程度。R方的取值在[0,1]之间,越接近1,说明回归拟合效果越好。比如R方=0.5,那么说明自变量可以解释因变量50%的变化原因。

R 2 = 1 − ∑ i = 1 n ( y i − y ^ i ) 2 ∑ i = 1 n ( y i − y ˉ i ) 2 = 1 − S S E S S T = S S R S S T R^2 = 1-\frac{\sum_{i=1}^{n}(y_i-\hat y_i)^2}{\sum_{i=1}^{n}(y_i-\bar y_i)^2} = 1-\frac{SSE}{SST}=\frac{SSR}{SST} R2=1i=1n(yiyˉi)2i=1n(yiy^i)2=1SSTSSE=SSTSSR
在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hF6hryV9-1685858452102)(C:\Users\liyi0\AppData\Roaming\Typora\typora-user-images\image-20230601112430309.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t0j0jC6w-1685858452104)(C:\Users\liyi0\AppData\Roaming\Typora\typora-user-images\image-20230601112350131.png)]

具体内容

针对前面的铺垫内容,我们来开始对线性模型的具体学习,一般我们在实际应用中待检测的物体都有多种属性,根据多个属性值x来确定最终的结果值y。用数学描述如下:
在这里插入图片描述

线性回归模型:
f ( x ) = w 1 x 1 + w 2 x 2 + . . . + w d x d + b f(x)=w_1x_1+w_2x_2+...+w_dx_d+b f(x)=w1x1+w2x2+...+wdxd+b
向量形式:
f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b

将问题抽象成数学公式后,就转化成了对w、b值进行求解的数学问题,那如何求解出w和b呢?

上一节讲到的损失函数就是重要的解题依据,我们采用均方误差最小化的形式来使f(x)无限逼近真实值,从而确定w和b

首先对于单个属性值的预测结果
f ( x i ) = w x i + b 使得 f ( x i ) ∽ y i f(x_i)=wx_i+b 使得 f(x_i)\backsim y_i f(xi)=wxi+b使得f(xi)yi

使得均方误差最小化:(因为1/m是固定值,不影响最后结果可以省去)
( w ∗ , b ∗ ) = a r g m i n ∑ i = 1 m ( f ( x i ) − y i ) 2 = a r g m i n ∑ i = 1 m ( y i − w x i − b ) 2 = a r g m i n E ( w , b ) (w^*,b^*)=argmin\sum_{i=1}^{m}(f(x_i)-y_i)^2=argmin\sum_{i=1}^{m}(y_i-wx_i-b)^2=argminE_{(w,b)} (w,b)=argmini=1m(f(xi)yi)2=argmini=1m(yiwxib)2=argminE(w,b)

  • 应用:最小二乘法:找到一条直线,使得所有样本到直线上的欧式距离之和最小

分别对w、b求导可得

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-isy8O584-1685858452106)(C:\Users\liyi0\AppData\Roaming\Typora\typora-user-images\image-20230602182910621.png)]

∂ E ( w , b ) ∂ w = 2 ( w ∑ i = 1 m x i 2 − ∑ i = 1 m ( y i − b ) x i ) \frac{\partial E_{(w,b)} }{\partial w}=2(w\sum_{i=1}^{m}x_i^2-\sum_{i=1}^{m}(y_i-b)x_i) wE(w,b)=2(wi=1mxi2i=1m(yib)xi)

∂ E ( w , b ) ∂ b = 2 ( m b − ∑ i = 1 m ( y i − w x i ) ) \frac{\partial E_{(w,b)}}{\partial b}=2(mb-\sum_{i=1}^{m}(y_i-wx_i)) bE(w,b)=2(mbi=1m(yiwxi))

令导数值为0得到w、b表达式

多元线性回归

上述我们对单个属性对应的单个w和b进行计算,但是在实际应用中,样本数据中可能会有多个属性,他们共同影响着最终的预测值f(x),因此我们要把一维的情况拓展到多维,得到更一般的表达式:
f ( x i ) = w T x i + b , 使得 f ( x i ) ∽ y i f(x_i)=w^Tx_i+b,使得f(x_i)\backsim y_i f(xi)=wTxi+b,使得f(xi)yi

将w和

吸收入向量中:
w ^ = ( w 1 w 2 ⋮ w d b ) = ( w b ) \hat{w}=\left( \begin{matrix} w_{1} \\ w_{2} \\ \vdots \\ w_{d} \\ b \\ \end{matrix} \right) = \left( \begin{matrix} w \\ b \\ \end{matrix} \right) w^= w1w2wdb =(wb)

X = [ x 11 x 12 ⋯ x 1 d 1 x 21 x 22 ⋯ x 2 d 1 ⋮ ⋮ ⋱ ⋮ ⋮ x m 1 x m 2 ⋯ x m d 1 ] = [ x 1 T 1 x 2 T 1 ⋮ ⋮ x m T 1 ] = [ X 1 X 2 ⋮ X m ] X = \left[ \begin{matrix} x_{11} & x_{12} & \cdots & x_{1d} & 1 \\ x_{21} & x_{22} & \cdots & x_{2d} & 1 \\ \vdots & \vdots & \ddots & \vdots & \vdots \\ x_{m1} & x_{m2} & \cdots & x_{md} & 1 \\ \end{matrix} \right] = \left[ \begin{matrix} x_1^T & 1 \\ x_2^T & 1 \\ \vdots & \vdots \\ x_m^T & 1 \\ \end{matrix} \right] = \left[ \begin{matrix} X_1\\ X_2\\ \vdots \\ X_m\\ \end{matrix} \right] X= x11x21xm1x12x22xm2x1dx2dxmd111 = x1Tx2TxmT111 = X1X2Xm

所有样本点对应的真实值:
y = ( y 1 y 2 ⋮ y m ) y = \left( \begin{matrix} y_{1} \\ y_{2} \\ \vdots \\ y_{m} \\ \end{matrix} \right) y= y1y2ym
对于单个样本的预测值可以如下式子表示:
f ( x 1 ) = x 1 T ⋅ w + b = X 1 ⋅ w ^ f(x_1) = x_1^T · w + b = X_1·\hat{w} f(x1)=x1Tw+b=X1w^
所有样本的预测值可以如下式子表示:
f ( x ) = X w ^ f(x) = X\hat{w} f(x)=Xw^
因此多元情况下的差值函数也类似于单元,可以利用向量进行运算。
差 值 2 = ( y i − f ( x i ) ) 2 = ( y − X w ^ ) 2 = ( y − X w ^ ) T ( y − X w ^ ) 差值² = (y_i-f(x_i))^2 = (y-X\hat{w})^2=(y-X\hat{w})^T(y-X\hat{w}) 2=(yif(xi))2=(yXw^)2=(yXw^)T(yXw^)
利用最小二乘法来找到合适的w、b值
( w ∗ , b ∗ ) = w ^ ∗ = a r g m i n ( y − X w ^ ) T ( y − X w ^ ) (w^*,b^*)=\hat{w}^*=argmin(y-X\hat{w})^T(y-X\hat{w}) (w,b)=w^=argmin(yXw^)T(yXw^)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wo62c97U-1685858452108)(C:\Users\liyi0\AppData\Roaming\Typora\typora-user-images\image-20230602182938877.png)]

∂ E w ^ ∂ w ^ = 2 X T ( X w ^ − y ) \frac{\partial E_{\hat{w}}}{\partial \hat{w}} = 2X^T(X\hat{w}-y) w^Ew^=2XT(Xw^y)

w ^ ∗ = ( X T X ) − 1 X T y \hat{w}^* = (X^TX)^{-1}X^Ty w^=(XTX)1XTy

f ( x ^ i ) = X w ^ = x ^ i ( X T X ) − 1 X T y f(\hat{x}_i) = X\hat{w} = \hat{x}_i(X^TX)^{-1}X^Ty f(x^i)=Xw^=x^i(XTX)1XTy

阅读到这里我们要去思考一个问题,就是对于X^TX这个矩阵,它是否一定可逆呢?

答案是不一定的,因此可能在实际求解中,w有多个值,均可以使差值最小化。

拓展知识:
∂ ( x T A x ) ∂ x = A x + A T x ,其中 A 是常数矩阵 \frac{\partial (x^T A x)}{\partial x}=Ax+A^Tx,其中A是常数矩阵 x(xTAx)=Ax+ATx,其中A是常数矩阵

∂ ( x T α ) ∂ x = ∂ ( α T x ) ∂ x = α ,其中 a 为常数向量 \frac{\partial(x^T \alpha)}{\partial x}=\frac{\partial(\alpha^Tx)}{\partial x}=\alpha,其中a为常数向量 x(xTα)=x(αTx)=α,其中a为常数向量

广义线性模型

针对之前学习的线性回归模型思考几个问题:

  • x与y之间的变化不是线性的,存在非线性关系还可以像之前那样定义吗?
  • 预测数据和真实之间的差值不是常数,且随x变化,如何来界定呢?
  • 线性回归假设在因变量正态分布的前提上,导致因变量必须是连续的,若是离散值如何处理呢?

因此在原来线性回归的基础上又衍生出了种类繁多的线性类模型。

在线性回归基础上,在等号的左边或右边加上了一个函数,从而能够让模型更好的捕捉一般规律,此时该模型就被称为广义线性模型,该函数就被称为联系函数。
广义线性模型的提出初衷上还是为了解决非线性相关的预测问题。

y = g − 1 ( w T x + b ) 其中 g ( ⋅ ) 是联系函数 y = g^{-1}(w^Tx+b) 其中g(·)是联系函数 y=g1(wTx+b)其中g()是联系函数

实战解析(讲的很好)

逻辑回归模型(对数几率回归)

事先申明,虽然它叫逻辑“回归”,但是它的主要任务是进行二分类。

几率(odd)与对数几率

几率不是概率,而是一个事件发生与不发生的概率的比值。假设某件事发生的概率为p,则该件事不发生的概率为1-p,则该事件的几率:
o d d ( p ) = p 1 − p odd(p)=\frac{p}{1-p} odd(p)=1pp
在几率的基础上取e为底的对数,怎么这件事的对数几率(logit):
l o g i t ( p ) = l n p 1 − p logit(p)=ln\frac{p}{1-p} logit(p)=ln1pp
对数几率模型

如果我们将对数几率看成是一个函数,并将其作为联系函数,则该广义线性模型为:
g ( y ) = l n y 1 − y = w ^ T ⋅ x ^ g(y)=ln\frac{y}{1-y}=\hat w^T·\hat x g(y)=ln1yy=w^Tx^
可以将其反解出来:
在这里插入图片描述

我们将其抽象成数学公式的话,其实可以表示为:
f ( z ) = 1 1 + e − z f(z) =\frac{1}{1+e^{-z}} f(z)=1+ez1
那我们将这个图像绘制出来看看它的特性:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LblcXVZi-1685858452114)(C:\Users\liyi0\AppData\Roaming\Typora\typora-user-images\image-20230603112413160.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BPq9iCMi-1685858452116)(C:\Users\liyi0\AppData\Roaming\Typora\typora-user-images\image-20230603112455478.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IrcjbcRe-1685858452117)(C:\Users\liyi0\AppData\Roaming\Typora\typora-user-images\image-20230603225320507.png)]

读到这里大家可能会产生疑问:

  • 为什么非得探讨对数的情况?指数、绝对值情况不可以吗?

  • 为什么最后是sigmoid函数,不可以是其他的函数吗?

拓展了解广义线性回归

数学基础:伯努利分布、极大似然估计、高斯(正态)分布、梯度下降

引入了sigmoid函数,我们可以做什么?

我们假设有一个分类任务,我们要求出正例和反例各自的概率,不妨假设预测函数就是sigmoid函数,具体示例如下:
h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x θ = ( w ; b ) h_{\theta}(x)=g({\theta}^Tx)=\frac{1}{1+e^{{-\theta}^Tx}} \\ \theta = (w;b) hθ(x)=g(θTx)=1+eθTx1θ=(w;b)

正例: P ( y = 1 ∣ x ; θ ) = h θ ( x ) 反例: P ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) 整合: P ( y ∣ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) 1 − y 二分类任务 y 只取 0 , 1 正例:P(y=1|x;\theta)=h_{\theta}(x) \\ 反例:P(y=0|x;\theta)=1-h_{\theta}(x) \\ 整合:P(y|x;\theta)=(h_{\theta}(x))^y(1-h_{\theta}(x))^{1-y}\\ 二分类任务y只取0,1 正例:P(y=1∣x;θ)=hθ(x)反例:P(y=0∣x;θ)=1hθ(x)整合:P(yx;θ)=(hθ(x))y(1hθ(x))1y二分类任务y只取0,1

似然函数:
L ( θ ) = ∏ i = 1 m P ( y i ∣ x i ; θ ) = ∏ i = 1 m ( h θ ( x i ) ) y i ( 1 − h θ ( x i ) ) 1 − y i L(\theta)=\prod_{i=1}^mP(y_i|x_i;\theta) =\prod_{i=1}^m(h_{\theta}(x_i))^{y_i}(1-h_{\theta}(x_i))^{1-y_i} L(θ)=i=1mP(yixi;θ)=i=1m(hθ(xi))yi(1hθ(xi))1yi

概率的连乘会使最后数据过小无法有效计算,想办法消去连乘,便引进了对数似然函数:
l ( θ ) = l o g L ( θ ) = ∑ i = 1 m ( y i l o g h θ ( x i ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) ) l(\theta)=logL(\theta)=\sum_{i=1}^{m}(y_ilogh_\theta(x_i)+(1-y_i)log(1-h_\theta(x_i))) l(θ)=logL(θ)=i=1m(yiloghθ(xi)+(1yi)log(1hθ(xi)))
此时要求对数似然函数的最大值:但是求最大是一个梯度上升的问题,我们平常所熟悉的是梯度下降的问题,那就要进行问题的转化。
J ( θ ) = − 1 m l ( θ ) J(\theta)=- \frac{1}{m}l(\theta) J(θ)=m1l(θ)
利用梯度下降方法求出迭代方向(即导数值)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DlulRH3J-1685858452118)(C:\Users\liyi0\AppData\Roaming\Typora\typora-user-images\image-20230603225351181.png)]

x i j 表示第 i 个样本的第 j 个特征 x_i^j 表示第i个样本的第j个特征 xij表示第i个样本的第j个特征
参数更新:
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) x i j \theta_j :=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x_i)-y_i)x_i^j θj:=θjαm1i=1m(hθ(xi)yi)xij
这个式子中的α表示更新的步长(学习率),后面表示方向。方向乘以步长表示我要更新的内容

拓展:多分类的softmax

类别不平衡问题

什么时候需要去处理类别不平衡的问题:在这里插入图片描述

当一个样本中的“小类”比样本中的“大类”更为重要时才需要对类别不平衡进行处理。在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

推荐讲解:周志华老师西瓜书

本文为机器学习入门篇,暂时不对复杂问题进行探讨。对于中间提到的公式最好是手动推导!

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

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

相关文章

R:GAM非线性回归曲线拟合与散点密度图绘制

作者:CSDN @ _养乐多_ 本文将介绍使用R语言以及GAM模型,绘制回归曲线和散点密度图。 文章目录 一、R语言脚本二、色带一、R语言脚本 install.packages("ggpointdensity") install.packages("ggplot2") insta

问题解决:cmd中创建文件夹被拒绝访问。

问题: 在cmd中准备创建一个B盘node.js文件夹下的一个node_global文件被拒绝访问出错。 Microsoft Windows [版本 10.0.19045.2965] (c) Microsoft Corporation。保留所有权利。C:\Users\SueMagic>md B:\nodejs\node_global 拒绝访问。C:\Users\SueMagic>原因…

【分享】科大讯飞星火认知大模型(初体验)

前言: 哈喽,大家好,我是木易巷~ 随着人工智能技术的迅猛发展,自然语言处理(NLP)成为了热门话题。在众多NLP模型中,科大讯飞星火认知大模型成为了一个备受瞩目的新秀,今天我们来了解…

【MySQL】MySQL的事务原理和实现?

文章目录 MySQL事务的底层实现原理一、事务的目的可靠性和并发处理 二、实现事务功能的三个技术2.1 redo log 与 undo log介绍2.1.1 redo log2.1.2undo log 2.2 mysql锁技术2.2.1 mysql锁技术 2.3 MVCC基础 三、事务的实现3.1 原子性的实现3.1.1 undo log 的生成3.1.2 根据undo…

书单 | IPD的12本书

随着IPD(集成产品开发)在IBM、华为等企业取得了巨大的成功,IPD逐渐被人们所知晓。诸多实践证明,IPD既是一种先进思想,也是一种卓越的产品开发模式,随着人们对IPD认识和探索,未来将会被应用到更多…

Window的创建

Window的创建 上一篇说到了Window和WindowManager的关系并且讲述了WindowManager如何添加Window与Window内部的三个方法的实现 这篇主要讲几个常见的Window的创建比如Activity,Dialog和Toast 其中Activity属于应用Window Dialog属于子Window Toast属于系统Window z-order…

git工作流实践

常见分支命名 远程仓库的分支:主干分支master, 开发分支dev,发布分支release 个人开发分支:特性分支feature, 缺陷修改分支bugfix, 热更新分支 hotfix 一般工作流如下 创建个人本地开发分支: git checkout -b feat…

springboot+vue+elementui计算机专业课程选课管理系统vue

本系统的主要任务就是负责对学生选课。主要用户为老师、学生,其中,学生可对自己的信息进行查询,可以进行选课,也可以进行删除已选课程,教师可对学生和课程的信息进行查询,教师拥有所有的权限,可以添加删除学生信息。系统提供界面,操作简单。 为实现这些功能,系统一个…

JAVA之数组2

添加元素 从后往前进行迭代,最后在末尾插入元素 tip:为避免数字在覆盖过程中丢失,故从后往前覆盖 删除元素 从前往后迭代,最后将末尾赋值为0 tip: 以覆盖的数arr【i】为基准,构造循环 共同处Tip: 范围均为【index1&…

【网络协议详解】——DHCP系统协议(学习笔记)

目录 🕒 1. DHCP概述🕒 2. 工作过程🕒 3. DHCP的报文格式🕒 4. DHCP中继代理🕒 5. 实验:DHCP配置 🕒 1. DHCP概述 动态主机配置协议DHCP(Dynamic Host Configuration Protocol&…

SpringCloudAlibaba整合分布式事务Seata

文章目录 1 整合分布式事务Seata1.1 环境搭建1.1.1 Nacos搭建1.1.2 Seata搭建 1.2 项目搭建1.2.1 项目示意1.2.2 pom.xml1.2.2.1 alibaba-demo模块1.2.2.2 call模块1.2.2.3 order模块1.2.2.4 common模块 1.2.3 配置文件1.2.3.1 order模块1.2.3.2 call模块 1.2.4 OpenFeign调用1…

【C++】容器篇(四)—— queue的基本介绍以及模拟实现

前言: 在上期博文中我带大家对stack进行深入的学习,本期我将带领学习的是关于 queue的基本知识,并且还将给大家介绍并实现 priority_queue。接下来,让我们正式本期的内容。 目录 (一)queue的基本介绍 &…

Eclipse教程 Ⅵ

今天分享Eclipse Java 构建路径、Eclipse 运行配置(Run Configuration)和Eclipse 运行程序 Eclipse Java 构建路径 设置 Java 构建路径 Java构建路径用于在编译Java项目时找到依赖的类,包括以下几项: 源码包项目相关的 jar 包及类文件项目引用的的类…

83.响应式设计原则

什么是响应式设计? ● 使网页根据任何可能的屏幕尺寸(窗口或视口尺寸)调整其布局和视觉风格的设计技术。 ● 在实践中,这意味着响应式设计使网站可以在所有设备上使用,如台式电脑、平板电脑和手机。 ● 这是一套做法&…

LearnOpenGL-高级OpenGL-9.几何着色器

本人初学者,文中定有代码、术语等错误,欢迎指正 文章目录 几何着色器使用几何着色器造几个房子爆破物体法向量可视化 几何着色器 简介 在顶点和片段着色器之间有一个可选的几何着色器几何着色器的输入是一个图元(如点或三角形)的一…

Spark入门介绍

目录 一、Spark框架概述 1、Spark简介 2、发展 二、Spark功能及特点 1、定义

K8s进阶7——Sysdig、Falco、审计日志

文章目录 一、分析容器系统调用:Sysdig1.1. 安装1.2 常用参数1.3 采集分析1.4 示例1.4.1 查看某进程系统调用事件1.4.2 查看建立TCP连接事件1.4.3 查看某目录下打开的文件描述符1.4.4 查看容器的系统调用 1.5 Chisels工具1.5.1 网络类1.5.2 硬盘类1.5.3 cpu类1.5.4 …

奇舞周刊第493期:Hook 革命!浅谈 React 新 Hook 的未来与思想

关注前端生态发展,了解行业动向。 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ Hook 革命!浅谈 React 新 Hook 的未来与思想 作者阳羡曾写文章对 React 新 Hook use 的设计理念和限制进行了深入分析,并提供了一个可能的实现来帮助读者…

如何在 Alpine Linux 上启用或禁用防火墙?

防火墙是计算机网络安全的重要组成部分,它用于保护计算机和网络免受未经授权的访问和恶意攻击。Alpine Linux 是一种轻量级的 Linux 发行版,常用于构建容器化应用和嵌入式系统。本文将详细介绍如何在 Alpine Linux 上启用或禁用防火墙。步骤 1&#xff1…

Seata-Server安装

1.去哪下 发布说明: https://github.com/seata/seata/releases 2.怎么玩 本地**Transactional**全局**GlobalTransactional** 我们只需要使用一个 GlobalTransactional 注解在业务方法上: 3.Seata-Server安装 官网地址 3.1.版本0.9.0 seata-server-0.9.0.zip解压到指定目…