ROS和ROS2借助智能大模型的学习和研究方法
机器人相关知识的本身和价值-CSDN博客
知识本身在智能时代毫无价值,需要基于知识应用和创新才有价值。
学历报废并非来自扩招,而是智能模型的快速发展。-CSDN blink-领先的开发者技术社区
2024年中秋,智能模型实力已经如此,但还有大量朋友笃定旧模-CSDN blink-领先的开发者技术社区
真实故事可以网络自行搜索,但愿给朋友们一些启发, 2013年的事情,距离现在已经10多年啦。
视频:
ROS和ROS2借助智能大模型的学习和研究方法
ROS/ROS2:
roslaunch urdf_tutorial display.launch model:=green_cube.urdf
ros2 launch urdf_tutorial display.launch.py model:=green_cube.urdf
首先,我们来深入解析两条命令:roslaunch urdf_tutorial display.launch model:=green_cube.urdf 和 ros2 launch urdf_tutorial display.launch.py model:=green_cube.urdf。这两条命令分别用于在 ROS 1 和 ROS 2 中启动一个名为 urdf_tutorial 的包中的可视化节点,并传递一个 URDF 模型文件作为参数。
ROS 1 命令解析:roslaunch urdf_tutorial display.launch model:=green_cube.urdf
包名:urdf_tutorial 是 ROS 包的名字,这个包应该包含你所需的 URDF 文件、launch 文件和其他相关资源。
launch 文件:display.launch 是一个 XML 格式的 ROS 1 启动文件,它定义了要启动的节点、节点之间的连接、参数设置等。
参数传递:model:=green_cube.urdf 是一个传递给 display.launch 文件的参数。在 launch 文件中,这个参数通常会被用来设置某个节点的参数,比如 robot_description,它定义了机器人的 URDF 模型。
工作原理:当执行这个命令时,ROS 1 会查找 urdf_tutorial 包中的 display.launch 文件,并根据其中的定义启动相应的节点。同时,它会将 model 参数的值设置为 green_cube.urdf,并在启动过程中将这个值传递给需要的节点。
ROS 2 命令解析:ros2 launch urdf_tutorial display.launch.py model:=green_cube.urdf
包名:同样,urdf_tutorial 是 ROS 2 包的名字。
launch 文件:display.launch.py 是一个 Python 格式的 ROS 2 启动文件。与 ROS 1 的 XML 格式不同,ROS 2 使用了更现代的 Python API 来定义启动过程。
参数传递:model:=green_cube.urdf 同样是一个参数,但它被传递给 display.launch.py 文件。在 Python 启动文件中,这个参数可以通过 launch.substitutions.LaunchConfiguration 或 launch.actions.DeclareLaunchArgument 等 API 来获取和使用。
工作原理:当执行这个命令时,ROS 2 会查找 urdf_tutorial 包中的 display.launch.py 文件,并执行其中的 Python 代码来启动节点。在代码执行过程中,它会处理传递进来的 model 参数,并将其用于配置节点或设置参数。
关键点对比
文件格式:ROS 1 使用 XML 格式的 launch 文件,而 ROS 2 使用 Python 格式的 launch 文件。
API:ROS 1 和 ROS 2 的 launch 系统使用了不同的 API。ROS 1 主要依赖于 XML 标签来定义启动过程,而 ROS 2 则提供了更灵活的 Python API。
参数传递:在两种系统中,参数都可以通过命令行传递给 launch 文件。但在 ROS 2 中,参数的处理和使用更加灵活和强大。
节点配置:在 ROS 2 中,节点的配置和启动更加模块化和可重用。你可以使用 Python 代码来动态地创建和配置节点,这在 ROS 1 中是比较困难的。
总的来说,ROS 2 的 launch 系统提供了更多的灵活性和功能,使得启动和配置 ROS 应用程序变得更加容易和强大。同时,由于 ROS 2 使用了更现代的 Python 语言,它也更容易与其他 Python 库和工具集成。
ROS
在ROS(Robot Operating System)中创建一个URDF(Unified Robot Description Format)文件通常是为了描述机器人的结构、视觉和物理特性。URDF是XML格式的文件,它扩展了SDF(Simulation Description Format)并整合了URDF和XACRO的功能。以下是一个简单教程,教你如何创建一个描述绿色立方体的URDF文件。
1. 安装必要的ROS包
首先,确保你已经安装了ROS和一些必要的依赖包,比如xacro。
bash
sudo apt-get install ros-<your_ros_distribution>-xacro
将 <your_ros_distribution> 替换为你使用的ROS发行版本,例如noetic。
2. 创建一个ROS包
使用 catkin_create_pkg 命令创建一个新的ROS包,例如 my_robot_description:
bash
cd ~/catkin_ws/src
catkin_create_pkg my_robot_description urdf xacro
3. 创建URDF文件
在 my_robot_description 包内创建一个文件夹 urdf,然后在其中创建一个文件 green_cube.urdf:
bash
cd ~/catkin_ws/src/my_robot_description
mkdir urdf
touch urdf/green_cube.urdf
编辑 green_cube.urdf 文件,添加以下内容:
xml
<robot name="green_cube">
<!-- Link for the green cube -->
<link name="cube">
<visual>
<geometry>
<box size="0.1 0.1 0.1"/> <!-- Size of the cube in meters -->
</geometry>
<material name="green">
<color rgba="0 1 0 1"/> <!-- Green color with full opacity -->
</material>
</visual>
<collision>
<geometry>
<box size="0.1 0.1 0.1"/> <!-- Same size for collision detection -->
</geometry>
</collision>
<inertial>
<mass value="1.0"/> <!-- Mass of the cube in kilograms -->
<origin xyz="0 0 0" rpy="0 0 0"/> <!-- Center of mass -->
<ixx value="0.01"/> <!-- Moments of inertia -->
<iyy value="0.01"/>
<izz value="0.01"/>
<ixy value="0.0"/>
<ixz value="0.0"/>
<iyz value="0.0"/>
</inertial>
</link>
<!-- Joint to attach the cube to the world, assuming a fixed joint -->
<joint name="cube_joint" type="fixed">
<parent link="world"/>
<child link="cube"/>
<origin xyz="0 0 0" rpy="0 0 0"/> <!-- Position and orientation relative to the world -->
</joint>
</robot>
4. 验证URDF文件
你可以使用 urdf_parser 和 check_urdf 来验证你的URDF文件是否正确。
首先,确保你已经安装了 urdfdom 工具:
bash
sudo apt-get install ros-<your_ros_distribution>-urdfdom
然后,执行以下命令来检查URDF文件:
bash
check_urdf urdf/green_cube.urdf
如果没有错误输出,说明你的URDF文件是有效的。
5. 在RViz中可视化
为了可视化你的绿色立方体,可以创建一个launch文件。在 my_robot_description 包的根目录下创建一个 launch 文件夹,并在其中创建一个 display.launch 文件:
bash
cd ~/catkin_ws/src/my_robot_description
mkdir launch
touch launch/display.launch
编辑 display.launch 文件,添加以下内容:
xml
<launch>
<param name="robot_description" command="$(find xacro)/xacro '$(find my_robot_description)/urdf/green_cube.urdf'" />
<include file="$(find rviz)/launch/rviz.launch">
<arg name="display_config" value="$(find my_robot_description)/launch/display_config.rviz"/>
</include>
</launch>
注意:display_config.rviz 是一个可选的RViz配置文件,你可以手动创建并配置它,或者直接在RViz中手动配置显示。
6. 启动RViz
现在,你可以启动RViz并显示你的绿色立方体:
bash
roslaunch my_robot_description display.launch
在RViz中,你应该能看到一个绿色的立方体,如果没有,请确保在“Add”按钮下添加了 RobotModel 显示类型。
总结
通过以上步骤,你已经成功创建了一个描述绿色立方体的URDF文件,并在RViz中进行了可视化。这是一个非常基础的示例,但它展示了URDF文件的基本结构和内容。你可以进一步扩展这个文件,添加更多的链接和关节,以描述更复杂的机器人结构。
这些错误信息指出了你的URDF文件中的几个问题,并提供了修复建议。让我们逐一解决这些问题:
错误: [ERROR] [1726654584.393937518]: Inertial element must have inertia element
问题: <inertial> 标签中缺少必要的 <inertia> 子标签。
修复: 在 <inertial> 标签中添加 <inertia> 标签,并指定 ixx, iyy, izz, ixy, ixz, iyz 的值。
错误: [ERROR] [1726654584.396002697]: Could not parse inertial element for Link [cube]
问题: 解析 <inertial> 元素时出错,可能是由于格式不正确或缺少必要的子元素。
修复: 确保 <inertial> 标签格式正确,包含 <mass>, <origin>, 和 <inertia> 子标签。
错误: [ERROR] [1726654584.396253111]: Failed to build tree: parent link [world] of joint [cube_joint] not found. This is not valid according to the URDF spec. Every link you refer to from a joint needs to be explicitly defined in the robot description. To fix this problem you can either remove this joint [cube_joint] from your urdf file, or add "<link name="world" />" to your urdf file.
问题: URDF文件中引用了名为 world 的父链接,但在文件中未定义。
修复: 在URDF文件顶部添加 <link name="world"/> 定义,或者如果 world 链接不是必需的(通常用于固定关节),可以考虑移除 cube_joint 或更改其父链接到已定义的链接。
修复后的 green_cube.urdf 文件应如下所示:
xml
<robot name="green_cube">
<!-- 定义world链接,尽管它通常不需要具体的几何或物理属性 -->
<link name="world"/>
<!-- Link for the green cube -->
<link name="cube">
<visual>
<geometry>
<box size="0.1 0.1 0.1"/> <!-- Size of the cube in meters -->
</geometry>
<material name="green">
<color rgba="0 1 0 1"/> <!-- Green color with full opacity -->
</material>
</visual>
<collision>
<geometry>
<box size="0.1 0.1 0.1"/> <!-- Same size for collision detection -->
</geometry>
</collision>
<inertial>
<mass value="1.0"/> <!-- Mass of the cube in kilograms -->
<origin xyz="0 0 0" rpy="0 0 0"/> <!-- Center of mass -->
<inertia ixx="0.01" iyy="0.01" izz="0.01" ixy="0.0" ixz="0.0" iyz="0.0"/>
</inertial>
</link>
<!-- Joint to attach the cube to the world, assuming a fixed joint -->
<joint name="cube_joint" type="fixed">
<parent link="world"/>
<child link="cube"/>
<origin xyz="0 0 0" rpy="0 0 0"/> <!-- Position and orientation relative to the world -->
</joint>
</robot>
确保所有标签都正确闭合,并且属性值用引号括起来。现在,你的URDF文件应该能够正确解析,并且在RViz中可视化时不会出现错误。
当你使用 roslaunch 命令来启动一个 ROS(Robot Operating System)节点,并且指定了一个 URDF(Unified Robot Description Format)文件时,你需要确保几个关键点:
ROS包和URDF文件的存在:确保你有一个名为 urdf_tutorial 的 ROS 包,并且在该包的某个目录下有一个名为 green_cube.urdf 的文件。
launch文件:确保在 urdf_tutorial 包的 launch 文件夹中有一个名为 display.launch 的文件。这个文件应该包含启动 RViz 或其他可视化工具的配置。
launch文件的内容:display.launch 文件应该包含正确的参数传递,以便能够加载你指定的 URDF 文件。通常,这会涉及到设置一个参数,比如 robot_description,来指向你的 URDF 文件的内容。
环境设置:确保你的 ROS 环境已经正确设置,包括 source /opt/ros/<distro>/setup.bash(根据你的 ROS 发行版替换 <distro>)和 source ~/catkin_ws/devel/setup.bash(如果你是在一个工作空间中工作的话)。
正确的模型路径:在 roslaunch 命令中,model:=green_cube.urdf 是一个传递给 launch 文件的参数。确保这个参数在 display.launch 文件中被正确使用,通常是通过一个 <arg> 标签和一个 <param> 标签来实现的。
例如,你的 display.launch 文件可能看起来像这样:
xml
<launch>
<!-- 声明一个参数,可以在命令行中覆盖 -->
<arg name="model" default="default_model.urdf"/>
<!-- 设置 robot_description 参数,指向指定的 URDF 文件 -->
<param name="robot_description" command="$(find xacro)/xacro '$(find urdf_tutorial)/urdf/$(arg model)'" />
<!-- 启动 RViz -->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find urdf_tutorial)/rviz.rviz" />
</launch>
注意,上面的例子使用了 xacro 来处理 URDF 文件,这是一种常见的做法,因为 XACRO 文件可以包含宏和变量,使 URDF 文件更加模块化和可重用。如果你的 green_cube.urdf 实际上是一个 XACRO 文件(通常扩展名为 .xacro),你需要确保文件扩展名正确,并且在 <param> 标签中使用 xacro 命令来处理它。
如果你的 green_cube.urdf 是一个纯 URDF 文件,不需要 xacro 处理,那么你可以直接设置 robot_description 参数为文件的内容,或者使用 rosparam load 命令从文件加载参数。
最后,确保你在正确的目录下运行 roslaunch 命令,通常是在你的 ROS 工作空间的根目录或包含 urdf_tutorial 包的目录下。
如果你遇到任何错误,请检查 ROS 的日志输出,它通常会提供关于问题所在的详细信息。
ROS2
在 ROS 2 中,与 ROS 1 相比,有一些关键的变化,特别是在启动文件和参数传递方面。首先,ROS 2 通常使用 Python 格式的启动文件(.launch.py),而不是 XML 格式。其次,参数传递和节点配置的方式也有所不同。
如果你有一个名为 urdf_tutorial 的 ROS 2 包,并且想要使用 display.launch.py 来启动一个可视化节点,同时传递一个 URDF 文件作为参数,你需要确保以下几点:
ROS 2 包和 URDF 文件:确保你的 ROS 2 工作空间中已经包含了 urdf_tutorial 包,并且在该包的某个目录下有一个名为 green_cube.urdf 的文件。
launch 文件:在 urdf_tutorial 包的 launch 文件夹中应该有一个名为 display.launch.py 的 Python 文件。这个文件应该包含启动节点和配置参数的必要代码。
launch 文件的内容:display.launch.py 应该使用 ROS 2 的启动 API 来配置和启动节点。这通常涉及到创建一个 LaunchDescription 对象,并添加 Node 和其他相关的配置。
参数传递:在 ROS 2 中,你可以通过 Node 的 parameters 属性或者直接在 LaunchDescription 中使用 set_param 方法来设置参数。对于你的用例,你可能需要设置一个参数(比如 robot_description)来指向 green_cube.urdf 文件的内容。
环境设置:确保你的 ROS 2 环境已经正确设置,包括 source /opt/ros/<distro>/setup.bash(根据你的 ROS 2 发行版替换 <distro>)和 source ~/ros2_ws/install/setup.bash(如果你是在一个工作空间中工作的话)。
正确的命令格式:你的命令 ros2 launch urdf_tutorial display.launch.py model:=green_cube.urdf 看起来几乎正确,但是需要注意的是,model:=green_cube.urdf 这部分应该是传递给 display.launch.py 的一个参数,该参数需要在启动文件中被正确处理。
下面是一个简单的 display.launch.py 示例,它启动了一个假设的可视化节点,并设置了 robot_description 参数:
python
from launch import LaunchDescription
from launch_ros.actions import Node
from launch.substitutions import ThisLaunchFileDir
from launch.actions import SetEnvironmentVariable, DeclareLaunchArgument
def generate_launch_description():
# 声明一个参数,可以在命令行中覆盖
model_param = DeclareLaunchArgument(
'model',
default_value='green_cube.urdf',
description='The URDF model to load'
)
# 设置环境变量或参数(根据需要选择)
# 这里我们假设有一个环境变量 ROS_MASTER_URI 需要设置(这只是一个例子)
set_env = SetEnvironmentVariable(
name='ROS_MASTER_URI',
value='http://localhost:11311'
)
# 创建节点并设置参数
visualization_node = Node(
package='your_visualization_package', # 替换为实际的包名
namespace='visualization',
executable='your_visualization_node', # 替换为实际的节点可执行文件
parameters=[
{'robot_description': [ThisLaunchFileDir(), '/', model_param]} # 假设你的URDF文件在当前launch文件所在目录
],
output='screen' # 输出到屏幕
)
# 创建并返回 LaunchDescription 对象
ld = LaunchDescription([
model_param,
set_env,
visualization_node
])
return ld
注意:上面的代码只是一个示例,并不完全符合你的用例,因为 robot_description 通常不是直接传递给可视化节点的参数。在实际情况中,你可能需要使用一个专门的 ROS 2 服务或节点来加载和处理 URDF 文件,并将其内容发布到参数服务器或其他适当的地方。
对于 ROS 2 和 URDF 的处理,通常你会有一个专门的节点或服务来解析 URDF 文件,并将其转换为 ROS 2 可以使用的格式(例如,通过 robot_state_publisher 发布到 /tf 或 /tf_static 主题)。然后,你的可视化节点可以订阅这些主题来获取机器人的状态信息并进行可视化。
最后,请确保你的 green_cube.urdf 文件路径正确,并且 urdf_tutorial 包已经正确安装和配置在你的 ROS 2 工作空间中。如果遇到任何错误,请检查 ROS 2 的日志输出以获取更多信息。
相关文章:

