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

机器学习笔记——特征工程

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本笔记介绍机器学习中常见的特征工程方法、正则化方法和简要介绍强化学习。

在这里插入图片描述

文章目录

  • 特征工程(Fzeature Engineering)
    • 1. 特征提取(Feature Extraction)
      • 手工特征提取(Manual Feature Extraction):
      • 自动特征提取(Automated Feature Extraction):
    • 2. 特征选择(Feature Selection)
      • 1. 过滤法(Filter Methods)
      • 2. 包裹法(Wrapper Methods)
      • 3. 嵌入法(Embedded Methods)
      • 4. 其他方法
      • 5. 选择方法的应用场景
      • 总结
    • 3. 特征构造(Feature Construction)
    • 4. 特征缩放
      • 4.1 归一化(Normalization)
      • 4.2 标准化(Standardization)
      • BN、LN、IN、GN
  • 热门专栏
    • 机器学习
    • 深度学习

特征工程(Fzeature Engineering)

1. 特征提取(Feature Extraction)

特征提取:从原始数据提取能够有效表征数据特征的过程。它将原始数据转换为适合模型输入的特征表示。

手工特征提取(Manual Feature Extraction):

  • 文本数据
    • 词袋模型(Bag of Words):将文本数据转化为词频向量,每个单词是一个维度,值为该单词在文本中出现的次数。
    • TF-IDF:为词袋模型加入词频-逆文档频率(Term Frequency-Inverse Document Frequency),降低常见词语的权重提升重要词语的权重
    • N-gram:将连续的 N 个词作为一个特征,捕捉词语间的局部依赖关系
  • 图像数据
    • 边缘检测:使用 Sobel 算子、Canny 边缘检测等方法提取图像边缘信息。
    • SIFT(尺度不变特征变换):提取图像的关键点和局部特征,具有尺度不变性和旋转不变性。
    • HOG(方向梯度直方图):将图像分块,并统计每块的梯度方向直方图,用于描述局部形状和纹理特征。
  • 时间序列数据
    • 移动平均:对时间序列进行平滑,消除短期波动。
    • 傅里叶变换:将时间域的信号转化为频域信号,分析数据的周期性。
    • 窗口函数:将时间序列分为若干窗口,分别计算每个窗口的统计特征,如均值、方差等。

自动特征提取(Automated Feature Extraction):

  • 使用卷积神经网络(CNN):从图像中自动提取高级特征,如边缘、纹理、形状等。
  • 使用循环神经网络(RNN):处理时间序列数据,捕捉长时间依赖关系。
  • 使用BERT(Transformer):通过自监督学习自动提取上下文敏感的文本特征。
  • 自动编码器(Autoencoder):使用无监督学习从数据中提取低维特征表示,捕捉数据的潜在结构和模式。

2. 特征选择(Feature Selection)

特征选择(Feature Selection)是指从原始特征集中挑选出与目标任务最相关的特征,以提高模型的性能、减少训练时间以及降低过拟合的风险。特征选择方法主要分为三类:过滤法(Filter Methods)包裹法(Wrapper Methods)嵌入法(Embedded Methods)

1. 过滤法(Filter Methods)

  • 原理:独立于模型,训练前首先根据某些统计指标对特征进行评分,然后选择得分较高的特征。这种方法不依赖于特定的学习算法,只是基于数据本身的特性进行筛选
  • 常见方法
    • 方差选择法剔除方差较小的特征,认为方差小的特征对目标值影响小。
    • 皮尔森相关系数:计算特征与目标变量之间的线性相关性,选择线性相关性较高的特征
    • 互信息:衡量特征与目标变量之间的信息增益,选择信息量大的特征。
  • 优点计算效率高,易于实现
  • 缺点:未考虑特征之间的相互作用,可能遗漏组合特征的重要性。

2. 包裹法(Wrapper Methods)

  • 原理:在训练中,通过训练模型评估特征子集的表现,使用搜索策略找到对目标任务最优的特征组合。包裹法直接根据模型的性能进行选择,通常通过交叉验证来评估特征子集的好坏。
  • 常见方法
    • 前向选择(Forward Selection):从空集开始逐步添加对模型性能提升最大的特征。
    • 后向消除(Backward Elimination):从所有特征开始逐步移除对模型性能影响最小的特征。
  • 优点:能够考虑特征之间的相互作用,适合复杂的特征选择任务。
  • 缺点:计算开销大,尤其是当特征数目较多时,训练多个模型的过程会非常耗时。

