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

React中useState中更新是同步的还是异步的?

文章目录

  • 前言
    • 一、`useState` 的基本用法
    • 二、`useState` 的更新机制
      • 1. 内部状态管理
      • 2. 状态初始化
      • 3. 状态更新
    • 三、`useState` 的更新频率与异步行为
      • 1. 异步更新与批量更新
      • 2. 为什么需要异步更新?
    • 四、如何正确处理 `useState` 的更新
      • 1. 使用回调函数形式的更新
      • 2. 理解异步更新的行为
      • 3. 避免不必要的状态更新
    • 五、`useState` 的底层实现原理
      • 1. Hook 链表
      • 2. 当前 Hook 索引
      • 3. 状态更新流程
    • 六、最佳实践
  • 七、总结


前言

在 React 开发中,useState 是最常用的 Hook 之一,它允许函数组件拥有自己的状态,并提供了管理这些状态的便捷方式。理解 useState 的更新机制对于编写高效、可维护的 React 应用至关重要。本文将深入探讨 useState 的更新机制,包括其工作原理、更新频率、异步行为以及最佳实践。

一、useState 的基本用法

useState 是 React 提供的一个 Hook,用于在函数组件中添加状态管理功能。它接受一个初始状态值作为参数,并返回一个数组,包含当前的状态值和一个用于更新状态的函数。例如:

	import React, { useState } from 'react';function Counter() {const [count, setCount] = useState(0);return (<div><p>Count: {count}</p><button onClick={() => setCount(count + 1)}>Increment</button></div>);}

在这个例子中,useState(0) 初始化了一个名为 count 的状态变量,初始值为 0。setCount 是一个函数,用于更新 count 的值。当按钮被点击时,setCount 会将 count 的值加 1,并触发组件的重新渲染。

二、useState 的更新机制

useState setState函数是异步更新,当我们多次以相同的操作更新状态时,React 会进行比较,如果值相同,则会屏蔽后续的更新行为。防止频繁的更新。

1. 内部状态管理

React 在其内部通过一个链表(或数组)的形式来管理组件的 Hook 调用。每个组件实例都有一个独立的 Hook 链表,这个链表记录了该组件中每个 Hook 的状态。在组件渲染时,React 会根据当前的渲染顺序依次处理每个 Hook。

2. 状态初始化

useState 被第一次调用时,React 会将初始状态存储在链表的当前节点中,并返回该状态和一个更新函数。这个更新函数用于修改该状态,并触发组件的重新渲染。

3. 状态更新

当调用 setState 函数时,React 会将新的状态值存储在内部对象中,并将该组件标记为需要更新(dirty)。在下一次渲染时,React 会看到组件被标记为需要更新,并会重新调用函数组件。在重新调用函数组件时,useState 会读取内部对象中的最新状态值,并返回它。

三、useState 的更新频率与异步行为

1. 异步更新与批量更新

在 React 中,useState 的更新并不是立即发生的。当调用 setState 等更新函数时,React 会将状态更新排队,然后在合适的时候进行批量更新。这意味着在调用 setState 后,立即读取状态的值可能不会得到更新后的结果。

React 通过将多个状态更新合并成一个批次进行处理,可以显著提高应用的性能。通过减少不必要的重新渲染次数,React 可以提高应用的响应速度和资源利用率。

2. 为什么需要异步更新?

  • 性能优化:异步更新和批量更新可以减少不必要的重新渲染次数,提高应用的性能。
  • 一致性和可预测性:通过将状态更新排队并在合适的时候进行批量更新,React 可以确保状态更新以一致的顺序进行处理,从而提高应用的稳定性和可靠性。
  • 协调机制:React 的协调机制是基于虚拟 DOM 的比较来确定哪些部分需要重新渲染。如果状态更新是立即发生的,那么在每次状态更新后都进行重新渲染可能会导致不必要的虚拟 DOM 比较和重新渲染。

四、如何正确处理 useState 的更新

1. 使用回调函数形式的更新

为了确保在更新状态时能够获取到最新的状态值,可以使用回调函数形式的更新。例如:

	setCount(prevCount => prevCount + 1);

在这个例子中,回调函数接收当前的状态值作为参数,并返回更新后的状态值。这样可以确保在更新状态时使用的是最新的状态值,而不是可能已经过时的值。

2. 理解异步更新的行为

不要在调用 setState 后立即依赖更新后的状态值,因为更新可能还没有发生。如果需要在状态更新后执行一些操作,可以使用 useEffect 等 Hook 来监听状态的变化,并在状态更新后执行相应的操作。

