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

因果推断【Causal Inference】(一)

文章目录

  • 1. 什么是因果推断?
  • 2. 为什么要提出因果推断?Motivation:辛普森悖论
    • Scenario 1
    • Scenario 2
  • 3. 【Note】相关性≠因果
    • 3.1 混淆(Confounding)——共同原因
    • 3.2 样本选择偏差(Selection Bias)——共同结果
  • 4. 潜在结果(Potential Outcome)
  • 5. 观测数据下的因果推断
  • References


1. 什么是因果推断?

所谓因果推断,就是寻找变量间的因果关系,并估计由于因对果造成的效应大小。
它之所以重要,是因为因果关系一旦被准确衡量,那么只要控制了原因,我们就能得到想要的结果。


2. 为什么要提出因果推断?Motivation:辛普森悖论

先来看一个非常经典的例子,假设今天出现了一个新的病毒COVID-27,现在有两种治疗方案:A和B,其中 B 比 A 更稀缺(耗费的医疗资源更多),应该选择哪种方案才能尽量减少死亡?

现在有一组实验数据,分别对 轻症(Mild)重症(Severe) 患者给予两种治疗,其结果如下图所示。

在这里插入图片描述

  • 对于方案A:15%的轻症病人死亡,30%的重症病人死亡,总死亡率为16%.
  • 对于方案B:10%的轻症病人死亡,20%的重症病人死亡,总死亡率为19%.

我们应该选择哪个方案对整个国家的人进行治疗呢?

明显的悖论源于这样一个事实:从总死亡率来说,方案A的死亡率更低(16%<19%),应该选择方案A。但是,从轻度和重度两个组来看,方案B的死亡率都更低(15%>10%,30%>20%),应该选择方案B。
这就是辛普森悖论,从轻度和重度两个视角看,方案B的死亡率都是更低的,然而其总死亡率却高于方案A。

出现辛普森悖论的关键因素是各个类别的非均匀性
接受方案A治疗的1500人中有1400人是轻症病人,而接受方案B治疗的550人中有500人是重症病人,即方案A治疗的大部分都是轻症病人,而方案B治疗的大部分是重症病人,因为轻症病人的死亡可能性本来就比较小,所以方案A的总死亡率更低。

其次,方案A和方案B都有可能是正确答案,这取决于数据的因果结构。换句话说,因果关系是解决辛普森悖论的关键


下面首先从从直觉上给出什么时候应该偏向于方案 A,什么时候应该偏向于方案 B。

Scenario 1

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

如图所示,其中 C (Condition) 代表病情轻重,T (Treatment) 代表治疗方案,Y (outcome) 代表是否死亡。C是T和Y的共同原因。 即,病情轻重C会影响选择哪种治疗方案T,并且病情轻重C也会导致是否死亡Y

在这种情况下,医生会给大多数病情轻微的人提供方案A,而对病情较严重的人使用方案B治疗。因为病情严重的人更有可能死亡(C→Y),并且病情严重更有可能接收方案B治疗(C→T)。

因此,方案B的总体死亡率更高的原因是因为选择方案B中的人大多数(500/550)是重症,即使选了方案B其死亡率100/500=20%也比轻症用方案B的死亡率5/50=10%要高,最终混合的总结果会更偏向于重症的结果。

在这里,病情 C 混淆了治疗 T 对死亡率 Y 的影响。为了纠正这种混杂因素,我们必须研究相同条件的病人的 T 和 Y 的关系。这意味着,最好的治疗方法是在每个子群体(图中的“mild”和“severe”列)中选择低死亡率的治疗方法:即方案 B。

Scenario 2

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

T是C的原因,而C又是Y的原因。即治疗方案T是病情轻重C的原因,而病情轻重C又是是否死亡Y的原因。

这种情况的实际场景是,方案B非常稀缺,需要病人在被开出治疗处方之后,等待很长时间才能接受治疗,而选择方案A的患者则不存在这个问题。