3. 嵌入法(Embedded Methods)

  • 原理:嵌入法结合了过滤法和包裹法的优点,直接在模型训练过程自动选择特征。它通过学习算法自动选择最重要的特征,使特征选择与模型训练同时进行。
  • 常见方法
    • L1正则化(Lasso回归):通过在损失函数中添加L1正则化项,使**部分特征的系数变为零,从而进行特征选择。
    • 决策树及其变体(如随机森林、XGBoost):树模型的特征重要性得分可以用于选择重要特征。
    • Elastic Net:结合L1和L2正则化的优势,在保持模型稀疏性的同时,减少了多重共线性的影响,进行特征选择和模型优化。
  • 优点:特征选择与模型训练同时完成,考虑特征间的相互作用,效率较高。
  • 缺点:需要根据特定算法来进行选择,不具有模型无关性。

4. 其他方法

  • PCA(主成分分析):虽然PCA是降维方法,但在某些场景下可以间接用于特征选择。通过对数据进行线性变换,将多个原始特征组合成少数几个主成分。
  • LDA(线性判别分析):常用于分类问题的降维,也可以视作一种特征选择方法。
  • 基于稳定性选择(Stability Selection):通过在多次子样本集上重复训练模型,并选择那些在多个子集上都表现重要的特征,从而增强选择的鲁棒性。

5. 选择方法的应用场景

  • 过滤法适用于快速预筛选大量特征的情况,计算效率高,但可能丢失特征之间的组合信息。
  • 包裹法在特征数不多时(例如几十个或上百个)效果较好,能找到最佳的特征组合,但计算开销较大。
  • 嵌入法通常适用于大多数场景,尤其是使用线性模型(Lasso)或树模型时,既能训练模型又能自动选择特征。

总结

下面是特征选择方法的总结表格,保留了原有的描述信息:

方法类别原理常见方法优点缺点适用场景
过滤法(Filter Methods)独立于模型,基于统计指标对特征评分,并选择得分较高的特征。- 方差选择法:剔除方差较小的特征
- 皮尔森相关系数:选择线性相关性高的特征
- 互信息:选择信息增益大的特征
计算效率高,易于实现未考虑特征间相互作用,可能遗漏重要的组合特征快速预筛选大量特征的情况,适合初步筛选特征
包裹法(Wrapper Methods)通过训练模型评估特征子集表现,使用搜索策略找到最优特征组合。- 递归特征消除(RFE):删除不重要的特征
- 前向选择:逐步添加性能提升最大的特征
- 后向消除:逐步移除对模型性能影响小的特征
能考虑特征间的相互作用,适合复杂任务计算开销大,训练多个模型耗时长特征数较少(几十到上百个),适合需要精确特征选择的任务
嵌入法(Embedded Methods)结合过滤法和包裹法的优点,在模型训练过程中选择特征。- L1正则化(Lasso回归):通过L1正则化项使部分特征系数为零
- 决策树及其变体(随机森林、XGBoost):根据特征重要性评分选择特征
- Elastic Net:结合L1和L2正则化
特征选择与模型训练同时进行,考虑特征间相互作用,效率高需要根据特定算法选择,不具有模型无关性适合使用线性模型(如Lasso)或树模型的场景,大多数现代复杂模型都适用
其他方法PCA、LDA等方法虽然是降维方法,但可间接用于特征选择。- PCA:通过线性变换将多个特征组合成少数几个主成分
- LDA:常用于分类问题的降维方法
- 稳定性选择(Stability Selection):通过在子样本集上选择表现稳定的特征
能够进行有效降维,有时可以间接用于特征选择降维后特征解释性较弱数据维度较高的情况下,可以用作降维手段,间接提高特征选择效果
  • 过滤法:速度快,适合预处理大量特征,但可能丢失特征间的组合信息。
  • 包裹法:精度高,适合特征数较少且精度要求高的任务,但计算成本大。
  • 嵌入法性能和效率兼顾,适合大多数场景,尤其是使用线性模型(Lasso)或树模型时
  • 其他方法:如PCA、LDA等可以作为降维手段,间接用于特征选择,适合高维数据的场景。