3. 避免不必要的状态更新

只在真正需要更新状态时才调用更新函数,避免在不必要的时候频繁更新状态。可以通过优化算法、避免重复计算等方式来减少状态更新的次数,从而提高应用的性能。

五、useState 的底层实现原理

React 内部通过 Fiber 架构和 Hook 链表来管理 useState 的状态。每个组件实例都有一个独立的 Hook 链表,记录了该组件中每个 Hook 的状态。在组件渲染时,React 会根据当前的渲染顺序依次处理每个 Hook。

1. Hook 链表

Hook 链表是一个链表结构,每个节点存储了一个 Hook 的状态。当 useState 被调用时,React 会在链表中创建一个新的节点,并将初始状态存储在该节点中。

2. 当前 Hook 索引

在组件渲染时,React 会维护一个当前 Hook 索引指针。当 useState 或其他 Hook 被调用时,React 使用这个索引来存取对应的状态节点,并将索引指针前移。这样,不同的 useState 调用对应不同的索引,确保它们各自管理自己的状态。

3. 状态更新流程

当调用 setState 时,React 会将新的状态值存储在 Hook 链表的对应节点中,并标记该组件需要重新渲染。在下一次渲染时,React 会根据 Hook 链表的顺序依次处理每个 Hook,并返回最新的状态值。

六、最佳实践

  1. 合理组织状态:避免状态过于分散或过于集中。一个组件中应该只管理与其功能相关的状态。
  2. 使用函数式更新:当新的状态依赖于之前的状态时,使用函数式更新可以避免潜在的竞态条件。
  3. 避免直接修改状态:React 推荐使用 setState 函数来更新状态,而不是直接修改状态值。这是因为直接修改状态可能会导致组件状态与视图不一致,从而引发不可预测的行为。
  4. 不要将状态存储在局部变量中:状态应该始终通过 useState Hook 来管理,而不是存储在局部变量中。否则,React 无法检测到状态的变化,也不会触发重新渲染。

七、总结

useState 是 React 中一个非常重要的 Hook,它提供了一种简洁而强大的方式来管理函数组件中的状态。通过理解 useState 的更新机制、异步行为以及最佳实践,我们可以创建出响应式、可维护和可扩展的 React 应用。希望本文对你深入理解和高效使用 useState 有所帮助。

相关文章:

React中useState中更新是同步的还是异步的?

文章目录 前言一、useState 的基本用法二、useState 的更新机制1. 内部状态管理2. 状态初始化3. 状态更新 三、useState 的更新频率与异步行为1. 异步更新与批量更新2. 为什么需要异步更新&#xff1f; 四、如何正确处理 useState 的更新1. 使用回调函数形式的更新2. 理解异步更…...

Python语法强化

在正式编写第一个Python程序前&#xff0c;我们先复习一下什么是命令行模式和Python交互模式。 命令行模式 在Windows开始菜单选择“Terminal”&#xff0c;就进入到PowerShell命令行模式&#xff0c;它的提示符类似PS C:\>&#xff1a; ┌───────────────…...

FastMCP:为大语言模型构建强大的上下文和工具服务

FastMCP&#xff1a;为大语言模型构建强大的上下文和工具服务 在人工智能快速发展的今天&#xff0c;大语言模型&#xff08;LLM&#xff09;已经成为许多应用的核心。然而&#xff0c;如何让这些模型更好地与外部世界交互&#xff0c;获取实时信息&#xff0c;执行特定任务&am…...

TC3xx学习笔记-UCB BMHD使用详解(二)

文章目录 前言Confirmation的定义Dual UCB: Confirmation StatesDual UCB: Errored State or ECC Error in the UCB Confirmation CodesECC Error in the UCB ContentDual Password UCB ORIG and COPY Re-programming UCB_BMHDx_ORIG and UCB_BMHDx_COPY (x 0-3)BMHD Protecti…...

【Docker】docker compose和docker swarm区别

Docker Swarm 和 Docker Compose 的核心区别&#xff1a; 1. 定位不同 Docker Compose 单机多容器编排&#xff1a;在单个主机上管理多个容器&#xff0c;适合本地开发、测试环境。单节点部署&#xff1a;所有容器运行在同一 Docker 引擎实例上。 Docker Swarm 集群管理工具&…...

Power BI Desktop开发——矩阵相关操作

