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

从 Vue 到 React:React 合成事件

目录

    • 一、什么是 React 合成事件?
    • 二、处理流程
      • React 事件系统的大致流程
      • 和 Vue 3 的区别
    • 三、用法示例
    • 四、SyntheticEvent 的特点
    • 五、为什么 React 要统一事件到根节点?
      • 1.减少事件监听器数量
      • 2. 简化事件解绑逻辑
      • 3. 保证一致的行为
    • 六、React 18 后事件系统的新变化
      • 1. 合成事件对象变成自动持久化
      • 2 优先级和过渡(Transition)
      • 3. 更加灵活的事件监听方式(支持原生事件与合成事件并存)
      • 4. 改进事件冒泡机制

一、什么是 React 合成事件?

官方定义简化版:

合成事件(Synthetic Event) 是 React 自己实现的一套事件系统,模拟了浏览器原生 DOM 事件的所有能力,同时统一了不同浏览器的兼容性差异。

所以,React 不是直接在真实 DOM 上绑定原生事件,而是拦截浏览器事件,自己封装了一套虚拟事件对象,统一管理和派发。

这就是所谓的 Synthetic(合成)


二、处理流程

理解合成事件,需要先知道它内部做了什么事情:

React 事件系统的大致流程

  1. 组件挂载时,不会在每个元素上绑事件;
  2. React 会在根节点(比如 #root)统一绑定一组原生事件监听器(比如 click、input、change 等);
  3. 所有子组件的事件,都会冒泡到根节点
  4. React 拦截原生事件后,会创建一个SyntheticEvent对象,封装原生事件;
  5. 然后根据事件注册表,依次调用对应组件里绑定的事件处理函数。

和 Vue 3 的区别

特性Vue 3React
事件绑定位置通常直接绑定在元素上(原生事件)集中到根节点统一监听,冒泡拦截
事件对象原生 DOM EventSyntheticEvent(封装的虚拟事件对象)
浏览器兼容性处理框架层面适配部分完全由 SyntheticEvent 统一处理
事件解绑时机卸载时手动解绑React 自动管理合成事件生命周期

三、用法示例

在 React 中绑定事件非常简单,直接用 on事件名 驼峰式命名。

示例:React 里的点击事件

function Button() {function handleClick(event: React.MouseEvent<HTMLButtonElement>) {console.log('按钮被点击了');console.log(event.type); // synthetic event}return <button onClick={handleClick}>点击我</button>;
}
  • onClick(不是 all lowercase 的 onclick
  • 参数 event 是 React 的 SyntheticEvent 对象,不是浏览器原生 Event!

对比 Vue 3 的写法:

<template><button @click="handleClick">点击我</button>
</template><script setup>
function handleClick(event) {console.log('按钮被点击了');console.log(event.type); // 原生 event
}
</script>
  • Vue 直接就是监听原生事件;
  • 参数 event 是原生的 DOM Event。

四、SyntheticEvent 的特点

特性说明
自动回收SyntheticEvent 是池化(pooling)的,事件处理函数执行后对象被回收
统一 API不同浏览器下,属性和方法一致,无需写浏览器兼容代码
可访问原生事件event.nativeEvent 可以拿到真正的 DOM Event 对象
支持冒泡和捕获阶段事件冒泡、捕获机制兼容原生的行为

注意:

  1. React 早期版本(v16及以前)为了性能,在事件处理完后会复用 event 对象。所以你如果异步访问 event,需要先调用 event.persist()
function handleClick(event) {event.persist(); // 防止被回收setTimeout(() => {console.log(event.type); // safe}, 1000);
}

不过 React 17+ 以后官方优化了,但这个历史包袱需要了解。

  1. 因为React 的事件委托是通过根节点统一管理的,所以如果你在组件里用window.addEventListener,要记得在组件卸载时解绑,防止内存泄漏。

五、为什么 React 要统一事件到根节点?

我们已经知道了 合成事件 是个什么东西,那么 React 为什么要这么处理呢?

React 采用统一事件委托(Event Delegation)机制的根本目的是:

性能优化 + 统一管理 + 更好的跨浏览器兼容性。

详细拆开来讲:

1.减少事件监听器数量

如果不用事件委托,假设有 100 个按钮,每个按钮都绑定一个 click 事件监听器,浏览器要管理 100 个回调函数,开销非常大,尤其是在频繁增删节点的场景下。

而使用事件委托后:

  • 只需要在 document 或根节点(如 #root)上绑定一次 click 事件;
  • 所有子元素的点击都会冒泡到这个统一的监听器;
  • React 根据事件源(event.target)找到真正的处理逻辑。

这样就减少了 DOM 事件绑定数量,提高了整体性能。

2. 简化事件解绑逻辑

当组件卸载时:

  • 如果每个组件自己绑定事件,需要一一解绑,容易内存泄漏;
  • 而如果统一在根节点处理,只需要管理内部的注册表,不需要频繁触碰原生 DOM API。

可以让事件生命周期管理更简单、可控。

3. 保证一致的行为

不同浏览器对一些事件(如 focus, blur, input, change)的冒泡行为处理不同。

React 自己控制合成事件的冒泡路径,因此可以做到:

  • 行为统一,无论是在 Chrome、Firefox 还是 Safari;
  • API 统一,开发者无需写浏览器兼容判断。

降低了浏览器差异带来的开发和维护成本。

所以React 的事件委托机制主要是为了性能、代码统一、兼容性、易维护四个方面考虑。

六、React 18 后事件系统的新变化

React 18 引入了并发特性(Concurrent Features),带来了一些和事件处理相关的新变化,主要有这些:

1. 合成事件对象变成自动持久化

在 React 17 及之前版本:

  • SyntheticEvent 是有对象池复用的。
  • 每次事件触发后,事件对象会被自动回收(event pooling)
  • 如果你想在异步操作里使用事件对象,需要调用 e.persist() 手动阻止回收。
function handleClick(e) {e.persist(); // 手动持久化setTimeout(() => {console.log(e.target); // 否则这里访问不到}, 1000);
}

而在 React 18:

  • 彻底取消了 event pooling。
  • 合成事件对象默认就是持久的,不需要再 e.persist()
  • 你可以放心在异步操作、setTimeout、Promise 等里访问事件对象。

好处: 简化开发,避免初学者因忘记 e.persist() 导致的奇怪 bug。

2 优先级和过渡(Transition)

React 18 提供了 startTransition API,专门处理低优先级的更新

示例:

import { startTransition } from 'react';function Search() {const [list, setList] = useState([]);function handleInput(e) {const value = e.target.value;startTransition(() => {setList(generateBigList(value));});}return <input onChange={handleInput} />;
}
  • 输入时,不会因为大量更新而卡住界面。

3. 更加灵活的事件监听方式(支持原生事件与合成事件并存)

在 React 18+ 中,你可以选择:

  • 用 React 的合成事件系统(默认方式)
  • 或自己直接给 DOM 元素添加原生事件监听器(addEventListener)

比如,某些高频率的原生事件(如 mousemove, scroll):

  • 合成事件虽然有统一机制,但有额外开销;
  • 在极致性能优化下,可以选择直接绑定原生事件。

示例:

useEffect(() => {const div = document.getElementById('myDiv');const handler = () => console.log('mouse move');div?.addEventListener('mousemove', handler);return () => {div?.removeEventListener('mousemove', handler);};
}, []);

这种方式,完全绕开了 React 的 Synthetic Event 系统。
所以:

  • 大多数普通事件:继续用 React 合成事件,享受统一管理;
  • 极端高性能场景(高频原生事件):手动绑定原生事件。

4. 改进事件冒泡机制

在并发模式下,React 渲染变得可中断可恢复,所以事件系统也要能适应:

  • 即使组件正在渲染中,事件也不会丢失;
  • 事件冒泡路径的计算更精确,能适配组件的挂起(Suspense)/恢复操作;
  • 在不同优先级的更新之间,合理处理事件(startTransition、defer update 等场景)。

简单来说,**新版事件冒泡机制更智能,更贴合并发渲染特性。

所以我们在实际开发中:

  • 普通项目,放心使用 React 合成事件,不需要刻意切换。
  • 只有在【滚动、鼠标移动、大规模动画监听】等高频场景,再考虑用原生事件。
  • 在异步任务里(比如 setTimeout、Promise)使用事件对象时,不用再 persist,很自然就能访问。
  • 在启用并发特性的项目(如 startTransition),不用担心事件丢失或异常,React 内部已经优化好了。

相关文章:

从 Vue 到 React:React 合成事件

目录 一、什么是 React 合成事件&#xff1f;二、处理流程React 事件系统的大致流程和 Vue 3 的区别 三、用法示例四、SyntheticEvent 的特点五、为什么 React 要统一事件到根节点&#xff1f;1.减少事件监听器数量2. 简化事件解绑逻辑3. 保证一致的行为 六、React 18 后事件系…...

react的fiber 用法

在 React 里&#xff0c;Fiber 是 React 16.x 及后续版本采用的协调算法&#xff0c;它把渲染工作分割成多个小任务&#xff0c;让 React 可以在渲染过程中暂停、恢复和复用任务&#xff0c;以此提升渲染性能与响应能力。在实际开发中&#xff0c;你无需直接操作 Fiber 节点&am…...

深度学习-学习笔记

文章目录 1、概述2、学习笔记2.1、pytorch 的环境配置 1、概述 本篇博客用来记录我学习深度学习的学习笔记 参考视频&#xff1a;PyTorch深度学习快速入门教程 PyTorch 是一个开源的机器学习框架&#xff0c;主要用于构建和训练深度学习模型。 2、学习笔记 2.1、pytorch 的环…...

[创业之路-390]:人力资源 - 社会性生命系统的解构与重构:人的角色嬗变与组织进化论

前言&#xff1a; 人、财、物、信息、机制、流程、制度、方法共同组合了一个持续的消耗资源、持续的价值创造、持续面临生存与发展、遗传与变异的社会性生命系统。 "人"是所有社会性生命系统最最基础性的要素&#xff0c;它弥漫在系统中多维立体空间的不同节点上&am…...

Redis常见面试题——List对象

当然可以&#xff01;这里我帮你整理了一份【Redis中 List 结构】相关的高频面试题&#xff0c;并附上简明回答&#xff1a; &#x1f4da; Redis List 结构面试题&#xff08;高频总结版&#xff09; 1. Redis 中的 List 是什么&#xff1f;底层是什么实现的&#xff1f; 答&…...

案例速成GO操作redis,个人笔记

更多个人笔记&#xff1a;&#xff08;仅供参考&#xff0c;非盈利&#xff09; gitee&#xff1a; https://gitee.com/harryhack/it_note github&#xff1a; https://github.com/ZHLOVEYY/IT_note 安装redis客户端&#xff1a;go get github.com/redis/go-redis/v9 注意go …...

什么是WebSocket?NGINX如何支持WebSocket协议?

大家好&#xff0c;我是锋哥。今天分享关于【什么是WebSocket&#xff1f;NGINX如何支持WebSocket协议&#xff1f;】面试题。希望对大家有帮助&#xff1b; 什么是WebSocket&#xff1f;NGINX如何支持WebSocket协议&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java…...

ssm驾校预约管理系统的设计与实现(源码+lw+部署文档+讲解),源码可白嫖!

摘要 伴随着我国社会的发展&#xff0c;人民生活质量日益提高。在人们出行方式上的体现就是&#xff0c;价格较为昂贵的代步工具——汽车&#xff0c;它的拥有率在我国越来越高了。而汽车的行驶速度很快&#xff0c;并且随着汽车拥有率的增加&#xff0c;城市中行驶和停靠的车…...

babel核心知识点

Babel 是一个 JavaScript 编译器&#xff0c;主要用于将 ECMAScript 2015 版本的代码转换为向后兼容的 JavaScript 代码&#xff0c;以便在旧版本的浏览器或环境中运行。以下是 Babel 的核心知识点&#xff1a; 1. 基本概念 编译器&#xff1a;Babel 本质上是一个编译器&…...

学习笔记(算法学习+Maven)

单调队列优化多重背包 #include <bits/stdc.h> using namespace std; const int M 2010; const int N 20010; int q[N]; int hh 0, tt -1; int f[N]; int g[N]; int v[M], w[M], s[M]; int n, m; int main() { cin >> n >> m; for (int i 1; …...

买币永续合约成全球交易热点,XBIT去中心化交易所平台显著提升市场流动性

在全球加密货币市场日益扩大的背景下&#xff0c;买币永续合约正展现出惊人的增长势头。虽然比特币自2021年黄金时期以来整体兴趣有所减弱&#xff0c;但永续合约市场表现亮眼&#xff0c;专业和机构交易者正从传统日历期货转向这一领域&#xff0c;使得永续合约占据了约66%的未…...

详解 `from datasets import load_dataset`:数据格式、公开数据集与自定义数据集实战指南

在自然语言处理(NLP)和机器学习领域,Hugging Face 的 datasets 库凭借其高效的数据加载和预处理能力成为开发者必备工具。本文通过代码示例详解 load_dataset 的核心用法,涵盖数据格式解析、公开数据集调用和自定义数据集构建。 一、数据格式解析与加载示例 datasets 库支…...

Eclipse 插件开发 1

Eclipse 插件开发 1 1 创建 Eclipse 插件2 特点对比表3 总结对比表 Eclipse 是一个功能强大的集成开发环境(IDE)&#xff0c;最初为 Java 开发设计&#xff0c;但现在已经支持多种语言和平台。它的核心优势在于高度可扩展的插件架构&#xff0c;使开发者能够定制开发环境以满足…...

单链表专题(1)

1.什么是链表&#xff1f; 链表是结构体变量与结构体变量连接在一起 2.动态创建一个链表 动态内存申请模块化设计 1.创建链表&#xff08;创建一个表头表示整个链表&#xff09; 2.创建结点 3.插入结点 4.删除结点 5.打印遍历链表&#xff08;测试&#xff09; 3.创建链…...

[贪心_8] 跳跃游戏 | 单调递增的数字 | 坏了的计算器

目录 1.跳跃游戏 题解 2.单调递增的数字 证明 3.坏了的计算器 题解 解法一&#xff1a;正向推导 解法二&#xff1a;正难则反 1.跳跃游戏 链接&#xff1a; 55. 跳跃游戏 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你…...

Python基于Django的全国二手房可视化分析系统【附源码】

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…...

Spring Boot 升级指南(2.x → 3.x)

&#x1f680; Spring Boot 升级指南&#xff08;2.x → 3.x&#xff09; &#x1f522; 1️⃣ 必读文档 &#x1f4d8; 当您需要从 Spring Boot 2.x 升级时&#xff1a; • 官方迁移指南 → https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-…...

基于亚马逊云科技构建音频转文本无服务器应用程序

Amazon Transcribe是一项基于机器学习模型自动将语音转换为文本的服务。它提供了多种可以提高文本转录准确性的功能&#xff0c;例如语言自定义、内容过滤、多通道音频分析和说话人语音分割。Amazon Transcribe 可用作独立的转录服务&#xff0c;也可以集成到应用程序中提供语音…...

io_uring概述:现代 Linux 异步 IO 的新范式

一、引言 在 Linux 系统中&#xff0c;I/O 性能一直是高性能服务器、数据库、存储系统的关键瓶颈。传统的 I/O 接口&#xff08;如 read、write、poll、epoll&#xff09;已经难以满足现代高吞吐低延迟场景的需求。io_uring 的诞生&#xff0c;正是为了解决这些传统 I/O 模型中…...

定制一款国密浏览器(12):分析SM2签名算法的实现

SM2 是一种非对称加密算法,除了用来进行加密解密外,主要作用还用作数字签名。数字签名是私钥签名,公钥用来验签。由于私钥是不公开的,所以私钥签名还可以防抵赖。 一般的签名流程如下: 发送者对消息计算摘要值。发送者用私钥对摘要值进行签名得到签名值。发送者将原始消息…...

SSE协议

目录 SSE协议协议实现传输格式data 字段id 字段event 字段retry 字段 前后端实现使用案例FastAPI SSE-STARLETTE 模拟大模型推理流&#x1f5a5; 代码&#xff1a;FastAPI SSE-STARLETTE 模拟大模型推理流 SSE协议 SSE&#xff0c;全称是 Server-Sent Events&#xff0c;是一…...

精益数据分析(25/126):关键指标驱动业务发展

精益数据分析&#xff08;25/126&#xff09;&#xff1a;关键指标驱动业务发展 在创业和数据分析的道路上&#xff0c;我们都在不断探索如何利用数据实现业务的增长与优化。今天&#xff0c;让我们一起深入学习《精益数据分析》中的关键知识点&#xff0c;通过实际案例来理解…...

基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API

前言 Spring AI Alibaba 开源项目基于 Spring AI 构建&#xff0c;是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践&#xff0c;提供高层次的 AI API 抽象与云原生基础设施集成方案&#xff0c;帮助开发者快速构建 AI 应用。 项目地址 gitcode平台&#xff1a;ht…...

git 工具

Git教程 Git Bash详细教程 Git教程 Git Bash详细教程-CSDN博客 Download – TortoiseGit – Windows Shell Interface to Git...

利用【指针引用】对【非空单循环链表】进行删除操作

【非空单循环链表】是链式存储结构的其中一种&#xff0c;下面是各个词汇的意思&#xff1a; 先说【单】的意思&#xff1a; 这里指的是【单循环】的&#xff0c;另外在别的地方你会碰到一些不一样的循环链表&#xff0c;比如说是【多重链】的。 单循环 【单循环链表】常在表的…...

2025.4.26_STM32_SPI

1.SPI简介 2.硬件电路 所有SPI设备的SCK(时钟)、MOSI(主机输出从机输入)、MISO(主机输入从机输出)分别连在一起。SCK线只能被主机控制&#xff0c;和I2C相同。 主机另外引出多条SS控制线&#xff0c;分别接到各从机的SS引脚 (SS不用的时候为高电平&#xff0c;当主机需要选中某…...

基于OpenMV+STM32+OLED与YOLOv11+PaddleOCR的嵌入式车牌识别系统开发笔记

基于OpenMV、STM32与OLED的嵌入式车牌识别系统开发笔记 基于OpenMV、STM32与OLED的嵌入式车牌识别系统开发笔记系统架构全景 一、实物演示二、OpenMV端设计要点1. 硬件配置优化2. 智能帧率控制算法3. 数据传输协议设计 三、PyTorch后端核心实现&#xff1a;YOLOv11与PaddleOCR的…...

当JIT遇见K8s

目录 一、技术融合背景&#xff1a;从静态架构到动态生态的范式重构 1.1 动态编译技术的三次进化浪潮 1.2 容器编排系统的动态特性解剖 弹性伸缩的数学建模 服务质量&#xff08;QoS&#xff09;的编译场景适配 硬件拓扑感知的编译优化 二、关键技术挑战与突破性解决方案…...

单片机-89C51部分:4、固件烧录

飞书文档https://x509p6c8to.feishu.cn/wiki/M00gwFX3WilLe0kiAmBcPBUsnLc 接线 通过USB线把开发板和电脑连接起来&#xff0c;如果电脑没有安装过USB转串口驱动&#xff0c;在设备管理器中就找不到COM口&#xff0c;而且会有驱动提示叹号&#xff0c;我们可以下载下方驱动安…...

7.13 GitHub Sentinel全链路测试实战:自动化框架+零误差传输,QPS提升6倍!

GitHub Sentinel全链路测试实战:自动化框架+零误差传输,QPS提升6倍 GitHub Sentinel Agent 用户界面设计与实现 关键词:前后端联调测试、数据传输验证、接口稳定性测试、命令行工具测试、自动化测试框架 测试前后端功能与数据传输稳定性 1. 全链路测试策略设计 采用分层…...

stm32之EXIT外部中断详解

目录 1.引入: STM32F1031.1 中断路径上的3个部件1.2 STM32F103的GPIO中断1.1.1 GPIO控制器 -- AFIO1.1.2 EXTI1.1.3 NVIC1.1.4 CPU1. PRIMASK2. FAULTMASK3. BASEPRI 1.3 中断执行流程 2.旋转编码器介绍3.实验3.1 EXIT3.1.1 结构体3.1.2 函数 3.2 NVIC3.2.1 结构体3.2.2 函数 3…...

STM32 开发 - stm32f10x.h 头文件(内存映射、寄存器结构体与宏、寄存器位定义、实现点灯案例)

概述 STM32F10x.h 是 STM32F1 系列微控制器的核心头文件&#xff0c;提供了所有外设寄存器的定义和内存映射 一、内存映射 #define PERIPH_BASE ((uint32_t)0x40000000)#define APB1PERIPH_BASE PERIPH_BASE #define APB2PERIPH_BASE (PERIPH_BASE 0x…...

UniApp 的现状与 WASM 支持的迫切性

一、UniApp 的跨平台优势与性能瓶颈 UniApp 凭借“一次开发&#xff0c;多端发布”的核心理念&#xff0c;已成为跨平台开发的主流框架之一。然而&#xff0c;随着移动应用场景的复杂化&#xff08;如 3D 渲染、音视频处理、AI 推理&#xff09;&#xff0c;传统的 JavaScript…...

Prometheus、Zabbix和Nagios针对100个节点的部署设计架构图

一、Prometheus 架构图(联邦集群+分布式存储) graph TD;subgraph 全局监控层GlobalProm[Prometheus Server] -->|联邦查询| RegionalProm1[区域Prometheus]GlobalProm -->|联邦查询| RegionalProm2[区域Prometheus]GlobalProm -->|联邦查询| RegionalProm3[区域Pro…...

坚果派已适配的鸿蒙版flutter库【持续更新】

坚果派已适配的鸿蒙版flutter库 序号原仓版本适配仓文章解读是否完成1https://pub.dev/packages/fluttertoast8.2.12https://gitcode.com/nutpi/FlutterToasthttps://www.nutpi.net/thread?topicId1575是2https://pub.dev/packages/flutter_udid4.0.0https://gitcode.com/nut…...

代码随想录打卡|Day28 动态规划(理论基础、斐波那契数列、爬楼梯、使用最小花费爬楼梯)

动态规划 Part01 理论基础 代码随想录讲解链接 视频讲解链接 斐波那契数 力扣题目链接 代码随想录链接 视频讲解链接 题目描述&#xff1a; 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一…...

《USB技术应用与开发》第四讲:实现USB鼠标

一、标准鼠标分析 1.1简介 1.2页面显示 其中页面显示的“”不用管它&#xff0c;因为鼠标作为物理抓包&#xff0c;里面有时候会抓到一些错误&#xff0c;不一定是真正的通讯错误&#xff0c;很可能是本身线路接触质量不好等原因才打印出来的“”。 1.3按下鼠标左键 &#x…...

elk中kibana一直处于可用和降级之间且es群集状态并没有问题的解决方法

前言 在公司部elk的时候发现kibana的web界面一直很卡&#xff0c;数据量为0也会很卡&#xff0c;es群集状态正常&#xff0c;资源足够。 报错信息 [2025-03-17T09:54:50.19400:00][INFO ][status] Kibana is now available (was degraded) [2025-03-17T09:55:03.28000:00][I…...

2025.4.26总结

今天把马良老师的《职场十二法则》看完后&#xff0c;感触极大&#xff0c;这们课程就是一场职场启蒙课。 虽然看过不少关于职场的书籍&#xff0c;但大多数是关于职场进阶&#xff0c;方法方面的。并没有解答“面对未来二三十年的职场生涯&#xff0c;我该怎么去看待自己的工…...

一、UI自动化测试01--认识和元素定位方法

目录 一、自动化测试1. 自动化应用场景2. ⾃动化测试的优缺点3. ⾃动化测试的分类 二、UI ⾃动测试1. 适合使用的项目2. 实现时机3. 常⻅的UI⾃动化测试⼯具4. Selenium 框架5. Web ⾃动化环境部署6. Web ⾃动化基本代码 二、元素定位1. 浏览器开发者⼯具⽅法1: 直接获取信息⽅…...

目标检测原理简介

目标检测是一类计算机视觉任务,简单来说,目标检测可被定义为在计算机中输入一张图像,计算机需要找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,如图一所示。目标检测是计算机视觉领域的核心问题之一,相较于最原始的将整张图片分类为某一类别,目标检测不光可…...

软件设计原则

开闭原则 对扩展开放&#xff0c;对修改关闭。在程序需要进行拓展的时候&#xff0c;不能去修改原有的代码&#xff0c;实现一个热插拔的效果。简言之&#xff0c;是为了使程序的扩展性好&#xff0c;易于维护和升级。 想要达到这样的效果&#xff0c;需要使用接口和抽象类。 因…...

Postman脚本处理各种数据的变量

一、变量是字符串里列表&#xff0c; 如 "["100","101","102","103","108"]" //把字符串的变量处理成列表 var myListJSON.parse(pm.environment.get(giftTabId)) #giftTabId变量名 //设置随机取值 var rando…...

嵌入式硬件开发工具---万用表---示波器---仿真器

万用表 主要功能&#xff1a; 测量交直流电压、电流 测量电阻、二级管及电路通断 其他----电容、频率、温度----特殊的万用表 * 检查电路是否正常 * 检查电路连接情况 示波器 主要功能&#xff1a; 以波形展示电信号随时间变化的关系 主要指标&#xff1a; 带宽---大…...

数据预处理之特征选择 (Feature Selection)

哈喽&#xff0c;大家好&#xff0c;我是我不是小upper~ 今天的文章和大家来聊聊数据与处理方法中常用的特征选择 在开始说特征选择前&#xff0c;咱们先搞清楚这个所谓的“特征”到底是啥玩意儿。 打个比方说&#xff0c;如果我们要训练一个模型来判断某个人是否会买一双运…...

Java基础 — 循环

介绍 Java基础循环是程序流程控制的核心结构&#xff0c;主要用于重复执行特定代码块。常见的循环包括for、while和do-while三种形式&#xff0c;开发者可根据不同场景灵活选择。 合理使用循环关键字能有效提升代码执行效率。掌握循环结构的核心在于理解执行流程与条件判断的时…...

参考平面的宽度-信号与电源完整性分析

参考平面的宽度: 计算特征阻抗时假设参考平面是无限宽的平面。在参考平面的宽度远大于线宽或介质厚度时&#xff0c;这种假设是正确的。但是PCB板上的参考平面经常被反焊盘掏空&#xff0c;当互连线经过参考平面掏空区域附近时&#xff0c;掏空的局部互连线参考平面变窄&#x…...

【Linux】Centos7 安装 Docker 详细教程

一、安装步骤 步骤一&#xff1a;确定你是Centos7及以上的版本 cat /etc/redhat-release 步骤二&#xff1a;卸载旧版本 查看官方文档&#xff1a;CentOS | Docker Docs 步骤三&#xff1a;安装GCC等工具 1.首先确保 CentOS7 能上外网 ping www.baidu.com 2.更新 Centos7…...

开源AI智能名片链动2+1模式S2B2C商城小程序源码赋能下的社交电商创业者技能跃迁与价值重构

摘要&#xff1a;在移动互联网深度重构商业生态的背景下&#xff0c;社交电商创业者面临流量成本攀升、用户粘性不足、供应链协同低效等核心痛点。本文以“开源AI智能名片链动21模式S2B2C商城小程序源码”技术体系为研究对象&#xff0c;通过分析其技术架构、商业逻辑及实战案例…...

计算机视觉与深度学习 | LSTM原理及与卡尔曼滤波的融合

长短期记忆网络(LSTM)是一种特殊的循环神经网络(RNN),旨在解决传统RNN在处理长序列数据时出现的梯度消失和梯度爆炸问题。以下为你详细介绍其基本原理: 核心思想:LSTM的核心思想是引入记忆单元和门控机制来控制信息的流动,从而解决传统RNN的梯度消失问题。记忆单元类似…...