选择合适的特征选择方法能够有效提升模型性能,降低训练时间,避免过拟合。

3. 特征构造(Feature Construction)

特征构造是通过对已有特征进行组合、变换或生成新特征来增强模型表达能力的过程。它可以将隐含的关系显式化,提高模型的拟合能力。

类别主要方法适用场景
数值特征构造变换、分箱处理数值特征、非线性关系
类别特征构造编码、组合处理类别特征、捕捉特征间关系
时间特征构造时间提取、周期特征、时间差时间序列数据、周期性特征
文本特征构造词袋、TF-IDF、词向量、N-grams文本数据、自然语言处理
特征交互与组合特征交互、多项式特征捕捉特征间的复杂关系,适合增强线性模型的非线性拟合能力
聚合与统计特征聚合、统计、窗口聚合大规模表格数据、时间序列数据
生成模型特征降维、聚类、自编码器生成特征复杂高维数据、需要特征压缩的场景
特征选择与构造结合筛选后构造、嵌入法生成特征大规模数据集、特征选择与构造结合的场景

特征构造是一项创造性和技术性并重的任务,需要结合领域知识、数据分析技巧以及机器学习经验来挖掘出更有利于模型训练的特征,从而提升模型的表现。

4. 特征缩放

  1. 归一化:通常是指将数据缩放到一个特定的范围,如[0, 1]。目的是让不同特征的值处于相同的尺度上,【同时也有消除不同特征量纲的影响的作用】大范围的特征值可能会导致梯度更新过慢或不稳定
  2. 标准化:是指对数据进行均值0、标准差1的变换,更关注数据的分布形态。目的是消除不同特征的物理单位和量纲(如重量、温度、距离等)差异,同时保持特征间的相对比例关系。

4.1 归一化(Normalization)

归一化特征值缩放到 [0, 1] 之间,常用于以下算法中:

  • K 近邻算法(KNN):归一化后减少不同特征尺度对距离计算的影响。能够避免特征量纲不同带来的距离计算问题。【与数据的分布无关】
  • 神经网络:将输入特征值缩放至 [0, 1],有助于加快模型收敛。
  • 聚类算法(如 K-Means):归一化避免特征尺度不同造成聚类结果偏差。

Min - Max归一化:将特征缩放到指定范围(通常为[0, 1]),公式为:
x ′ = x − x min ⁡ x max ⁡ − x min ⁡ x' = \frac{x - x_{\min}}{x_{\max} - x_{\min}} x=xmaxxminxxmin

4.2 标准化(Standardization)

标准化特征值转化为均值为 0、方差为 1 的标准正态分布,常用于以下算法中:

  • 线性回归:标准化能够提升参数解释性,并避免部分特征影响过大。
  • 逻辑回归:标准化能够使梯度下降更快地收敛。
  • 支持向量机(SVM):标准化后距离计算更稳定。
  • 主成分分析(PCA):标准化防止某些方差大的特征主导主成分的计算。

Z - score标准化: 将数据转换为均值为0,方差为1的标准正态分布,公式为:
x ′ = x − μ σ x' = \frac{x - \mu}{\sigma} x=σxμ

BN、LN、IN、GN

以下是归一化方法对比总结,其中加入了每种归一化方法的原理:

归一化方法原理适用场景优点缺点
批归一化(BN)一个批量中的所有样本的同一通道进行归一化,基于批次的均值和方差调整卷积网络、全连接网络加快收敛,正则化,适应大批量训练对小批次敏感,序列任务效果差
层归一化(LN)单个样本的所有通道进行归一化,不依赖批量,计算层内均值和方差RNN、Transformer、序列任务适应小批次训练,不依赖批次大小计算量较大,收敛可能稍慢
实例归一化(IN)单张图像的每个通道分别独立进行归一化,计算每个样本的通道内均值和方差图像生成、风格迁移对风格敏感,适用于生成任务不适合分类任务,无法捕捉全局信息
组归一化(GN)单个样本的特征通道分组,对每一组进行归一化,计算组内均值和方差小批次训练,卷积网络适合小批次,不依赖批次大小对卷积核大小和通道数较敏感
权重归一化(WN)对神经元的权重向量进行归一化,将方向和长度分开重新参数化卷积网络、全连接网络、生成模型加速收敛,提高稳定性效果不一定显著,某些任务中不如BN