本篇文章使用2025年5月17日从微软商店下载的最新版Power BI Desktop 目录 1.设置矩阵网格整体大小 2.设置矩阵网格行高 3.设置矩阵网格列宽 4.隐藏矩阵网格的某一列 5.隐藏矩阵网格的某一行 6.设置矩阵网格居中展示 7.号图表的显示设置 8.调整行标题的缩进 9.设置矩阵…...

系统架构设计(九):分布式架构与微服务

基础定义 架构类型定义分布式架构指将系统部署在多个服务器节点上&#xff0c;通过网络协作完成整体功能。强调物理上的分布与任务协作。微服务架构一种分布式架构模式&#xff0c;将系统按照业务维度拆分为多个小型自治服务&#xff0c;每个服务可独立开发、部署、伸缩。 核…...

Linux服务器安全如何加固?禁用不必要的服务与端口如何操作?

保护Linux服务器的安全性对于确保系统的稳定性和数据的保密性至关重要。加固Linux服务器的安全性包括禁用不必要的服务和端口&#xff0c;以减少潜在的攻击面。本文将探讨如何加固Linux服务器的安全性&#xff0c;具体介绍如何禁用不必要的服务和端口&#xff0c;从而提高服务器…...

AgentCPM-GUI,清华联合面壁智能开源的端侧GUI智能体模型

AgentCPM-GUI是什么 AgentCPM-GUI 是由清华大学与面壁智能团队联合开发的一款开源端侧图形用户界面&#xff08;GUI&#xff09;代理&#xff0c;专为中文应用进行优化。基于 MiniCPM-V 模型&#xff08;80 亿参数&#xff09;&#xff0c;该系统能够接收智能手机的屏幕截图&a…...

如何用AI优化简历:自动读取与精华浓缩

在求职过程中&#xff0c;一份出色的简历往往是成功的关键。然而&#xff0c;许多求职者在撰写简历时往往面临诸多挑战&#xff0c;比如如何让简历更突出、如何让招聘者快速了解自己的核心优势等。随着人工智能技术的发展&#xff0c;AI不仅可以帮助我们优化简历内容&#xff0…...

Jackson使用详解

JSON Jackson是java提供处理json数据序列化和反序列的工具类&#xff0c;在使用Jackson处理json前&#xff0c;我们得先掌握json。 JSON数据类型 类型示例说明字符串&#xff08;String&#xff09;"hello"双引号包裹&#xff0c;支持转义字符&#xff08;如 \n&a…...

Node.js 源码概览

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境&#xff0c;它的源码结构相当庞大且复杂。下面我将为你讲解 Node.js 源码的主要结构和关键组成部分。 源码结构 Node.js 的主要源码目录结构如下&#xff1a; node/ ├── lib/ # JavaScript 核心模…...

简单神经网络(ANN)实现:从零开始构建第一个模型

本文将手把手带你用 Python Numpy 实现一个最基础的人工神经网络&#xff08;Artificial Neural Network, ANN&#xff09;。不依赖任何深度学习框架&#xff0c;适合入门理解神经网络的本质。 一、项目目标 构建一个三层神经网络&#xff08;输入层、隐藏层、输出层&#xf…...

Conda 完全指南:从环境管理到工具集成

Conda 完全指南&#xff1a;从环境管理到工具集成 在数据科学、机器学习和 Python 开发领域&#xff0c;环境管理一直是令人头疼的问题。不同项目依赖的库版本冲突、Python 解释器版本不兼容等问题频繁出现&#xff0c;而 Conda 的出现彻底解决了这些痛点。作为目前最流行的跨…...

防范Java应用中的恶意文件上传:确保服务器的安全性

防范Java应用中的恶意文件上传&#xff1a;确保服务器的安全性 在当今数字化时代&#xff0c;Java 应用无处不在&#xff0c;而文件上传功能作为许多应用的核心组件&#xff0c;却潜藏着巨大的安全隐患。恶意文件上传可能导致服务器被入侵、数据泄露甚至服务瘫痪&#xff0c;因…...

CSS- 4.2 相对定位(position: relative)

本系列可作为前端学习系列的笔记&#xff0c;代码的运行环境是在HBuilder中&#xff0c;小编会将代码复制下来&#xff0c;大家复制下来就可以练习了&#xff0c;方便大家学习。 HTML系列文章 已经收录在前端专栏&#xff0c;有需要的宝宝们可以点击前端专栏查看&#xff01; 点…...

Face Over 84.0| 利用AI技术交换照片或视频中的面孔,制作有趣内容