因为COVID-27患者的病情会随着时间的推移而恶化,开出治疗B实际上会使病情轻微的患者发展为严重的病情,造成更高的死亡率。因此,即使方案B一旦用药就比方案A更有效(正面作用T→Y),由于选择方案B会导致病情恶化(因为等待时间更长,负面作用T→C→Y),因此方案B总的来说效果较差。考虑到这种因果结构,方案A是比较好的。

总之,更有效的方案完全取决于问题的因果结构。


3. 【Note】相关性≠因果

在平时使用的机器学习模型中,得到的估计结果反映的是变量间的相关性。然而,相关并不意味着因果(Correlation does not Imply Causation)

事实上,因果关系只是相关关系的一种。除了因果(Causation),相关性的主要来源还有 混淆(Confounding)样本选择偏差(Selection bias) 。三类分别对应以下三种结构:

在这里插入图片描述

下面通过一个例子来直观地理解相关性≠因果的含义。

3.1 混淆(Confounding)——共同原因

混淆(Confounding)是指存在一个变量 X X X混淆因子),该变量构成了 T T T Y Y Y 的共同原因;如果忽略了 X X X 的影响,那么 T T T Y Y Y 之间就存在假性相关关系:即 T T T 并非 Y Y Y 产生的直接原因。

【E.g.】例如:在夏天,由于天气热,所以买雪糕的人多;同样地,由于天气热,游泳溺水的人数增加。如果忽略了气温的影响,仅凭冰激凌销量与溺水人数呈现出来的正向相关关系,则可能会得出吃冰淇淋会导致游泳溺水的错误结论。

在这里插入图片描述

3.2 样本选择偏差(Selection Bias)——共同结果

样本选择偏差(Selection Bias)是指,当两个相互独立的变量 T T T Y Y Y 产生了一个共同结果变量 S S S对撞因子),引入 S S S 则为 T T T Y Y Y 之间打开了一条通路 T → S ← Y T \rightarrow S \leftarrow Y TSY,从而误以为 T T T Y Y Y 之间存在关联关系,以共同结果为条件造成估计结果的偏差,这种现象也被称为“伯克森悖论”。

伯克森悖论揭示了一个现象:样本的选择会导致因果分析的误差。

【E.g.】例如,在一项研究中发现,一般人群中大约有5%的肩周炎,这一比例与眼镜度数无关。但是当只关注过去3个月患肩周炎的患者时,发现患有肩周炎,其眼镜度数平均提升250度,两者之间有很强的相关性。这是因为在研究时可能限制了对象都是一些平时用电脑较多的患者,因此他们用眼过度,导致眼镜度数增加。


4. 潜在结果(Potential Outcome)

潜在结果可以理解为,在每一种干预下可能的结果,任何一个干预都存在一个潜在结果。

场景1:一个人头疼,考虑是否吃药来帮助缓解头疼。如果吃药后头疼好了,是否意味着吃药能够治愈头疼?假设没有吃药头疼也会好怎么办?在这种情况下,吃药并不是头疼治愈所必需的,所以吃药能治好头疼的因果关系的说法是站不住脚的。
在这里插入图片描述

场景2:稍微改变一下,如果吃药后头疼好了,没有吃药仍然头疼,在这种情况下,吃药对头疼缓解有因果关系。

在这里插入图片描述

在上述两种情况下,都使用了称为潜在结果的因果概念。治疗 T T T 代表是否吃药: T = 1 T=1 T=1 代表吃药, T = 0 T=0 T=0 代表不吃药;结果 Y Y Y 代表是否头疼, Y = 1 Y=1 Y=1 代表不头疼, Y = 0 Y=0 Y=0 代表头疼。

在这里插入图片描述

  • d o ( T = i ) do(T=i) do(T=i) 代表进行某种干预
  • Y i ( 1 ) Y_i(1) Yi(1) 表示吃药后的潜在结果; Y i ( 0 ) Y_i(0) Yi(0) 表示没有吃药后的潜在结果
  • Y i ( 1 ) − Y i ( 0 ) Y_i(1) - Y_i(0) Yi(1)Yi(0) 表示个人因果效应(Casual Effect)