ROS和ROS2借助智能大模型的学习和研究方法
机器人相关知识的本身和价值-CSDN博客 知识本身在智能时代毫无价值,需要基于知识应用和创新才有价值。 学历报废并非来自扩招,而是智能模型的快速发展。-CSDN blink-领先的开发者技术社区 2024年中秋,智能模型实力已经如此,但还…...

弹性负载均衡ELB 详解和设置方法
一、弹性负载均衡ELB 详解 1. 定义与概念 弹性负载均衡(Elastic Load Balancing,简称ELB)是一种将访问流量自动分发到多台云服务器的流量分发控制服务。它通过在多个后端服务器之间均衡分配请求,提高应用程序的可用性、可扩展性…...

Python3网络爬虫开发实战(15)Scrapy 框架的使用(第一版)
文章目录 一、Scrapy 框架介绍1.1 数据流1.2 项目结构1.3 Scrapy 入门 二、Selector 解析器2.1 XPath 和 CSS 选择器2.2 信息提取2.3 正则提取 三、Spider 的使用3.1 Spider 运行流程3.2 Spider 类分析3.3 Request3.4 Response 四、Download Middleware 的使用4.1 process_requ…...

大众点评代发排名骗局
大众点评代发排名骗局 不诋毁同行,不贬低对手,请各位老板擦亮眼睛,认真看完这篇文章,以防上当受骗#网络宣传#企业推广#企业推广 大众点评代发排名:一场精心编织的骗局 在这个美食如云的时代&…...