Face Over是一款充满创造力和乐趣的应用程序&#xff0c;它利用AI技术帮助用户交换照片或视频中的面孔&#xff0c;预测未来宝宝的模样&#xff0c;并将照片制作成动画。无论您是想制作有趣的模因、口型同步视频还是探索未来家庭成员的模样&#xff0c;这款应用程序都能满足您的…...

怎么在excel单元格1-5行中在原来内容前面加上固定一个字?

环境&#xff1a; WPS 2024 问题描述&#xff1a; 怎么在excel单元格1-5行中在原来内容前面加上固定一个字&#xff1f; 解决方案&#xff1a; 1.在Excel中&#xff0c;如果您想在单元格的内容前面添加一个固定的字&#xff0c;可以通过以下几种方法实现&#xff1a; 方法…...

AI:人形机器人一定是人的形状吗?

本文将从技术角度分析人形机器人是否必须是人的形状&#xff0c;以及人形与非人形机器人在适用场合、优缺点上的差异。以下是详细解答&#xff1a; 人形机器人一定是人的形状吗&#xff1f; 不&#xff0c;人形机器人&#xff08;Humanoid Robot&#xff09;在技术上通常指外…...

26、思维链Chain-of-Thought(CoT)论文笔记

思维链Chain-of-Thought&#xff08;CoT&#xff09; **1、研究背景与核心目标****2、思维链提示的方法设计**2.1 COT方法2.2 传统方法 3、实验设计与关键数据集3.1 算术推理3.2 常识推理3.3 符号推理 4、关键实验结果1. 算术推理&#xff1a;思维链提示显著提升多步问题解决率…...

golang中的反射示例

文章目录 前言一、通过反射获取底层类型 reflect.typeOf()二、反射获取底层的值 reflect.ValueOf()三、通过反射设置底层值四 、进阶结构体反射示例 前言 反射就像是给程序装上了显微镜&#xff0c;运行时随时查看底层类型以及底层值&#xff0c;根据需要动态读写或调用方法。…...

NX二次开发——设置对象的密度(UF_MODL_set_body_density)

在前几篇博客中我们已经探讨了如何设置实体的密度。在装配环境中&#xff0c;同样可以为组件设置密度。虽然不能直接对组件进行密度设置&#xff0c;但可以通过一种间接方式实现&#xff1a;在装配环境下&#xff0c;利用 UF_ASSEM_set_work_part_quietly() 函数以静默方式将组…...

基于朴素贝叶斯与 LSTM 的假新闻检测模型对比分析

一、引言 在信息爆炸的时代&#xff0c;假新闻的传播对社会产生了诸多负面影响。如何快速、准确地识别假新闻成为了重要的研究课题。本文将对比传统机器学习算法&#xff08;朴素贝叶斯&#xff09;与深度学习模型&#xff08;LSTM&#xff09;在假新闻检测任务中的性能表现&am…...

共享内存【Linux操作系统】

文章目录 共享内存共享内存的原理共享内存相关函数和系统调用--systemV系统调用&#xff1a;shmget系统调用&#xff1a;shmctl系统调用&#xff1a;shmat系统调用&#xff1a;shmdt系统调用&#xff1a;ftok 共享内存相关函数和系统调用--POSIXshm_open-- 创建或打开共享内存对…...

Android核心系统服务:AMS、WMS、PMS 与 system_server 进程解析

1. 引言 在 Android 系统中&#xff0c;ActivityManagerService (AMS)、WindowManagerService (WMS) 和 PackageManagerService (PMS) 是三个最核心的系统服务&#xff0c;它们分别管理着应用的生命周期、窗口显示和应用包管理。 但你是否知道&#xff0c;这些服务并不是独立…...

arduino平台读取鼠标光电传感器

鼠标坏掉了&#xff0c;大抵是修不好了。&#xff08;全剧终—&#xff09; 但是爱动手的小明不会浪费这个鼠标&#xff0c;确认外观没有明显烧毁痕迹后&#xff0c;尝试从电路板上利用光电传感器进行位移的测量&#xff0c;光电传感器&#xff08;型号&#xff1a;FCT3065&am…...

EXO分布式部署deepseek r1

EXO 是一个支持分布式 AI 计算的框架&#xff0c;可以用于在多个设备&#xff08;包括 Mac Studio&#xff09;上运行大语言模型&#xff08;LLM&#xff09;。以下是联调 Mac Studio 512GB 的步骤&#xff1a; 安装 EXO • 从 EXO GitHub 仓库 下载源码或使用 git clone 获取…...

机器学习 KNN算法

