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

Ubuntu 20.04安装ROS Noetic完整指南:从系统配置到环境验证

1. 项目概述:为什么要在Ubuntu 20.04上安装ROS?

如果你正在折腾机器人、自动驾驶小车,或者任何需要传感器融合、路径规划和复杂控制的智能硬件项目,那你大概率绕不开ROS。ROS,全称Robot Operating System,虽然名字里带个“操作系统”,但它本质上是一个运行在Linux(主要是Ubuntu)之上的机器人软件框架和工具集。它提供了一整套标准化的通信机制、硬件抽象层和功能包,让你不用从零开始造轮子,能专注于机器人应用逻辑的开发。

而Ubuntu 20.04 LTS,代号Focal Fossa,是一个长期支持版本,意味着它有长达五年的官方维护周期,系统稳定,软件生态成熟。对于机器人开发这种长周期项目来说,选择一个稳定的基础操作系统至关重要。ROS官方对Ubuntu LTS版本的支持也最为完善和长久。所以,“在Ubuntu 20.04中安装ROS”几乎是所有机器人开发者入门的第一个实操步骤,也是后续一切有趣工作的基石。

这个安装过程本身并不复杂,但其中涉及到的Linux系统配置、软件源管理、依赖关系处理等环节,对于新手来说可能藏着不少“坑”。网上教程很多,但有些步骤已经过时,有些则忽略了网络环境差异导致的安装失败。我将结合自己多次在不同机器和环境下的安装经验,为你梳理一份详尽、避坑的指南,目标是让你一次成功,把时间花在更有创造性的机器人编程上,而不是反复折腾环境。

2. 核心思路与版本选择:Noetic还是其他?

在动手之前,我们必须先明确要安装哪个ROS版本。ROS的版本与Ubuntu的版本是强绑定的,官方有明确的对应关系。对于Ubuntu 20.04,官方的对应版本是ROS Noetic Ninjemys

2.1 版本对应关系解析

ROS的发布遵循一个固定的时间表,通常每个Ubuntu LTS版本会对应一个ROS的LTS版本。Noetic是ROS 1的最后一个LTS版本。这里有个关键点需要理解:ROS 1和ROS 2是两个不同的分支。ROS 1(比如Noetic)已经非常成熟,拥有海量的社区功能包,但它的核心架构(基于TCPROS的通信)存在一些已知的局限性。ROS 2则采用了更现代的DDS通信中间件,在实时性、安全性和跨平台方面有显著提升,是未来的方向。

对于Ubuntu 20.04,你可以选择:

  1. ROS Noetic (ROS 1):这是最主流、最稳妥的选择。如果你是初学者,或者你的项目依赖大量基于ROS 1的成熟功能包(如MoveIt!、Gmapping等),那么安装Noetic是首选。本指南也将以Noetic为例进行详解。
  2. ROS Foxy 或 Galactic (ROS 2):Ubuntu 20.04也支持ROS 2的Foxy Fitzroy和Galactic Geochelone版本。如果你明确要使用ROS 2,或者项目对实时性要求高,可以考虑。但ROS 2的生态,尤其是第三方功能包,目前还不如ROS 1丰富。

注意:除非你有特定理由,否则在Ubuntu 20.04上,强烈建议新手从ROS Noetic开始。它能让你接触到最广泛的教程、社区问答和开源项目,学习曲线相对平缓。

2.2 安装变体选择:Desktop-Full, Desktop, 还是ROS-Base?

确定了Noetic版本后,安装时还会让你选择不同的“变体”:

  • ros-noetic-desktop-full推荐给绝大多数桌面用户和初学者。它包含了ROS核心、RQT、RViz、机器人通用库、2D/3D模拟器(如Gazebo)以及一系列教程。基本上,开箱即用,你需要的可视化工具和仿真环境都齐了。
  • ros-noetic-desktop:包含ROS核心、RQT、RViz和机器人通用库,但不包含Gazebo模拟器和一些高级教程。
  • ros-noetic-ros-base:仅包含ROS核心、构建工具和通信库。没有图形化工具。适合在无头服务器或资源受限的嵌入式设备上部署。

