windows11 + ubuntu2204双系统+ros2 humble安装

文章目录

    • win11 + ubuntu22 双系统
      • 准备工作
      • 步骤 1:使用 Rufus 制作 Ubuntu 启动盘
      • 步骤 2:设置 BIOS/UEFI 启动项
      • 步骤 3:安装 Ubuntu 22.04
      • 步骤 4:后续配置
      • 常见问题
    • ROS2 Humble 安装
      • 一、准备工作
      • 二、安装 ROS 2
      • 三、设置环境变量
      • 四、验证安装
    • ROS2 humble & ROS1 noetic
      • ROS 1 & 2 安装
      • ROS 2 ↔ ROS 1 桥接配置
    • 参考链接

写于2025.06,当前ubuntu 20.04的各方面支持更加全面一点,如对ROS1和2都有良好的兼容性。如从ros bridge便能够表现出系统对包的支持。但是新的系统对新的硬件的支持更好,以及有更长的支持,在后期对新包的支持也会更好一点。

Ubuntu VersionSupported ROS 1 VersionsSupported ROS 2 Versionsros1_bridge Support
20.04 (Focal)Noetic NinjemysFoxy Fitzroy (EOL), Galactic Geochelone (EOL), Humble Hawksbill✅ Full support
22.04 (Jammy)⚠️ Partial (unsupported officially)Humble Hawksbill, Iron Irwini⚠️ Requires building from source
24.04 (Noble)❌ Not availableJazzy Jalisco, Kilted Kaiju❌ Not supported

本文将介绍ubuntu 2204的安装及ROS2 Humble版本的安装。


win11 + ubuntu22 双系统

以下是在 Windows 11 基础上安装 Ubuntu 22.04 LTS 的双系统详细指南,使用 Rufus 工具制作启动盘:


准备工作

  1. 备份重要数据

    • 双系统安装可能涉及磁盘分区操作,建议提前备份 Windows 中的重要文件。
  2. 准备工具

    • 一个至少 8GB 的空U盘(制作启动盘会清空所有数据)。
    • 下载 Ubuntu 22.04 LTS ISO-https://ubuntu.com/download/desktop。
      • 国内镜像:
镜像名称镜像地址备注
网易镜像http://mirrors.163.com/ubuntu-releases/覆盖主流版本
中科大镜像http://mirrors.ustc.edu.cn/ubuntu-releases/更新及时,支持IPv6
阿里云镜像http://mirrors.aliyun.com/ubuntu-releases/企业级CDN加速
清华大学镜像https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/教育网优化
北京理工大学镜像http://mirror.bit.edu.cn/ubuntu-releases/北方用户推荐
浙江大学镜像http://mirrors.zju.edu.cn/ubuntu-releases/华东地区节点
南京大学镜像https://mirror.nju.edu.cn/ubuntu-releases/新增科学中心节点
上海交通大学镜像http://ftp.sjtu.edu.cn/ubuntu-releases/上海骨干网接入
  • 下载 Rufus 工具-https://rufus.ie/)(建议最新版本)。
  1. 分配磁盘空间(可选) 如果磁盘足够,新版本ubuntu会在安装时,自行规划,也可自行配置,但一定要保证有足够的空间。

    • 在 Windows 中打开 磁盘管理(Win+X → 磁盘管理)。
    • 右键点击一个分区(如 C:),选择 压缩卷,分配至少 50GB 未分配空间(后续安装 Ubuntu 用)。
  2. 取消磁盘加密(关闭BitLocker)

  • 常规关闭方法

    • 打开控制面板 → 进入"BitLocker驱动器加密"
    • 找到需要解密的驱动器,点击"关闭BitLocker"
    • 等待解密完成(时间取决于数据量)
  • 快速关闭方法(Win10/11)

    • 按Win+I打开设置 → 隐私和安全性 → 设备加密
    • 直接点击"关闭"按钮
  • 命令行方法(管理员权限)

    • 以管理员身份运行CMD/PowerShell
    • 输入:manage-bde -off C:(C:为需要解密的盘符)
    • 查看进度:manage-bde -status