补充概念

  • 单元(Unit):干预作用的最小单元,可以是乘客、订单、时间片等,一个单元可以视为数据集中的一个样本点。
  • 干预(Treatment):作用于Unit的动作,假设投放广告、优化策略等;干预可以是二元,也可以是多元,例如多个实验室有不同的干预水平。
  • 事实结果(Factual Outcome):实际实施某种干预后所观测到的结果,也称为观测结果,是潜在结果的一种实际表现。
  • 反事实结果(Counterfactual Outcome):对于一个单元来说,除了它被实施的干预以外,其他所有干预的潜在结果都是反事实结果。

在场景1中:casual effect=1-1=0,在场景2中:casual effect=1-0=1。

然而,在实际场景中,我们只能得到一个干预后的潜在结果,因为我们不能同时让一个人吃药又不吃药。例如,一个人吃药了,那么无法观测到未吃药的反事实结果。而某一个单位的反事实结果是不能直接得到的。对于这种情况,就需要考虑一个群体的因果效应

Average Treatment Effect (ATE) : E ( Y i ( 1 ) − Y i ( 0 ) ) = E ( Y ( 1 ) ) − E ( Y ( 0 ) ) \textbf{Average Treatment Effect (ATE)}: E(Y_i(1)-Y_i(0))=E(Y(1)) - E(Y(0)) Average Treatment Effect (ATE):E(Yi(1)Yi(0))=E(Y(1))E(Y(0))

想要直接得到 E ( Y ( 1 ) ) E(Y(1)) E(Y(1)) 不好计算,那能通过条件期望 E ( Y ∣ T = 1 ) − E ( Y ∣ T = 0 ) E(Y|T=1) - E(Y|T=0) E(YT=1)E(YT=0)得到吗?答案是否定的。因为在很多情况下,这两个是不相等的,还记得嘛:相关性不等于因果。

在这里插入图片描述

当存在一个混淆变量 C C C 时, C C C 会对 T T T 有影响。如果能够得到一个随机控制实验,使得 C C C T T T 无关,则上述两个等式是相等的。

在这里插入图片描述

我们可以得到随机实验,使得控制组和对照组之间是可比的。但是在实际中,某些情况无法做随机实验,我们就只能使用观测数据来进行因果推断。


5. 观测数据下的因果推断

虽然AB随机试验是评估因果效应最科学的方法之一,但是在一些实际情况中,AB实验并不适用,例如:

  • 样本之间存在一些关系
    • 样本之间存在社交网络关系(营销策略)
    • 样本之间存在竞争观察(分单策略)
  • 样本被稀释(例如发券策略)
  • 不存在可以分开的样本
    • 例如双十一,无法干预哪些用户参与,哪些用户不参与,这个时候就无法将用户分流

那么如何根据观测数据来估计因果效应呢?这里先介绍一个最简单的方法。

假设有一个变量 W W W,它能够充分控制混淆(Confounding),使得当给定 W = w W=w W=w 时, E ( Y ( t ) ∣ W = w ) = E ( Y ∣ T = t , W = w ) E(Y(t)∣W=w) = E(Y∣T=t, W=w) E(Y(t)W=w)=E(YT=t,W=w),也就是说通过这个 W W W,阻断了其他变量对 T T T 的影响,此时就只有 Y Y Y T T T 之间的关系,因此我们可以得到:

在这里插入图片描述

这样就可以测量不同干预下潜在结果的期望。回到一开始的例子,此时 C C C 相当于 W W W,根据上面的公式,可以计算结果如下:

在这里插入图片描述

从直觉上来看,此时在给定 C C C 的情况下, C C C 即不是 T T T 的因,也不是 T T T 的果,因此我们要计算的应该是两种方案整体的治疗效果,因此,我们将两种病情的比例来作为权重,且两种方案权重应该一致,因为我们面对的就是整体对象!


References

  1. 【动手学因果推断】(一):因果推断入门
  2. 万字因果推断入门:为什么要做因果推断?
  3. 【因果推断】一因果图模型与选择偏差

相关文章:

因果推断【Causal Inference】(一)