对于我们学习和开发来说,直接安装ros-noetic-desktop-full是最省事的选择,避免后续因为缺少某个工具而回头补装依赖的麻烦。

3. 安装前准备与系统配置

在运行安装命令前,做好准备工作能极大提高成功率。很多人安装失败,问题都出在准备工作没到位。

3.1 确保系统更新与区域设置

首先,打开你的终端(Ctrl+Alt+T)。在开始任何安装之前,先更新系统的软件包列表并升级已有的软件包。这能确保你的系统处于最新状态,避免因旧版本库导致的依赖冲突。

sudo apt update sudo apt upgrade -y

这个过程可能会花费一些时间,取决于你的网络速度和更新包的数量。完成后,建议重启一下系统,确保所有更新生效。

另一个容易被忽略但可能导致后续ROS工具(如rosdep)初始化失败的问题是区域设置(Locale)。ROS的一些工具依赖于正确的区域设置来生成和解析文件。检查并设置如下:

# 检查当前locale locale # 如果显示不全或不是en_US.UTF-8,则进行设置 sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 export LANG=en_US.UTF-8

你可以将最后一条export命令添加到你的~/.bashrc文件中,使其永久生效。

3.2 配置Ubuntu软件源

Ubuntu默认的软件源服务器可能在国外,国内用户直接访问速度可能很慢甚至超时,这是安装ROS时最常见的“拦路虎”。我们需要将软件源替换为国内的镜像源,例如阿里云、清华大学或中科大的镜像。

  1. 备份原始源列表:这是一个好习惯。
    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  2. 修改源列表文件:使用你喜欢的文本编辑器,如nanogedit
    sudo nano /etc/apt/sources.list
  3. 替换内容:将文件中的所有archive.ubuntu.comsecurity.ubuntu.com替换为镜像地址。例如,使用阿里云镜像,则替换为mirrors.aliyun.com。你可以直接搜索“Ubuntu 20.04 阿里云镜像源”找到完整的列表替换,或者使用sed命令批量替换:
    sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list sudo sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
  4. 更新:修改保存后,再次更新软件包列表。
    sudo apt update

完成这步后,后续下载系统依赖包的速度会快很多。

4. 核心安装步骤详解

准备工作就绪,现在开始正式的ROS安装流程。请严格按照顺序执行以下步骤。

4.1 添加ROS软件源

ROS并不包含在Ubuntu默认的软件仓库中,所以我们需要将ROS官方的软件源添加到系统里。同样,为了速度,我们使用国内的ROS镜像源,这里以清华大学镜像源为例。

sudo sh -c '. /etc/lsb-release && echo "deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

这条命令做了几件事:它先获取你系统的版本代号(Ubuntu 20.04是focal),然后构建出正确的软件源地址,并将这个地址写入到/etc/apt/sources.list.d/ros-latest.list这个文件中。/etc/apt/sources.list.d/目录下的文件都会被apt包管理器识别为额外的软件源。

4.2 添加ROS软件源的密钥

为了保证从该软件源下载的软件包是真实且未被篡改的,我们需要添加ROS官方发布的GPG密钥。密钥用于验证软件包的签名。

sudo apt install curl # 如果尚未安装curl curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

实操心得:有时因为网络问题,直接从GitHub拉取密钥可能会失败。如果遇到curl报错,可以尝试多执行几次,或者使用备用的密钥服务器:

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

4.3 安装ROS Noetic Desktop-Full

添加完软件源和密钥后,更新本地的软件包列表,使其包含ROS仓库的信息,然后就可以安装ROS了。

sudo apt update sudo apt install ros-noetic-desktop-full -y

这是整个安装过程中最耗时的一步,因为需要下载大约几百MB到1GB以上的数据(取决于你的网络和已安装的依赖)。-y参数表示自动确认安装,避免中途需要手动输入Y。泡杯茶,耐心等待。

4.4 初始化rosdep

rosdep是ROS中一个非常重要的工具,它允许你轻松安装ROS功能包所需的系统依赖。很多功能包在编译或运行时,需要一些系统级的库(如OpenCV、PCL等),rosdep就是用来管理这些依赖的。必须在安装ROS后初始化它。

sudo rosdep init rosdep update