步骤 1:使用 Rufus 制作 Ubuntu 启动盘

  1. 插入U盘,以管理员身份运行 Rufus
  2. 设备选择:你的U盘(确认无误,数据会被清空)。
  3. 镜像选择:点击 选择,找到下载的 Ubuntu 22.04 ISO 文件。
  4. 分区类型:
    • UEFI 电脑:选择 GPT + FAT32
    • 传统 Legacy BIOS 电脑:选择 MBR + FAT32(现代电脑通常为 UEFI)。
  5. 其他选项保持默认,点击 开始 → 确认警告 → 等待完成(约5-10分钟)。

步骤 2:设置 BIOS/UEFI 启动项

  1. 重启电脑,在启动时狂按 F2/F12/Del(具体键因品牌而异)进入 BIOS。
  2. 关键设置:
    • 关闭 Secure Boot(Ubuntu 支持但可能需额外驱动)。
    • 确保 UEFI 模式 开启(如使用 GPT 分区)。
  3. 保存设置并退出(通常按 F10)。

步骤 3:安装 Ubuntu 22.04

  1. 启动安装程序

    • 从U盘启动后,选择 Try or Install Ubuntu → 进入试用桌面后双击 Install Ubuntu
  2. 语言和键盘布局

    • 选择语言 → 继续 → 键盘布局默认(英语或中文)。
  3. 网络连接(可选)

    • 可连接Wi-Fi,便于安装更新和第三方驱动。
  4. 安装类型

    • 重要!选择“安装类型”
      • 双系统共存:勾选 Install Ubuntu alongside Windows Boot Manager(自动分配空间)。
      • 手动分区(推荐高级用户):
        • 选择之前分配的 未分配空间 → 点击 + 创建分区:
          • /(根分区):至少 30GB,类型 ext4
          • swap(交换空间):内存大小的 1-2倍(可选)。
          • /home(用户文件):剩余空间,类型 ext4(可选)。
        • 启动引导器位置:选择 EFI 分区(通常为 /dev/sda/dev/nvme0n1efi 分区)。
  5. 时区和用户设置

    • 选择时区(如 Shanghai)→ 输入用户名和密码。
  6. 开始安装

    • 点击 安装 → 等待完成(约15-30分钟)。
  7. 重启

    • 提示拔出U盘后重启,此时会进入 GRUB 引导菜单,可选择启动 Ubuntu 或 Windows。

步骤 4:后续配置

  1. 更新系统

    • 打开终端(Ctrl+Alt+T),运行:
      sudo apt update && sudo apt upgrade -y
      
  2. 修复引导问题(如 Windows 不显示)

    • 在 Ubuntu 终端执行:
      sudo update-grub
      
  3. 驱动管理

    • 打开 软件和更新附加驱动,安装推荐显卡/Wi-Fi驱动。

常见问题

  • 无法识别 Windows 分区:确保 Windows 为 正常关机(非快速启动)。
  • UEFI/GPT 错误:确认 Rufus 设置与 BIOS 模式匹配(UEFI → GPT)。
  • 磁盘空间不足:在 Windows 中压缩更多空间后,用 Ubuntu 安装器的 Something else 选项调整分区。
  • try and install Ubuntu 后黑屏可能是由于硬件如显卡比较新,导致驱动不兼容问题。可以选择第三行,使用兼容模式启动,然后安装。

ROS2 Humble 安装

确保系统区域支持UTF-8编码:

sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.

确保系统安装了ubuntu的官方源

sudo apt install software-properties-common
sudo add-apt-repository universe

一、准备工作

  1. 系统更新

在开始安装之前,确保你的 Ubuntu 22.04 系统是最新的。打开终端并运行以下命令:

sudo apt update
sudo apt upgrade -y
  1. 设置密钥和源

为了安装 ROS 2 Humble,首先,导入 ROS 2 的 GPG 密钥:

#官方key,公钥可能会变,可以查最新官网去拉
#官方地址:ttps://github.com/ros-infrastructure/ros-apt-source
#以下是个人拷贝
sudo curl -sSL https://gitee.com/nie_xun/ros-apt-source/tree/1.1.0/ros-apt-source/keys/ros-archive-keyring.gpg 
-o /usr/share/keyrings/ros-archive-keyring.gpg

然后,添加 ROS 2 Humble 存储库到你的 sources.list.d 目录:以下二者选其一。

#官方
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null#清华:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

二、安装 ROS 2

1. 安装依赖项

在安装 ROS 2 之前,你需要安装一些依赖项:

sudo apt update
sudo apt install -y curl python3-rosdep python3-rosinstall python3-rosinstall-generator python3-vcstool build-essential cmake git

