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

【学习笔记】Matlab和python双语言的学习(一元线性回归)

文章目录

  • 前言
  • 一、一元线性回归
    • 回归分析的一般步骤
    • 一元线性回归的基本形式
    • 回归方程
    • 参数的最小二乘法估计
    • 对回归方程的各种检验
      • 估计标准误差的计算
      • 回归直线的拟合优度
      • 判定系数
      • 显著性检验
  • 二、示例
  • 三、代码实现----Matlab
  • 四、代码实现----python
      • 回归系数的置信区间公式
      • 残差的置信区间公式
      • python代码
  • 总结


前言

通过模型算法,熟练对Matlab和python的应用。
学习视频链接:
https://www.bilibili.com/video/BV1EK41187QF?p=42&vd_source=67471d3a1b4f517b7a7964093e62f7e6

一、一元线性回归

  • 一元线性回归是一种统计方法,用于理解和建模两个变量之间的关系。具体来说,它是用来估计一个因变量 y y y 和一个自变量 x x x 之间线性关系的工具。其目标是找到一条直线,能够最好地预测 y y y 的值,基于给定的 x x x 值。这条直线通常被称为 “回归线” 。

回归分析的一般步骤

在这里插入图片描述

一元线性回归的基本形式

y = β 0 + β 1 x + ϵ y=\beta_0+\beta_1x+\epsilon y=β0+β1x+ϵ

  • y y y 是因变量(被解释变量)。
  • x x x 是自变量(解释变量)。
  • β 0 \beta_0 β0 是截距(当 x = 0 x = 0 x=0 时, y y y 的预测值)。
  • β 1 \beta_1 β1 是斜率(表示 x x x 每增加一个单位, y y y 变化的量)。
  • ϵ \epsilon ϵ 是误差项,表示因变量的实际值和预测值之间的差异。

回归方程

  • 描述因变量y的期望值如何依赖于自变量x的方程称为回归方程。根据对一元线性回归模型的假设,可以得到它的回归方程为:
    E ( y ) = β 0 + β 1 x E(y)=\beta_0+\beta_1x E(y)=β0+β1x
  • 如果回归方程中的参数已知,对于一个给定的x值,利用回归方程就能计算出y的期望值
  • 用样本统计量代替回归方程中的未知参数,就得到估计的回归方程,简称回归直线