这是另一个高发故障点

  • sudo rosdep init失败:最常见的错误是提示“Website may be down”。这是因为该命令会尝试从raw.githubusercontent.com下载一个索引文件。由于网络原因,这个域名可能访问不稳定。解决方案是修改hosts文件,或者使用国内镜像。一个简单有效的方法是,手动创建所需的文件:
    sudo mkdir -p /etc/ros/rosdep/sources.list.d/ echo "yaml https://mirrors.tuna.tsinghua.edu.cn/rosdistro/rosdep/base.yaml" | sudo tee /etc/ros/rosdep/sources.list.d/20-default.list echo "yaml https://mirrors.tuna.tsinghua.edu.cn/rosdistro/rosdep/python.yaml" | sudo tee -a /etc/ros/rosdep/sources.list.d/20-default.list echo "yaml https://mirrors.tuna.tsinghua.edu.cn/rosdistro/rosdep/ruby.yaml" | sudo tee -a /etc/ros/rosdep/sources.list.d/20-default.list echo "yaml https://mirrors.tuna.tsinghua.edu.cn/rosdistro/releases/fuerte.yaml" | sudo tee -a /etc/ros/rosdep/sources.list.d/20-default.list
    执行完上述命令,就相当于手动完成了rosdep init的工作。
  • rosdep update失败或极慢:这个命令会从ROS服务器下载依赖规则数据库。同样因为网络,可能会卡住或报错。解决方法是指定使用国内的镜像源。在执行rosdep update前,设置环境变量:
    export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml rosdep update
    如果还不行,可以尝试多次执行rosdep update,有时是网络瞬时波动。

4.5 设置环境变量

为了让系统知道ROS的命令和功能包在哪里,我们需要将ROS的环境变量添加到你的shell配置文件中(通常是~/.bashrc)。这样每次打开新的终端,ROS环境都会自动加载。

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc

第一行命令将source /opt/ros/noetic/setup.bash这行代码追加到你的~/.bashrc文件末尾。第二行source ~/.bashrc是立即生效,让你当前的终端会话也能使用ROS命令。

4.6 安装构建ROS包所需的依赖

ROS功能包通常使用catkin工具进行构建。为了编译源代码形式的ROS包,我们需要安装一些额外的工具。

sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential -y
  • python3-rosinstall,python3-rosinstall-generator,python3-wstool: 这些是用于下载和管理ROS功能包源代码的工具。
  • build-essential: 提供编译C/C++程序所需的基础工具链(如gcc, g++, make)。

5. 验证安装与初体验

完成所有步骤后,我们需要验证ROS是否安装成功,并快速体验一下。

5.1 基础验证

打开一个新的终端(非常重要,以确保环境变量生效),输入以下命令:

printenv | grep ROS

你应该能看到类似ROS_ROOT=/opt/ros/noetic/share/rosROS_PACKAGE_PATH=/opt/ros/noetic/share这样的环境变量被设置,这表明ROS环境已加载。

然后,运行ROS的核心——roscoreroscore是ROS系统的“主节点”,它负责管理节点之间的通信。在终端中输入:

roscore

如果安装成功,你会看到一系列启动信息,最后停留在类似started core service [/rosout]的日志输出上,这意味着roscore正在运行。这是ROS一切功能的基础。

5.2 快速小海龟测试

ROS有一个经典的入门演示程序——“小海龟仿真器”。它直观地展示了ROS的节点、话题、服务等核心概念。

  1. 保持运行着roscore的终端不动(或者新开一个终端运行roscore)。
  2. 打开第二个终端,启动海龟仿真器节点:
    rosrun turtlesim turtlesim_node
    此时,一个带有随机小海龟的蓝色窗口应该会弹出来。
  3. 打开第三个终端,启动键盘控制节点:
    rosrun turtlesim turtle_teleop_key
    在这个终端窗口激活的状态下(鼠标点进去),你可以使用键盘上的方向键来控制小海龟移动。

如果小海龟能正常显示并受控移动,那么恭喜你,ROS在Ubuntu 20.04上的安装取得了完全成功!你已经拥有了一个完整的ROS开发环境。

6. 常见问题与深度排查指南