KNN算法 1. sklearn机器学习概述2. KNN算法-分类1 样本距离判断2 KNN 算法原理3 KNN缺点4 API5 sklearn 实现KNN示例6 模型保存与加载葡萄酒(load_wine)数据集KNN算法(1)wine.feature_names:(2)wine.target_names(3)KNN算法实现 1. sklearn机器学习概述 获取数据、数据处理、特…...

强化学习赋能医疗大模型:构建闭环检索-反馈-优化系统提升推理能力

引言 人工智能技术在医疗领域的应用正经历前所未有的发展,特别是在大型语言模型(LLMs)技术的推动下,医疗大模型(Medical Large Models)展现出巨大的潜力。这些模型不仅能够理解复杂的医学术语和概念,还能通过自然语言与用户交互,为医疗专业人士和患者提供有价值的信息和建…...

深入解析Spring Boot与JUnit 5的集成测试实践

深入解析Spring Boot与JUnit 5的集成测试实践 引言 在现代软件开发中&#xff0c;测试是确保代码质量和功能正确性的关键环节。Spring Boot作为目前最流行的Java Web框架之一&#xff0c;提供了强大的支持来简化测试流程。而JUnit 5作为最新的JUnit版本&#xff0c;引入了许多…...

哈希的原理、实现

目录 引言 一、哈希概念 二、哈希函数 三、哈希冲突解决方法 四、unordered系列关联式容器&#xff08;以unordered_map为例&#xff09; 五、哈希的应用 完整代码 六、总结 引言 在计算机科学领域&#xff0c;哈希是一种非常重要的数据结构和算法思想&#xff0c;广…...

端口443在git bash向github推送时的步骤

端口443在git bash向github推送时的步骤 你的环境可能因防火墙限制无法使用默认的 SSH 端口&#xff08;22&#xff09;&#xff0c;因此需要改用 SSH over HTTPS&#xff08;端口 443&#xff09; 进行 Git 推送。 github与git bash绑定问题详见博主先前写过的参考博文&#…...

Ankr:Web3基础设施的革新者

在Web3技术蓬勃发展的今天&#xff0c;去中心化基础设施的重要性日益凸显。Ankr作为这一领域的佼佼者&#xff0c;凭借其强大的分布式云计算能力和创新的技术解决方案&#xff0c;正在成为推动Web3发展的关键力量。本文将深入探讨Ankr的技术亮点、应用场景以及其在区块链生态中…...

配置git从公网能访问-基于frp

git从公网能访问 一个小小的疏忽带来了一下午上午的工作量起因与上下文与结论主要收获1。公网主机的防火墙需要至少三条3。gitlab的http端口和ssh端口&#xff0c;需要分为两个3。不要用nginx来解析二级域名 测试指令最终的成功的指令是&#xff1a; 用到的指令ssh1. 生成 SSH …...

HarmonyOS:重构万物互联时代的操作系统范式

HarmonyOS&#xff1a;重构万物互联时代的操作系统范式 引言&#xff1a;操作系统的新纪元 在数字化转型的深水区&#xff0c;操作系统作为数字世界的基石正在经历前所未有的变革。当全球科技巨头还在移动终端操作系统领域激烈角逐时&#xff0c;华为推出的HarmonyOS以分布式…...

告别“知识孤岛”:RAG赋能网络安全运营

一、背景 在网络安全运营工作中&#xff0c;我们积累了大量的内部知识内容&#xff0c;涵盖了威胁情报、事件响应流程、安全策略、合规性要求等多个方面。然而&#xff0c;这些知识虽然数量庞大、内容丰富&#xff0c;却因形式多样、结构分散&#xff0c;难以让每一位成员真正…...

A级、B级弱电机房数据中心建设运营汇报方案

该方案围绕A 级、B 级弱电机房数据中心建设与运营展开,依据《数据中心设计规范》等标准,施工范围涵盖 10 类机房及配套设施,采用专业化施工团队与物资调配体系,强调标签规范、线缆隐藏等细节管理。运营阶段建立三方协同运维模式,针对三级故障制定30 分钟至 1 小时响应机制…...

C 语言学习笔记(数组)

C 语言基础&#xff1a;第 08天笔记 内容提要 数组 排序算法&#xff1a;冒泡排序二维数组字符数组 数组 冒泡排序 排序思想&#xff08;向前冒泡&#xff09;&#xff1a; 一次排好一个数&#xff0c;针对n个数&#xff0c;最差情况需要n - 1次就可以排好每次排序假定第一…...

