ROS2模块库概览
一、核心通信与基础库(最常用)
-
客户端库
- rclcpp (ROS Client Library for C++)
- 核心API:
create_node()
,create_publisher()
,create_subscription()
- 高级特性:
- 生命周期节点:通过
rclcpp_lifecycle
实现configure/activate/shutdown
状态机 - 组件系统:
ComponentManager
支持动态加载插件(如load_component("image_pipeline::CameraNode")
)
- 生命周期节点:通过
- 核心API:
- rclpy (ROS Client Library for Python)
- 异步通信:
AsyncExecutor
实现非阻塞执行 - 类型动态检查:利用Python弱类型特性快速原型开发
- 异步通信:
- rcl (ROS Client Library)
- 跨语言设计:通过
rosidl_typesupport
实现C/C++/Python消息类型兼容 - 性能优化:零拷贝通信支持(需配合
rmw_iceoryx
中间件)
- 跨语言设计:通过
- rclcpp (ROS Client Library for C++)
-
中间件抽象层
- rmw (ROS MiddleWare Interface)
- 抽象接口:定义
rmw_publish()
,rmw_subscribe()
等标准DDS操作 - 配置切换:通过
RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
环境变量选择中间件
- 抽象接口:定义
- DDS实现对比:
- Fast-RTPS:默认选择,平衡性能和资源占用
- Cyclone DDS:强调低延迟和确定性(适合实时系统)
- Connext DDS:商业级QoS策略(需许可证)
- rmw (ROS MiddleWare Interface)
-
消息系统
- message_generation
- 代码生成流程:
.msg
→rosidl_generator_cpp
→ 生成msg/xxx.hpp
- 自定义消息:需在
CMakeLists.txt
中声明rosidl_generate_interfaces()
- 代码生成流程:
- rosidl
- 跨语言序列化:支持C++的
to_cdr_stream()
和Python的serialize()
- 类型系统扩展:通过
rosidl_dynamic_typesupport
实现运行时类型注册
- 跨语言序列化:支持C++的
- message_generation
二、工具链(高频使用)
-
命令行工具
- ros2cli
- 高级用法:
ros2 topic hz /scan
监测话题频率ros2 param dump /node_name
导出参数到YAML
- 插件机制:通过
ros2 extension points
添加自定义命令
- 高级用法:
- ros2launch
- 条件执行:
<if>
和<unless>
标签实现逻辑控制 - 参数传递:
<arg>
声明配合ros2 launch my_pkg launch.py arg:=value
- 条件执行:
- ros2cli
-
可视化工具
- rviz2
- 插件开发:继承
rviz_common::Display
实现自定义显示类型 - 配置保存:
rviz2 -d config.rviz
加载预设界面布局
- 插件开发:继承
- rqt
- 自定义插件:使用
rqt_gui_py
开发Python可视化工具 - 数据过滤:在
rqt_plot
中使用正则表达式选择特定话题字段
- 自定义插件:使用
- rviz2
-
调试工具
- ros2bag
- 过滤录制:
ros2 bag record -e "/camera/.*"
使用正则表达式匹配话题 - 性能优化:设置
--storage mcap
使用高效二进制格式
- 过滤录制:
- ros2doctor
- 网络诊断:检查多播组
239.255.0.1
是否可达 - 配置检查:验证
ROS_DOMAIN_ID
冲突和端口占用
- 网络诊断:检查多播组
- ros2bag
三、高级功能库(中频使用)
-
节点管理
- lifecycle
- 状态迁移图:
Unconfigured → Inactive → Active → Finalized
- 错误恢复:通过
on_error
回调处理异常状态
- 状态迁移图:
- composition
- 动态加载:使用
ros2 component load /ComponentManager image_pipeline::CameraNode
- 资源隔离:通过
rclcpp::NodeOptions
配置独立命名空间
- 动态加载:使用
- lifecycle
-
实时系统支持
- rclc
- 内存预分配:
rclc_executor_init()
设置静态内存池大小 - 确定性调度:配合FreeRTOS的
vTaskPrioritySet()
实现优先级控制
- 内存预分配:
- Real-Time Tools
- 无锁队列:
rt_tools::LockFreeQueue<Message>
实现高并发通信 - 时间敏感型API:
rclcpp::QoSDeadlineRequested
设置截止时间约束
- 无锁队列:
- rclc
-
安全机制
- sros2
- 证书管理:
ros2 security generate_artifacts
生成CA和节点证书 - 策略文件:
governance.xml
定义域权限,permissions.xml
细粒度控制话题访问
- 证书管理:
- sros2
-
执行器扩展
- MultiThreadedExecutor
- 线程池配置:
set_number_of_threads(4)
优化CPU核心利用率
- 线程池配置:
- StaticSingleThreadedExecutor
- 确定性调度:保证回调执行顺序与订阅顺序一致
- MultiThreadedExecutor
四、硬件交互库(按需使用)
-
传感器驱动
- camera
- 标定流程:使用
camera_calibration
包生成ost.yaml
标定文件 - 图像流水线:
image_proc
实现去拜耳/立体视差计算
- 标定流程:使用
- lidar
- Velodyne驱动:
velodyne_driver
解析VLP-16数据包 - 点云过滤:
pcl_ros
实现降采样和离群点去除
- Velodyne驱动:
- imu_tools
- 数据融合:
imu_filter_madgwick
实现姿态解算
- 数据融合:
- camera
-
执行器控制
- ros2_control
- 硬件接口:实现
hardware_interface::SystemInterface
接入真实设备 - 联合控制:
joint_trajectory_controller
实现多轴同步运动
- 硬件接口:实现
- controller_manager
- 动态加载:
load_controller("joint_state_broadcaster")
- 切换策略:
switch_controllers()
实现无抖动控制器切换
- 动态加载:
- ros2_control
-
通信协议适配
- micro-ROS
- 传输层:支持UART、WiFi、LoRa等物理层协议
- 资源占用:最小内存需求≈64KB RAM(基于Cortex-M4)
- ros2_socketcan
- CAN帧解析:
can_msgs/msg/Frame
封装标准CAN 2.0B格式 - DBC集成:通过
ros2_socketcan
解析汽车总线信号
- CAN帧解析:
- micro-ROS
五、领域专用库(按场景使用)
-
导航与SLAM
- Navigation2
- 行为树引擎:
nav2_behavior_tree
实现RecoveryNode
等复杂逻辑 - 代价地图:
voxel_layer
处理3D障碍物
- 行为树引擎:
- slam_toolbox
- 异步SLAM:支持离线建图模式
ros2 launch slam_toolbox offline_slam_launch.py
- 地图保存:
map_saver_cli
生成PGM/YAML格式地图
- 异步SLAM:支持离线建图模式
- Navigation2
-
机器人模型
- urdf/xacro
- 宏编程:
<xacro:macro>
定义可复用模型组件 - 物理属性:
<inertial>
标签配置质量与转动惯量
- 宏编程:
- robot_state_publisher
- TF优化:使用
tf2_ros::StaticTransformBroadcaster
发布静态坐标系
- TF优化:使用
- urdf/xacro
-
仿真接口
- gazebo_ros2_control
- PID调参:通过
gazebo_ros2_control_params.yaml
配置仿真控制器 - 传感器插件:
libgazebo_ros_camera.so
模拟RGB-D摄像头
- PID调参:通过
- ros_ign
- 物理引擎:支持ODE/Bullet/DART多种后端
- 传感器仿真:
ignition::sensors
模拟高精度激光雷达噪声
- gazebo_ros2_control
六、接口定义库(基础依赖)
-
标准消息
- std_msgs
- 基础类型:
Bool
,Int32
,Float64MultiArray
等 - 头信息:
std_msgs/Header
包含时间戳和坐标系
- 基础类型:
- geometry_msgs
- 位姿表示:
PoseWithCovarianceStamped
支持协方差传递 - 运动控制:
Twist
消息用于速度指令(线速度+角速度)
- 位姿表示:
- std_msgs
-
服务接口
- std_srvs
- 通用服务:
Trigger
用于简单状态触发,SetBool
设置布尔量
- 通用服务:
- tf2_msgs
- 坐标系查询:
LookupTransform.srv
实现动态TF树检索
- 坐标系查询:
- std_srvs
-
动作接口
- actionlib_msgs
- 状态机:
GoalStatus
包含PENDING/ACTIVE/SUCCEEDED
等状态 - 反馈机制:
Fibonacci.action
示例展示进度反馈设计模式
- 状态机:
- actionlib_msgs
七、社区贡献库(低频/专业使用)
-
扩展工具
- ros2_tracing
- Trace分析:使用
babeltrace2
解析.ctf
文件生成性能火焰图 - 关键事件:追踪
rcl_publish
和rclcpp_executor_wait
等底层调用
- Trace分析:使用
- ros2multicast
- 组播配置:设置
ROS_MULTICAST_IP
指定组播地址 - QoS策略:
Reliability.BEST_EFFORT
降低带宽占用
- 组播配置:设置
- ros2_tracing
-
特殊中间件
- rmw_iceoryx
- 零拷贝原理:通过共享内存实现发布者-订阅者直接内存传递
- 适用场景:高吞吐量图像传输(如4K视频流)
- rmw_zenoh
- 广域网支持:通过
zenoh-bridge-dds
实现跨互联网ROS2通信
- 广域网支持:通过
- rmw_iceoryx
-
领域协议
- ros2_for_wasi
- 浏览器集成:通过WebAssembly在浏览器中运行ROS2节点
- 限制:不支持多线程和部分系统调用
- ros2_dotnet
- C#绑定:使用
ROS2.Dotnet
包实现与Unity引擎集成
- C#绑定:使用
- ros2_for_wasi
八、遗留兼容库(迁移场景使用)
-
ros1_bridge
- 双向通信:支持ROS1的
roscpp
与ROS2的rclcpp
节点互通 - 类型映射:自动转换
std_msgs/String
等基础消息类型 - 性能损耗:实测增加~15%延迟(需评估关键路径)
- 双向通信:支持ROS1的
-
ros2dds
- DDS调试:直接使用
rtiddsspy
监听DDS层原始数据 - QoS配置:通过XML文件定义DataWriter/DataReader策略
- DDS调试:直接使用
系统分层架构(深度解析)
层级 | 关键技术 | 典型组件 | 性能考量 |
---|---|---|---|
应用层 | 算法实现 | Navigation2节点 | CPU/GPU利用率优化 |
接口层 | IDL定义 | rosidl_generator | 消息序列化开销 |
核心层 | 执行模型 | rclcpp Executor | 回调延迟确定性 |
中间件层 | DDS协议 | Fast-RTPS Discovery | 网络带宽占用 |
OS层 | 实时调度 | PREEMPT_RT内核 | 中断响应时间 |
补充知识
-
性能调优技巧:
- DDS调参:调整
HistoryKind
和Depth
平衡内存与延迟 - 执行器选择:实时系统优先使用
StaticSingleThreadedExecutor
- 零拷贝技巧:对大数据使用
std::unique_ptr
避免拷贝
- DDS调参:调整
-
安全实践:
- 最小权限原则:在
permissions.xml
中严格限制节点权限 - 证书轮换:定期更新CA证书防止密钥泄露
- 最小权限原则:在
-
调试进阶:
- ROS2层跟踪:
RCLCPP_DEBUG()
配合rqt_console
过滤日志 - DDS层诊断:使用
Wireshark
抓包分析RTPS协议流量
- ROS2层跟踪:
建议结合ROS2设计文档和各包API文档进行深入学习,并通过ros2 pkg list
获取完整包列表。
相关文章:
ROS2模块库概览
一、核心通信与基础库(最常用) 客户端库 rclcpp (ROS Client Library for C) 核心API:create_node(), create_publisher(), create_subscription()高级特性: 生命周期节点:通过rclcpp_lifecycle实现configure/activate…...
HADOOP——序列化
1.创建一个data目录在主目录下,并且在data目录下新建log.txt文件 2.新建flow软件包,在example软件包下 FlowBean package com.example.flow;import org.apache.hadoop.io.Writable;import java.io.DataInput; import java.io.DataOutput; import java.i…...
第五章 5.2ESP32物联网应用:HTTP与Web服务器详细教学
本文将详细讲解如何在ESP32上搭建Web服务器,通过HTTP协议实现远程控制LED灯。每行代码均有详细注释,适合零基础学习。 一、HTTP协议基础 HTTP是客户端(浏览器)和服务器之间的通信协议,常用请求方法: GET&a…...
c++11 绑定器bind
文章目录 std::bind 使用总结(C11)1. 绑定普通函数2. 使用占位符 _1, _2,调用时传参数3. 绑定类的成员函数(类外)4. 绑定类的成员函数(类内)5. 占位符结合成员函数小结 std::bind 使用总结&…...
实现时间最优轨迹生成/轨迹规划方法(TOTG),不使用moveit,可用于ROS驱动机械臂FollowJointTrajectoryGoal()
前言 在我的这篇文章:https://blog.csdn.net/weixin_45702459/article/details/139293391?spm1011.2415.3001.5331中,写了不使用moveit来ros驱动机械臂的方法,也就是用FollowJointTrajectoryGoal()来进行一系列点的关节运动,其实…...
2025年推荐使用的开源大语言模型top20:核心特性、选择指标和开源优势
李升伟 编译 随着人工智能技术的持续发展,开源大型语言模型(LLMs)正变得愈发强大,使最先进的AI能力得以普及。到2025年,开源生态系统中涌现出多个关键模型,它们在各类应用场景中展现出独特优势。 大型语言…...
高并发多级缓存架构实现思路
目录 1.整体架构 3.安装环境 1.1 使用docket安装redis 1.2 配置redis缓存链接: 1.3 使用redisTemplate实现 1.4 缓存注解优化 1.4.1 常用缓存注解简绍 1.4.2 EnableCaching注解的使用 1.4.3使用Cacheable 1.4.4CachePut注解的使用 1.4.5 优化 2.安装Ngin…...
Qt 的 事件队列
Qt 的 事件队列 是其核心事件处理机制之一,用于管理和分发系统与用户生成的事件(如鼠标点击、键盘输入、定时器、信号槽中的队列连接等)。理解 Qt 的事件队列对多线程、界面响应以及异步处理尤为关键。 一、Qt 的事件处理模型概览 Qt 是基于…...
html-css样式
1. 所有类型为文本的 元素的样式 指定所有类型为文本的 元素的样式 /* 文本框的样式 */ input[type"text"] { font-size: 25px;width: 80px; /* 文本框的宽度 */ padding: 25px; } font-size:字体大小 width:文本框宽度 padding&#…...
Qemu-STM32(十五):STM32F103加入Flash控制器
概述 本文主要描述了在Qemu平台中,如何添加STM32F103的Flash控制器模拟代码。 参考资料 STM32F1XX TRM手册,手册编号:RM0008 添加步骤 1、在hw/arm/Kconfig文件中添加STM32F1XX_FLASH,如下所示: 号部分为新增加内容 diff -…...
设计模式(责任链模式)
责任链模式 模板模式、策略模式和责任链模式,这三种模式具有相同的作用:复用和扩展,在实际的项目开发中比较常用,特别是框架开发中,我们可以利用它们来提供框架的扩展点,能够让框架的使用者在不修改框架源…...
【Mac-ML-DL】深度学习使用MPS出现内存泄露(leaked semaphore)以及张量转换错误
MPS加速修改总结 先说设备:MacBook Pro M4 24GB 事情的起因是我在进行深度学习的时候想尝试用苹果自带的MPS进行训练加速,修改设备后准备开始训练,但是出现如下报错: UserWarning: resource_tracker: There appear to be 1 leak…...
Hadoop集群部署教程-P5
Hadoop集群部署教程-P5 Hadoop集群部署教程(续) 第十七章:安全增强配置 17.1 认证与授权 Kerberos认证集成: # 生成keytab文件 kadmin -q "addprinc -randkey hdfs/masterEXAMPLE.COM" kadmin -q "xst -k hdfs.…...
Github 2FA(Two-Factor Authentication/两因素认证)
Github 2FA认证 多因素用户认证(Multi-Factor Authentication),基本上各个大互联网平台,尤其是云平台厂商(如:阿里云的MFA、华为云、腾讯云/QQ安全中心等)都有启用了,Github算是搞得比较晚些了。 双因素身…...
Spark大数据分析与实战笔记(第四章 Spark SQL结构化数据文件处理-05)
文章目录 每日一句正能量第4章 Spark SQL结构化数据文件处理章节概要4.5 Spark SQL操作数据源4.5.1 Spark SQL操作MySQL4.5.2 操作Hive数据集 每日一句正能量 努力学习,勤奋工作,让青春更加光彩。 第4章 Spark SQL结构化数据文件处理 章节概要 在很多情…...
使用 Azure AKS 保护 Kubernetes 部署的综合指南
企业不断寻求增强其软件开发和部署流程的方法。DevOps 一直是这一转型的基石,弥合了开发与运营之间的差距。然而,随着安全威胁日益复杂,将安全性集成到 DevOps 流水线(通常称为 DevSecOps)已变得势在必行。本指南深入探…...
遵守 Vue3 的单向数据流原则:父组件传递对象 + 子组件修改对象属性,安全地实现父子组件之间复杂对象的双向绑定示例代码及讲解
以下是针对 父组件传递对象 子组件修改对象属性 的完整示例代码,同时遵守 Vue3 的单向数据流原则: 1. 父组件代码 (ParentComponent.vue) vue <template><!-- 通过 v-model 传递整个对象 --><ChildComponent v-model"formData&qu…...
Unchained 内容全面上链,携手 Walrus 迈入去中心化媒体新时代
加密新闻媒体 Unchained — — 业内最受信赖的声音之一 — — 现已选择 Walrus 作为其去中心化存储解决方案,正式将其所有媒体内容(文章、播客和视频)上链存储。Walrus 将替代 Unchained 现有的中心化存储架构,接管其全部历史内容…...
20.3 使用技巧2
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的 20.3.3 修改表头单元格 设置列表头单元格的内容: 一是可以通过 DataGridView.Columns[列号].HeaderCell来获得对应列的单…...
【Axure绘制原型】小图标使用技巧
获取小图标的网站:https://www.iconfont.cn/ 搜索相关图标 点击下载-复制SVG代码 回到Axure软件中粘贴,此时会显示出图片 在Axure软件中右键-变换图片-转换为形状 即可...
音视频之H.265/HEVC预测编码
H.265/HEVC系列文章: 1、音视频之H.265/HEVC编码框架及编码视频格式 2、音视频之H.265码流分析及解析 3、音视频之H.265/HEVC预测编码 预测编码是视频编码中的核心技术之一。对于视频信号来说,一幅图像内邻近像素之间有着较强的空间相关性,相邻图像之…...
无人机遥感与传统卫星遥感:谁更适合你的需求?
在对地观测领域,无人机遥感和卫星遥感是两种重要的技术手段,各自具有独特的技术原理、性能特点和应用优势。本文将从技术原理、性能特点和应用场景三个方面,对无人机遥感和卫星遥感进行系统对比,帮助读者全面了解两种技术的差异与…...
学习笔记—C++—模板初阶
目录 模板初阶 泛型编程 函数模板 模版概念 函数模版格式 模版的原理 函数模板的实例化 模版参数的匹配规则 类模板 模板初阶 泛型编程 使用函数重载虽然可以实现,但是有一下几个不好的地方: 1. 重载的函数仅仅是类型不同,代码复…...
【Python进阶】字典:高效键值存储的十大核心应用
目录 前言:技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块技术选型对比 二、实战演示环境配置要求核心代码实现(10个案例)案例1:基础操作案例2:字典推导式…...
充电宝项目中集成地图地址解析功能梳理
文章目录 MongoDB数据库引入pom依赖配置yaml配置文件参考POJOXLocationRepositoryservice服务方法 腾讯地图接口申请api key配置api key启动类配置RestTemplate控制层服务层 MongoDB数据库 MongoDB对应经纬度的查询具体很好的支持. 引入pom依赖 <dependency><group…...
算法基础(以acwing讲述顺序为主,结合自己理解,持续更新中...)
文章目录 算法的定义一、基础算法排序二分高精度前缀和与差分双指针算法位运算离散化区间合并 算法的定义 这是我从百度上面搜的定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系…...
栈实现队列
栈实现队列 用栈实现队列:C 语言代码解析栈的基本实现栈的初始化栈的销毁入栈操作检查栈是否为空出栈操作获取栈顶元素获取栈中元素个数 用栈实现队列队列的创建入队操作出队操作获取队首元素检查队列是否为空队列的销毁 总结 用栈实现队列:C 语言代码解…...
Redis原理与Windows环境部署实战指南:助力测试工程师优化Celery调试
引言 在分布式系统测试中,Celery作为异步任务队列常被用于模拟高并发场景。而Redis作为其核心消息代理,其性能和稳定性直接影响测试结果。本文将深入解析Redis的核心原理,主要讲解Windows环境部署redis,为测试工程师提供一套完整…...
HWDeviceDRM的三个子类,HWPeripheralDRM HWTVDRM HWVirtualDRM
在很多采用 DRM 架构的 Android 平台(尤其是 QTI 平台,比如 sdm / display-hal 模块中),HWDeviceDRM 是一个基类,抽象了所有类型的 Display 输出设备的共通 DRM 行为,而它有三个常见的子类,对应…...
金融 IC 卡 CCRC 认证:从合规到业务安全的升级路径
在金融科技飞速发展的当下,金融 IC 卡作为现代金融交易的重要载体,广泛应用于各类支付场景,从日常的购物消费到线上金融理财,其安全性直接关系到用户的资金安全和金融机构的稳定运营。CCRC(中国网络安全审查技术与认证…...
微硕WSP6949 MOS管在强排热水器中的应用与市场分析
微硕WSP6949 MOS管在强排热水器中的应用与市场分析 一、引言 强排热水器作为一种常见的家用电器,其核心部件之一是驱动电路,而MOS管作为驱动电路中的关键元件,其性能直接影响到热水器的运行效率和稳定性。微硕半导体推出的WSP6949 MOS管&am…...
文件操作(二进制文件)
C中对文件操作需要包含头文件 #include<fstream> 文件类型分为两类: 1. 文本文件:文件以文本对应的 ASCII 码形式存储在计算机中 2. 二进制文件:文件以文本的二进制形式存储在计算机中,用户一 般不能直接读懂 文件…...
ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(输入类外设之按键Button)
ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(输入类外设之按键Button) 版本信息: ESP-ADF v2.7-65-gcf908721 简介 本文档详细分析ESP-ADF中的输入类外设实现机制,包括按键(button)、触摸(touch)和ADC按键(a…...
HOW - 企业团队自建 npm 仓库
文章目录 一、明确需求二、选型:常用方案三、Verdaccio 搭建步骤1. 安装 Node.js 环境2. 全局安装 verdaccio3. 启动服务4. 配置(可选)5. 用户登录与发布四、团队使用方式1. 使用 `.npmrc` 文件统一配置2. 发布范围包(Scoped packages)五、权限控制六、进阶集成七、测试和…...
键值对和Map的区别
数组里存储键值对和使用Map(在不同语言里也被叫做字典、哈希表等)存在多方面的区别,下面从多个维度进行分析,同时给出C#和C的代码示例。 区别分析 1. 查找效率 数组存储键值对:查找特定键的值时,通常需要…...
CS61A:STRING REPRESENTATION
Python 规定所有对象都应该产生两种不同的字符串表示形式:一种是人类可解释的文本,另一种是 Python 可解释的表达式。字符串的构造函数 str 返回一个人类可读的字符串。在可能的情况下,repr 函数会返回一个计算结果相等的 Python 表达式。rep…...
AI编程新纪元:GitHub Copilot、CodeGeeX与VS2022的联合开发实践
引言:AI编程时代的到来 在软件开发领域,我们正站在一个历史性的转折点上。GitHub Copilot、CodeGeeX等AI编程助手的出现,结合Visual Studio 2022的强大功能,正在重塑代码编写的本质。这不仅是工具层面的革新,更是开发范式的根本转变。能够有效利用这些AI工具的开发者将跨…...
iOS崩溃堆栈分析
文章目录 一、背景二、获取崩溃日志三、使用 dSYM 文件符号化堆栈信息1. 准备 dSYM 文件2. 符号化方法使用 Xcode使用 atos 命令 一、背景 在 iOS 开发中,分析崩溃日志和堆栈信息是调试的重要环节。上线APP往往只能获取到堆栈信息无法获取到具体的崩溃日志…...
kafka服务端和springboot中使用
kafka服务端和springboot中使用 一、kafka-sever安装使用 下载kafka-server https://kafka.apache.org/downloads.html 启动zookeeper zookeeper-server-start.bat config\zookeeper.properties 启动kafka-server kafka-server-start.bat config\server.properties创建主…...
05-DevOps-Jenkins自动拉取构建代码
新建Gitlab仓库 先在Gitab上创建一个代码仓库,选择创建空白项目 安装说明进行填写,然后点击创建项目 创建好的仓库是空的,什么都没有 新建一个springboot项目,用于代码上传使用。 只是为了测试代码上传功能,所以代码…...
win7/win10/macos如何切换DNS,提升网络稳定性
本篇教程教您如何在Windows10、Windows8.1、Windows7、MacOS操作系统切换DNS,以提升系统的稳定性,获得更好的操作体验。 Windows10及Windows8.1 1、右键单击“此计算机”,然后选择“属性”。进入Windows系统界面后,选择左侧的“…...
【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——A35M33异核通信测试
1)实验平台:正点原子ATK-DLMP257B开发板 2)浏览产品:https://www.alientek.com/Product_Details/135.html 3)全套实验源码手册视频下载:正点原子资料下载中心 第四章 ATK-DLMP257B功能测试——A35&M33…...
maven如何解决jar包依赖冲突
maven如何解决jar包依赖冲突 1.背景2.报错信息3.解决思路3.1.查找jsqlparser冲突3.2.发现冲突3.2.解决冲突 4.Dromara Warm-Flow 1.背景 在ruoyi-vue项目集成Warm-Flow过程中,需要把mybatis升级为mybatis-plus,按照Warm-Flow常见问题中升级过程…...
过往记录系列 篇六:国家队护盘历史规律梳理
文章目录 系列文章护盘触发条件与时间规律护盘信号识别特征市场反应规律退出策略历史演变系列文章 过往记录系列 篇一:牛市板块轮动顺序梳理 过往记录系列 篇二:新年1月份(至春节前)行情历史梳理 过往记录系列 篇三:春节行情历史梳理 过往记录系列 篇四:年报月行情历史梳…...
string的模拟实现 (6)
目录 1.string.h 2.string.cpp 3.test.cpp 4.一些注意点 本篇博客就学习下如何模拟实现简易版的string类,学好string类后面学习其他容器也会更轻松些。 代码实现如下: 1.string.h #define _CRT_SECURE_NO_WARNINGS 1 #pragma once #include <…...
多模态思维链AI医疗编程:从计算可持续性到开放域推理的系统性解决方案
多模态思维链AI医疗编程:从计算可持续性到开放域推理的系统性解决方案 医疗AI领域的多模态思维链技术正在重塑临床决策支持、医学影像分析和医疗流程优化的范式。本指南从计算可持续性、错误传播控制、伦理安全防护和通用性扩展四大维度,系统解析医疗大模型落地落地的关键要…...
BTS7960 直流电机控制程序
/*************正转逻辑*****************/ LEN1 REN1 while() { LPWN0 DELAY LPWM1 DELAY } /************反转逻辑******************/ LEN1 REN1 while() { RPWN0 DELAY RPWM1 DELAY } /******************************/ /***2025 测试直流电机正反转past…...
vue3 uniapp vite 配置之定义指令
动态引入指令 // src/directives/index.js import trim from ./trim;const directives {trim, };export default {install(app) {console.log([✔] 自定义指令插件 install 触发了!);Object.entries(directives).forEach(([key, directive]) > {app.directive(…...
Mysql-JDBC
JDBCUtils public class JDBCUtils {/*** 工具类的构造方法一般写成私有*/private JDBCUtils(){}//静态代码块再类加载的时候执行,且执行一次static{try {Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {e.printStackT…...
如何在爬虫中合理使用海外代理?在爬虫中合理使用海外ip
我们都知道,爬虫工作就是在各类网页中游走,快速而高效地采集数据。然而如果目标网站分布在多个国家或者存在区域性限制,那靠普通的网络访问可能会带来诸多阻碍。而这时,“海外代理”俨然成了爬虫工程师们的得力帮手! …...