2. 初始化 rosdep

rosdep 是一个工具,它可以帮助你安装 ROS 包所依赖的系统库。初始化 rosdep:

sudo rosdep init
rosdep update

如果rosdep不成功,则需要对应修改:参考小鱼的安装,或直接使用他的脚本直接更改。

sudo gedit /usr/lib/python3/dist-packages/rosdep2/sources_list.py
# 在大概64行 修改 DEFAULT_SOURCES_LIST_URL = 'https://gitee.com/tyx6/mytools/raw/main/ros/20-default.list'sudo gedit /usr/lib/python3/dist-packages/rosdistro/__init__.py
# 大概在68行的地址sudo gedit /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
# 大概在34行的地址sudo gedit /usr/lib/python3/dist-packages/rosdep2/rep3.py
# 大概在36行的地址

使用如下脚本内容更改:

#!/usr/bin/python3 python3
# -*- coding:utf-8 -*-
# @FileName  :Mrosdep.py
# @Author    :TFly
import os
import subprocess
from colorama import Fore,Styleurl = "https://gitee.com/tyx6/rosdistro/raw/master"
url_list = "https://gitee.com/tyx6/mytools/raw/main/ros/20-default.list" 
ros_distros = ['kinetic', 'melodic', 'noetic', 'foxy', 'galactic', 'humble', 'iron', 'rolling']def find_ros_setup_script():#ros_distros = ['melodic', 'noetic']for distro in ros_distros:setup_script = f"/opt/ros/{distro}/setup.bash"if os.path.exists(setup_script):return setup_scriptreturn Nonedef get_ros_version():try:ros_setup_script = find_ros_setup_script()if not ros_setup_script:print("ROS setup script not found.")return Nonecommand = f"source {ros_setup_script} && echo $ROS_DISTRO"ros_version = subprocess.check_output(['bash', '-c', command], universal_newlines=True).strip()return ros_versionexcept subprocess.CalledProcessError as e:print(f"An error occurred while getting ROS version: {e}")return Nonedef rep(data):flag_list = data.find("https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list")if flag_list != -1:data = data.replace("https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list",url_list)flag = data.find("https://raw.githubusercontent.com/ros/rosdistro/master")flag1 = data.find("FUERTE_GBPDISTRO_URL = \'https://raw.githubusercontent.com/ros/rosdistro")flag2 = data.find("master/releases/fuerte.yaml")if flag != -1:data = data.replace("https://raw.githubusercontent.com/ros/rosdistro/master", url)if flag1 != -1:data = data.replace("https://raw.githubusercontent.com/ros/rosdistro",url)if flag2 != -1:data = data.replace("master/releases/fuerte.yaml","releases/fuerte.yaml")return datadef re_files(fileName):try:con = ""with open(fileName,'r') as fp:con = fp.readlines()for i in range(0,len(con)):con[i] = rep(con[i])with open(fileName,'w+') as fp:for str1 in con:fp.write(str1)except FileNotFoundError:print(fileName+'not found')else:print(fileName+' is ok')if __name__ == '__main__':print(Fore.GREEN + '欢迎使用脚本,本脚本适用于ROS1、ROS2.\n'+'Test: ROS1 Melodic、ROS2 Noetic、ROS2 Humble' + Style.RESET_ALL)version = get_ros_version()if version not in ros_distros :print(Fore.RED + "不支持此版本、或版本获取失败!"+ Style.RESET_ALL)else:print(Fore.GREEN + "The ROS version is: " + version + Style.RESET_ALL)fileName = []if version == 'melodic' :fileName = ['/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py','/usr/lib/python2.7/dist-packages/rosdistro/__init__.py','/usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py','/usr/lib/python2.7/dist-packages/rosdep2/rep3.py']else:fileName = ['/usr/lib/python3/dist-packages/rosdep2/sources_list.py','/usr/lib/python3/dist-packages/rosdistro/__init__.py','/usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py','/usr/lib/python3/dist-packages/rosdep2/rep3.py']for name in fileName:re_files(name)print("修改成功!请执行下面命令:\n"+"sudo rosdep init\n"+"rosdep update")

3. 安装 ROS 2 核心包

现在,你可以安装 ROS 2 Humble 的核心包了:

sudo apt install -y ros-humble-desktop