jvm安全点(二)openjdk17 c++源码垃圾回收安全点信号函数处理线程阻塞

1. 信号处理与桩代码&#xff08;Stub&#xff09;​​ 当线程访问安全点轮询页&#xff08;Polling Page&#xff09;时&#xff1a; ​​触发 SIGSEGV 信号​​&#xff1a;访问只读的轮询页会引发 SIGSEGV 异常。​​信号处理函数​​&#xff1a;pd_hotspot_signal_handl…...

uni-app 开发HarmonyOS的鸿蒙影视项目分享:从实战案例到开源后台

最近&#xff0c;HBuilderX 新版本发布&#xff0c;带来了令人兴奋的消息——uni-app 现在支持 Harmony Next 平台的 App 开发。这对于开发者来说无疑是一个巨大的福音&#xff0c;意味着使用熟悉的 Vue 3 语法和开发框架&#xff0c;就可以为鸿蒙生态贡献自己的力量。 前言 作…...

【赵渝强老师】在PostgreSQL中访问Oracle

在PostgreSQL数据库中&#xff0c;oracle_fdw是PostgreSQL数据库支持的外部扩展。通过使用oracle_fdw扩展可以读取到Oracle数据库中的数据。它是一种非常方便且常见的PostgreSQL与Oracle的同步数据的方法。使用oracle_fdw扩展需要依赖Oracle的Instance Client环境。 视频讲解如…...

板凳-------Mysql cookbook学习 (二)

生成一个包含cookbook数据库中的表备份的名为backup.sql的dump文件。 sql C:\Users\lenovo>mysqldump -u root -p --default-character-setutf8mb4 cookbook > D:\sql\Mysql_learning\backup.sql mysqldump 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文…...

sudo apt update是什么意思呢?

非常好的问题&#xff01; ✅ sudo apt update 是什么意思&#xff1f; 它的作用是&#xff1a; 更新你的 Ubuntu 系统中软件列表的信息&#xff08;但不安装软件&#xff09; 就像你每天先去超市了解今天上架了哪些新商品&#xff08;只是“查看”而不是“买”&#xff09;&a…...

.NET Core 中 Swagger 配置详解:常用配置与实战技巧

随着微服务架构和 RESTful API 的广泛应用&#xff0c;API 文档的管理和自动化生成成为了开发中的重要部分。Swagger&#xff08;现为 OpenAPI&#xff09;是一款功能强大的工具&#xff0c;它可以自动生成 API 文档&#xff0c;并提供交互式 UI&#xff0c;帮助开发者、测试人…...

spring cache使用指南

Spring cache Spring Cache 是一个框架&#xff0c;实现了基于注解的缓存功能&#xff0c;只需要简单地加一个注解&#xff0c;就能实现缓存功能。 Spring Cache 提供了一层抽象&#xff0c;底层可以切换不同的缓存实现。 例如:EHCache&#xff0c;Caffeine&#xff0c;Redi…...

9.DMA

目录 DMA —为 CPU 减负 DMA 的简介和使用场景 DMA 的例子讲解 STM32 的 DMA 框图和主要特性 ​编辑 DMA 的通道的对应通道外设 – DMA 和哪些外设使用 ​编辑​编辑ADC_DR 寄存器地址的计算 常见的数据滤波方法 ADCDMA 的编程 DMA —为 CPU 减负 DMA 的简介和使用场…...

Python自学笔记3 常见运算符

常用运算符 加减法 python的自动数据类型转换 整形转为浮点型 实数转为复数 数字类型不能和浮点数类型相加减 乘除法 数据转换基本同加减法&#xff0c; 但字符串可以和整数相加减&#xff0c;作用是字符串的自我复制 反斜杠 成员运算符 判断一个元素是不是一个序列的成员…...

【C/C++】C++中constexpr与const的深度对比

文章目录 C中constexpr与const的深度对比1. 编译期确定性2. 更严格的优化保证3. 适用范围更广4. 类型安全与错误检查5. 现代 C 的演进方向何时使用 const&#xff1f;constexpr应用场景1. 配置常量与全局参数2. 数据验证与业务规则检查3. 数学计算与业务逻辑优化4. 模板元编程与…...

劳特巴赫trace32负载率测试

按照下图步骤点击即可...

牛客OJ在线编程常见输入输出练习--Java版

目录 一、链接 二、题目 一、链接 牛客输入输出链接&#xff1a;牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推&#xff0c;求职就业一站解决_牛客网 二、题目 1.只有输出 public class Main {public static void main(String[] args) {System.out.println("H…...