ros运行包,Ubuntu20.04成功运行LIO-SAM
z@z:~/lio_sam_ws$ source devel/setup.bash
z@z:~/lio_sam_ws$ roslaunch lio_sam run.launch
创建包链接:
链接1:Ubuntu20.04成功运行LIO-SAM_ubuntu20.04运行liosam-CSDN博客
链接2:ubuntu 20.04 ROS 编译和运行 lio-sam,并且导出PCD文件运行_ubuntu20.04 编译lio-sam-CSDN博客
z@z:~/lio_sam_ws$ source devel/setup.bash
z@z:~/lio_sam_ws$ roslaunch lio_sam run.launch
在bag包所在的位置打开新的终端运行程序代码:
rosbag play l1_cooperation_2023-12-21-15-44-16_velodyne.bag
rosbag play l1_cooperation_2023-12-21-15-44-16_velodyne.bag
最后得到三维点云图像
补充:
根据z@z:~/lio_sam_ws/src/LIO-SAM$ rosbag info l1_cooperation_2023-12-21-15-44-16_velodyne.bag
path: l1_cooperation_2023-12-21-15-44-16_velodyne.bag
version: 2.0
duration: 10:12s (612s)
start: Mar 28 2024 14:18:30.89 (1711606710.89)
end: Mar 28 2024 14:28:43.88 (1711607323.88)
size: 15.4 GB
messages: 73561
compression: none [12163/12163 chunks]
types: sensor_msgs/Imu [6a62c6daae103f4ff57a132d6f95cec2]sensor_msgs/PointCloud2 [1158d486dd51d683ce2f1be655c3c181]
topics: /back/velodyne_points 6130 msgs : sensor_msgs/PointCloud2/imu/data 61304 msgs : sensor_msgs/Imu /velodyne_points 6127 msgs : sensor_msgs/PointCloud2
怎么修改yaml文件里面的topic lio_sam:# TopicspointCloudTopic: "sensor_msgs/PointCloud2" # Point cloud dataimuTopic: "sensor_msgs/Imu" # IMU data#odomTopic: "odometry/imu" # IMU pre-preintegration odometry, same frequency as IMU#gpsTopic: "odometry/gpsz" # GPS odometry topic from navsat, see module_navsat.launch file# FrameslidarFrame: "base_link"baselinkFrame: "base_link"odometryFrame: "odom"mapFrame: "map"# GPS SettingsuseImuHeadingInitialization: true # if using GPS data, set to "true"useGpsElevation: false # if GPS elevation is bad, set to "false"gpsCovThreshold: 2.0 # m^2, threshold for using GPS dataposeCovThreshold: 25.0 # m^2, threshold for using GPS data# Export settingssavePCD: false # https://github.com/TixiaoShan/LIO-SAM/issues/3savePCDDirectory: "/Downloads/LOAM/" # in your home folder, starts and ends with "/". Warning: the code deletes "LOAM" folder then recreates it. See "mapOptimization" for implementation# Sensor Settingssensor: velodyne # lidar sensor type, 'velodyne' or 'ouster' or 'livox'N_SCAN: 16 # number of lidar channel (i.e., Velodyne/Ouster: 16, 32, 64, 128, Livox Horizon: 6)Horizon_SCAN: 1800 # lidar horizontal resolution (Velodyne:1800, Ouster:512,1024,2048, Livox Horizon: 4000)downsampleRate: 1 # default: 1. Downsample your data if too many points. i.e., 16 = 64 / 4, 16 = 16 / 1lidarMinRange: 1.0 # default: 1.0, minimum lidar range to be usedlidarMaxRange: 1000.0 # default: 1000.0, maximum lidar range to be used# IMU SettingsimuAccNoise: 3.9939570888238808e-03imuGyrNoise: 1.5636343949698187e-03imuAccBiasN: 6.4356659353532566e-05imuGyrBiasN: 3.5640318696367613e-05imuGravity: 9.80511imuRPYWeight: 0.01# Extrinsics: T_lb (lidar -> imu)extrinsicTrans: [0.0, 0.0, 0.0]# extrinsicRot: [-1, 0, 0,# 0, 1, 0,# 0, 0, -1]# extrinsicRPY: [0, -1, 0,# 1, 0, 0,# 0, 0, 1]extrinsicRot: [1, 0, 0,0, 1, 0,0, 0, 1]extrinsicRPY: [1, 0, 0,0, 1, 0,0, 0, 1]# LOAM feature thresholdedgeThreshold: 1.0surfThreshold: 0.1edgeFeatureMinValidNum: 10surfFeatureMinValidNum: 100# voxel filter papramsodometrySurfLeafSize: 0.4 # default: 0.4 - outdoor, 0.2 - indoormappingCornerLeafSize: 0.2 # default: 0.2 - outdoor, 0.1 - indoormappingSurfLeafSize: 0.4 # default: 0.4 - outdoor, 0.2 - indoor# robot motion constraint (in case you are using a 2D robot)z_tollerance: 1000 # metersrotation_tollerance: 1000 # radians# CPU ParamsnumberOfCores: 4 # number of cores for mapping optimizationmappingProcessInterval: 0.15 # seconds, regulate mapping frequency# Surrounding mapsurroundingkeyframeAddingDistThreshold: 1.0 # meters, regulate keyframe adding thresholdsurroundingkeyframeAddingAngleThreshold: 0.2 # radians, regulate keyframe adding thresholdsurroundingKeyframeDensity: 2.0 # meters, downsample surrounding keyframe poses surroundingKeyframeSearchRadius: 50.0 # meters, within n meters scan-to-map optimization (when loop closure disabled)# Loop closureloopClosureEnableFlag: trueloopClosureFrequency: 1.0 # Hz, regulate loop closure constraint add frequencysurroundingKeyframeSize: 50 # submap size (when loop closure enabled)historyKeyframeSearchRadius: 15.0 # meters, key frame that is within n meters from current pose will be considerd for loop closurehistoryKeyframeSearchTimeDiff: 30.0 # seconds, key frame that is n seconds older will be considered for loop closurehistoryKeyframeSearchNum: 25 # number of hostory key frames will be fused into a submap for loop closurehistoryKeyframeFitnessScore: 0.3 # icp threshold, the smaller the better alignment# VisualizationglobalMapVisualizationSearchRadius: 1000.0 # meters, global map visualization radiusglobalMapVisualizationPoseDensity: 10.0 # meters, global map visualization keyframe densityglobalMapVisualizationLeafSize: 1.0 # meters, global map visualization cloud densityNavsat (convert GPS coordinates to Cartesian)
navsat:frequency: 50wait_for_datum: falsedelay: 0.0magnetic_declination_radians: 0yaw_offset: 0zero_altitude: truebroadcast_utm_transform: falsebroadcast_utm_transform_as_parent_frame: falsepublish_filtered_gps: falseEKF for Navsat
ekf_gps:publish_tf: falsemap_frame: mapodom_frame: odombase_link_frame: base_linkworld_frame: odomfrequency: 50two_d_mode: falsesensor_timeout: 0.01# -------------------------------------# External IMU:# -------------------------------------imu0: imu_correct# make sure the input is aligned with ROS REP105. "imu_correct" is manually transformed by myself. EKF can also transform the data using tf between your imu and base_linkimu0_config: [false, false, false,true, true, true,false, false, false,false, false, true,true, true, true]imu0_differential: falseimu0_queue_size: 50 imu0_remove_gravitational_acceleration: true# -------------------------------------# Odometry (From Navsat):# -------------------------------------odom0: odometry/gpsodom0_config: [true, true, true,false, false, false,false, false, false,false, false, false,false, false, false]odom0_differential: falseodom0_queue_size: 10# x y z r p y x_dot y_dot z_dot r_dot p_dot y_dot x_ddot y_ddot z_ddotprocess_noise_covariance: [ 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 10.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0.03, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0.03, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0.1, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0.04, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.015]
解答
根据您的ROS Bag文件中的Topic信息,需要将YAML配置文件中的 LiDAR点云Topic 和 IMU Topic 与实际录制的话题名称对齐。以下是具体修改步骤:---**一、关键Topic配置修改**
**1. LiDAR点云Topic**
原始配置错误地将点云Topic定义为消息类型,需改为实际Topic名称:
```yaml
lio_sam:# TopicspointCloudTopic: "/velodyne_points" # 修改前:"sensor_msgs/PointCloud2"# 或根据需求选择多雷达:# pointCloudTopic: "/back/velodyne_points"
```**2. IMU Topic**
IMU Topic需匹配Bag文件中的实际名称:
```yamlimuTopic: "/imu/data" # 修改前:"sensor_msgs/Imu"
```---**二、其他相关配置验证**
**1. 传感器类型与参数**
检查LiDAR型号参数是否匹配(Velodyne/Ouster/Livox):
```yaml# Sensor Settingssensor: velodyne # 确保与使用的LiDAR型号一致N_SCAN: 16 # Velodyne 16线雷达配置Horizon_SCAN: 1800 # Velodyne的水平分辨率
```**2. 坐标系对齐**
验证雷达与IMU的坐标系关系(若存在外参偏移需修改):
```yaml# Extrinsics: T_lb (lidar -> imu)extrinsicTrans: [0.0, 0.0, 0.0] # 若无偏移可保持默认extrinsicRot: [1, 0, 0,0, 1, 0,0, 0, 1] # 单位矩阵表示坐标系对齐
```**3. 导航卫星配置**
如果使用GPS数据,确保`navsat`部分Topic与Bag一致:
```yaml
navsat:# 若有GPS数据需配置对应Topic# odom0: "odometry/gps" # 取消注释并验证Topic名称
```---**三、修改后完整配置示例**
```yaml
lio_sam:# TopicspointCloudTopic: "/velodyne_points" # 或 "/back/velodyne_points"imuTopic: "/imu/data"# FrameslidarFrame: "base_link"baselinkFrame: "base_link"odometryFrame: "odom"mapFrame: "map"# Sensor Settingssensor: velodyneN_SCAN: 16Horizon_SCAN: 1800downsampleRate: 1lidarMinRange: 1.0lidarMaxRange: 1000.0# IMU噪声参数(根据传感器标定结果填写)imuAccNoise: 3.9939570888238808e-03imuGyrNoise: 1.5636343949698187e-03imuGravity: 9.80511
```---**四、验证与调试**
1. 启动LIO-SAM:```bashroslaunch lio_sam run.launch```2. 回放Bag文件:```bashrosbag play l1_cooperation_2023-12-21-15-44-16_velodyne.bag \--topics /velodyne_points /imu/data # 限定必要Topic```3. 检查Topic连通性:```bashrostopic list | grep -E "velodyne_points|imu/data" # 确认Topic已发布```---**五、常见问题解决**
1. Topic未接收:• 使用`rostopic hz /velodyne_points`检查发布频率• 在`launch`文件中添加重映射:```xml<node pkg="lio_sam" type="lio_sam_imuPreintegration" name="imuPreintegration"><remap from="/imu/data" to="/your_custom_imu_topic"/></node>```2. 时间同步问题:```bashrosbag play --clock bag_file.bag # 启用模拟时间```---通过以上配置,您的LIO-SAM将正确订阅Bag文件中的传感器数据。若需进一步优化建图效果,可调整`mappingCornerLeafSize`等点云降采样参数(参见原始配置第25-27行)。
问题2:
为什么修改之后运行重新打开一个终端,输入roslaunch lio_sam run.launch和rosbag play 包在rviz里面没有显示呀,是需要添加什么话题吗
---**原因分析与解决方案**
根据图片中的 RViz报错信息 和 终端日志,修改后运行未显示数据的原因可能是以下几点:---**1. 坐标系(TF)未正确发布**
图片中的关键错误是 `Fixed Frame [map] does not exist`,说明ROS系统中未发布 `map` 坐标系,导致所有依赖该坐标系的显示内容(点云、轨迹等)无法渲染。
原因:
• LIO-SAM的核心节点未正常启动(如 `mapOptimization` 节点崩溃)。 • YAML参数配置错误(如 `mapFrame` 与其他节点冲突)。 解决方案:
1. 检查YAML配置:确保 `lio_sam` 部分的 `mapFrame` 和 `odometryFrame` 与其他节点(如 `ekf_gps`)的配置一致: ```yaml# lio_sam/config/params.yamllio_sam:mapFrame: "map" # 必须与其他节点的map_frame一致odometryFrame: "odom" # 必须与ekf_gps的odom_frame一致``````yaml# ekf_gps配置(若有)ekf_gps:map_frame: "map"odom_frame: "odom"base_link_frame: "base_link"```2. 验证节点启动状态: • 在终端日志中,确认 `lio_sam_mapOptmization` 节点是否启动(如日志中出现 `[lio_sam_mapOptmization-4] process started`)。 • 若节点崩溃,检查 `mapOptmization.cpp` 的依赖项(如GTSAM版本、PCL配置)。---**2. 话题未正确订阅**
RViz中未显示点云或轨迹,可能是因为 话题名称未匹配 或 数据未发布。
原因:
• YAML中的 `pointCloudTopic` 或 `imuTopic` 与Bag文件中的实际话题名称不一致。 • 数据未同步(如Bag文件播放时未指定时钟)。 解决方案:
1. 修改YAML话题名称: 根据Bag文件中的实际话题名称调整参数: ```yaml# lio_sam/config/params.yamllio_sam:pointCloudTopic: "/velodyne_points" # 修改为Bag中的实际名称imuTopic: "/imu/data" # 修改为Bag中的实际名称```2. 指定时钟同步播放Bag: ```bashrosbag play --clock your_data.bag # 启用模拟时钟```---**3. RViz显示配置错误**
即使数据已发布,若RViz未正确配置显示类型或话题,仍无法可视化。
解决方案:
1. 添加显示插件: • 在RViz中点击 Add → By Topic → 选择以下话题: ◦ PointCloud2:订阅 `/lio_sam/mapping/cloud_registered` ◦ Path:订阅 `/lio_sam/mapping/path` ◦ TF:勾选所有坐标系 • 设置 Fixed Frame 为 `map`(若不存在则设为 `odom` 临时测试)。2. 验证话题存在性: ```bashrostopic list | grep -E "cloud_registered|path|imu|odom" # 确认关键话题已发布```---**4. 进程依赖冲突**
终端日志显示 `robot_state_publisher` 和 `ekf_gps` 进程异常退出,可能是 节点依赖冲突 或 参数重复定义。
解决方案:
1. 关闭冲突节点: 在 `run.launch` 中注释或删除重复节点定义(如 `robot_state_publisher` 或 `ekf_gps`)。 ```xml<!-- 注释冲突节点 --><!-- <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" /> -->```2. 检查launch文件依赖: 确保所有节点依赖的包已安装(如 `robot_state_publisher` 需安装 `ros-noetic-robot-state-publisher`)。---**操作流程验证**
1. 启动LIO-SAM: ```bashsource devel/setup.bash # 确保环境生效roslaunch lio_sam run.launch```2. 播放数据包: ```bashrosbag play --clock your_data.bag --topics /velodyne_points /imu/data # 限定必要话题```3. RViz配置检查: • 打开RViz并加载LIO-SAM的默认配置(通常位于 `config/rviz.rviz`)。 • 手动添加显示插件并订阅话题(见上文步骤)。---**常见问题排查**
• 终端无地图输出:检查 `mapOptmization` 节点的日志,确认GTSAM优化是否收敛。 • TF树不完整:运行 `rosrun tf view_frames` 生成TF关系图,验证 `map → odom → base_link` 是否存在。 • 数据延迟:调整Bag播放速率 `rosbag play -r 0.8`(降速80%)。通过以上步骤,可解决坐标系缺失和数据显示问题。若仍无法解决,请提供完整终端日志和 `params.yaml` 文件进一步分析。
最后得到的三维点云图像如下:
相关文章:
ros运行包,Ubuntu20.04成功运行LIO-SAM
zz:~/lio_sam_ws$ source devel/setup.bash zz:~/lio_sam_ws$ roslaunch lio_sam run.launch 创建包链接: 链接1:Ubuntu20.04成功运行LIO-SAM_ubuntu20.04运行liosam-CSDN博客 链接2:ubuntu 20.04 ROS 编译和运行 lio-sam,并且导出PCD文件…...
Linux《自主Shell命令行解释器》
在上一篇的进程控制当中我们已经了解了进程退出、进程等待以及进程替换的相关概念,那么在了解了这些的概念之后接下来在本篇当中我们就可以结合之前我们学习的知识来实现一个自主的Shell命令行解释器,通过Shell的实现能让我们进一步的理解操作系统当中的…...
设置IDEA打开新项目使用JDK17
由于最近在学习Spring-AI,所以JDK8已经不适用了,但是每次创建新项目都还是JDK8,每次调来调去很麻烦 把Projects和SDKs都调整为JDK17即可 同时,Maven也要做些更改,主要是添加build标签 <build><plugins>&…...
Vue百日学习计划Day36-42天详细计划-Gemini版
总目标: 在 Day 36-42 理解组件化开发的思想,熟练掌握 Vue 组件的注册、Props、Events、v-model、Slots、Provide/Inject 等核心概念和实践,能够构建可复用和易于维护的组件结构。 所需资源: Vue 3 官方文档 (组件基础): https://cn.vuejs.org/guide/es…...
Python对JSON数据操作
在Python中,对JSON数据进行增删改查及加载保存操作,主要通过内置的json模块实现。 一、基础操作 1. 加载JSON数据 • 从文件加载 使用json.load()读取JSON文件并转换为Python对象(字典/列表): import json with open…...
upload靶场1-5关
网上的解析有一些题目对应不上,比如第五关说是 空格 点 空格绕过 ,我这里就无法成功解析,但大小写绕过就成功了,慢慢会把后面的关卡也写出来 这里建议开一台win7的虚拟机,在上面搭建靶场,可以省很多麻烦 …...
网络传输(ping命令,wget命令,curl命令),端口
网络传输: ping命令:检查指定的网络服务器是否是可联通状态 语法:ping 【-c num】IP或主机名 -c:是检查的次数,不使用-c,将无限次持续检查 wget命令:wget是非交互式的文件下载器࿰…...
upload-labs靶场通关详解:第10关
一、分析源代码 $is_upload false; $msg null; if (isset($_POST[submit])) {if (file_exists(UPLOAD_PATH)) {$deny_ext array(".php",".php5",".php4",".php3",".php2",".html",".htm",".ph…...
深入解析`lsof`命令:查看系统中打开文件与进程信息
1、lsof的基本概念 lsof (List Open Files) 提供了一种方式来查看系统上哪些进程正在访问哪些文件,能够显示文件类型、文件名、文件描述符、所属进程等详细信息。 在类Unix系统中,几乎所有的操作都与文件相关联,文件不…...
C++ 与 Python 内存分配策略对比
内存管理是编程中的一个核心概念,它直接影响程序的性能、稳定性和资源利用率。C 和 Python 作为两种广泛使用的编程语言,在内存分配和管理方面采用了截然不同的策略。 C 内存分配策略 C 赋予程序员对内存的精细控制能力,同时也带来了更大的…...
TB开拓者策略交易信号闪烁根因及解决方法
TB开拓者策略信号闪烁分析 TB开拓者策略交易信号闪烁根因 TB开拓者策略交易信号闪烁根因分析 信号闪烁是交易策略开发中常见的问题,特别是在TB(TradeBlazer)开拓者等平台上。以下是信号闪烁的主要根因分析: 主要根因 未来函数问题 使用了包含未来信息…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(24):受身形
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(24):受身形 1、前言(1)情况说明(2)工程师的信仰2、知识点(1)うけみけい 受身形(2)復習(ふくしゅう):3、单词(1)日语(2)日语片假名单词4、相近词练习5、单词辨析记录6、总结1、前言 (1)情况说明 自己在今…...
牛客网NC209794:使徒袭来
牛客网NC209794:使徒袭来 题目背景 问题分析 数学建模 设三位驾驶员的战斗力分别为 a, b, c已知条件:a b c n (n为输入的正整数)目标:求 a b c 的最小值 解题思路 根据算术-几何平均值不等式(AM-GM不等式),对于任意正实数a, b, c&a…...
命令行登录 MySQL 报 Segmentation fault 故障解决
问题描述:对 mysql8.0.35 源码进行 make,由于一开始因为yum源问题少安装依赖库 库,在链接时遇到错误 undefined reference to,后来安装了相关依赖库,再次 make 成功。于是将 mysqld 启动,再用 mysql -u roo…...
2025ICPC邀请赛南昌游记
滚榜时候队伍照片放的人家的闹麻了,手机举了半天 。 最后银牌700小几十罚时,rank60多点。 参赛体验还行,队长是福建人,说感觉这个热度是主场作战哈哈哈哈。空调制冷确实不太行吧。 9s过A是啥,没见过,虽然…...
kotlin flow的写法
以下是 Android 开发中 Kotlin Flow 的常见使用模式和操作符的完整中文总结: 1. 基本 Flow 创建方式 // 从多个值创建 val flow1 flowOf(1, 2, 3)// 使用 flow 构建器 val flow2 flow {emit(1)delay(100)emit(2) }// 从集合创建 val flow3 listOf(1, 2, 3).asFl…...
springboot+mybatis或mybatisplus在进行%name%的前后模糊查询时如何放防止sql注入
在使用 Spring Boot 配合 MyBatis 或 MyBatis-Plus 进行数据库操作时,确保防止 SQL 注入是非常重要的。对于 %name% 样式的前后模糊查询,以下是几种有效的方法来防止 SQL 注入: 1. 使用 MyBatis 的 <if> 标签和 #{} 占位符 MyBatis 默…...
基于51单片机教室红外计数灯光控制—可蓝牙控制
基于51单片机智能教室灯光 (仿真+程序+原理图+PCB+设计报告) 功能介绍 具体功能: 本系统由STC89C52单片机时钟芯片DS1302液晶屏LCD1602光敏电阻红外对管LED灯模块按键模块蓝牙模块构成 具体…...
HTTPS、SSL证书是啥?网站“安全小锁”的入门科普
你有没有发现,浏览网页时,有些网站地址栏前面会出现一个小锁的图标🔒,而有些网站却没有?这个小锁其实代表着网站用了“HTTPS”,是比普通“HTTP”更安全的协议。今天,我们就来聊聊HTTPS、SSL证书…...
大模型备案中的安全考量:筑牢数字时代的安全防线
在数字化浪潮席卷全球的当下,大模型技术凭借强大的数据分析、模式识别与语言理解生成能力,成为推动产业变革、提升社会运转效率的关键力量。从智能客服降本增效,到医疗影像精准诊断,再到金融风险智能预测,大模型正重塑…...
Linux句柄数过多问题排查
以下是Linux句柄数过多问题的排查与解决方法整理: 一、检测句柄使用情况 1.查看系统限制 单个进程限制:ulimit -n 系统级总限制:cat /proc/sys/fs/file-max 2.统计进程占用量 查看指定进程:lsof -p <PID> | wc -…...
Python训练第三十天
DAY 30 模块和库的导入 知识点回顾: 导入官方库的三种手段导入自定义库/模块的方式导入库/模块的核心逻辑:找到根目录(python解释器的目录和终端的目录不一致) 总结:导入包的核心就是找到目录,只有理解了py…...
Java资源管理与防止泄漏:从SeaTunnel源码看资源释放
资源管理是 Java 开发中常被忽视却至关重要的一环。本文从 SeaTunnel 案例出发,探讨 Java 中如何正确管理资源,防止资源泄漏。 SeaTunnel 中的一次修复 Apache SeaTunnel 项目中的 HiveSink 组件曾存在一个典型的资源泄漏隐患。修复前后的代码对比如下…...
Notepad++ 学习(三)使用python插件编写脚本:实现跳转指定标签页(自主研发)
目录 一、先看成果二、安装Python Script插件三、配置Python脚本四、使用脚本跳转标签页方法一:通过菜单运行方法二:设置快捷键(推荐) 五、注意事项六、进阶使用 官网地址: https://notepad-plus-plus.org/Python Scri…...
PYTHON训练营DAY30
库的导入 一、导入整个 import 库 二、从库中导入特征项 from 库 import XXX 三、非标准导入:导入整个库 from 库 import * 四、导入自定义的库 (一)项目 创建一个打招呼的库 # greet.py def say_hello(name):return f"你好&a…...
Linux 文件(2)
文章目录 1. 文件描述符1.1 文件描述符是什么1.2 文件描述符如何分配 2 重定向2.1 输出重定向2.2 输入重定向2.3 使用dup2进行重定向 3. 文件、父子进程和进程替换 1. 文件描述符 1.1 文件描述符是什么 什么是文件描述符呢? 我们先来看之前所介绍的系统级别的文件…...
netcore项目使用winforms与blazor结合来开发如何按F12,可以调出chrome devtool工具辅助开发
就是像在开发网页那样,可以使用devtool工具辅助开发。可查看页面css,js等。我在网上看解决办法。没一个有用的。自己找了一个。不需要单独在页面写多余的代码 我的program.cs中有服务注册代码增加 3行代码。 #if DEBUGservices.AddBlazorWebViewDevelo…...
CSS attr() 函数详解
attr() 是 CSS 中的一个函数,用于获取 HTML 元素的属性值并在样式中使用。虽然功能强大,但它的应用有一些限制和注意事项。 基本语法 element::pseudo-element {property: attr(attribute-name); } 可用场景 1. 在伪元素的 content 属性中使用&#…...
人生如戏、戏如人生
今早,6:30起床给一家人弄早餐,然后听到了老公的一声大喊:”半小时了,你干什么了“,原来孩子说她在理书包,被老公骂了。 最近几天,老公脾气变得很差,孩子每天都会被老公骂…...
Java迭代器知识点详解
在 Java 编程中,迭代器(Iterator)是一种用于遍历集合(如 List、Set、Map 等)元素的接口。它提供了一种统一的方式来访问集合中的元素,而无需暴露集合的内部结构。以下是关于 Java 迭代器的详细知识点&#…...
免费开放试乘体验!苏州金龙自动驾驶巴士即将上线阳澄数谷
近日,苏州自动驾驶巴士线路——阳澄数谷示范线正式上线,即日起向全民免费开放试乘体验! 在苏州工业园区地铁3号线倪浜•阳澄数谷站外,一辆辆黑、白配色的小巴正在道路上有条不紊地行驶。与普通公交不同的是,小巴造型奇…...
Kotlin 协程
第一个协程程序 协程是可暂停计算的一个实例。它在概念上类似于线程,因为它需要运行一个代码块,该代码块与其他代码并发运行。然而,协程并不绑定到任何特定的线程。它可以在一个线程中暂停执行,并在另一个线程中恢复执行。 协程…...
MySQL函数触发:函数处理与触发器自动化应用
引言 各位数据库爱好者们好!今天我们要探索MySQL中两个强大的自动化工具——函数和触发器 🚀。函数就像数据库中的"瑞士军刀",能帮你高效处理各种数据;而触发器则是数据库的"自动感应器",能在数据…...
数据可视化热图工具:Python实现CSV/XLS导入与EXE打包
在数据分析工作中,热图(Heatmap)是一种非常直观的可视化工具,能够清晰展示数据矩阵中的数值分布和相关性。本文将介绍如何使用Python构建一个支持CSV/XLS文件导入、热图生成并可打包为EXE的桌面应用程序。 核心功能设计 我们的热图工具将包含以下核心功能: 支持CSV和Excel…...
CUDA Stream的进阶用法:流水线并行的资源竞争解决方案
点击 “AladdinEdu,同学们用得起的【H卡】算力平台”,H卡级别算力,按量计费,灵活弹性,顶级配置,学生专属优惠。 引言:多任务推理场景的挑战 GPU在AI推理服务器的典型负载特征(并行模…...
Eclipse Java 开发调优:如何让 Eclipse 运行更快?
Eclipse Java 开发调优:如何让 Eclipse 运行更快? 在 Java 开发领域,Eclipse 是一款被广泛使用的集成开发环境(IDE)。然而,随着项目的日益庞大和复杂,Eclipse 的运行速度可能会逐渐变慢&#x…...
大模型(1)——基本概念
文章目录 一、大模型的定义与概念二、大模型的原理与技术核心三、大模型的应用领域四、市面上常用的大模型1. 生成类模型(文本/代码/图像)2. 理解类模型(文本/语义)3. 多模态模型4. 国产大模型 五、总结与趋势 一、大模型的定义与…...
MYSQL故障排查和环境优化
一、MySQL故障排查 1. 单实例常见故障 (1)连接失败类问题 ERROR 2002 (HY000): Cant connect to MySQL server 原因:MySQL未启动或端口被防火墙拦截。 解决:启动MySQL服务(systemctl start mysqld)或开放…...
sts下载安装
windows下STS(Spring Tools Suite,自带spring插件的eclipse)的下载与安装_sts下载-CSDN博客Spring Boot安装与配置教程_spring boot安装配置-CSDN博客...
Baklib知识中台架构设计与智能服务实践
知识中台架构四库体系解析 现代企业知识管理系统的核心在于构建结构化知识资产池,Baklib通过独创的四库体系——知识库、流程库、案例库、模型库——实现知识资源的全生命周期管理。其中,知识库作为基础层,聚合文档、图谱等显性知识…...
TinyEngine 2.5版本正式发布:多选交互优化升级,页面预览支持热更新,性能持续跃升!
前言 TinyEngine低代码引擎使开发者能够定制低代码平台。它是低代码平台的底座,提供可视化搭建页面等基础能力,既可以通过线上搭配组合,也可以通过cli创建个人工程进行二次开发,实时定制出自己的低代码平台。适用于多场景的低代码…...
嵌入式系统:技术演进、应用领域发展趋势全面解析
嵌入式系统:技术演进、应用领域及发展趋势全面解析 一、引言 在当今数字化时代,嵌入式系统已悄然融入到我们生活的方方面面,从日常使用的智能手机、智能家电,到汽车中的各种控制系统,乃至工业生产中的自动化设备、航…...
软件工程-项目管理
进度管理 又叫时间管理,确定进度目标,在与质量、成本目标协调的基础上,实现工期目标 具体包括以下过程: 活动定义:确定完成各项交付成果需要展开的具体活动活动排序:活动之间的先后关系和逻辑关系活动资…...
计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 13.几何着色器(二)爆炸效果修改图元类型
1. 爆炸效果 这是几何着色器中的一个常见应用,我们使用几何着色器来模拟爆炸效果。 我们希望将每个三角形沿其表面法向量向外移动,则实际上是将组成环面的三角形向外“爆炸”。 我们只需取三个顶点的法向量,然后将其相加并求平均ÿ…...
需求频繁变更?AI 驱动的自动化解决方案实践
在软件开发的实际场景中,需求频繁变更已成为困扰开发团队的常见难题。每一次需求变动,都意味着代码的重新编写、调试与测试,不仅消耗大量时间和人力成本,还可能引发一系列连锁反应,影响项目进度与质量。而飞算 JavaAI …...
ffmpeg转码后的视频有横条纹和彩虹横条等乱彩问题
原因:ffmpeg安装的时,./configure 添加了–disable-asm参数,导致色彩异常。 **解决方法:**移除该参数–disable-asm。 注意:不加该参数可能提示no yasm或nasm等问题,解决该问题即可。大多是环境变量没有配置…...
QT6 源(111):阅读与注释菜单栏 QMenuBar,进行属性与成员函数测试,信号与槽函数测试,并给出源码
(1) (2) (3) (4) (5) (6) (7)以下源代码来自于头文件 qmenubar . h : #ifndef QMENUBAR_H #defi…...
达梦数据库对json字段进行操作
在达梦数据库中,字段类型不能显式定义为JSON,通常以VARCHAR或TEXT类型存储JSON字符串,可以通过内置的JSON函数对JSON格式数据进行操作和条件过滤。 1. 创建表并插入JSON数据 假设字段类型为VARCHAR,存储JSON字符串: -…...
基于vue框架的东莞市二手相机交易管理系统5yz0u(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
系统程序文件列表 项目功能:用户,相机分类,二手相机 开题报告内容 基于FlaskVue框架的东莞市二手相机交易管理系统开题报告 一、研究背景与意义 1.1 研究背景 随着数字技术的迅猛发展和摄影文化的广泛普及,相机已成为人们记录生活、表达创意的重要工…...
谷歌 NotebookLM 即将推出 Sparks 视频概览:Gemini 与 Deep Research 加持,可生成 1 - 3 分钟 AI 视频
近期,谷歌旗下的 NotebookLM 即将推出一项令人瞩目的新功能 ——Sparks 视频概览。这一功能借助 Gemini 与 Deep Research 的强大能力,能够生成 1 - 3 分钟的 AI 视频,为用户带来全新的内容创作与信息获取体验。 NotebookLM:AI 笔…...