硬件基础知识
驱动开发分为:裸机驱动、linux驱动 嵌入式:以计算机技术为基础,软硬结合的、可移植、可剪裁的专用计算机 单片机最小单元:vcc gnd reset 晶振 cpu --- soc :system on chip 片上外设 所有的程序都是在soc(cpu&…...

使用gitee如何回滚上一个版本,简单操作方式-gitee自带功能无需使用代码
使用gitee如何回滚上一个版本,简单操作方式-gitee自带功能无需使用代码,很多朋友使用代码的话容易出错,gitee自带了本功能: 找到gitee代码仓库,找到对应的想要回滚的版本点击进去 点击revert,选择自己对应的…...

独立站技能树之建站33项自检清单 1.0丨出海笔记
很多时候大家建好站之后很嗨,但过一会就开始担忧各种纠结我是不是还有什么点没做好,或者我的站漏了什么东西,那么接下来以下这个独立站自检清单能很好的帮到你。其实对于新手我还是建议大家直接用一些模板,因为模板上面基本该有的…...

js进阶-作用域是什么
经过前面80多篇文章对js相关内容的讲解,相信大家对js这门语言已经有了一定的知识储备,也掌握了这门语言的相关特性,领会到这门语言的魅力所在,所以从今天开始,会定期更新js进阶相关知识,大家可以持续关注&a…...

ant-design表格自动合并相同内容的单元格
表格自动合并相同内容的单元格 合并hooks import { TableColumnProps } from antdexport const useAutoMergeTableCell <T extends object>(dataSource: Array<T>,columns: Array<TableColumnProps> | Array<keyof T> ): Map<keyof T, Array<…...

通过多模态关系图学习实现可解释的医学图像视觉问答|文献速递--Transformer架构在医学影像分析中的应用
Title 题目 Interpretable medical image Visual Question Answering via multi-modal relationship graph learning 通过多模态关系图学习实现可解释的医学图像视觉问答。 01 文献速递介绍 医学视觉问答(VQA)是医学多模态大语言模型(LL…...

从入门到精通,带你探索适合新手的视频剪辑工具
用视频来分享生活已经变成越来越多人的一种习惯,很多时候视频并不能一镜到底,所以还需要一些的修改、剪辑操作,那么这次我将介绍几款视频剪辑工具,希望能够让你分享的道路更加通畅。 1.FOXIT视频剪辑 连接直达>>https://w…...

线性规划------ + 案例 + Python源码求解(见文中)
目录 一、代数模型(Algebraic Models)详解1.1什么是代数模型?1.2代数模型的基本形式1.3 安装所需要的Python包--运行下述案例1.4代数模型的应用案例案例 1:市场供需平衡模型Python求解代码Python求解结果如下图:案例 2:运输问题中的线性规划模型进行数学建模分析1. 目标函…...

用Java实现人工智能
用Java实现人工智能 #Java #人工智能 #AI #机器学习 #深度学习 #数据科学 #技术博客 #编程技巧 文章目录 前言环境准备1. 安装Java2. IDE选择3. 依赖管理 数据准备模型训练模型评估分类模型评估回归模型评估模型的交叉验证 模型部署部署模型的基本步骤模型保存与加载Docker容器…...

MobaXterm使用技巧
引言 在现代IT环境中,远程管理和SSH连接已经成为管理员和开发者日常工作的重要组成部分。MobaXterm是一款功能强大的终端模拟器,它集成了多种网络工具,非常适合用于远程管理、编程和网络调试。本文将汇总一些MobaXterm的使用技巧,…...

openstack中的rabbitmq
基本概念 基础介绍 exchange:用于分发信息,有direct、fanout、topic、headers; binding:exchange、queue之间的虚拟连接,由一个或者多个routing key组成; queues:用来暂存消息,供…...

etcd三节点,其中一个坏掉了的恢复办法
一、配置etcdctl环境变量 --------------------------------------------------------------------------------------------- #其中证书实际路径和endpoints,以环境情况为准,查询方式 # ps -ef | grep etcd-cafile # ps -ef | grep etcd-servers export ETCDCTL_API3 export…...

计算机毕业设计 基于SpringBoot框架的网上蛋糕销售系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...

C编程控制PC蜂鸣器方法2
在《C编程控制PC蜂鸣器》一文中,我们了解并使用了通过IO端口控制的方式操作硬件,而有些时候这对于一些朋友来说太模糊了,很容易让人迷糊,这次采用最基本的write系统调用来写入input_event数据实现相同功能。这里涉及到的input_event可参考《C编程实现键盘LED闪烁方法2》一文…...

C# SQL 辅助工具
{/// <summary>/// sql 辅助工具/// </summary>public class SqlStructureHelps{#region 增删改查/// <summary>/// 截断/// </summary>/// <typeparam name"T"></typeparam>/// <returns></returns>public static …...

eNSP简单用法
建立一个简单的拓扑图 点击绿色三角开启设备 双击设备可以进行命令编辑 视图 分为三个视图:用户视图、系统视图、接口视图 用户视图 在默认模式下就是,为<huawei> 按ctrlz返回用户视图 系统视图: 在用户视图下输入sys切换&#…...

1035. 不相交的线
1. 题目 1035. 不相交的线 2. 解题思路 题目一看是求最值,那就可以考虑用DP来做。 核心点就是确定DP数组的含义以及状态转移方程: dp数组含义:dp[i][j],nums1 前 i 个数和 nums2 前 j 个数的最大连线数dp[i][j] dp[i - 1][j …...

1.pytest基础知识(默认的测试用例的规则以及基础应用)
一、pytest单元测试框架 1)什么是单元测试框架 单元测试是指再软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试。 2)单元测试框架 java:junit和testing python:un…...

Linux常见查看文件命令
目录 一、cat 1.1. 查看文件内容 1.2. 创建文件 1.3. 追加内容到文件 1.4. 连接文件 1.5. 显示多个文件的内容 1.6. 使用管道 1.7. 查看文件的最后几行 1.8. 使用 -n 选项显示行号 1.9. 使用 -b 选项仅显示非空行的行号 二、tac 三、less 四、more 五、head 六、…...

初识 performance_schema:轻松掌握MySQL性能监控
什么是 performance_schema performance_schema 是 MySQL 5.8 版本的一个强大功能,它就像是一个内置的**“性能侦探”**,专门用来监控和分析 MySQL 服务器的资源消耗和等待情况。有了它,数据库管理员和开发者就能实时了解服务器的运行状态&a…...

linux下top命令查看和解释
怎么看top结果: top - 10:20:48 up 8 days, 14:07, 2 users, load average: 6.04, 5.82, 4.73 Tasks: 11099 total, 1 running, 10916 sleeping, 0 stopped, 1 zombie %Cpu(s): 8.9 us, 4.6 sy, 0.0 ni, 86.1 id, 0.1 wa, 0.0 hi, 0.3 si, 0.0 st K…...

换个手机IP地址是不是不一样?
在当今这个信息爆炸的时代,手机已经成为我们生活中不可或缺的一部分。而IP地址,作为手机连接网络的桥梁,也时常引起我们的关注。你是否曾经好奇,换个手机,IP地址会不会也跟着变呢?本文将深入探讨这个问题&a…...

【从计算机的发展角度理解编程语言】C、CPP、Java、Python,是偶然还是应时代的产物?
参考目录 前言什么是"computer"?计算机的大致发展历程计算机系统结构阶段(1946~1981)计算机网络和视窗阶段(1982~2007)复杂信息系统阶段(2008~today)人工智能阶段 越新的语言是越好的吗、越值得学习吗? 前言 最近读了 《Python语言程序设计基础》 这本书…...

《Google软件测试之道》笔记
介绍 GTAC:Google Test Automation Conference,Google测试自动化大会。 本书出版之前还有一本《微软测试之道》,值得阅读。 质量不是被测试出来的,但未经测试也不可能开发出有质量的软件。质量是开发过程的问题,而不…...

实战讲稿:Spring Boot整合MyBatis
文章目录 实战讲稿:Spring Boot整合MyBatis课程目标课程内容1. 创建员工映射器接口1.1 创建子包1.2 创建接口 2. 测试员工映射器接口2.1 自动装配员工映射器2.2 测试按标识符查询员工方法2.3 测试查询全部员工方法2.4 测试插入员工方法2.5 测试更新员工方法2.6 测试…...

基于深度学习的眼部疾病检测识别系统
温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 眼部疾病的早期诊断对于防止视力下降乃至失明至关重要。然而,专业的医疗资源分布不均,尤其是在偏远地区,人们很难获得专业的眼科医生提供的及时诊断服务。本系统…...