文章目录 1. 什么是因果推断&#xff1f;2. 为什么要提出因果推断&#xff1f;Motivation&#xff1a;辛普森悖论Scenario 1Scenario 2 3. 【Note】相关性≠因果3.1 混淆(Confounding)——共同原因3.2 样本选择偏差(Selection Bias)——共同结果 4. 潜在结果(Potential Outcome…...

人工智能通识速览(Part5. 大语言模型)

五、大语言模型 1.NLP 自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;是人工智能领域的一个重要分支&#xff0c;专注于研究 计算机如何理解、生成和处理人类语言。它的目标是让机器能够像人类一样“读懂”文本或语音&#xff0c;并执 行翻译、问答、摘…...

优化 Django 数据库查询

优化 Django 数据库查询 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 优化 Django 数据库查询**理解 N+1 查询问题****`select_related`:外键的急加载**示例何时使用 `select_re…...

MCP AI:下一代智能微服务控制平台 (.NET Core)

平台概述 MCP AI (Microservice Control Platform AI) 是基于.NET Core构建的下一代智能微服务控制平台&#xff0c;旨在为企业级微服务架构提供智能化、自动化的管理和控制能力。 核心特性 智能服务编排 AI驱动的动态服务路由 自适应负载均衡算法 预测性扩展与收缩 统一…...

计算机网络基础:系列教程汇总

计算机网络基础:系列教程汇总 一、前言二、计算机网络基础概要三、计算机网络基础3.1 计算机网络基础:揭开网络世界的神秘面纱3.2 计算机网络基础:剖析网络的构成要素3.3 计算机网络基础:认识网络拓扑结构3.4 计算机网络基础:解析网络协议3.5 计算机网络基础:了解网络类型…...

互联网三高-高性能之JVM调优

1 运行时数据区 JVM运行时数据区是Java虚拟机管理的内存核心模块&#xff0c;主要分为线程共享和线程私有两部分。 &#xff08;1&#xff09;线程私有 ① 程序计数器&#xff1a;存储当前线程执行字节码指令的地址&#xff0c;用于分支、循环、异常处理等流程控制‌ ② 虚拟机…...

学习比较JVM篇(六):解读GC日志

一、前言 在之前的文章中&#xff0c;我们对JVM的结构、垃圾回收算法、垃圾回收器做了一些列的讲解&#xff0c;同时也使用了JVM自带的命令行工具进行了实际操作。今天我们继续讲解JVM。 我们学习JVM的目的是为了了解JVM&#xff0c;然后优化对应的参数。那么如何了解JVM运行…...

说说你对python的理解,有什么特性?

Python是一种高级、解释型、通用的编程语言&#xff0c;由Guido van Rossum于1991年首次发布。经过30多年的发展&#xff0c;Python已成为最受欢迎的编程语言之一&#xff0c;在Web开发、数据分析、人工智能、自动化运维等多个领域都有广泛应用。 Python的核心特性 1. 简洁优…...

【C语言】编译和链接

一、编译环境和运行环境 在ANSI C的任何一种实现中&#xff0c;存在着两个不同的环境&#xff1a; 1、翻译环境&#xff1a;在翻译环境中&#xff0c;其会通过编译和链接两个大的步骤&#xff0c;其中编译又分为了预处理&#xff08;这 个我们后面还会详细讲解&#x…...

Spark,IDEA编写Maven项目

IDEA中编写Maven项目 1.打开IDEA新建项目 2.选择java语言&#xff0c;构建系统选择Maven 3.IDEA中配置Maven 注&#xff1a;这些文件都是我们老师帮我们在网上找了改动后给我们的&#xff0c;大家可自行在网上查找 编写代码测试HDFS连接 1.在之前创建的pom.xml文件中添加下列…...

【HFP】蓝牙HFP服务层连接与互操作性核心技术研究

目录 一、互操作性设计哲学 二、服务级别连接&#xff08;SLC&#xff09;架构设计 2.1 连接建立流程总览 2.2 核心交互时序图 2.3 关键阶段技术实现 2.4 RFCOMM连接&#xff1a;通信的基石 2.5 特征交换与编解码协商 2.6 指示器状态同步 三、状态同步机制深度优化 3…...

VSCode使用Remote-SSH连接服务器时启动失败glibc不符合

问题 远程主机可能不符合glibc和libstdc VS Code服务器的先决条件 原因 VSCode更新后&#xff0c;如果服务端GLIBC低于v2.28.0版本将不再满足需求 查看服务端GLIBC版本&#xff1a; ~$ ldd --version ldd (Ubuntu GLIBC 2.23-0ubuntu11.3) 2.23解决 下载V1.85版本 下载链…...

InceptionNeXt:When Inception Meets ConvNeXt论文翻译

论文名称&#xff1a;InceptionNeXt:WhenInceptionMeetsConvNeXt 论文地址&#xff1a;https://arxiv.org/pdf/2303.16900.pdf 摘要&#xff1a; 受视觉Transformer(ViTs)长距离建模能力的启发&#xff0c;大核卷积因能扩大感受野、提升模型性能而受到广泛研究与应用&#x…...

windows下,cursor连接MCP服务器

1.下载并安装node 安装后&#xff0c;在cmd命令框中&#xff0c;输入命令node -v可以打印版本号&#xff0c;证明安装完成 2.下载MCP服务器项目 在MCP服务器找到对应项目&#xff0c;这里以server-sequential-thinking为例子 在本地cmd命令窗口&#xff0c;使用下面命令下载…...

从零开始:使用 kubeadm 部署 Kubernetes 集群的详细指南

使用kubeadmin 部署k8s集群 目录 硬件要求 前期准备 Master 检查 API 服务器证书 清理并重新初始化 查 kubeadm 初始化日志 配置 crictl 的 endpoint 硬件要求 主机名 ip 硬件最低要求 建议&#xff0c;跑的块 master 10.1.1.7 2核&#xff0c;2G 内存给个6G node2 …...

rancher 采用ingerss ssl 部署nginx+php项目

rancher 采用ingerss ssl 部署nginxphp项目 一、创建nginx dockerfile&#xff0c;上传到阿里云镜像仓库&#xff08;公有&#xff0c;不需要密码&#xff09; 二、 创建php7.4 dockerfile&#xff0c;需要必须扩展&#xff0c; 上传到阿里云镜像仓库&#xff08;公有&#x…...

开源聚合平台 Websoft9:开源创新已成为中小企业数字化转型、数据驱动企业的基础

引言&#xff1a;开源软件正在重塑企业数字化未来 根据2024年OpenLogic报告&#xff0c;94.57%的企业已使用开源软件&#xff0c;其中34.07%的机构加大了对开源技术的投入。开源软件凭借其灵活性、成本优势和生态协作能力&#xff0c;成为中小企业&#xff08;SMB)数字化转型的…...

IntelliJ IDEA 中通义灵码插件使用指南

IntelliJ IDEA 中通义灵码插件使用指南 通义灵码&#xff08;TONGYI Lingma&#xff09;是阿里云推出的一款基于通义大模型的智能编码辅助工具&#xff0c;支持 IntelliJ IDEA 等主流 IDE。它提供了代码补全、自然语言生成代码、单元测试生成、代码注释与解释等功能&#xff0…...

如何免费使用Meta Llama 4?

周六, Meta发布了全新开源的Llama 4系列模型。 架构介绍查看上篇文章。 作为开源模型,Llama 4存在一个重大限制——庞大的体积。该系列最小的Llama 4 Scout模型就拥有1090亿参数,如此庞大的规模根本无法在本地系统运行。 不过别担心!即使你没有GPU,我们也找到了通过网页…...

introduceHLSL

最近打算好好学习一下ue的shader&#xff0c;跟着下面的视频&#xff0c;打算每天至少更新一集 https://www.youtube.com/watch?vlsXB1PQdGx0&t494s 通过下面的蓝图方式我们就可以得到一个变化的材质 alpha参数的生成实际上就是下面的式子 custom节点允许直接的写入hlsl…...

Module模块化

导出&#xff1a;export关键字 export var color "red"; 重命名导出 在模块中使用as用导出名称表示本地名称。 import { add } from "./05-module-out.js"; 导入&#xff1a; import关键字 导入单个绑定 import { sum } from "./05-module-out.js&…...

使用 Rsync + Lsyncd 实现 CentOS 7 实时文件同步

文章目录 &#x1f300;使用 Rsync Lsyncd 实现 CentOS 7 实时文件同步前言介绍架构图&#x1f9f1;系统环境&#x1f527;Rsync配置&#xff08;两台都需安装&#xff09;关闭SELinux&#xff08;两台都需&#xff09; &#x1f4e6;配置目标端&#xff08;client&#xff09…...

软件工程第三章习题

一、选择题 1. (1)答案&#xff1a;D 解析&#xff1a;可行性研究是对项目在技术、经济、操作等多方面进行全面评估论证&#xff0c;也称为项目论证 。技术可行性研究、操作可行性研究、经济可行性研究只是可行性研究的部分内容&#xff0c;不能涵盖整体概念。 2. (2)答案&…...

基于ElasticSearch的向量检索技术实践

基于ElasticSearch的向量检索技术实践 作者&#xff1a;Tableau 原文地址&#xff1a;https://zhuanlan.zhihu.com/p/620260383 图片、视频、语音、文本等非结构化数据可以通过人工智能技术&#xff08;深度学习算法&#xff09;提取特征向量&#xff0c;然后通过对这些特征向量…...

Spring Boot 项目日志系统全攻略:Logback、Log4j2、Log4j与SLF4J整合指南

Spring Boot 项目日志系统全攻略&#xff1a;Logback、Log4j2、Log4j与SLF4J整合指南 日志系统是应用程序不可或缺的组成部分&#xff0c;良好的日志实践能极大提升开发调试和线上问题排查的效率。本文将全面介绍Spring Boot项目中各种日志框架的配置与使用方案&#xff0c;包…...

【设计模式】责任链模式

简介 很多公司都有请假的流程&#xff0c;当员工提交请假申请时&#xff0c;请求会沿着 组长 → 经理 → CEO 的链条传递&#xff0c;直到有对应层级的领导处理。 适用场景 一个请求需要多个对象中的一个或多个处理&#xff08;如审批流程、过滤器链&#xff09;。处理对象和…...

智能气候前沿:AI Agent结合机器学习与深度学习在全球气候变化驱动因素预测

全球气候变化已成为21世纪最严峻的环境挑战&#xff0c;其复杂的驱动因素如温室气体排放、气溶胶浓度、野火、海冰融化以及农业和生态系统变化等&#xff0c;交织影响着全球的气候格局。 第一&#xff1a;气候变化驱动因素与数据科学基础 1.1气候变化 全球气候变化 中国碳中…...

es 原生linux部署集群

背景 目的&#xff1a; 1. 理解不同部署方式的架构差异 2. 对比环境配置的复杂度 3. 评估性能与资源管理 4. 探索扩展性与高可用性 5. 学习安全与隔离机制 6. 实践监控与维护 7. 掌握混合部署与云原生场景 实验的最终目标 技能提升&#xff1a; 全面掌握Elasticsear…...

Springboot 同时支持不同的数据库,Oracle,Postgresql

## 关键字 Java&#xff0c;Springboot&#xff0c;Vscode&#xff0c;支持多种数据库 ## 背景环境 我在实际项目开发工程中遇到这样一个问题&#xff0c;用户 A 使用 Oracle 数据库&#xff0c;用户 B 使用 Postgresql 数据库&#xff0c;但是用户 AB 都使用我们的项目。所以…...

go --- go run main.go 和 go run .

目录 go run main.gogo run .示例 go run main.go 功能&#xff1a;只编译和运行指定的文件&#xff08;main.go&#xff09;&#xff0c;忽略同目录下的其他文件。适用场景&#xff1a; 当你只需要运行一个独立的文件&#xff0c;且该文件不依赖其他文件时。适合单文件程序或…...

关于Spring MVC中@RequestMapping注解的详细解析,涵盖其核心功能、属性、使用场景及最佳实践

以下是关于Spring MVC中RequestMapping注解的详细解析&#xff0c;涵盖其核心功能、属性、使用场景及最佳实践&#xff1a; 1. 基础概念 RequestMapping是Spring MVC的核心注解&#xff0c;用于将HTTP请求映射到控制器&#xff08;Controller&#xff09;的方法上。它支持类级…...

deepseek使用记录26——从体力异化到脑力异化

我们的一切发现和进步&#xff0c;似乎结果是使物质力量具有理智生命&#xff0c;而人的生命则化为愚钝的物质力量。AI快速发展的现实中&#xff0c;人面临着比工业革命更深刻的异化。在工业革命中&#xff0c;人的身躯沦为了机器的一部分&#xff0c;而现在人的脑袋沦为了AI的…...

Ubertool 的详细介绍、安装指南及使用说明

Ubertool&#xff1a;多协议网络分析与调试平台 一、Ubertool 简介 Ubertool 是一款开源的 多协议网络分析工具&#xff0c;专为物联网&#xff08;IoT&#xff09;、嵌入式系统和工业自动化领域设计。它支持蓝牙、Wi-Fi、LoRa、CAN总线等多种通信协议的实时监控、数据包捕获…...

用 HTML、CSS 和 jQuery 打造多页输入框验证功能

在网页开发中&#xff0c;输入框验证是至关重要的一环&#xff0c;它能确保用户输入的数据符合特定要求&#xff0c;提升交互的准确性与流畅性。今天&#xff0c;我们就来深入剖析一个运用 HTML、CSS 和 jQuery 实现多页输入框验证的精彩实例&#xff0c;带你领略前端开发中表单…...

在CentOS上安装Docker需要注意的事项

文章目录 前言Docker Engine如何设置仓库设置镜像加速器获取镜像加速器地址 写在前面&#xff1a;大家好&#xff01;我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正&#xff0c;感谢大家的不吝赐教。我的唯一博客更新地址是&#xff1a;https://ac-…...

Chrome 135 版本新特性

Chrome 135 版本新特性 一、Chrome 135 版本浏览器更新 ** 1. 第三方托管账户注册迁移到 OIDC 授权码流程** Chrome 135 将账户注册的登录页面从营销网站迁移到动态网站&#xff0c;同时也将 OpenID Connect (OIDC) 的隐式流程迁移到授权码流程。这样做的目的是进一步提升第…...

CMake实战指南一:add_custom_command

CMake 进阶&#xff1a;add_custom_command 用法详解与实战指南 在 CMake 构建系统中&#xff0c;add_custom_command 是一个灵活且强大的工具&#xff0c;允许开发者在构建流程中插入自定义操作。无论是生成中间文件、执行预处理脚本&#xff0c;还是在目标构建前后触发额外逻…...

K8S学习之基础七十五:istio实现灰度发布

istio实现灰度发布 上传镜像到harbor 创建两个版本的pod vi deployment-v1.yaml apiVersion: apps/v1 kind: Deployment metadata:name: appv1labels:app: v1 spec:replicas: 1selector:matchLabels:app: v1apply: canarytemplate:metadata:labels:app: v1apply: canaryspec…...

7-1 列出连通集

作者 陈越 单位 浙江大学 给定一个有 n 个顶点和 m 条边的无向图&#xff0c;请用深度优先遍历&#xff08;DFS&#xff09;和广度优先遍历&#xff08;BFS&#xff09;分别列出其所有的连通集。假设顶点从 0 到 n−1 编号。进行搜索时&#xff0c;假设我们总是从编号最小的顶点…...

XML Schema 指示器

XML Schema 指示器 引言 XML Schema 是一种用于定义 XML 文档结构的语言,它能够确保 XML 文档的合法性。在 XML 文档的解析和应用中,XML Schema 指示器(XML Schema Indicator)扮演着至关重要的角色。本文将详细介绍 XML Schema 指示器的概念、作用、应用场景以及如何使用…...

Linux内核中TCP协议栈的实现:tcp_close函数的深度剖析

引言 TCP(传输控制协议)作为互联网协议族中的核心协议之一,负责在不可靠的网络层之上提供可靠的、面向连接的字节流服务。Linux内核中的TCP协议栈实现了TCP协议的全部功能,包括连接建立、数据传输、流量控制、拥塞控制以及连接关闭等。本文将深入分析Linux内核中tcp_close…...

17-产品经理-创建发布

点击“发布”-“创建发布”。 填写发布名称&#xff0c;选择测试的版本。还可以设置此次发布是否为“里程碑”。 点击“保存”后&#xff0c;进入该发布详情页面。需要为此次发布关联需求、已解决BUG、以及遗留BUG。可以通过设置条件&#xff0c;进行“搜索”&#xff0c;然后批…...

了解Spring的统一功能

目录 一、统一数据返回格式 1.引入统一数据返回格式 2.学习使用统一数据返回格式 support方法 beforeBodyWrite方法 统一数据返回格式具体逻辑 使用统一数据返回格式存在的问题 解决方法&#xff1a; 统一数据返回格式的优点 统一数据返回格式代码实现&#xff08;包含了…...

123213

根据道路在道路网的地位、交通功能、对沿线的服务功能划分可分为快速路、主干路、次干路及支路 快速路完全为交通功能服务, 主干路以交通功能为主, 次干路是城市区域性的交通干道&#xff0c;为区域交通集散服务&#xff0c;兼有服务功能&#xff0c;结合主干路组成干路网 …...

通过 axios 请求回来的 HTML 字符串渲染到 Vue 界面上并添加样式

1. 通过 axios 获取数据 使用 axios 发起请求&#xff0c;获取返回的 HTML 字符串数据。 2. 在 Vue 中处理和渲染数据 由于 HTML 字符串中可能包含一些标签和样式&#xff0c;直接插入到 Vue 的模板中可能会导致样式问题。可以通过以下方式处理&#xff1a; 方法一&#xf…...

P1162 填涂颜色(BFS)

题目描述 由数字 0 组成的方阵中&#xff0c;有一任意形状的由数字 1 构成的闭合圈。现要求把闭合圈内的所有空间都填写成 2。例如&#xff1a;66 的方阵&#xff08;n6&#xff09;&#xff0c;涂色前和涂色后的方阵如下&#xff1a; 如果从某个 0 出发&#xff0c;只向上下…...

【笔记】VS中C#类库项目引用另一个类库项目的方法

VS中C#类库项目引用另一个类库项目的方法 在 C# 开发中&#xff0c;有时我们需要在一个类库项目中引用另一个类库项目&#xff0c;但另一个项目可能尚未编译成 DLL。在这种情况下&#xff0c;我们仍然可以通过 Visual Studio 提供的项目引用功能进行依赖管理。 &#x1f3af; …...

进程内存分布--之smaps呈现memory-layout.cpp内存分布

上一篇介绍了&#xff1a;进程内存分布--之单线程代码来内存分布呈现memory-layout.cpp 这里我们使用smaps将更加形象的的体现内存分布&#xff0c;smaps文件是Linux的proc文件系统提供的一种可以查看内存资源使用情况的方法,Linux系统中运行的库、堆、栈等信息都可在smaps中查…...

再看自适应RAG方法:SEAKR|PIKE-RAG|DeepRAG

当大语言模型开始"怀疑人生":一场关于知识检索的AI内心戏 各位看官,今天我们要聊一个AI界的"哲学难题"——当大语言模型突然意识到自己可能是个"半瓶子醋",会发生什么奇妙反应? 想象一下这个场景:某天深夜,ChatGPT正对着用户提问"如…...

DNS服务(Linux)

DNS 介绍 dns&#xff0c;Domain Name Server&#xff0c;它的作用是将域名解析为 IP 地址&#xff0c;或者将IP地址解析为域名。 这需要运行在三层和四层&#xff0c;也就是说它需要使用 TCP 或 UDP 协议&#xff0c;并且需要绑定端口&#xff0c;53。在使用时先通过 UDP 去…...