注意,虽然他们是叫做归一化(批归一化、层归一化、实例归一化),是将多个输入特征归一化为均值为 0、方差为 1 的分布,使得网络的各层输入保持在较为稳定的范围内。本质上是进行标准化。再进行引入两个可学习参数 γ 和 𝛽,分别表示缩放和平移操作。

BN、LN、IN、GN 等归一化方法都包含了标准化的步骤,即它们都会将激活值调整为均值为 0、方差为 1 的分布,关键区别在于这些方法在不同的范围内计算均值和方差,以适应不同的训练场景和模型结构:

注意: 虽然它们方法名字中带“归一化”(批归一化、层归一化、实例归一化、组归一化),但它们的核心操作本质上是标准化,将多个输入特征归一化为均值为 0、方差为 1 的分布,使得网络的各层输入保持在较为稳定的范围内。本质上是进行标准化。再进行引入两个可学习参数 γ 和 𝛽,分别表示缩放和平移操作。

热门专栏

机器学习

机器学习笔记合集

深度学习

深度学习笔记合集

相关文章:

机器学习笔记——特征工程

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本笔记介绍机器学习中常见的特征工程方法、正则化方法和简要介绍强化学习。 文章目录 特征工程(Fzeature Engineering)1. 特征提取&#xff…...

麒麟v10 部署 MySQL 5.6.10 完整步骤

需要包的私信我 一、安装依赖(Perl环境) # 在线安装依赖 yum -y install perl perl-devel# 离线安装(需提前下载好rpm包) mkdir /data/ybn/soft/pre yum install --downloadonly --downloaddir/data/ybn/soft/pre perl perl-dev…...

digitalworld.local: DEVELOPMENT靶场

digitalworld.local: DEVELOPMENT 来自 <https://www.vulnhub.com/entry/digitalworldlocal-development,280/> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.18…...

高等数学基础(梯度下降法求函数的最小值)

梯度下降法, 一般是寻找函数极小值最常用的优化方法. 当目标函数时凸函数时, 梯度下降时全局解, 但是一般情况没办法保证是全局最优的. 通常在求最优解时, 首先会设定好步长大小进行调整, 按照上述方法对参数进行调整后就会逼近一个极小值 设函数 f ( x ) f(x) f(x)为一元连续函…...

【AI News | 20250515】每日AI进展

AI Repos 1、helix-db 专用于RAG以及AI应用的一款高性能图向量数据库&#xff1a;HelixDB&#xff0c;比Neo4j快1000倍&#xff0c;比TigerGraph快100倍&#xff0c;向量搜索性能和Qdrant相当。原生支持图形和矢量数据类型&#xff0c;比较适合RAG和AI应用&#xff0c;像知识图…...

大数据架构选型分析

选择依据 1.业务需求与技术要求 用户需要根据自己的业务需求来选择架构&#xff0c;如果业务对于Hadoop、Spark、Strom等关键技术有强制性依赖&#xff0c;选择Lambda架构可能较为合适&#xff1b;如果处理数据偏好于流式计算&#xff0c;又依赖Flink计算引擎&#xff0c;那么…...

C++中多重继承下的虚表结构

在 C 的多重继承 中&#xff0c;虚表&#xff08;vtable&#xff09;结构会变得更加复杂。 一、基础回顾&#xff1a;单继承下的虚表结构 类中含有虚函数 → 编译器生成虚表&#xff08;每类一张&#xff09;&#xff1b;每个对象有一个隐藏的虚表指针&#xff08;vptr&#x…...

安全巡检清单

安全巡检报告清单 引言 安全巡检是保障信息系统稳定运行和数据安全的关键环节。通过周期性的状态检查、安全扫描、日志分析和补丁管理&#xff0c;可以及时发现并修复潜在的安全隐患和漏洞&#xff0c;确保网络设备、服务器、操作系统及应用系统的高可用性和安全性。本清单旨…...

【redis】redis常见数据结构及其底层,redis单线程读写效率高于多线程的理解,