参数的最小二乘法估计

  • 对于回归直线,关键在于求解参数,常用高斯提出的最小二乘法,它是使因变量的观察值 y y y 与估计值之间的离差平方和达到最小来求解的。
    Q = ∑ ( y − y ^ ) 2 = ∑ ( y − β ^ 0 − β ^ 1 x ) 2 Q=\sum(y-\hat{y} )^2=\sum(y-\hat{\beta}_0-\hat{\beta}_1x)^2 Q=(yy^)2=(yβ^0β^1x)2
    展开可得:
    Q = ∑ ( y − y ^ ) 2 = ∑ y 2 + n β ^ 0 2 + β ^ 1 2 ∑ x 2 + 2 β ^ 0 β ^ 1 ∑ x − 2 β ^ 0 ∑ y − 2 β ^ 1 ∑ x y Q=\sum(y-\hat{y})^{2}=\sum y^{2}+n\hat{\beta}_{0}^{2}+\hat{\beta}_{1}^{2}\sum x^{2}+2\hat{\beta}_{0}\:\hat{\beta}_{1}\sum x-2\hat{\beta}_{0}\:\sum y-2\hat{\beta}_{1}\sum xy Q=(yy^)2=y2+nβ^02+β^12x2+2β^0β^1x2β^0y2β^1xy
    求偏导可得:
    { ∑ y = n β ^ 0 + β ^ 1 Σ x ∑ x y = 2 β ^ 0 Σ x + β ^ 1 Σ x 2 \begin{cases}\sum y=n\hat{\beta}_0+\hat{\beta}_1\Sigma x\\\sum xy=2\hat{\beta}_0\Sigma x+\hat{\beta}_1\Sigma x^2\end{cases} {y=nβ^0+β^1Σxxy=2β^0Σx+β^1Σx2

{ β ^ 1 = n ∑ x y − ∑ x ∑ y n ∑ x 2 − ( ∑ x ) 2 β ^ 0 = y ˉ − β ^ 1 x ˉ \begin{cases}\hat{\beta}_1=\dfrac{n\sum xy-\sum x\sum y}{n\sum x^2-(\sum x)^2}\\\hat{\beta}_0=\bar{y}-\hat{\beta}_1\bar{x}\end{cases} β^1=nx2(x)2nxyxyβ^0=yˉβ^1xˉ

即可得到 β ^ 0 \hat{\beta}_0 β^0 β ^ 1 \hat{\beta}_1 β^1

对回归方程的各种检验

估计标准误差的计算

  • 为了度量回归方程的可靠性,通常计算估计标准误差,它度量观察值回绕着回归直线的变化程度或分散程度
  • 估计平均误差:
    S e = Σ ( y − y ^ ) 2 n − 2 S_e=\sqrt{\frac{\Sigma(y-\hat{y})^2}{n-2}} Se=n2Σ(yy^)2
  • 估计标准误差越大,则数据点围绕回归直线的分散程度就越大,回归方程代表性就越小
  • 估计标准误差越小,则数据点围绕回归直线的分散程度越小,回归方程的代表性越大,可靠性越高

回归直线的拟合优度

  • 回归直线与各观测点的接近程度称为回归直线对数据的拟合优度
    • 总平方和 (TSS):反映因变量的 n n n个观察值与其均值的总离差 T S S = ∑ y i 2 = ∑ ( y i − y ˉ i ) 2 TSS=\sum y_i^2=\sum(y_i-\bar{y}_i)^2 TSS=yi2=(yiyˉi)2
    • 回归平方和 (ESS):反映了 y y y 的总变差中,由于 x x x y y y 之间的线性关系引起的 y y y 的变化部分 E S S = ∑ y ^ i 2 = ∑ ( y ^ i − y ˉ i ) 2 ESS=\sum\hat{y}_i^2=\sum(\hat{y}_i-\bar{y}_i)^2 ESS=y^i2=(y^iyˉi)2
    • 残差平方和(RSS):反映了除了 x x x y y y的线性影响之外的其他因素对 y y y变差的作用,是不能由回归直线来解释的y的变差部分 R S S = ∑ e i 2 = ∑ ( y i − y ^ i ) 2 RSS=\sum e_i^2=\sum(y_i-\hat{y}_i)^2 RSS=ei2=(yiy^i)2
    • 总平方和可以分解为回归平方和、残差平方和两部分: T S S = E S S + R S S TSS=ESS+RSS TSS=ESS+RSS

判定系数

  • 回归平方和占总平方和的比例,用 R 2 R^2 R2 表示,其值在0到1之间
    • R 2 = 0 R^{2}=0 R2=0:说明 y y y 的变化与 x x x 无关, x x x 完全无助于解释 y y y 的变差
    • R 2 = 1 R^{2}=1 R2=1:说明残差平方和为0,拟合是完全的, y y y 的变化只与 x x x 有关

显著性检验

  • 显著性检验的主要目的是根据所建立的估计方程用自变量 x x x 来估计或预测因变量 y y y 的取值,当建立了估计方程后,还不能马上进行估计或预测,因为该估计方程是根据样本数据得到的,它是否真实的反映了变量 x x x y y y 之间的关系,则需要通过检验后才能证实。
  • 根据样本数据拟合回归方程时,实际上就已经假定变量 x x x ν \nu ν 之间存在着线性关系,并假定误差项是一个服从正态分布的随机变量,且具有相同的方差,但这些假设是否成立需要检验
  • 显著性检验包括两方面
    • 线性关系检验
    • 回归系数检验

线性关系检验

  1. 提出假设: H 0 : β 1 = 0 {H}_0:\mathcal{\beta}_1=0 H0:β1=0 两个变量之间的线性关系不显著
  2. 计算检验统计量F:
    F = E S S / 1 R S S / ( n − 2 ) = M S R M S E ∼ F ( 1 , n − 2 ) \mathrm{F}\:=\:\frac{\mathrm{ESS}/1}{\mathrm{RSS}/(\mathrm{n}-2)}\:=\:\frac{\mathrm{MSR}}{\mathrm{MSE}}\:\sim\:\mathrm{F}\:(1,\mathrm{n}-2) F=RSS/(n2)ESS/1=MSEMSRF(1,n2)
  3. 确定显著性水平 α \alpha α
  4. 作出决策:
    • F F F 分布:查找临界值 F α ( 1 , n − 2 ) {F} _\alpha ( 1,n-2) Fα(1,n2) 在F 分布表中的值
      • F > F α {F}>{F}_\alpha F>Fα,拒绝 H 0 {H}_0 H0 ,表明两个变量之间的线性关系是显著。
      • F < F a {F}<\mathcal{F}_a F<Fa,不拒绝 H 0 {H}_0 H0 ,没有证据表明两个变量之间的线性关系显著。
    • P P P 值(查表):
      • P < α {P}<\alpha P<α,拒绝 H 0 {H}_0 H0 ,表明两个变量之间的线性关系显著
      • P > α {P}>\alpha P>α ,不拒绝 H 0 {H}_0 H0,没有证据表明两个变量之间的线性关系显著。

回归系数检验
S β ^ 1 = S e ∑ x i 2 − 1 n ( ∑ x i ) 2 S e = ∑ ( y i − y ^ i ) 2 n − k − 1 = M S E S_{\widehat{\beta}_{1}}=\frac{S_{e}}{\sqrt{\sum x_{i}^{2}-\frac{1}{n}(\sum x_{i})^{2}}}\quad S_{e}=\sqrt{\frac{\sum(y_{i}-\hat{y}_{i})^{2}}{n-k-1}}=\sqrt{MSE} Sβ 1=xi2n1(xi)2 SeSe=nk1(yiy^i)2 =MSE

  1. 提出假设:

    • 两个变量之间的线性关系不显著 H 0 : β 1 = 0 {H}_0:\beta_1=0 H0β1=0
    • 两个变量之间的线性关系显著 H 1 : β 1 ≠ 0 {H}_1:\beta_1\neq0 H1β1=0
  2. 计算检验统计量 t t t
    t = β ^ 1 s β ^ 1 ∼ t ( n − 2 ) t=\frac{\widehat{\beta}_{1}}{s_{\widehat{\beta}_{1}}}\sim t(n-2) t=sβ 1β 1t(n2)

  3. 确定显著性水平 a a a

  4. 作出决策:

    • F F F 分布:查找临界值 t α / 2 ( n − 2 ) t_{\alpha / 2}( n- 2) tα/2(n2) F {F} F 分布表中的
      • t > t α / 2 \mathrm{~t>t}_{\alpha/2}  t>tα/2,拒绝 H 0 {H}_0 H0 ,回归系数等于 0 的可能性小于 α,表明两个变量之间的线性关系是显著的。
      • t < t α / 2 t< \mathrm{t}_{\alpha/2} t<tα/2,不拒绝 H 0 {H}_0 H0 ,没有证据表明两个变量之间的线性关系显著。
    • P P P 值:
      • P < α {P}<\alpha P<α ,拒绝 H 0 {H}_0 H0,表明两个变量之间的线性关系是显著的
      • P > α {P}>\alpha P>α,不拒绝 H 0 {H}_0 H0,二者不存在显著的线性关系。

二、示例

某团队测了16名成年女子的身高与腿长所得数据如下

在这里插入图片描述
分析身高和腿长的关系

三、代码实现----Matlab

% 1、输入数据
% 输入X的样本值
x=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164]'; 
% 插入\beta0对应列
X=[ones(16,1) x];
% 输入Y的样本值
Y=[88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102]';% 2、回归分析及检验:
[b,bint,r,rint,stats]=regress(Y,X);
% 输出我们需要的数据
b,bint,stats,rint,r
% 结果:
% b =
%   -16.0730
%     0.7194
% bint =
%   -33.7071    1.5612
%     0.6047    0.8340
% stats =
%     0.9282  180.9531    0.0000    1.7437
% 即β_0=-16.073 ,β_1=0.7194; 
% β_0 的置信区间为[-33.7017 ,1.5612],β_1 的置信区间为[0.6047 ,0.834]; 
% r_2=0.9282,F=180.9531,p=0.0000 
% 由p<0.05,可知回归模型 y=-16.073+0.7194x 成立% 3、残差分析,做残差图
rcoplot(r,rint)
% 从残差图可以看出,除第二个数据外,其余数据的残差离零点均较近,且残差的置信区间均包含零点,这说明回归模型
% y=-16.073+0.7194x能较好的符合原始数据,而第二个数据可视为异常点% 4、预测及作图
z=b(1)+b(2)*x 
plot(x,Y,'k+',x,z,'r')

运行结果:

残差图:
在这里插入图片描述

数据拟合图:
在这里插入图片描述
从运行结果可以发现,第二个数据异常。数据拟合程度较好。

四、代码实现----python

回归系数的置信区间公式

假设我们有一个简单的线性回归模型:
Y = β X + ϵ Y=\beta X + \epsilon Y=βX+ϵ
其中:

  • Y Y Y 是响应变量(因变量)向量。
  • X X X 是设计矩阵(自变量)矩阵。
  • β \beta β 是回归系数向量。
  • ϵ \epsilon ϵ 是误差项,假设其独立同分布,且符合正态分布 ϵ ∼ N ( 0 , σ 2 ) \epsilon\sim N(0,\sigma^{2}) ϵN(0,σ2)

回归系数的置信区间可以通过以下步骤计算:

  1. 估计回归系数 β ^ : \hat{\beta}: β^:
    β ^ = ( X T X ) − 1 X T Y \hat{\beta}=(X^TX)^{-1}X^TY β^=(XTX)1XTY
  2. 计算残差向量:
    r = Y − X β ^ r=Y-X\hat{\beta} r=YXβ^
  3. 计算均方误差(Mean Squared Error, MSE):
    M S E = r T r n − p \mathrm{MSE}=\frac{r^Tr}{n-p} MSE=nprTr
    其中 n n n是观测值的数量, p p p是回归系数的数量(包括截距项).
  4. 计算回归系数估计的标准误差
    S E ( β ^ ) = M S E ⋅ d i a g ( ( X T X ) − 1 ) \mathrm{SE}(\hat{\beta})=\sqrt{\mathrm{MSE}\cdot\mathrm{diag}((X^TX)^{-1})} SE(β^)=MSEdiag((XTX)1)
    这里 diag ⁡ ( ( X T X ) − 1 ) \operatorname{diag}((X^TX)^{-1}) diag((XTX)1) 表示矩阵 ( X T X ) − 1 (X^TX)^{-1} (XTX)1 的对角元素。
  5. 确定 t t t 分布的临界值 t α / 2 , n − p t_{\alpha/2,n-p} tα/2,np :
    根据所需的置信水平(例如 95%),从t分布表或使用统计函数(如 stats.t.ppf) 找到对应的临界值。

残差的置信区间公式

回归模型的残差向量 r r r 表示为:
r = Y − Y ^ = Y − X β ^ r=Y-\hat{Y}=Y-X\hat{\beta} r=YY^=YXβ^
残差的标准误差

残差的标准误差(Residual Standard Error, RSE) 可以通过以下公式计算:
R S E = ∑ r i 2 n − p \mathrm{RSE}=\sqrt{\frac{\sum r_i^2}{n-p}} RSE=npri2

其中:

  • n n n 是观测值的数量。
  • p p p 是回归系数的数量(包括截距项)。

残差的置信区间

残差的置信区间基于 t t t 分布,这意味看我们需要找到一个 t t t 统计量,该统计量依赖于给定的置信水平(例如 95% 置信区间) 和自由度(通常为 n − p n-p np) 。

残差 r i r_i ri 的置信区间可以表示为 r i ± t α / 2 , n − p ⋅ R S E r_i\pm t_{\alpha/2,n-p}\cdot\mathrm{RSE} ri±tα/2,npRSE
其中:

t α / 2 , n − p t_{\alpha/2,n-p} tα/2,np 是t分布在自由度 n − p n-p np 和显著水平 α \alpha α 下的临界值。

python代码

import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm
from scipy import statsfrom matplotlib.pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']   #设置字体
mpl.rcParams['axes.unicode_minus'] = False     # - 号设置# 1、输入数据
# 输入X的样本值
x = np.array([143, 145, 146, 147, 149, 150, 153, 154, 155, 156, 157, 158, 159, 160, 162, 164])
# 插入\beta0对应列
X = sm.add_constant(x)
# 输入Y的样本值
Y = np.array([88, 85, 88, 91, 92, 93, 93, 95, 96, 98, 97, 96, 98, 99, 100, 102])# 2、回归分析及检验
model = sm.OLS(Y, X)
results = model.fit()# 输出我们需要的数据
print("回归系数 (b):")
print(results.params)
print("\n回归系数的区间估计 (bint):")
print(results.conf_int())
print("\n模型统计信息 (stats):")
print("R-squared:", results.rsquared)
print("F-statistic:", results.fvalue)
print("p-value:", results.f_pvalue)
print("残差方差 (RMSE):", results.mse_resid)# 5. 预测
y_pred = results.predict(X)# 6. 计算残差
residuals = Y - y_pred# 获取回归系数
b = results.params
bint = results.conf_int()# 计算残差的置信区间
alpha = 0.05  # 95% 置信区间
n = len(residuals)
df = n - len(b)  # 自由度
t_value = stats.t.ppf(1 - alpha / 2, df)   # 找到 t 分布的分位点# 计算标准误差
s_err = np.sqrt(np.sum(residuals**2) / df)# 置信区间
rint = np.zeros((n, 2))
for i in range(n):rint[i, 0] = residuals[i] - t_value * s_err rint[i, 1] = residuals[i] + t_value * s_err# 7. 绘制残差图
plt.figure(figsize=(10, 6))
plt.scatter(range(n), residuals, color='blue', marker='o', label='Residuals')
plt.hlines(0, xmin=0, xmax=n, color='red', linewidth=2)
plt.plot(range(n), rint[:, 0], 'r_', label='Lower bound')
plt.plot(range(n), rint[:, 1], 'r_', label='Upper bound')
plt.xlabel('Observation')
plt.ylabel('Residuals')
plt.title('Residuals with Confidence Interval')
plt.legend()
plt.show()# 4、预测及作图
z = results.predict(X)
plt.scatter(x, Y, color='black', marker='+', label='实际数据')
plt.plot(x, z, color='red', label='拟合线')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()

运行结果:

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

总结

本文介绍了一元线性回归,详细介绍了 回归分析的一般步骤。分别使用matlab和python进行了算法的实现。

相关文章:

【学习笔记】Matlab和python双语言的学习(一元线性回归)

文章目录 前言一、一元线性回归回归分析的一般步骤一元线性回归的基本形式回归方程参数的最小二乘法估计对回归方程的各种检验估计标准误差的计算回归直线的拟合优度判定系数显著性检验 二、示例三、代码实现----Matlab四、代码实现----python回归系数的置信区间公式残差的置信…...

LeetCode //C - 316. Remove Duplicate Letters

316. Remove Duplicate Letters Given a string s, remove duplicate letters so that every letter appears once and only once. You must make sure your result is the smallest in lexicographical order among all possible results. Example 1: Input: s “bcabc”…...

【ARM+Codesys 客户案例 】RK3568/A40i/STM32+CODESYS在工厂自动化中的应用:PCB板焊接机

现代化生产中&#xff0c;电子元件通常会使用自动化设备来进行生产&#xff0c;例如像PCB&#xff08;印刷电路板&#xff09;的组装。但是生产过程中也会面临一些问题&#xff0c;类似于如何解决在PCB板上牢固、精准地安装各种组件呢&#xff1f;IBL Lttechnik GmbH公司的CM80…...

【二分查找】--- 初阶题目赏析

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 算法Joureny 上篇我们讲解了关于二分的朴素模板和边界模板&#xff0c;本篇博客我们试着运用这些模板。 &#x1f3e0; 搜索插入位置 &#x1f4cc; 题目…...

【PostgreSQL003】PostgreSQL数据表空间膨胀,磁盘爆满,应用宕机(经验总结,已更新)

1.一直以来想写下基于PostgreSQL的系列文章&#xff0c;作为较火的数据ETL工具&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下PostgreSQL数据库相关知识体系。空间膨胀&#xff08;主键、外键、…...

C语言第20天笔记

文件操作 概述 什么是 文件 文件时保存在外存储器上&#xff08;一般代指磁盘&#xff0c;也可以是U盘、移动硬盘等&#xff09;的数据的集合。 文件操作体现在哪几个方面 1. 文件内容的读取 2. 文件内容的写入 数据的读取和写入可被视为针对文件进行输入和输出的操作&a…...

为什么穷大方

为什么有些人明明很穷&#xff0c;却非常的大方呢&#xff1f; 因为他们认知太低&#xff0c;根本不懂钱的重要性&#xff0c;总是想着及时享乐&#xff0c;所以一年到头也存不了什么钱。等到家人孩子需要用钱的时候&#xff0c;什么也拿不出来&#xff0c;还到处去求人。 而真…...

HiveSQL实战——大数据开发面试高频SQL题

查询每个区域的男女用户数 0 问题描述 每个区域内男生、女生分别有多少个 1 数据准备 use wxthive; create table t1_stu_table (id int,name string,class string,sex string ); insert overwrite table t1_stu_table values(4,张文华,二区,男),(3,李思雨,一区,女),(1…...

RabbitMQ集群 - 普通集群搭建、宕机情况

文章目录 RabbitMQ 普通集群概述集群搭建数据准备启动容器宕机情况 RabbitMQ 普通集群 概述 1&#xff09;普通模式中所有节点没有主从之分&#xff0c;所有节点的元数据&#xff08;交换机、队列、绑定等&#xff09;都是一致的. 例如只要有任意一个节点上面 新增交换机&…...

xssDOM型练习

文章目录 例1要求 例2代码解析方法 例3例4例5例6例7例8 例1 本题通过get接收并传递参数&#xff0c;所有参数不经过过滤直接放入h2标签里面。 要求 1.需要页面弹出1337 2.不能与用户交互 官方认为innerHTML中script标签不安全&#xff0c;所以将其禁用&#xff0c;但只禁用了…...

python中的gradio使用麦克风时报错

python中的gradio使用麦克风时报错 当运行至 import gradio as gr with gr.Blocks() as demo:with gr.Tab("microphone transcriber"):gr.Audio(source"microphone", type"numpy", streamingTrue)demo.queue()##访问链接 https://ip:1235/demo…...

Oracle(63)什么是临时表(Temporary Table)?

临时表&#xff08;Temporary Table&#xff09;是一种特殊类型的表&#xff0c;用于存储临时数据&#xff0c;这些数据在会话期间或事务期间是短暂的。临时表在不同的数据库系统中都有实现&#xff0c;但功能和特性可能有所不同。临时表通常用于存储中间计算结果、临时数据处理…...

《Techporters架构搭建》-Day06 国际化

什么是国际化&#xff1f; 国际化&#xff0c;也叫i18n&#xff0c;为什么叫i18n呢&#xff1f; "i18n"是国际化&#xff08;internationalization&#xff09;的缩写&#xff0c;数字18代表了国际化这个单词中间的字母数量。类似这样的缩写还有k8s&#xff08;kube…...

Linux ACL 访问控制

今天给伙伴们分享一下Linux ACL 访问控制&#xff0c;希望看了有所收获。 我是公众号「想吃西红柿」「云原生运维实战派」作者&#xff0c;对云原生运维感兴趣&#xff0c;也保持时刻学习&#xff0c;后续会分享工作中用到的运维技术&#xff0c;在运维的路上得到支持和共同进步…...

hg transformers pipeline使用

什么是hg transformers pipeline? 在Hugging Face的transformers库中&#xff0c;pipeline是一个高级API&#xff0c;它提供了一种简便的方式来使用预训练模型进行各种NLP任务&#xff0c;比如情感分析、文本生成、翻译、问答等。通过pipeline&#xff0c;你可以在几行代码内…...

高性能内存对象缓存

Memcached概述 一套开源的高性能分布式内存对象缓存系统 所有的数据都存储在内存中 支持任意存储类型的数据 提高网站的访问速度 数据存储方式与数据过期方式 数据存储方式:Slab Allocation 按组分配内存&#xff0c;每次先分配一个Slab&#xff0c;相当于一个大小为1M的页&…...

文件上传-CMS文件上传分析

黑盒思路&#xff1a; 上传点抓包测试 个人用户中心是否存在文件上传功能后台管理系统是否存在文件上传功能字典目录扫描探针文件&#xff08;eg&#xff1a;upload.php&#xff09;构造地址字典目录扫描探针编辑器目录构造地址&#xff08;编辑器目录一般是默认的&#xff09…...

云原生日志Loki

1. Loki简介 1.1 Loki介绍 Loki是 Grafana Labs 团队最新的开源项目&#xff0c;是一个水平可扩展&#xff0c;高可用性&#xff0c;多租户的日志聚合系统。它的设计非常经济高效且易于操作&#xff0c;因为它不会为日志内容编制索引&#xff0c;而是为每个日志流编制一组标签…...

初阶数据结构之直接选择排序和快速排序

直接选择排序 1.在元素集合 array[i]–array[n-1] 中选择关键码最⼤(⼩)的数据元素 2.若它不是这组元素中的最后⼀个(第⼀个)元素&#xff0c;则将它与这组元素中的最后⼀个&#xff08;第⼀个&#xff09;元素 交换 3.在剩余的 array[i]–array[n-2]&#xff08;array[i1]–…...

Java语言程序设计——篇十三(4)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

DAY 26 函数专题1

函数定义与参数知识点回顾&#xff1a;1. 函数的定义2. 变量作用域&#xff1a;局部变量和全局变量3. 函数的参数类型&#xff1a;位置参数、默认参数、不定参数4. 传递参数的手段&#xff1a;关键词参数5 题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一…...