即使按照步骤操作,你也可能会遇到一些问题。下面我整理了一些常见错误及其解决方案,并分享一些深度排查的思路。

6.1 软件包安装失败:依赖关系问题

问题描述:在执行sudo apt install ros-noetic-desktop-full时,提示“无法安装某些软件包”、“依赖关系不满足”等错误。

原因与解决

  1. 软件源未更新:确保在执行安装命令前,已经成功运行了sudo apt update,并且没有报错。如果update失败,回头检查你的软件源配置(/etc/apt/sources.list/etc/apt/sources.list.d/ros-latest.list)格式是否正确,网络是否通畅。
  2. 系统未升级:有时系统部分软件包版本过旧,会导致与ROS新包的依赖冲突。确保你已运行过sudo apt upgrade
  3. 残留的旧版本ROS:如果你之前尝试安装过ROS但失败了,可能会有一些残留的、未正确配置的包。可以尝试修复:
    sudo apt --fix-broken install
    如果问题依旧,可以尝试先卸载所有ROS相关包(谨慎操作):
    sudo apt remove --purge ros-* sudo apt autoremove
    然后清理/etc/apt/sources.list.d/目录下可能残留的ROS源文件,再从头开始安装流程。

6.2 rosdep初始化与更新失败

如前所述,这是网络问题重灾区。除了前面提到的修改文件和设置环境变量的方法,还可以尝试:

  • 使用代理:如果你在学术或企业网络中有可用的HTTP/HTTPS代理,可以为其设置代理:
    export http_proxy=http://your-proxy-address:port export https_proxy=http://your-proxy-address:port
    然后再次运行rosdep initrosdep update
  • 手动下载规则文件:如果rosdep update卡在下载某个yaml文件,你可以用浏览器尝试访问那个URL(如https://mirrors.tuna.tsinghua.edu.cn/rosdistro/rosdep/base.yaml),如果能打开,说明镜像可用。有时只是命令行工具的网络超时设置问题,多试几次可能成功。

6.3 环境变量未生效导致命令找不到

问题描述:安装后,在终端输入roscore等命令,提示“command not found”。

排查步骤

  1. 检查是否在新的终端中运行命令。每次打开新终端,~/.bashrc才会被自动加载。
  2. 手动执行source ~/.bashrc,然后再试。
  3. 检查~/.bashrc文件末尾是否确实添加了source /opt/ros/noetic/setup.bash这一行。可以用cat ~/.bashrc | tail -5查看。
  4. 检查/opt/ros/noetic/目录是否存在。如果不存在,说明ROS主体安装可能失败了。

6.4 图形界面(RViz, Gazebo)无法启动或白屏

问题描述:安装desktop-full后,RViz或Gazebo打开是白屏、黑屏,或者直接崩溃。

原因与解决: 这通常与3D图形渲染驱动有关,常见于虚拟机(如VMware、VirtualBox)或某些独显/集显切换的笔记本。

  1. 虚拟机环境:确保已安装并启用了虚拟机工具的3D加速功能。在VMware中,需要在虚拟机设置中勾选“加速3D图形”。同时,在Ubuntu内确保安装了mesa-utils等基础图形工具。
    sudo apt install mesa-utils
    运行glxinfo | grep rendering,确认显示direct rendering: Yes
  2. 双显卡笔记本:可能需要指定使用独立显卡运行。使用prime-select查询和选择显卡:
    prime-select query # 查看当前使用的显卡 sudo prime-select nvidia # 切换至NVIDIA显卡(如果有)
    切换后需要注销并重新登录才能生效。
  3. Gazebo特定问题:首次运行Gazebo会从网上下载模型,如果网络不好会卡住。可以预先下载模型库到本地。一个方法是设置环境变量指向本地模型路径,或者使用脚本下载。

6.5 编译功能包时的常见错误

当你开始从源码编译自己的或第三方的ROS包时,可能会遇到catkin_make失败。

  • CMake Error / rosidl_generate_interfaces 相关错误:这种错误常出现在编译某些ROS 2包或消息包时。首先确保你安装了所有必要的依赖。使用rosdep安装系统依赖是关键一步:
    cd /path/to/your/catkin_ws rosdep install --from-paths src --ignore-src -r -y
    这条命令会扫描src目录下所有包的package.xml文件,并自动安装其中声明的系统依赖。
  • 找不到Python库:ROS Noetic默认使用Python 3。如果你在Python代码中导入了某些库(如numpy,opencv)找不到,需要确保已通过aptpip安装了对应的Python 3版本。例如:
    sudo apt install python3-numpy python3-opencv # 或者使用pip pip3 install numpy opencv-python

    注意:优先使用apt安装,这样安装的库版本与系统更兼容。pip安装的包可能位于用户目录,有时ROS节点在运行时找不到。

7. 进阶配置与效率工具

安装好基础环境只是第一步,进行一些进阶配置和安装辅助工具,能极大提升你的开发效率。

7.1 创建并初始化工作空间

ROS代码通常组织在“工作空间”中。标准的做法是创建一个catkin_ws(Catkin Workspace)目录来存放你的项目。

mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make

catkin_make命令会初始化工作空间,在develbuild目录中生成必要的文件。初始化后,别忘了将这个工作空间的环境变量也加入~/.bashrc,这样你编译的包才能被ROS找到。

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc

实操心得:你可以有多个工作空间,但每次只能“激活”一个(即source它的setup.bash)。后source的会覆盖前一个。通常将个人项目放在~/catkin_ws,而将系统或第三方包放在/opt/ros/noetic/下。

7.2 安装可视化工具:rqt

虽然desktop-full包含了rqt,但了解它很有必要。rqt是一个基于Qt的ROS图形用户界面框架,它由许多可停靠的插件组成,你可以像搭积木一样自定义你的调试面板。常用插件包括:

  • rqt_graph:可视化显示当前运行的节点和话题之间的连接关系,是分析系统架构的神器。
  • rqt_console:查看和过滤ROS节点的日志输出,比在终端里看rosout清晰得多。
  • rqt_plot:实时绘制话题中发布的数值数据,用于调试传感器数据或控制信号。

在终端直接输入rqt即可启动,然后通过Plugins菜单添加你需要的插件。

7.3 使用“鱼香ROS”的一键安装脚本(可选)

网络上流传的“鱼香ROS一键安装”脚本,其本质是将上述繁琐的步骤(尤其是配置国内源、处理rosdep网络问题)自动化封装。对于纯新手,在信任脚本来源的前提下,使用它可以节省时间。

但作为一名资深开发者,我建议你至少手动完成一次完整的安装流程。这个过程能让你深刻理解ROS与Ubuntu系统的关系,明白每个步骤的作用。当未来环境出现问题时,你才有能力去排查,而不是只会运行脚本。手动安装积累的经验,比一键安装带来的便利更有价值。

如果你确实想尝试,请务必从官方或可信的仓库获取脚本,并仔细阅读脚本内容,了解它将要对你的系统做什么。通常,这类脚本会要求你提供sudo密码。

8. 后续学习路径与资源推荐

成功安装ROS就像拿到了工具箱,接下来是如何使用这些工具。我分享一些我认为高效的学习路径和资源。

第一步:完成官方教程。访问ROS Wiki(wiki.ros.org),找到Noetic的“Beginner Level”教程,严格按照顺序学习。特别是“理解节点”、“理解话题和服务”、“使用rqt_console和roslaunch”、“创建ROS消息和服务”这几节,是核心中的核心。不要只看,一定要在你自己安装好的环境里动手敲一遍。

第二步:掌握核心命令行工具。熟练使用roscore,rosnode,rostopic,rosservice,roslaunch,rosrun。这些是你与ROS系统交互的基本工具。尝试用rostopic echo查看海龟的位置,用rostopic pub手动发布指令,用rosnode info查看节点详情。

第三步:开始一个小项目。最好的学习方式是做。可以从复现一个经典案例开始,比如:

  • SLAM建图:使用gmappinghector_slam包,让一个仿真小车(如TurtleBot3)在Gazebo环境中跑,用激光雷达(或深度相机)构建地图。
  • 视觉识别:在Gazebo中加载一个带摄像头的小车模型,然后结合OpenCV和ROS,实现颜色跟踪或简单物体的识别与定位。
  • 机械臂控制:如果你对机械臂感兴趣,可以学习MoveIt!框架,这是ROS中用于机械臂运动规划的标准工具,功能极其强大。

资源推荐

  • 官方ROS Wiki:最权威的文档和教程来源。
  • 《ROS机器人编程》:一本非常全面的中文实践书籍。
  • GitHub:搜索ros,turtlebot3,slam,moveit等关键词,有无数优秀的开源项目和示例代码。
  • B站/YouTube:有很多优质的视频教程,从安装到项目实战,可以直观地学习。

安装ROS只是万里长征的第一步,但也是最关键的一步。一个稳定、配置正确的开发环境,能让你在后续的学习和开发中避免无数莫名其妙的错误。希望这份超详细的指南能帮你顺利启航。记住,在ROS的世界里,遇到问题先去查ROS Wiki和Google,绝大部分坑前人都已经踩过并留下了解决方案。保持耐心,动手实践,乐趣就在其中。

http://www.jsqmd.com/news/1024208/

相关文章:

  • 2026保姆级照片抠图详细教程,手机、电脑全套操作方法一看就会 - 办公小帮手
  • 2026厦门奢侈品包包回收排名|LV/香奈儿/爱马仕/圣罗兰变现榜单,添价收实力登顶 - 薛定谔的梨花猫
  • 效率提升167%:点焊机助力江苏制造企业升级 - 热点速览
  • 2026年6月最新|嘉兴试验台厂家性价比排行,高口碑高性价比厂家推荐 - 商业新知
  • 别再踩坑了!代码里用Http调用接口返回301?手把手教你排查HSTS强制跳转问题
  • 深度学习论文精读方法论
  • 2026年安徽省有中考生家庭必看:十大综合实力排名的中职中专学校名单top10汇总一览 - 小途xt
  • 在A100服务器上跑dm_control库,遇到‘Cannot initialize a headless EGL display’的完整解决流程
  • CARLA中文文档:面向工程落地的自动驾驶仿真实战指南
  • 2026 年,小程序究竟应该怎么选 - 热点速览
  • 【首发】Claude Code v2.1.178 发布:解锁细粒度参数级防火墙,支持多级目录 Skill 覆盖,彻底根治 VS Code 输入法卡死!
  • 海牙认证需要什么材料?海牙认证在哪里办理?一文搞懂不迷路 - 指上通
  • H3C防火墙高可用排错指南:RBM链路通了,VRRP状态为啥还不对?
  • 2026南京工厂抖音获客短视频运营服务商横向对比,本地企业选型对比指南 - 小艾信息发布
  • 嵌入式系统eLBC与UPM实战:从时序图到NAND Flash驱动配置
  • SUMTEC:轻量级博客内核的六模块设计与实战
  • 远程视频公证需要多少钱?远程视频公证怎么操作?动动手指就搞定 - 指上通
  • 专业级桌面歌词解决方案:LyricsX 2.0完全使用手册
  • 湖南汇昌管业公司——长沙PVC排水管/PVC-U排水管/UPVC管排水管源头生产企业厂家推荐 - GrowthUME
  • AI人格陪伴系统:一套可触发、可组合、可演化的大模型人格调度架构
  • 2026广东毕业后好找工作的大学清单,考生家长必看 - 品牌2026
  • Gemini笔记本:AI原生知识操作系统深度解析
  • 设计模式阶段总结:从记忆到决策的实战跃迁
  • 技术创业者必备的组织级信息处理三能力:全文检索、数据挖掘与推荐引擎
  • Spring Boot异步请求超时了?别慌,手把手教你调整`spring.mvc.async.request-timeout`配置
  • Python字符串核心原理:不可变性、Unicode与切片实战
  • 三款电饭煲,同一批米,口感差距能有多大?把三种主流加热方案讲清楚 - 热点速览
  • 机器学习中的偏差与方差:从理论误区到工业级诊断手册
  • 苏州奢品回收靠谱吗?五家优质门店真实测评|榜首TOP - 讯息早知道
  • 2026安顺装修公司口碑榜十大靠谱装企避坑指南|含零增项、官方质保明细 - 装修新知