redis常用数据结构及底层 string字符串、list链表、set无序集合、zset有序集合、hash哈希 1.string 底层结构是SDS简单动态字符串 struct sdshdr {int len; // 已用长度&#xff08;字符串实际长度&#xff09;int free; // 剩余可用空间char buf[]; // 数组&#…...

Redis6为什么引入了多线程?

大家好&#xff0c;我是锋哥。今天分享关于【Redis6为什么引入了多线程&#xff1f;】面试题。希望对大家有帮助&#xff1b; Redis6为什么引入了多线程&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 6 引入多线程的主要目的是提升性能&#xf…...

使用GmSSL v3.1.1实现SM2证书认证

1、首先使用gmssl命令生成根证书、客户端公私钥&#xff0c;然后使用根证书签发客户端证书&#xff1b; 2、然后编写代码完成认证功能&#xff0c;使用根证书验证客户端证书是否由自己签发&#xff0c;然后使用客户端证书验证客户端私钥对随机数的签名是否正确。 第一部分生成根…...

Spring MVC 接口的访问方法如何设置

RequestMapping 是 Spring 框架中用于映射 HTTP 请求到控制器方法的注解。它支持以下 HTTP 方法访问类型&#xff0c;通过 method 属性指定&#xff1a; GET&#xff1a;用于获取资源POST&#xff1a;用于提交数据PUT&#xff1a;用于更新资源DELETE&#xff1a;用于删除资源PA…...

虚拟网络编辑器

vmnet1 仅主机模式 hostonly 功能&#xff1a;虚拟机只能和宿主机通过vmnet1通信&#xff0c;不可连接其他网络&#xff08;包括互联网&#xff09; vmnet8 地址转换模式 NAT 功能&#xff1a;虚拟机可以和宿主通过vmnet8通信&#xff0c;并且可以连接其他网络&#xff0c;但是…...

【hadoop】Flume日志采集系统的安装部署

一、Flume安装与配置 步骤&#xff1a; 1、使用XFTP将Flume安装包apache-flume-1.9.0-bin.tar.gz发送到master机器的主目录。 2、解压安装包&#xff1a; tar -zxvf ~/apache-flume-1.9.0-bin.tar.gz 3、修改文件夹的名字&#xff0c;将其改为flume&#xff0c;或者创建软…...

Kafka快速安装与使用

引言 这篇文章是一篇Ubuntu(Linux)环境下的Kafka安装与使用教程&#xff0c;通过本文&#xff0c;你可以非常快速搭建一个kafka的小单元进行日常开发与调测。 安装步骤 下载与解压安装 首先我们需要下载一下Kafka&#xff0c;这里笔者采用wget指令&#xff1a; wget https:…...

C# 实现雪花算法(Snowflake Algorithm)详解与应用

在现代分布式系统中&#xff0c;生成全局唯一的标识符&#xff08;ID&#xff09;是一个非常重要的问题。随着微服务架构和分布式系统的普及&#xff0c;传统的单机数据库生成 ID 的方式已无法满足高并发和高可用的需求。为了解决这个问题&#xff0c;Twitter 提出了 雪花算法&…...

中间件-MQ常见问题

MQ常见问题 消息丢失消息会在哪些环节丢失应对机制 消息的顺序性消息幂等消息积压的处理 消息丢失 消息会在哪些环节丢失 网络传输环节&#xff1a;生产者发送消息到broker&#xff0c;broker中master同步消息给slave&#xff0c;consumer消费消息&#xff0c;这3个环节都是跨…...

Redis学习打卡-Day2-缓存更新策略、主动更新策略、缓存穿透、缓存雪崩、缓存击穿

缓存更新策略 对于低一致性需求&#xff1a;使用内存淘汰机制。例如店铺类型的查询缓存。对于高一致性需求&#xff1a;主动更新&#xff0c;并以超时剔除作为兜底方案。例如店铺详情查询的缓存。 主动更新策略&#xff08;缓存读写策略&#xff09; 1. Cache Aside Pattern&…...

Git - 1( 14000 字详解 )

一&#xff1a; Git 初识 1.1 提出问题 在工作或学习中&#xff0c;我们常常会面临文档管理的问题&#xff0c;尤其是在编写各种文档时。为了防止文档丢失或因更改失误而无法恢复&#xff0c;我们常常会创建多个版本的副本&#xff0c;例如&#xff1a;“报告-v1”、“报告-v…...

搭建Centos环境安装禅道

关于禅道&#xff1a; 禅道项目管理软件&#xff0c;将CMMI模型的要求有机融合到项目管理各个过程&#xff0c;支持Scrum、瀑布、看板和狭义IPD并支持融合使用。禅道项目管理软件功能强大&#xff0c;集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体&…...

语音识别——语音转文字

SenseVoiceSmall阿里开源大模型&#xff0c;SenseVoice 是具有音频理解能力的音频基础模型&#xff0c;包括语音识别&#xff08;ASR&#xff09;、语种识别&#xff08;LID&#xff09;、语音情感识别&#xff08;SER&#xff09;和声学事件分类&#xff08;AEC&#xff09;或…...

语音识别——声纹识别

通过将说话人的声音与数据库中的记录声音进行比对&#xff0c;判断说话人是否为数据库白名单中的同一人&#xff0c;从而完成语音验证。目前&#xff0c;3D-Speaker 声纹验证的效果较为出色。 3D-Speaker 是一个开源工具包&#xff0c;可用于单模态和多模态的说话人验证、说话…...

c++作业整理2

直接访问就是直接利用变量的地址直接进行访问。 答案&#xff1a;T 解析&#xff1a;直接访问通过变量名&#xff08;实际对应内存地址&#xff09;访问数据&#xff0c;与间接访问&#xff08;通过指针&#xff09;相对。 char *s"C Language"; 表示 s 是一个指向字…...

无人机屏蔽与滤波技术模块运行方式概述!

一、模块运行方式 1. 电磁屏蔽模块 动态频段干扰&#xff1a;通过发射与无人机通信频段&#xff08;如2.4GHz、5.8GHz、GPS频段等&#xff09;同频的强干扰信号&#xff0c;切断无人机与遥控器、图传设备间的通信链路&#xff0c;实现迫降或返航功能。例如便携式屏蔽器通过…...

兼顾长、短视频任务的无人机具身理解!AirVista-II:面向动态场景语义理解的无人机具身智能体系统

作者&#xff1a;Fei Lin 1 ^{1} 1, Yonglin Tian 2 ^{2} 2, Tengchao Zhang 1 ^{1} 1, Jun Huang 1 ^{1} 1, Sangtian Guan 1 ^{1} 1, and Fei-Yue Wang 2 , 1 ^{2,1} 2,1单位&#xff1a; 1 ^{1} 1澳门科技大学创新工程学院工程科学系&#xff0c; 2 ^{2} 2中科院自动化研究所…...

深入探索 OpenCV:从实时视频流到图像处理的实战指南

引言 在当今数字化时代&#xff0c;计算机视觉技术正逐渐成为推动科技发展的核心力量之一。从自动驾驶汽车到智能家居设备&#xff0c;从医疗影像诊断到工业自动化&#xff0c;计算机视觉的应用无处不在。而 OpenCV&#xff08;Open Source Computer Vision Library&#xff0…...

Linux线程控制

POSIX线程库 与线程有关的函数构成了一个完整的系列&#xff0c;绝大多数函数的名字都是以“pthread_”打头的要使用这些函数库&#xff0c;要通过引入头文 <pthread.h>链接这些线程函数库时要使用编译器命令的“-lpthread”选项 创建线程 功能&#xff1a;创建⼀个新…...

软件设计师考试《综合知识》设计模式之——工厂模式与抽象工厂模式考点分析

软件设计师考试《综合知识》工厂模式与抽象工厂模式考点分析 1. 分值占比与考察趋势&#xff08;75分制&#xff09; 年份题量分值占总分比例核心考点2023111.33%抽象工厂模式适用场景2022222.67%工厂方法 vs 抽象工厂区别2021111.33%工厂方法模式结构2020111.33%简单工厂模式…...

携程旅行 酒店详情 token1004 分析 phantom-token

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 部分python代码 这个网站有一个坑&am…...

QT——概述

<1>, Qt概述 Qt 是⼀个 跨平台的 C 图形⽤⼾界⾯应⽤程序框架 Qt ⽀持多种开发⼯具&#xff0c;其中⽐较常⽤的开发⼯具有&#xff1a;Qt Creator、Visual Studio、Eclipse. 一&#xff0c;Qt Creator 集成开发环境&#xff08;IDE&#xff09; Qt Creator 是⼀个轻量…...

uniapp-vue3项目中引入高德地图的天气展示

前言&#xff1a; uniapp-vue3项目中引入高德地图的天气展示 效果&#xff1a; 操作步骤&#xff1a; 1、页面上用定义我们的 当前天气信息&#xff1a;<view></view> 2、引入我们的map文件 <script setup>import amapFile from ../../libs/amap-wx.js …...

最新版VSCode通过SSH远程连接Ubuntu 16.04等旧版Linux的方法

根据官方文档Remote Development FAQ - Can I run VS Code Server on older Linux distributions?&#xff0c;自Visual Studio Code 1.99起&#xff0c;VSCode Remote - SSH Server由于运行库依赖更新&#xff0c;会无法连接到旧版Linux发行版上。但是好在官方在文档中还给了…...

Unity碰撞检测:射线与胶囊体投射/Layer(层)、LayerMask(遮罩层)

一、Physics碰撞检测 1.Physics.Raycast射线投射 Physics.Raycast 是 Unity 中用于执行射线检测&#xff08;Raycasting&#xff09;的方法。它允许你从一个点沿特定方向发射一条无形的“射线”&#xff0c;并检查这条射线是否与场景中的任何碰撞体相交。这个功能非常有用&am…...

浪潮云边协同:赋能云计算变革的强力引擎

在数字化浪潮以排山倒海之势席卷全球的当下&#xff0c;第五届数字中国建设峰会在福州盛大开幕。这场以“创新驱动新变革&#xff0c;数字引领新格局”为主题的行业盛会&#xff0c;宛如一座汇聚智慧与力量的灯塔&#xff0c;吸引了国内外众多行业精英齐聚一堂&#xff0c;共同…...

“傅里叶变换算法”来检测纸箱变形的简单示例

为了创建一个具有科技质感且能动态展示结果的纸箱变形检测傅里叶变换网页&#xff0c;下面将分别更新 HTML、CSS 和 JavaScript 文件。以下是更新后的代码&#xff1a; 1. HTML 文件 (index.html) <!DOCTYPE html> <html lang"zh-CN"> <head><…...

【SPIN】用Promela验证顺序程序:从断言到SPIN实战(SPIN学习系列--2)

你写了一段自认为“天衣无缝”的程序&#xff0c;但如何确保它真的没有bug&#xff1f;靠手动测试&#xff1f;可能漏掉边界情况&#xff1b;靠直觉&#xff1f;更不靠谱&#xff01;这时候&#xff0c;Promela SPIN组合就像程序的“显微镜”——用形式化验证技术&#xff0c;…...

如何卸载并重新安装 Mozilla Firefox 浏览器

如果你在 Windows 上遇到现有的 Mozilla FireFox 安装问题,以下是重新安装 FireFox 的步骤。这可以帮助用户解决由于某些扩展或设置问题,或者不小心下载了令人讨厌的广告软件而导致的问题。虽然现在使用 Firefox 浏览器的用户在渐渐沦为小众群体,但是 Firefox 浏览器依然是最…...

Linux 后台运行的方法

Linux 后台运行的两种方法&#xff1a;screen 和 nohup 使用指南 如有错误&#xff0c;敬请指正 方法一&#xff1a;使用 screen 管理后台任务&#xff08;推荐&#xff09; &#x1f539; 安装&#xff08;如未安装&#xff09; sudo apt install screen # Ubuntu/Debian …...

《无限暖暖》画质测评

《无限暖暖》作为一款采用虚幻5引擎打造的多平台畅玩、高自由度换装探索类RPG游戏&#xff0c;凭借其精美的画面、沉浸式操作和暖暖美丽坚毅的人设吸引了大量玩家。 在其中玩家可以通过做各样任务收集美好并感受到丰富的人生体验&#xff0c;暖暖所在的世界里有超多的NPC可以互…...

websocket简介与基本使用

websocket是什么 WebSocket 是一种基于 TCP 的全双工通信协议&#xff0c;允许客户端和服务器之间建立持久连接&#xff0c;实现实时、双向的数据传输。它是 HTTP 协议的补充&#xff0c;专为低延迟、高效率的实时通信设计。 核心特点 特性说明全双工通信客户端和服务器可以同时…...

面试题:请解释Java中的垃圾回收机制(Garbage Collection, GC),并讨论不同的垃圾回收算法及其优缺点

Java垃圾回收机制&#xff08;GC&#xff09; Java的垃圾回收机制负责自动管理内存&#xff0c;回收不再使用的对象以释放内存空间。GC通过以下步骤实现&#xff1a; 标记&#xff08;Marking&#xff09; &#xff1a;识别哪些对象是可达的&#xff0c;哪些是不可达的。清除…...

解决 Ubuntu 22.04 安装后启动卡死问题

最近在一台 PC 上安装了 Ubuntu 22.04 系统&#xff0c;但发现系统启动时出现问题&#xff1a;屏幕上出现一个旋转的小圈&#xff0c;旋转片刻后停止&#xff0c;系统无法正常进入桌面环境。经过一番排查&#xff0c;我找到了一种有效的解决方法&#xff0c;通过进入恢复模式并…...

线程的两种实现方式

线程的两种实现方式——内核支持线程&#xff08;kernal Supported Thread, KST&#xff09;&#xff0c; 用户级线程&#xff08;User Level Thread, ULT&#xff09; 1. 内核支持线程 顾名思义&#xff0c;内核支持线程即为在内核支持下的那些线程&#xff0c;它们的创建&am…...

Python Bug 修复案例分析:asyncio 事件循环异常引发的程序崩溃 两种修复方法

在 Python 异步编程的工作中&#xff0c;asyncio库为我们提供了高效处理并发任务的强大工具。然而&#xff0c;asyncio在使用过程中也可能因为一些细节处理不当而引发 Bug。下面&#xff0c;我们就来深入分析一个因asyncio事件循环异常导致程序崩溃的典型案例。兴趣的友友可以借…...

TCP(传输控制协议)建立连接的过程

TCP&#xff08;传输控制协议&#xff09;建立连接的过程称为 三次握手&#xff08;Three-Way Handshake&#xff09;。这是为了确保通信双方能够可靠地建立连接&#xff0c;并同步初始序列号。以下是详细步骤&#xff1a; 三次握手过程&#xff08;通俗比喻&#xff1a;打电话…...

(十九)Java集合框架深度解析:从基础到高级应用

一、集合框架概述 1.1 什么是集合框架 Java集合框架(Java Collections Framework, JCF)是Java语言中用于表示和操作集合的一套标准化体系结构。它提供了一组接口、实现类和算法&#xff0c;用于存储和操作对象组&#xff0c;解决了数组在存储对象时的诸多限制。 集合框架的主…...

数据结构与算法-线性表-单链表(Linked List)

1 线性表 1.2 单链表&#xff08;Linked List&#xff09; 顺序表在内存中是连续的进行存储&#xff0c;可以随机获取某个元素&#xff0c;但是在插入和删除元素的时候就非常不方便&#xff0c;需要移动很多相关的元素&#xff0c;链表就可以解决这个问题。 链表就是每个节点…...

Vue3学习(组合式API——生命周期函数基础)

目录 一、Vue3组合式API中的生命周期函数。 &#xff08;1&#xff09;各阶段生命周期涉及函数简单介绍。 <1>创建挂载阶段的生命周期函数。 <2>更新阶段的生命周期函数。 <3>卸载阶段的生命周期函数。 <4>错误处理的生命周期函数。 &#xff08;2&…...

MySQL索引优化面试高频考点解析(附实战场景)

文章目录 当索引失效成为面试官的"送命题"&#xff08;必看&#xff01;&#xff09;高频考点一&#xff1a;索引失效的七大死亡陷阱1. 隐式类型转换&#xff08;血泪案例&#xff01;&#xff09;2. 函数操作毁所有 高频考点二&#xff1a;最左前缀原则的魔鬼细节组…...

三目云台20倍变焦智能监控技术

“三目云台20倍转动”通常指的是一种具备三目变焦功能和20倍光学变焦能力的云台摄像机。以下是对这一概念的详细解释&#xff1a; 一、三目变焦功能 三目云台摄像机通常配备“长、短、广”三组定焦镜头&#xff0c;每组镜头都有其独特的作用&#xff1a; 长焦镜头 &#xff…...