这将安装 ROS 2 的核心功能,包括 RCL、RMW 实现、各种工具和示例节点。

三、设置环境变量

为了使 ROS 2 的命令和包在你的终端中可用,你需要将 ROS 2 的安装目录添加到你的 PATH 和 LD_LIBRARY_PATH 环境变量中。这通常通过在你的 shell 配置文件中添加以下行来完成(例如,~/.bashrc 或 ~/.zshrc):

source /opt/ros/humble/setup.bash

添加后,运行以下命令使更改生效:

source ~/.bashrc  # 或者 ~/.zshrc,取决于你使用的 shell

四、验证安装

为了验证 ROS 2 是否正确安装,你可以运行以下命令来检查 ROS 2 版本并启动一个简单的示例节点:

ros2 --version
ros2 node list  # 在另一个终端中运行一个 ROS 2 节点后再检查这个命令的输出

如果你还没有运行任何 ROS 2 节点,ros2 node list 命令可能不会返回任何内容。为了测试,你可以启动一个简单的 “talker” 和 “listener” 节点,它们是 ROS 2 教程中的示例节点。首先,确保你已经安装了 ros2-examples 包:

sudo apt install -y ros-humble-examples-rclcpp-minimal

然后,在两个不同的终端中分别运行以下命令:

# 在第一个终端中运行 talker 节点
ros2 run examples_rclcpp_minimal_talker talker
# 在第二个终端中运行 listener 节点
ros2 run examples_rclcpp_minimal_listener listener

自此,ROS2 Humble 安装完成。


ROS2 humble & ROS1 noetic

以下是针对 Ubuntu 22.04 Jammy Jellyfish 系统实现 ROS 2 Humble 与 ROS 1 通信部署:

ROS 1 & 2 安装

与前文humble安装重复。

  1. ROS 2 Humble 安装

    • 配置 UTF-8 区域设置:
      sudo apt update && sudo apt install locales && sudo locale-gen en_US en_US.UTF-8
    • 添加 ROS 2 仓库与 GPG 密钥(推荐国内镜像加速):
      sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
      echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
      sudo apt update
      sudo apt install ros-humble-desktop  # 或 ros-humble-ros-base
      
  2. ROS 1 Noetic 安装

    • 通过第三方源安装(非官方维护但兼容 Ubuntu 22.04):
      echo "deb [trusted=yes arch=amd64] http://deb.repo.autolabor.com.cn jammy main" | sudo tee /etc/apt/sources.list.d/autolabor.list
      sudo apt update && sudo apt install ros-noetic-autolabor
      
      验证:source /opt/ros/noetic/setup.bash && roscore
  3. 终端ROS环境配置
    可以使用如下配置,打开终端,输入1则配置ROS1环境,输入2则配置ROS2环境。其他数字,则先source ROS1 后source ROS2。
    vim/gedit 添加到~/.bashrc最后。

    echo "ros noetic(1) or ros2 humble(2) or ros12(Other number)?"
    read edition
    if [ "$edition" -eq "1" ]; thensource /opt/ros/noetic/setup.bash
    else if [ "$edition" -eq "2" ]; thensource /opt/ros/humble/setup.bash
    elsesource /opt/ros/noetic/setup.bashsource /opt/ros/humble/setup.bash
    fi
    

ROS 2 ↔ ROS 1 桥接配置

  1. 编译 ros1_bridge

    • 创建工作空间并克隆扩展仓库(支持更多消息类型):
      mkdir -p ros_bridge_ws/src && cd ros_bridge_ws/src
      git clone https://github.com/smith-doug/ros1_bridge.git # 社区维护版本
      
    • 关键编译步骤
      cd .. && colcon build --symlink-install --packages-skip ros1_bridge
      source /opt/ros/noetic/setup.sh     # 加载 ROS1 环境
      source /opt/ros/humble/setup.sh     # 加载 ROS2 环境
      #colcon build --symlink-install --packages-select ros1_bridge --cmake-force-configure
      colcon build --event-handlers console_direct+ --cmake-args -DCMAKE_BUILD_TYPE=Releas
      
      注意:必须先单独编译其他包,再加载双环境编译桥接包
  2. 运行桥接

    • 启动核心服务:
      # 终端1: 启动 ROS1 roscore
      source /opt/ros/noetic/setup.sh && roscore
      # 终端2: 启动 ROS2 守护进程
      source /opt/ros/humble/setup.sh && ros2 daemon start
      # 终端3: 运行桥接
      source ros_bridge_ws/install/setup.sh
      ros2 run ros1_bridge dynamic_bridge
      
    • 验证通信:
      • ROS1终端1 发布话题:
      rosrun rospy_tutorials talker
      
      • ROS2终端2 接收:
      ros2 run demo_nodes_cpp listener
      

