自动驾驶之激光雷达
这里写目录标题
- 1 什么是激光雷达
- 2 激光雷达的关键参数
- 3 激光雷达种类
- 4 自动驾驶感知传感器
- 5 激光雷达感知框架
- 5.1 pointcloud_preprocess
- 5.2 pointcloud_map_based_roi
- 5.3 pointcloud_ground_detection
- 5.4 lidar_detection
- 5.5 lidar_detection_filter
- 5.6 lidar_tracking
1 什么是激光雷达
- 激光雷达LiDAR的全称为Light Detection and Ranging 激光探测和测距。
- 激光雷达的工作原理:对红外光束Light Pluses发射、反射和接收来探测物体。白天或黑夜下的物体与车之间的距离。甚至由于反射度的不同,车道线和路面也可以区分。光束无法探测到被遮挡的物体
2 激光雷达的关键参数
- 点频:每帧水平方向平均点数x垂直方向平均点数x帧率=(水平视场角/水平角分辨率)×(垂直视场角/垂直角分辨率)
- 扫描频率:10Hz就代表每秒扫描10次(转10圈)
- 视角(Field of View, FOV):FOV包括垂直视场角(VFOV)、水平视场角(HFOV)、对角线视场角(DFOV);通常,在没有特殊说明时,我们默认的FOV一般都是水平视场角
- 角分辨率:指的是相邻两个激光扫描点之间的角度间隔,一般以度(°)为单位。由于目前激光雷达有很多种扫描方式,每种方式在扫描点分布上的差异,导致扫描点并不绝对均匀,因此这里讲的激光雷达角分辨率是一个等效平均的概念。直观理解,角分辨率越小,单位空间角内分布的激光点数就越多,其对于物体的分辨能力就会越强。相同角分辨率下,对同一物体,距离越远探测到的激光点数越少,如图所示。
因为每100ms(10Hz)转360度, 水平角分辨率为0.2°, 转一圈就产生360/0.2=1800个点, 如果每50ms(20Hz) 转一圈, 就转一圈就产生360/0.4=900个点, 通常自动驾驶领域为了点更密集, 常采取10Hz.(一节课上老师讲的,有点疑惑,一圈点更密为什么更好?不都是看时间的吗?)
- 线数: 对于机械激光雷达来说, 一般多少线就需要多少个激光器。
- 反射率: 激光雷达返回值除了三维点坐标 (x, y, z)之外, 还有反射率和距离, 入射角度, 与物体表面反射率
- 波长: 常见的激光雷达波长为 905nm, 1550nm两种, 1550nm 距离可见光波段更远, 所以对人眼更安全, 波长更长穿透度更好,更有利于在雨雾天气使用, (由于成本较高, 还未成为主流)。
- 探测距离:一般要求200米,以达到最远刹车距离的要求
- 回波模式: 单回波和多回波, 激光雷达发出的激光点是有一定面积的, 有时可能会出现1个激光点发出后, 打在2个物体上(如同一束激光打在两片树叶上), 此时可以选择是接受最后一次回波的值还是反射强度最强的回波的值。
以禾赛128为例
1、10%反射率下最远探测距离200米
2、视场角:120°x25.4°
3、角分辨率:0.1°(H)X0.2°(V)
4、功耗:18W
5、尺寸:137mmX112mmX47mm
3 激光雷达种类
- 传统机械扫描; AT128,有机械结构,体积比较大。
- 使用机械部件旋转来改变发射角度,水平360度扫描
- EE了激光器堆叠工艺复杂,体积过大,垂直线数受限,难以通过
- MEMS(Micro‐Electro‐Mechanical System) 半固态激光雷达
MEMS在硅基芯片上集成了体积十分精巧的微振镜,其核心结构是尺寸很小的悬臂梁——通过控制微小的镜面平动和扭转往复运动,将激光管反射到不同的角度完成扫描,而激光发生器本身固定不动。
- 优点:运动部件减少,体积小,成本相对较低。
- 缺点:MEMS可转角受限,限制扫描视野,存在成像拼接的问题
- FLASH 泛光面阵式, 纯固态激光雷达,
FLASH工作原理类似于摄像头, 只不过摄像头是被动接受光信息, 而FLASH是主动发射面激光并接受反射激光, Flash激光雷达的成像原理是发射大面积激光一次照亮整个场景,然后使用多个传感器接收检测和反射光。但最大的问题是这种工作模式需
要非常高的激光功率。而在体积限制下,Flash激光雷达的功率密度不能很高。因此Flash激光雷达由于功率密度的限制,无法考虑三个参数:视场角、检测距离和分辨率,即如果检测距离较远,则需要牺牲视场角或分辨率;如果需要高分辨率,则需要牺牲视场角或检测距离 - OPA(Optical Phased Array) 光学相控阵,全固态激光雷达;
光学相控阵技术的原理是利用光源相干技术实现光线角度偏转,从而达到扫描测距的目的。OPA激光雷达发射的是光,而光和电磁波一样也表现出波的特性。波与波之间会产生干
涉现象,通过控制相控阵雷达平面阵列各个阵元的电流相位,利用相位差可以让不同的位置的波源会产生干涉(类似的是两圈水波
相互叠加后,有的方向会相互抵消,有的会相互增强),从而指向特定的方向,往复控制便得以实现扫描效果。
- 优点:OPA是纯固态器件,无需要活动的机械结构,
- 缺点:激光雷达对激光调试、信号处理的运算力要求很高。
- 前沿性探索阶段
4 自动驾驶感知传感器
下图是传感器感知的视野图,从图中可以看到,传感器的视野比人的视野更加宽广深远且盲区更小,基本能够涵盖车辆360度范围。
感知主要的传感器:Lidar、Radar(长距、短距)、Camera。
视觉传感器一般用于障碍物、车道线、交通灯检测、目标检测和跟踪功能。基本原理是首先获取图像并将图片转化为二维数据,然后通过深度学习方法做目标识别,再根据相机的内外参计算目标物体和主车的相对距离和相对速度。毫米波雷达主要用于目标检测、换道辅助、自适应巡航控制、停车辅助等,激光雷达一般应用于障碍物检测、定位等。
在智能驾驶领域,通常车辆会配置多种感知器,分别执行不同的任务,并进行感知融合。在感知融合中,会对所有目标进一步处理,得到更加准确的目标类别、距离、尺寸、速度等,感知完成红绿灯检测、车道线检测目标融合之后,把感知信息发送给下游模块
5 激光雷达感知框架
以百度Apollo为例
感知框架中lidar、camera、radar、fusion 四部分内容定义在四个模块中。Lidar 和 camera 每个模块内部功能复杂,学习成
本较高。感知框架拆分后,模块依赖关系清晰。Lidar 和 camera 的感知流程分为多个模块,依赖关系呈线性状态;radar
和 fusion 的功能在单个模块内,功能如框图所示。
激光雷达检测用于 3D 目标检测,它的输入是激光雷达点云,输出为检测到的物体的类型和坐标。
- pointcloud_preprocess:点云预处理模块对输出的点云数据进行预处理。 删除超值点、太远的点、扫描到自身车辆上的点、太高的点。
- pointcloud_map_based_roi:过滤 ROI 之外的点云。 感兴趣区域 (ROI) 指定可行驶区域,包括从高精地图检索到的路面和路口。 HDMap ROI 过滤器处理 ROI 外部的lidar点,去除背景物体,例如道路周围的建筑物和树木。 剩下的就是ROI中的点云以供后续处理。 给定HDMap,每个 LiDAR 点的隶属关系指示它是在 ROI 内部还是外部。
- pointcloud_ground_detection:点云地面检测,检测地面点,并保存所有非地面点的索引。
- lidar_detection:基于点云进行3D物体检测,并输出检测到的物体的位置、大小和方向。 Apollo提供了4种激光雷达检测模型:centerpoint、maskpillars、pointpillars、cnnseg。
- lidar_detection_filter:根据对象属性、车道线、ROI 等过滤前景和背景对象。
- lidar_tracking:跟踪模块用于跟踪障碍物的运动轨迹,更新障碍物的运动状态和几何形状,并分配跟踪id。
- multi_sensor_fusion :多传感器融合模块融合Lidar、Camera、Radar多个传感器的输出结果,使检测结果更加可靠。该模块采用后处理技术,采用的算法是概率融合
5.1 pointcloud_preprocess
点云预处理模块对点云做过滤,删除异常的、感知不需要的点云。
- 删除空值,超限值点云;
- 删除过远(超过1000m)的点云;
- 删除过高的点云;
- 点云转化到主车自身坐标系,删除扫描到主车身上的点云。
5.2 pointcloud_map_based_roi
点云基于地图计算兴趣区域(roi,region of interest),根据高精度地图的road和junction边界判断点云是否在高精度地图内,获得
在高精地图内的点的索引。
下图是基于地图roi过滤的效果图。红色的是roi内的点云,白色的是roi外的点云。
5.3 pointcloud_ground_detection
地面点检测功能是检测出地面点,获得所有非地面点的索引,即non_ground_indices。
下图是地面点云检测的示例图,红色的点云是非地面点云,白色的是地面点云。分割出地面点云后,去除前景目标点云。然后用
剩余的非地面点云做聚类,检测当前场景下的所有目标,保证自动驾驶的安全性。
5.4 lidar_detection
检测模型完成目标检测功能,获得目标的如下结果:cx, cy, cz, length, width, height, heading, type
其中,(cx, cy, cz)是中心点,(length, width, height)是长宽高,heading是朝向,type是目标类别。示例如下
除了获取目标,还根据目标的3d bounding box,得到每个目标的所有点云。
5.5 lidar_detection_filter
完成激光雷达目标检测后,对检测目标做过滤。object_filter_bank可以同时使用多个过滤器,针对roi_boundary_filter做介绍,
roi_boundary_filter只用来处理前景目标(即妨碍车辆行驶的目标)。roi_boundary_filter过滤规则如下图。
5.6 lidar_tracking
多目标跟踪,获取目标运动的历史轨迹,得到更加稳定的朝向、速度、位置等信息,得到跟踪id。多目标跟踪的结果可进一步用于障碍物轨迹预测。
detections 来自最新检测的结果,tracks 表示历史的匹配结果。Match 是目标匹配算法,最终得到三种匹配结果:
- unassigned tracks:历史的目标没有和最新的检测结果匹配上,这种情况会更新历史 tracks,并删除过老的 tracks
- assignment:表示已经匹配上,根据dets和tracks更新tracks。
- unassignement detections:最新检测的结果没有匹配上,添加到历史tracks中。这时会赋予一个新的track‐id。
相关文章:
自动驾驶之激光雷达
这里写目录标题 1 什么是激光雷达2 激光雷达的关键参数3 激光雷达种类4 自动驾驶感知传感器5 激光雷达感知框架5.1 pointcloud_preprocess5.2 pointcloud_map_based_roi5.3 pointcloud_ground_detection5.4 lidar_detection5.5 lidar_detection_filter5.6 lidar_tracking 1 什么…...
Python毕业设计选题:基于python的豆瓣电影数据分析可视化系统-flask+spider
开发语言:Python框架:flaskPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 系统首页 个人中心 管理员登录界面 管理员功能界面 电影管理 用户管理 系统管理 摘要…...
从 Mac 远程控制 Windows:一站式配置与实践指南20241123
引言:跨平台操作的需求与挑战 随着办公场景的多样化,跨平台操作成为现代开发者和 IT 人员的刚需。从 Mac 系统远程控制 Windows,尤其是在同一局域网下,是一种高效解决方案。不仅能够灵活管理资源,还可以通过命令行简化…...
k8s部署Nginx详细教程
Kubernetes(简称k8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。本文将详细介绍如何使用k8s部署Nginx,包括创建部署配置、创建服务以及如何通过一个命令完成部署和删除。 环境准备 在开始之前&#x…...
PySpark3:pyspark.sql.functions常见的60个函数
目录 一、常见的60个函数 1、col 2、lit 3、sum 4、avg/mean 5、count 6、max 7、min 8、concat 9、substring 10、lower 11、upper 12、trim 13、ltrim 14、rtrim 15、split 16、explode 17、collect_list 18、collect_set 19、asc 20、desc 21、when 2…...
网络爬虫总结与未来方向
通过深入学习和实际操作,网络爬虫技术从基础到进阶得以系统掌握。本节将全面总结关键内容,并结合前沿技术趋势与最新资料,为开发者提供实用性强的深度思考和方案建议。 1. 网络爬虫技术发展趋势 1.1 趋势一:高性能分布式爬虫 随…...
【优先算法】专题——双指针
1.移动零 移动零 题目描述: 思路: 本题我们把数组分块,将非零元素移动到左边,为零元素移动右边。 我们使用双指针算法(利用数组下标来充当指针) 两个指针的作用: cur:从左往右…...
互联网时代的隐私保护
在这个数字化时代,我们的生活与互联网密不可分。打开手机刷刷朋友圈,浏览一下购物网站,约个网约车,点个外卖,这些看似平常的行为都在默默产生着数据足迹。可就在这不经意间,我们的个人信息正在被收集、分析…...
活着就好20241124
今天是周日,一个同样洋溢着休闲与宁静气息的日子。亲爱的朋友们,大家早上好!在经历了一周的忙碌之后,我们终于迎来了这个让人期待已久的休息日。周日,不仅是一个放松身心的绝佳时机,更是我们回归自我、享受…...
镁光MT25QU01GXXX norflash调试笔记
目录 前言一、芯片概述二、数据手册解释1. 数据手册获取2.内容概括 三、几个操作的代码1.复位芯片操作2.读取芯片ID3.擦除芯片扇区4.向芯片存入数据5.读取存储的数据6.其它操作函数 前言 本笔记总结如何使用MCU对nor flash进行数据存储,包括芯片基本介绍࿰…...
并行IO接口8255
文章目录 8255A芯片组成外设接口三个端口两组端口关于C口(★) 内部逻辑CPU接口 8255A的控制字(★)位控字(D70)方式选择控制字(D71) 8255A的工作方式工作方式0(基本输入/输…...
[Unity Demo]从零开始制作空洞骑士Hollow Knight第二十集:制作专门渲染HUD的相机HUD Camera和画布HUD Canvas
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作HUD Camera以及让两个相机同时渲染屏幕二、制作HUD Canvas 1.制作法力条Soul Orb引入库2.制作生命条Health读入数据3.制作吉欧统计数Geo Counter4.制作…...
《AI大模型开发笔记》——Prompt提示词最佳实践
为什么需要提示词优化 什么是 Prompt enginnering? 提示词:解释一下什么是大语言模型的Prompt enginnering 图1. 什么是Prompt Enginnering? 通过上面ChatGPT的说明,我们可以看到,prompt工程化就是如何写prompt提示…...
Frontend - 防止多次请求,避免重复请求
目录 一、避免重复执行的多种情况 (一)根据用途 (二)根据用户操作 二、具体实现 (一)“Ajax ”结合disabled (防止多次请求),避免多次点击重复请求 1. 适用场景 2. 解决办法 3. 示例 &…...
MongoDB 简介
MongoDB 简介 MongoDB 是一种流行的 NoSQL 数据库管理系统,以其灵活的数据模型、高性能和易于扩展的特点而闻名。本文将详细介绍 MongoDB 的基本概念、特点、使用场景以及如何在实践中应用。 1. MongoDB 基本概念 1.1 文档数据库 MongoDB 是一个文档数据库,它使用 JSON 风…...
Ngrok实现内网穿透(Windows)
Ngrok实现内网穿透(Windows) 什么是内网穿透,内网穿透有什么用 内网穿透(NAT traversal)是一种技术手段,使得位于内网或防火墙后面的设备能够通过外网访问。例如,如果你的计算机、服务器等设备…...
【Python-办公自动化】实现自动化输出模板表格报告
import pandas as pd import numpy as np# 定义时间范围 date_range = pd.date_range(start=2023-11-01, end=2024-10-31, freq=M...
医学AI公开课·第一期|Machine LearningTransformers in Med AI
小罗碎碎念 从这周开始,我计划每个周末录一个视频,分享一些医学人工智能领域的进展。 作为第一期视频,我打算介绍一下机器学习和Transformer在医学AI领域中的应用。 为了准备这期视频,总共做了24页PPT(三部分内容&…...
ESP8266 STA模式TCP服务器 电脑手机网络调试助手
STA模式TCP服务器和手机电脑网络调试助手多连接...
Transformer架构笔记
Attention is All You Need. 3.Model Architecture 3.1 整体架构如图 3.2 Encoder与Decoder Encoder:由 N 6 N6 N6个相同的Block/Layer堆叠而成。每个Block有两个子层sub-layer:多头注意力和MLP(FFN,前馈神经网络)&…...
初学 flutter 环境变量配置
一、jdk(jdk11) 1)配置环境变量 新增:JAVA_HOMEC:\Program Files\Java\jdk-11 //你的jdk目录 在path新增:%JAVA_HOME%\bin2)验证是否配置成功(cmd运行命令) java java -version …...
【大数据技术基础】 课程 第8章 数据仓库Hive的安装和使用 大数据基础编程、实验和案例教程(第2版)
第8章 数据仓库Hive的安装和使用 8.1 Hive的安装 8.1.1 下载安装文件 访问Hive官网(http://www.apache.org/dyn/closer.cgi/hive/)下载安装文件apache-hive-3.1.2-bin.tar.gz 下载完安装文件以后,需要对文件进行解压。按照Linux系统使用的…...
Postman之newman
系列文章目录 1.Postman之安装及汉化基本使用介绍 2.Postman之变量操作 3.Postman之数据提取 4.Postman之pm.test断言操作 5.Postman之newman Postman之newman 1.基础环境node安装1.1.配置环境变量1.2.安装newman和html报告组件 2.newman运行 newman可以理解为,没有…...
Lua 实现继承的一种方式
以下代码来自Loxodon Framework,截取自其中的一段 function class(classname, super)local cls {}cls.__classname classnamecls.__class clscls.base function (self)return cls.superendcls.__type 0cls.super supercls.__index clsif super thensetmetat…...
相机网卡开启巨型帧和关闭节能模式方法
2022 年 8 月 2 日 Tank 阅读次数(ip/1年): 26,796 win10为例子 首先在开始菜单搜索:网络连接 对想要设置的网络右键:属性 点 配置 高级里面找到这三个选项,参考下图设置,螃蟹网卡建议关掉所有节能有关的…...
如何在 Ubuntu 22.04 上安装带有 Nginx 的 ELK Stack
今天我们来聊聊如何在 Ubuntu 22.04 服务器上安装 ELK Stack,并集成 Nginx 作为 Web 服务器,同时使用 Let’s Encrypt Certbot 进行 SSL 认证。ELK Stack,包括 Elasticsearch、Logstash 和 Kibana,是一套强大的工具,用…...
Android中的依赖注入(DI)框架Hilt
Hilt 是 Android 提供的一种依赖注入(DI)框架,它基于 Dagger,目的是简化依赖注入的使用,提供更易用的接口和与 Android 生命周期组件的紧密集成。下面是 Hilt 的详细介绍。 为什么选择 Hilt? 依赖注入的优势…...
笔记记录 k8s操作
docker下载arm架构的镜像 docker pull centos --platform arm64 其中华为鲲鹏、飞腾CPU采用的是ARM架构,龙芯采用的是MIPS架构,而兆芯、海光CPU采用的是X86架构,申威采用的是Alpha架构 docker查看容器的日志文件目录 docker inspect --format={{.LogPath}} containername…...
掌握Go语言中的异常控制:panic、recover和defer的深度解析
掌握Go语言中的异常控制:panic、recover和defer的深度解析 在Go语言的编程世界中,异常处理是一个不可忽视的话题。Go语言提供了panic、recover和defer三个关键字来处理程序中的异常情况。本文将深入探讨这三个关键字的工作原理、使用场景和最佳实践,帮助读者在实际编程中更…...
SpringBoot项目部署到云服务器全流程
文章目录 一、前期准备(一)云服务器选择(二)本地环境准备(三)数据库准备(若项目需要) 二、服务器配置(一)获取服务器信息(二)重置实例…...
对传统加密算法降维打击?!——量子计算
量子计算 声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无…...
什么是Lodash,有什么特点
什么是 Lodash? Lodash 是一个 JavaScript 工具库,提供了一系列实用的函数来处理常见的编程任务,如数组操作、对象操作、字符串处理等。Lodash 由 John-David Dalton 创建,旨在提供一个更全面、更高效的替代方案,以弥…...
Simulink中Model模块的模型保护功能
在开发工作过程中,用户为想要知道供应商的开发能力,想要供应商的模型进行测试。面对如此要求,为了能够尽快拿到定点项目,供应商会选择一小块算法或是模型以黑盒的形式供客户测试。Simulink的Model模块除了具有模块引用的功能之外&…...
【电子通识】LED的一些基础知识
什么是LED LED是被称为"发光二极管"的半导体,名称取至 "Light Emitting Diode" 的首字母。 从爱迪生1879年发明白炽灯后,白炽灯统治了照明一百多年,为世界带来光明。而在21世纪,白炽灯却早已被取代࿰…...
React Native 基础
React 的核心概念 定义函数式组件 import组件 要定义一个Cat组件,第一步要使用 import 语句来引入React以及React Native的 Text 组件: import React from react; import { Text } from react-native; 定义函数作为组件 const CatApp = () => {}; 渲染Text组件...
C语言 蓝桥杯某例题解决方案(查找完数)
蓝桥杯原题: 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6 1 2 3.编程找出1000以内的所有完数。 这个题没有很大的难点,与我们上一个解决的问题“质因数分解”不同,它不需要判断因数是否是质数,因此…...
【shodan】(三)vnc漏洞利用
shodan基础(三) 声明:该笔记为up主 泷羽的课程笔记,本节链接指路。 警告:本教程仅作学习用途,若有用于非法行为的,概不负责。 count count命令起到一个统计计数的作用。 用上节的漏洞指纹来试…...
蚁群算法(Ant Colony Optimization, ACO)
简介 蚁群算法(Ant Colony Optimization, ACO)是一种基于自然启发的优化算法,由意大利学者马可多里戈(Marco Dorigo)在1992年首次提出。它受自然界中蚂蚁觅食行为的启发,用于解决离散优化问题。 在自然界…...
python可视化将多张图整合到一起(画布)
这周有点事忙着,没时间重温刚结束的Mathurcup数学建模,这两天也是再看了下,论文还是赶紧挺烂的,但比国赛又有进步(说起国赛又不得不抱怨了,基本其余省份都发了,但江西......哎)。哎&…...
计算机网络socket编程(5)_TCP网络编程实现echo_server
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络socket编程(5)_TCP网络编程实现echo_server 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交…...
w055基于web的服装生产管理的设计与实现
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...
hadoop集群搭建
一、环境准备⼯作: 确保已经按照以下文档安装完毕:虚拟机和远程工具的安装(hadoop集群安装01)-CSDN博客 Linux设置以及软件的安装(hadoop集群安装02)-CSDN博客 虚拟机的克隆和免密(hadoop集群03)-CSDN博…...
JVM中TLAB(线程本地分配缓存区)是什么
JVM中TLAB(线程本地分配缓存区)是什么 简单来说 TLAB,线程本地分配缓存区,是在 Java 堆内存中的一块线程专属的内存区域,每个线程在创建对象时,首先会尝试在自己的 TLAB 区域内分配内存,这样多…...
如何使用 MMPreTrain 框架
如何使用 MMPreTrain 框架进行预训练模型的微调和推理 MMPreTrain 是一个基于 PyTorch 的开源框架,专注于图像分类和其他视觉任务的预训练模型。它提供了丰富的预训练模型和便捷的接口,使得研究人员和开发者可以轻松地进行模型微调和推理。本文将详细介…...
Python的tkinter如何把日志弄进文本框(Text)
当我们用python的Tkinter包给程序设计界面时,在有些时候,我们是希望程序的日志显示在界面上的,因为用户也需要知道程序目前运行到哪一步了,以及程序当前的运行状态是否良好。python的通过print函数打印出来的日志通常显示在后台&a…...
bash笔记
0 $0 是脚本的名称,$# 是传入的参数数量,$1 是第一个参数,$BOOK_ID 是变量BOOK_ID的内容 1 -echo用于在命令窗口输出信息 -$():是命令替换的语法。$(...) 会执行括号内的命令,并将其输出捕获为一个字符串ÿ…...
嵌入式工程师面试题 - 2024/11/19
欢迎找我进行职业规划,超值的自我投资 -> 嵌入式软件工程师一对一指导 转载请注明来源 1.以下叙述中正确的是() A 程序必须包含所有三种基本结构才能成为一种算法 B 我们所写的每条C语句,经过编译最终都将转换成二进制的机器…...
springboot配置https,并使用wss
学习链接 springboot如何将http转https SpringBoot配置HTTPS及开发调试 可借鉴的参考: springboot如何配置ssl支持httpsSpringBoot配置HTTPS及开发调试的操作方法springboot实现的https单向认证和双向认证(java生成证书)SpringBoot配置Https访问的详细步骤Sprin…...
【C语言】连接陷阱探秘(3):形参、实参与返回值
目录 一、形参的 “迷障” 1.1. 定义与功能 1.2. 类型不匹配 1.3. 数量不一致 1.4. 顺序不一致 1.5. 数组形参退化 二、实参的 “暗礁” 2.1. 定义与功能 2.2. 求值顺序 “谜题” 2.3. 悬空指针 “深渊” 三、返回值的 “陷阱” 3.1. 定义与功能 3.2. 陷阱与缺陷 …...
学习笔记030——若依框架中定时任务的使用
定时任务是软件开发中经常使用一个功能。 Java定时任务广泛应用于各种需要定时执行或周期性执行任务的场景,如: 数据备份:定期备份数据库中的数据,确保数据的安全性和可靠性。数据同步:如果有多个数据源需要同步数据…...