【机器学习:八、逻辑回归】
逻辑回归(Logistic Regression)
1. 逻辑回归的引出
在现实世界中,许多问题都涉及到分类任务。例如:
- 判断一封邮件是否为垃圾邮件;
- 预测某人是否会患某种疾病;
- 确定图片中是否包含某种特定物体。
这些问题的输出通常是离散的(例如“是/否”或“0/1”)。传统的线性回归虽然适合连续输出的任务,但无法直接处理分类问题。因此,我们需要一种适合分类任务的模型,这便引出了逻辑回归(Logistic Regression)。
逻辑回归是一种适用于二分类和扩展到多分类任务的模型,其核心思想是通过引入逻辑函数(Logistic Function),将线性模型的输出映射到概率空间,使模型能够解决分类问题。
2. 逻辑回归的背景与意义
背景
逻辑回归最初起源于生物统计学领域,用于描述事件的发生概率。例如:
- 一种药物的有效性(有效/无效);
- 生物体存活的概率。
随着机器学习的普及,逻辑回归成为了分类任务中的经典算法之一,被广泛应用于各个领域。
意义
- 简单易实现:逻辑回归模型具有明确的数学定义,训练过程高效,易于实现。
- 可解释性强:逻辑回归的系数能够直观解释特征对分类的影响。
- 广泛适用性:适用于许多需要概率输出的分类任务,如医学诊断、信用评分等。
- 构造基础模型:逻辑回归常作为复杂模型的基石,例如神经网络。
3. 逻辑回归的定义
逻辑回归是一种概率模型,用于预测某事件发生的概率 P ( y = 1 ∣ x ) P(y=1|x) P(y=1∣x) 。其核心思想是将输入特征通过线性模型映射到一个实数值,再通过Sigmoid函数将其压缩到 [ 0 , 1 ] [0, 1] [0,1] 区间,表示为概率。
模型公式
- 线性模型:
z = θ T x = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n z = \theta^T x = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \dots + \theta_n x_n z=θTx=θ0+θ1x1+θ2x2+⋯+θnxn
其中:
- x x x 是输入特征向量;
- θ \theta θ 是模型参数(权重和偏置)。
- Sigmoid函数:
h θ ( x ) = 1 1 + e − z h_\theta(x) = \frac{1}{1 + e^{-z}} hθ(x)=1+e−z1
Sigmoid函数的性质:
- 当 z → + ∞ z \to +\infty z→+∞ , h θ ( x ) → 1 h_\theta(x) \to 1 hθ(x)→1 ;
- 当 z → − ∞ z \to -\infty z→−∞ , h θ ( x ) → 0 h_\theta(x) \to 0 hθ(x)→0 。
- 预测概率:
P ( y = 1 ∣ x ) = h θ ( x ) , P ( y = 0 ∣ x ) = 1 − h θ ( x ) P(y=1|x) = h_\theta(x), \quad P(y=0|x) = 1 - h_\theta(x) P(y=1∣x)=hθ(x),P(y=0∣x)=1−hθ(x)
- 分类决策: 设定阈值 α \alpha α ,一般取 α = 0.5 \alpha = 0.5 α=0.5 :
y = { 1 if h θ ( x ) ≥ α 0 if h θ ( x ) < α y = \begin{cases} 1 & \text{if } h_\theta(x) \geq \alpha \\ 0 & \text{if } h_\theta(x) < \alpha \end{cases} y={10if hθ(x)≥αif hθ(x)<α
可视化图示
- Sigmoid函数图:展示输入 z z z 映射到概率 h θ ( x ) h_\theta(x) hθ(x) 的曲线(从 -6 到 6 的 S 型函数)。
4. 逻辑回归的代价函数
4.1 为什么不能直接使用均方误差作为代价函数?
在线性回归中,我们使用均方误差(MSE)作为代价函数:
J ( θ ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta) = \frac{1}{m} \sum_{i=1}^m \left( h_\theta(x^{(i)}) - y^{(i)} \right)^2 J(θ)=m1i=1∑m(hθ(x(i))−y(i))2
但是,在逻辑回归中,使用 MSE 存在两个问题:
- 非凸性问题:MSE 会导致代价函数变为非凸函数,梯度下降可能无法找到全局最优解。
- 不符合概率模型的假设:逻辑回归是基于最大似然估计的,而 MSE 不满足这种统计假设。
4.2 交叉熵损失函数(Cross-Entropy Loss)
逻辑回归采用交叉熵作为代价函数,它基于最大似然估计:
J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) ] J(\theta) = -\frac{1}{m} \sum_{i=1}^m \left[ y^{(i)} \log h_\theta(x^{(i)}) + \left(1 - y^{(i)}\right) \log \left(1 - h_\theta(x^{(i)})\right) \right] J(θ)=−m1i=1∑m[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]
- 当 y = 1 y = 1 y=1 :代价为 − log h θ ( x ) -\log h_\theta(x) −loghθ(x) ,即模型预测的概率 h θ ( x ) h_\theta(x) hθ(x) 越接近 1,损失越小;
- 当 y = 0 y = 0 y=0 :代价为 − log ( 1 − h θ ( x ) ) -\log \left(1 - h_\theta(x)\right) −log(1−hθ(x)) ,即模型预测的概率 h θ ( x ) h_\theta(x) hθ(x) 越接近 0,损失越小。
可视化图示
- 损失函数曲线:分别展示 y = 1 y=1 y=1 和 y = 0 y=0 y=0 的损失随 h θ ( x ) h_\theta(x) hθ(x) 变化的曲线。
4.3 代价函数的性质
- 凸函数:交叉熵损失是一个凸函数,便于梯度下降找到全局最优解。
- 偏导数公式:
∂ J ( θ ) ∂ θ j = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial J(\theta)}{\partial \theta_j} = \frac{1}{m} \sum_{i=1}^m \left( h_\theta(x^{(i)}) - y^{(i)} \right) x_j^{(i)} ∂θj∂J(θ)=m1i=1∑m(hθ(x(i))−y(i))xj(i)
这与线性回归的梯度更新公式形式类似,只是误差的定义不同。
5.逻辑回归的梯度下降法
梯度下降是逻辑回归模型训练中常用的优化算法,用于通过最小化代价函数来寻找模型参数 θ \theta θ 。以下是逻辑回归中梯度下降的具体过程:
5.1 梯度下降的目标
逻辑回归的目标是最小化代价函数 J ( θ ) J(\theta) J(θ) ,通常使用交叉熵损失函数:
J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) ] J(\theta) = -\frac{1}{m} \sum_{i=1}^m \left[ y^{(i)} \log h_\theta(x^{(i)}) + (1 - y^{(i)}) \log \left(1 - h_\theta(x^{(i)})\right) \right] J(θ)=−m1i=1∑m[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]
其中:
- m m m 是样本数量;
- h θ ( x ) = 1 1 + e − θ T x h_\theta(x) = \frac{1}{1 + e^{-\theta^T x}} hθ(x)=1+e−θTx1 是 Sigmoid 函数的输出;
- y ( i ) ∈ { 0 , 1 } y^{(i)} \in \{0, 1\} y(i)∈{0,1} 是样本的真实标签。
梯度下降通过迭代更新参数 θ \theta θ 来逐步减小代价函数值。
5.2 梯度下降公式
2.1 代价函数的梯度
代价函数对参数 θ j \theta_j θj 的偏导数为:
∂ J ( θ ) ∂ θ j = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial J(\theta)}{\partial \theta_j} = \frac{1}{m} \sum_{i=1}^m \left( h_\theta(x^{(i)}) - y^{(i)} \right) x_j^{(i)} ∂θj∂J(θ)=m1i=1∑m(hθ(x(i))−y(i))xj(i)
- h θ ( x ( i ) ) − y ( i ) h_\theta(x^{(i)}) - y^{(i)} hθ(x(i))−y(i) 是预测值与真实值的误差;
- x j ( i ) x_j^{(i)} xj(i) 是第 i i i 个样本的第 j j j 个特征值。
2.2 参数更新公式
梯度下降的更新公式为:
θ j : = θ j − α ⋅ ∂ J ( θ ) ∂ θ j \theta_j := \theta_j - \alpha \cdot \frac{\partial J(\theta)}{\partial \theta_j} θj:=θj−α⋅∂θj∂J(θ)
- α \alpha α 是学习率(控制更新步伐的大小);
- θ j \theta_j θj 是模型的参数。
将偏导数代入更新公式,得到:
θ j : = θ j − α m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j := \theta_j - \frac{\alpha}{m} \sum_{i=1}^m \left( h_\theta(x^{(i)}) - y^{(i)} \right) x_j^{(i)} θj:=θj−mαi=1∑m(hθ(x(i))−y(i))xj(i)
这个公式表明,梯度下降的每次更新都依赖于样本预测值与真实值的误差。
5.3 梯度下降的具体步骤
-
初始化参数: 通常将所有参数 θ j \theta_j θj 初始化为零或随机小值。
-
计算预测值: 使用当前参数计算每个样本的预测值:
h θ ( x ( i ) ) = 1 1 + e − θ T x ( i ) h_\theta(x^{(i)}) = \frac{1}{1 + e^{-\theta^T x^{(i)}}} hθ(x(i))=1+e−θTx(i)1
-
计算代价函数: 计算当前参数下的代价函数值 J ( θ ) J(\theta) J(θ) ,以评估模型性能。
-
更新参数: 根据梯度下降公式更新参数 θ j \theta_j θj 。
-
检查收敛条件: 如果代价函数的值不再显著下降(或变化量小于某个阈值),或达到最大迭代次数,则停止迭代。
5.4 梯度下降的几种变体
-
批量梯度下降(Batch Gradient Descent):
- 每次迭代使用所有样本计算梯度。
- 优点:梯度估计准确。
- 缺点:当数据量很大时,计算代价较高。
-
随机梯度下降(Stochastic Gradient Descent, SGD):
- 每次迭代仅使用一个样本计算梯度。
- 优点:计算效率高,适合大规模数据。
- 缺点:更新过程不稳定,可能震荡于最优解附近。
-
小批量梯度下降(Mini-batch Gradient Descent):
- 每次迭代使用一个小批量(例如 32 个样本)计算梯度。
- 优点:结合了批量梯度下降和随机梯度下降的优点,更新稳定且效率较高。
5.5 学习率的影响
- 学习率 α \alpha α 的大小对梯度下降的效果至关重要:
- 学习率过大:更新步伐过快,可能导致错过最优解甚至发散。
- 学习率过小:更新步伐过慢,收敛速度过慢。
学习率影响的可视化图示
- 学习率过大:代价函数的值震荡,甚至发散。
- 学习率适中:代价函数值平稳下降,快速收敛。
- 学习率过小:代价函数值下降缓慢。
5.6 梯度下降的优缺点
优点
- 简单易实现;
- 可扩展到大规模数据集;
- 支持在线学习。
缺点
- 对学习率敏感,需仔细调节;
- 容易陷入局部最优(对于非凸问题);
- 可能收敛到平坦区域(即梯度很小但未达到最优解)。
5.7 梯度下降的改进方法
-
自适应学习率:
- AdaGrad、RMSProp:自动调整学习率,适应不同梯度大小。
- Adam:结合动量法和 RMSProp,收敛更快且稳定。
-
加动量(Momentum):
- 在每次更新中加入历史梯度的动量,加速收敛过程。
-
正则化:
- 添加正则化项(如 L 1 L1 L1 或 L 2 L2 L2 ),以防止过拟合。
5.8 总结
逻辑回归的梯度下降法通过不断更新模型参数,优化交叉熵损失函数,是一种高效且经典的优化算法。结合不同的梯度下降变体和改进方法,可以提升训练效率和模型性能,使其适应各种规模和复杂度的数据集。
6. 逻辑回归的扩展
- 多分类问题:通过 Softmax 函数扩展逻辑回归至多分类任务。
- 正则化:加入 L 1 L1 L1 或 L 2 L2 L2 正则化项,防止过拟合。
- 模型评估:使用准确率、精确率、召回率、F1分数等指标评估模型性能。
7. 逻辑回归的总结
逻辑回归是机器学习中经典的分类算法,因其简单、可解释性强而被广泛应用。尽管随着深度学习的兴起,复杂模型逐渐成为主流,但逻辑回归仍然是理解分类问题的基础模型,是许多复杂模型的重要组成部分。
相关文章:
【机器学习:八、逻辑回归】
逻辑回归(Logistic Regression) 1. 逻辑回归的引出 在现实世界中,许多问题都涉及到分类任务。例如: 判断一封邮件是否为垃圾邮件;预测某人是否会患某种疾病;确定图片中是否包含某种特定物体。 这些问题…...
uniapp使用sm4加密
安装:npm install sm-crypto --save 1、在utils下新建crypto.js文件 // sm4 加密 export function encryption(params) {const SM4 require("sm-crypto").sm4const key 0123456789abcdeffedcba9876543212; // 提供的密钥const iv fedcba9876543210012…...
【STM32-学习笔记-1-】GPIO
文章目录 GPIOⅠ、GPIO函数Ⅱ、GPIO_InitTypeDef结构体参数①、GPIO_Mode②、GPIO_Pin③、GPIO_Speed GPIO Ⅰ、GPIO函数 // 将指定的GPIO端口寄存器重置为默认值 void GPIO_DeInit(GPIO_TypeDef* GPIOx);// 将GPIO的备用功能寄存器重置为默认值 void GPIO_AFIODeInit(void);…...
C#中的运算符和类--06
目录 一.运算符 1.赋值运算符 2.算数运算符 3.关系运算符 4.逻辑运算符 5.位运算符 6.三元运算符 7.空合并运算符 8.其他运算符 二.类 1.普通类 2.静态类 3.抽象类 4.密封类 5.部分类 6.泛型类 7.嵌套类 8.记录类 9.接口 一.运算符 1.赋值运算符 定义:赋值…...
【微服务】面试 2、服务雪崩
服务雪崩概念 主要内容:在微服务项目中,微服务间存在远程调用。若某一服务(如服务 d)出现故障,调用它的服务(如服务 a)会失败。若调用方持续向故障服务发起请求,由于服务连接数有限且…...
“深入浅出”系列之QT:(6)如何在一个项目中调用另一个项目
在Qt中,如果想在一个项目中调用另一个项目,这通常意味着想要在一个CMake构建的项目中集成或依赖另一个CMake构建的项目。 1.子模块或子目录方式: 如果另一个项目可以作为一个子模块或子目录包含在当前项目中,可以使用add_sub…...
计算机网络—地址与子网(IPv4)相关知识总结
前言 为了更加清楚的了解该相关知识,下面是发现的一些宝藏博主的博客。 彻底搞懂网络地址、广播地址、主机地址、网关、子网掩码、网络号、主机号 - lipga - 博客园 IP地址(分类)、子网掩码、网络号、主机号、子网号_网络号,主机号,子网号…...
计算机网络 (36)TCP可靠传输的实现
前言 TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP通过多种机制实现可靠传输,这些机制主要包括连接管理、序列号和确认应答机制、重传机制、流量控制、拥塞控制等。 一、连接管理 TCP使用三次握手࿰…...
SQL从入门到实战-2
高级语句 窗口函数 排序窗口函数 例题二十九 select yr,party,votes, rank() over (PARTITION BY yr ORDER BY votes desc) as pson from ge where constituency S14000021 order by party,yr 偏移分析函数 例题三十 select name,date_format(whn,%Y-%m-%d) data, confi…...
基于python的网页表格数据下载--转excel
基于 Python 的网页表格数据爬取与下载:以维基百科为例 目录 基于 Python 的网页表格数据爬取与下载:以维基百科为例1. 背景介绍2. 工具与环境3. 操作步骤1. 获取网页内容2. 定位表格元素3. 表格变身 Pandas DataFrame4. 检查数据,收工!5. 进阶玩法与优化6. 完整代码4. 结果…...
用户界面的UML建模13
􀂄 Concrete Presentation Model 包中所包含的是,在Environment 包中与表示层框架模式中的《apm》类相对应的那些类。 8 结论 本文使用了一个图书馆系统的案例,来论述了关于用户界面的建模。通过使用统一建模语言来对应用系统进行建模&…...
[Python学习日记-75] 计算机基础与网络
[Python学习日记-75] 计算机基础与网络 简介 计算机基础 什么是网络编程 计算机网络 简介 本篇主要介绍的计算机基础是浓缩的,这是因为我们主要学习的是 Python,而 Python 主要是为了开发应用程序的,并不会用它来开发操作系统和嵌入式程序…...
【机器学习:六、特征工程】
1. 特征工程背景意义 在机器学习中,特征工程是模型成功的关键之一。无论算法多么先进,其性能都很大程度上依赖于输入数据的质量。特征工程是指对原始数据进行处理,以创建更适合算法的特征的过程。这一过程在以下方面具有重要意义:…...
webpack打包要义
webpack基本 Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具。它的工作原理可以概括为以下几个核心步骤: 1. 入口起点(Entry) Webpack 从配置文件中指定的入口文件(Entry Point)开始,分析应用…...
Mybatis——Mybatis开发经验总结
摘要 本文主要介绍了MyBatis框架的设计与通用性,阐述了其作为Java持久化框架的亮点,包括精良的架构设计、丰富的扩展点以及易用性和可靠性。同时,对比了常见持久层框架,分析了MyBatis在关系型数据库交互中的优势。此外࿰…...
013:深度学习之神经网络
本文为合集收录,欢迎查看合集/专栏链接进行全部合集的系统学习。 合集完整版请参考这里。 深度学习是机器学习中重要的一个学科分支,它的特点就在于需要构建多层且“深度”的神经网络。 人们在探索人工智能初期,就曾设想构建一个用数学方式…...
Java 模板变量替换——字符串替换器(思路Mybatis的GenericTokenParser)
Java 模板变量替换——字符串替换器(思路Mybatis的GenericTokenParser) 思路字符串替换器 思路 模板变量替换无非是寻找出字符串(模板)中的特殊标记,用对应的变量进行字符串替换。 提到变量替换,大家第一能…...
蓝桥杯备考:数据结构之栈 和 stack
目录 栈的概念以及栈的实现 STL 的stack 栈和stack的算法题 栈的模板题 栈的算法题之有效的括号 验证栈序列 后缀表达式 括号匹配 栈的概念以及栈的实现 栈是一种只允许在一端进行插入和删除的线性表 空栈:没有任何元素 入栈:插入元素消息 出…...
Lambda离线实时分治架构深度解析与实战
一、引言 在大数据技术日新月异的今天,Lambda架构作为一种经典的数据处理模型,在应对大规模数据应用方面展现出了强大的能力。它整合了离线批处理和实时流处理,为需要同时处理批量和实时数据的应用场景提供了成熟的解决方案。本文将对Lambda…...
Vue.js组件开发,AI时代的前端新玩法
AI可不只是写写小说、聊聊天,现在它的触角已经伸到了程序员的代码世界里。特别是前端开发,很多人都在尝试用ChatGPT或者类似的AI工具来写代码,甚至直接生成Vue.js组件。有些人感叹,"写代码的时代是不是要结束了?&…...
标定 3
标定场景与对应的方式 标定板标定主要应用场景: (1)无法获取到执行机构物理坐标值,比如相机固定,执行机构为传送带等 (2)相机存在畸变等非线性标定情况,需要进行畸变校正 (3)标定单像素精度 (4)获取两个相机之间的坐标系关系 标定板操作步骤: (1)确定好拍…...
电商项目-基于ElasticSearch实现商品搜索功能(三)
本系列文章主要介绍基于 Spring Data Elasticsearch 实现商品搜索的后端代码,介绍代码逻辑和代码实现。 主要实现功能:根据搜索关键字查询、条件筛选、规格过滤、价格区间搜索、搜索查询分页、搜索查询排序、高亮查询。 主要应用技术:canal,…...
【51单片机】03 蜂鸣器-播放音乐
蜂鸣器-播放音乐 一、原理介绍1.硬件电路 二、练习1.让蜂鸣器发声2.尝试演奏小星星 一、原理介绍 蜂鸣器分为有源蜂鸣器、无源蜂鸣器两种。 有源蜂鸣器:施加合适的电压之后就会发出特定频率的声音 无源蜂鸣器:需要提供特定频率的声音信号,才能…...
MySQL 架构
MySQL架构 MySQL8.0服务器是由连接池、服务管理⼯具和公共组件、NoSQL接⼝、SQL接⼝、解析器、优化 器、缓存、存储引擎、⽂件系统组成。MySQL还为各种编程语⾔提供了⼀套⽤于外部程序访问服务器的连接器。整体架构图如下所⽰: MySQL Connectors:为使⽤…...
XML 解析器:深入解析与高效应用
XML 解析器:深入解析与高效应用 引言 XML(可扩展标记语言)作为一种重要的数据交换格式,被广泛应用于各种系统和平台中。为了有效地处理和解析XML数据,XML解析器发挥着至关重要的作用。本文将深入探讨XML解析器的原理…...
LabVIEW设计 IIR 滤波器
这是一个设计 IIR 滤波器的 LabVIEW 程序框图,其功能主要是用于设计滤波器并计算其频率响应,但它并不直接对输入的波形进行实时滤波,而是提供一个滤波器的频率响应分析工具。 以下是框图中各部分的详细解释: 1. 主要模块功能说明 …...
基于改进粒子群优化的无人机最优能耗路径规划
目录 1. Introduction2. Preliminaries2.1. Particle Swarm Optimization Algorithm2.2. Deep Deterministic Policy Gradient2.3. Calculation of the Total Output Power of the Quadcopter Battery 3.OptimalEnergyConsumptionPathPlanningBasedonPSO-DDPG3.1.ProblemModell…...
AI刷题-数列推进计算任务、数组中的幸运数问题
目录 一、数列推进计算任务 问题描述 测试样例 解题思路: 问题理解 数据结构选择 算法步骤 优化思路 最终代码: 运行结果: 二、数组中的幸运数问题 问题描述 测试样例 解题思路: 问题理解 数据结构选择 算法步…...
微服务的配置共享
1.什么是微服务的配置共享 微服务架构中,配置共享是一个重要环节,它有助于提升服务间的协同效率和数据一致性。以下是对微服务配置共享的详细阐述: 1.1.配置共享的概念 配置共享是指在微服务架构中,将某些通用或全局的配置信息…...
【计算机网络】窥探计网全貌:说说计算机网络体系结构?
标签难度考察频率综合题⭐⭐⭐60% 这个问题在计算机网络知识体系中是一个比较重要的问题,只有完整地了解计算机网络的体系结构才能清晰地认识网络的运行原理。 在回答这个问题时,笔者认为有几个比较重要的点: 首先一定要分清楚前置条件&am…...
【MySQL】DATEDIFF()函数使用
DATEDIFF 函数用于计算两个日期之间的差值,以天为单位 DATEDIFF 函数返回一个整数,表示 date1 和 date2 之间的天数。如果 date1 在 date2 之前,结果为负数;如果在 date2 之后,结果为正数;如果相等…...
计算机网络学习笔记
第1课 绪论、传输介质 【知识点回顾】 两种导线可以减小电磁干扰: 双绞线(分为非屏蔽双绞线、屏蔽双绞线)(RJ-45用)同轴电缆(短距离使用)网络通信的基本单位:位(bit&…...
Spring Boot性能提升的核武器,速度提升500%!
虚拟线程是 Java 21 引入的一个新特性,用于简化并发编程。它与传统的操作系统线程相比,具有显著的优势: 轻量级:虚拟线程由 JVM 管理,而非操作系统,因此它们的内存占用和创建成本远低于传统线程。理论上&am…...
zig 安装,Hello World 示例
1. 安装 Zig 首先,你需要在你的计算机上安装 Zig 编译器。你可以从 Zig 官方网站 下载适合你操作系统的版本。 安装完成后,你可以在终端中运行以下命令来检查 Zig 是否安装成功: zig version如果一切正常,它会显示 Zig 的版本信…...
【数据库系统概论】第5章 数据库完整性【!触发器】
目录 5.1数据库完整性概述 5.2 实体完整性 5.3 参照完整性 5.4 用户定义的完整性 属性上的约束 1. 列值非空(NOT NULL) 2. 列值唯一(UNIQUE) 3. 检查列值是否满足条件(CHECK) 元组上的约束 5.5 完…...
Linux中通过frp实现内网穿透
1、准备工作 准备一台公网服务器(云服务器),推荐阿里云或者腾讯云都可以 需要下载好frp安装包Linux端的和Windows端的安装包 网址:Releases fatedier/frp (github.com)https://github.com/fatedier/frp/releases 2、下载frp_0…...
Vscode辅助编码AI神器continue插件
案例效果 1、安装或者更新vscode 有些版本的vscode不支持continue,最好更新到最新版,也可以直接官网下载 https://code.visualstudio.com/Download 2、安装continue插件 搜索continue,还未安装的,右下脚有个Install,点击安装即可 <...
上海亚商投顾:沪指探底回升微涨 机器人概念股午后爆发
上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 市场全天探底回升,沪指盘中跌超1.6%,创业板指一度跌逾3%,午后集体拉升翻红…...
LeetCode 3297.统计重新排列后包含另一个字符串的子字符串数目 I:滑动窗口
【LetMeFly】3297.统计重新排列后包含另一个字符串的子字符串数目 I:滑动窗口 力扣题目链接:https://leetcode.cn/problems/count-substrings-that-can-be-rearranged-to-contain-a-string-i/ 给你两个字符串 word1 和 word2 。 如果一个字符串 x 重新…...
ssm旅游攻略网站设计+jsp
系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 需要源码或者定制看文章最下面或看我的主页 目 录 目 录 III 1 绪论 1 1.1 研究背景 1 1.2 目的和意义 1 1.3 论文结构安排 2 2 相关技术 3 2.1 SSM框架介绍 3 2.2 B/S结构介绍 3 …...
前端学习-环境this对象以及回调函数(二十七)
目录 前言 目标 环境对象 作用 环境对象this是什么? 判断this指向的粗略规则是什么? 回调函数 目标 常见的使用场景 综合案例:Tab任务栏切换 总结 前言 男儿何不带吴钩,收取关山五十州 目标 能够分析判断函数运行在不…...
计算机网络-数据链路层(虚拟局域网VLAN)
2.6 虚拟局域 2.6.1 虚拟局域网概述 以太网交换机连接的各个网络同属于一个广播域,随着以太网的规模扩大,广播域也会相应的扩大,巨大的广播域会带来巨大的弊端。 广播风暴 难以治理 潜在的安全问题 TCP/IP协议下会进行广播的协议:…...
Python贪心
贪心 贪心:把整体问题分解成多个步骤,在每个步骤都选取当前步骤的最优方案,直至所有步骤结束;每个步骤不会影响后续步骤核心性质:每次采用局部最优,最终结果就是全局最优如果题目满足上述核心性质…...
CSS 盒模型
盒模型 CSS盒模型是网页布局的核心概念之一,它描述了网页元素的物理结构和元素内容与周围元素之间的关系。根据W3C规范,每个HTML元素都被视为一个矩形盒子,这个盒子由以下四个部分组成: 内容区(Content areaÿ…...
【linux】vi编辑文件及readonly文件修改读写权限方法
板端vi修改文件: 1、vi 文件路径 vi mnt/eol/config/oem_eol.xml2、按 i进入修改状态,此时可以修改配置文件 3、按 esc退出修改状态,并按"wq!保存 问题:readonly文件无法直接vi修改 方案: 1、mount -o remoun…...
Git使用笔记
Git 版本控制 一、Git 介绍二、Git 使用1. 安装及配置2. 使用方法3. Git 命令3. 历史版本回退4. 分支 (Branch) 三、远程仓库1. SSH公钥连接Gitee2. 推送到远程仓库 一、Git 介绍 常见版本控制软件:集中式(CVS、SVN),分布式&#…...
mermaid大全(语法、流程图、时序图、甘特图、饼图、用户旅行图、类图)
⚠️ 有些网站的mermaid可能不完整,因此下面教程中可能有些语法是无效的。 😊亲测Typora软件均可以显示。 1. 介绍 Mermaid是一个基于JavaScript的图表绘制工具,它使用类似Markdown的语法来创建和修改各种类型的图表。以下是关于Mermaid的详…...
慧集通(DataLinkX)iPaaS集成平台-业务建模之业务对象(二)
3.UI模板 当我们选择一条已经建好的业务对象点击功能按钮【UI模板】进入该业务对象的UI显示配置界面。 右边填写的是UI模板的编码以及对应名称;菜单界面配置以业务对象UI模板编码获取显示界面。 3.1【列表-按钮】 展示的对应业务对象界面的功能按钮配置࿱…...
vue3+ts+element-plus 输入框el-input设置背景颜色
普通情况: 组件内容: <el-input v-model"applyBasicInfo.outerApplyId"/> 样式设置: ::v-deep .el-input__wrapper {background-color: pink; }// 也可以这样设置 ::v-deep(.el-input__wrapper) {background-color: pink…...
python迷宫寻宝 第6关 安全策略
地图: 1、体力不足去找终点,体力足则原地不动 import api## 判断是否需要离场的函数 # 体力足返回False,体力不足返回True def should_leave():# 拿到我离终点的距离e_row api.get.exit(what"row")e_col api.get.exit(what"…...