参考链接

  1. fishros-ROS1&ROS2共存-https://fishros.org.cn/forum/topic/3943/ubuntu22-04%E4%B8%8B%E5%A6%82%E4%BD%95ros2-humble%E5%92%8C-ros1-%E5%85%B1%E5%AD%98/2
  2. 官方ROS Bridge-https://carla.readthedocs.io/projects/ros-bridge/en/latest/ros_installation_ros2/
  3. ros2 humble install-https://blog.csdn.net/weixin_55944949/article/details/140373710
  4. https://docs.ros.org/en/humble/How-To-Guides/Using-ros1_bridge-Jammy-upstream.html
  5. fishros-端口映射https://fishros.org.cn/forum/topic/2811/ros2-humble-docker-%E7%9A%84%E7%AB%AF%E5%8F%A3%E6%98%A0%E5%B0%84%E9%97%AE%E9%A2%98
  6. ros-官方-https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debs.html
  7. 小鱼安装-https://blog.csdn.net/weixin_55944949/article/details/140373710
  8. 简洁版-https://blog.csdn.net/weixin_44197671

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/86116.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/86116.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于StarRocks的指标平台查询加速方案

项目背景 指标管理平台按指标查询类型可以划为落表指标和即席查询指标。 落表指标:可选择不同的维度生成多个结果表(每天提交任务写入结果表),对指标进行取数的时候会根据查询条件自动匹配最合适的结果表进行查询。 即席查询指标:不产生结果…

Javaweb - 5 事件的绑定

目录 什么是事件 常见事件 鼠标事件 键盘事件 表单事件 事件的绑定方式 通过元素的属性绑定 通过 DOM 编程动态绑定 总结: 什么是事件 HTML 事件可以是浏览器行为,也可以是用户和行为。当一些行为发生时,可以自动触发对应的 JS 函数…

怎么让二级域名绑定到wordpesss指定的页面

要将二级域名(如 beijing.wodepress.com)绑定到 WordPress 指定页面(如 wodepress.com/beijing),可以通过以下步骤实现: 1. 设置泛域名解析 在域名注册商的管理后台,添加一条泛域名解析记录: 主机记录:输入 *(星号)…

Ragflow源码:launch_backend_service.sh

流程图 #mermaid-svg-hRqGAXWC651HHOLZ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hRqGAXWC651HHOLZ .error-icon{fill:#552222;}#mermaid-svg-hRqGAXWC651HHOLZ .error-text{fill:#552222;stroke:#552222;}#me…

前端的跨域问题

前端新手也能看懂的跨域问题详解 在前端开发中,我们经常会听到“跨域问题”。尤其是在本地调试前端和后台接口时,浏览器突然抛出一堆报错信息,比如: Access to XMLHttpRequest at [http://api.xxx.com/data](http://api.xxx.com…

TCP 连接在异常情况下的断开机制

文章目录 一、进程(客户端)被 kill 掉1、kill [-15]2、kill -9 二、进程(客户端) core 掉 一、进程(客户端)被 kill 掉 详细验证流程 1、kill [-15] 2、kill -9 二、进程(客户端) core 掉

【甲方安全建设】持续渗透测试(一)

持续渗透测试是一种现代安全方法,它对针对组织数字资产的网络攻击进行实时或近实时模拟,确保在漏洞出现时识别并解决漏洞… 文章目录 行业洞察持续渗透测试不是什么?1. 非单一自动化漏洞扫描2. 非传统人工渗透测试的替代品3. 非万能解决方案4…

LOCAL PATTERNS GENERALIZE BETTER FOR NOVEL ANOMALIES

标题:局部模式在新颖异常上的泛化能力更强 原文链接:https://openreview.net/forum?id4ua4wyAQLm 源码链接:https://github.com/AllenYLJiang/Local-Patterns-Generalize-Better/ 发表:ICLR-2025 摘要 视频异常检测(…

ABP vNext + Azure Application Insights:APM 监控与性能诊断最佳实践

ABP vNext Azure Application Insights:APM 监控与性能诊断最佳实践 🚀 📚 目录 ABP vNext Azure Application Insights:APM 监控与性能诊断最佳实践 🚀1️⃣ 集成目标与环境要求 2️⃣ 安装 SDK 与注入服务 3️⃣ 日…

OPENGLPG第九版学习 - 纹理与帧缓存 part1

文章目录 6.1 纹理综述6.2 基木纹理类型6.3 创建并初始化纹理代理纹理 6.4 指定纹理数据6.4.1 显式设置纹理数据将静态数据载入到纹理对象 6.4.2 从缓存(目标对象GL_PIXEL_UNPACK_BUFFER)中加载纹理6.4.3 从文件加载图像(DDS为例)读取一个图像文件并返回内存中的纹素数据将纹素…

谁来定义未来座舱?新一代车载显示「C位」之战开启

在汽车智能网联化转型过程中,车载显示屏幕作为人车交互的重要载体,已经站上了迅猛发展的新起点。 一方面,伴随着汽车智能化的加速渗透与发展,传统中控屏与仪表显示屏的单一显示模式已经难以匹配智能化交互需求,车载显…

基于JavaScript的MQTT实时通信应用开发指南

MQTT 协议入门与实践:使用 JavaScript 构建实时通信应用 1. 什么是 MQTT? MQTT(Message Queuing Telemetry Transport)是一种轻量级的 发布/订阅(Pub-Sub) 消息协议,专为低带宽、高延迟或不稳…

React 19中如何向Vue那样自定义状态和方法暴露给父组件。

文章目录 前言一、什么是 useImperativeHandle?1.1 为什么需要 useImperativeHandle?1.2 基本语法 二、useImperativeHandle 的常见用法3.1 暴露自定义方法3.2子组件封装的弹窗关闭方法暴露给外部 注意点:总结 前言 在 React 的函数组件中&a…

Windows定时关机工具

自己设计了一款简单易用的windows定时关机工具,使用简单,使用只需两步: 1、输入设定的时间 2、点击开始计时 Ps: 1、文章顶部直接下载exe文件 2、文件设置不了免费下载,只能用云盘:定时关机工具.exe - 蓝奏云。 w…

枫清科技受邀参加2025数据智能大会

近日,由中国通信标准化协会主办,中国信通院、大数据技术标准推进委员会(CCSA TC601)承办的“2025数据智能大会”在北京隆重召开,本届大会以“Data X AI,数据燃动智能”为主题,聚焦央国企数智化转型、下一代数据治理、数…

黑马头条-数据管理平台

目录 项目介绍 功能 项目准备 技术 验证码 验证码登录 验证码登录-流程 关于token token的介绍 token的使用 个人信息设置 个人信息设置和axios请求拦截器 axios响应拦截器和身份验证失败 优化-axios响应结果 发布文章 发布文章-富文本编辑器 发布文章-频道列…

Pytorch3D 中涉及的知识点汇总

PyTorch3D 是 Facebook(现 Meta)AI 研究院(FAIR)推出的一个基于 PyTorch 的三维计算库,主要用于 3D 计算机视觉与图形学任务,如 3D 重建、渲染、点云处理、网格操作等。 下面是对 PyTorch3D 中重要涉及知识…

XML在线格式化工具

XML格式化 免费在线XML格式化与压缩工具,一键美化、校验、压缩和优化您的XML代码。支持自定义缩进、节点折叠,提升可读性,减小文件体积,加速数据传输。 https://toolshu.com/xml 本工具是一款专为处理XML(可扩展标记…

【软件系统架构】系列四:嵌入式技术

目录 一、嵌入式系统组成 (1)嵌入式处理器 (2)支撑硬件 (3)嵌入式操作系统 (4)支撑软件 (5)应用软件 二、嵌入式系统特性 三、嵌入式系统分类与分层结构 1.分类 2.嵌入式软件的五层架构深入解析 (1)硬件层(Hardware Layer) (2)抽象层(Hardware Ab…

监管报送面试回答思路和示例

在银行监管报送岗位的面试中,回答问题时需要展现出你的专业知识、实际操作经验、问题解决能力以及对监管合规的重视。以下是对各类问题的回答思路和示例: 一、专业知识类问题 1. 请简述银行监管报送的主要类型和报送频率 回答思路:分类介绍…