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

毫米波雷达原理(含代码)(含ARS548 4D毫米波雷达数据demo和可视化视频)

毫米波雷达原理

  • 1. 传统毫米波雷达
    • 1.1 雷达工作原理
    • 1.2 单目标距离估计
    • 1.3 单目标速度估计
    • 1.4 单目标角度估计
    • 1.5 多目标距离估计
    • 1.6 多目标速度估计
    • 1.7多目标角度估计
    • 1.7 总结
  • 3. FMCW雷达数据处理算法
  • 4. 毫米波雷达的目标解析(含python代码)
  • 5. ARS548 4D毫米波雷达数据demo(含python代码)
    • 5.1 4D毫米波雷达原理
    • 5.2 ARS5484D毫米波雷达数据解析demo视频
    • 5.3 ARS548 4D毫米波雷达&速腾M1激光雷达&balser相机 多模态数据集(含标注,已对齐)

1. 传统毫米波雷达

毫米波雷达的工作原理可以简单理解为:通过发射信号的接受信号之间的信息差,完成目标的测距和测速。另外受限与雷达的特性,速度分辨率和距离分辨率有对应的上限,也即可以区分的距离值和速度值有上限,比如可以区分出10m和15m距离的目标,但是10m和10.001m的两个目标无法分别。另外雷达也可以完成目标所在方位的估计,也就是角度估计,通过一系列计算完成目标方位角的计算(传统雷达而言,如果是4D毫米波雷达的话,应该还有俯仰角)。

1.1 雷达工作原理

FMCW(Frequency Modulated Continuous Wave)雷达是一种常用于测距和速度的雷达系统。它的工作原理相对复杂,但可以简单描述如下:

  • 频率调制: FMCW雷达通过周期性地调制发射信号的频率来工作。它的发射信号是一个频率连续变化的波形,通常是线性调频的信号。这意味着信号的频率随时间线性变化,比如从一个起始频率到一个结束频率,然后再从结束频率返回起始频率,形成一个周期。
  • 发射与接收: FMCW雷达将这种调制的信号发送出去,然后等待信号被目标物体反射回来。目标物体反射回来的信号会包含与目标物体的距离和速度相关的信息。
  • 混频与解调: 接收到反射信号的雷达会将其与本地生成的发射信号进行混频。这个过程可以理解为将两个信号相乘,得到一个频率差信号,这个频率差信号包含了目标物体距离和速度的信息。
  • 信号处理: 混频后得到的信号经过信号处理,通常是通过FFT(快速傅里叶变换)或其他频域分析技术来提取出目标物体的距离和速度信息。通过分析混频信号的频率分量,可以确定目标物体的距离(基于延迟时间)和速度(基于频率变化)。
    在这里插入图片描述
    在这里插入图片描述
    从上图右下角的图可以看出,该款雷达的起始频率 77 G H z 77GHz 77GHz最大频率 81 G H z 81GHz 81GHz带宽 B = 4 G H z B = 4GHz B=4GHz,一个频率变化时间周期为 T c = 40 μ s T_c = 40\mu s Tc=40μs频率变化率 S = B / T c = 100 M H z / μ s S = B/T_c = 100MHz/ \mu s S=B/Tc=100MHz/μs,一个频率变化周期可以记为一个Chirp。请牢记这几个概念,之后的距离速度角度估计,以及分辨率的计算都依赖这几个量。

另外,需要强调的一点是,什么是脉冲信号。脉冲信号是一个频率随时间变化的信号,上图中的信号是个频率线性变化的脉冲信号(上图左下角就是脉冲信号的波形图),频率在一个Chirp内从77GHz递增到81GHz。也可以是非线性变化,这个要取决于雷达具体的特性。正是因为了频率和时间的相关性,我们才能从RX信号和TX信号之间的差异中得到关于速度和距离的信息。

在这里插入图片描述
如上图右下角,发射了一个TX信号,但是仅得到了一个来自目标的回波信号RX,这说明只有一个目标。并且观察到,从RX信号被接收以后,发射信号的频率与回波信号(接收信号)的频率差是定值。如果这个目标是静止的,那么雷达每隔chirp时间发送的Tx信号与返回的Rx信号构成的IF信号的相位也是一样的(因为信号的波形图一形状一样,物体静止,RX与Tx之间仅有一个固定的相位偏移,不同周期的Tx和Rx的相位偏移量固定,两个chirp周期的IF信号间相位差为0)。通过两者的频率差,可以得到时间差,进而得到距离值。如果目标不静止,通过相邻的时间周期得到的IF信号的相位差,可以计算目标的速度。

1.2 单目标距离估计

由于发射信号的频率是已知的,因此可以通过测量反射信号与发射信号的频率差来确定目标物体的距离。频率差越大,延迟时间越长,意味着目标物体距离越远。
在这里插入图片描述
如上图,通过Tx和Rx信号的频率差,可以得出该目标是个静止目标(因为频率差固定),通过信号传播速度 c c c和频率差 ∇ f \nabla f f,推出目标距离为
r = τ c 2 = ∇ f c 2 S r = {\tau c \over 2} = {\nabla f c \over 2S} r=2τc=2Sfc
因此只要Tx信号和Rx信号的频率差IF信号以及频率变化率,就能得到目标的距离。但是需要注意,雷达测距有上限,最大探测距离受限于 ∇ f \nabla f f的最大值(因为脉冲信号有带宽,每个Chirp的时间也是个定值,因为Rx信号和Tx信号之间存在最大的频率差,也就是带宽的大小,如果Rx信号回来的太晚,超出了对应Tx信号的Chirp时间内,那么这个回波信号就没版办法计算IF信号了)。
在这里插入图片描述
对于上图的两个因素,第一个因素不用做太多的解释。但是对于第二个因素,需要解释一下: ==根据采样定理,若要完整地恢复一个信号,采样频率至少是原始信号的两倍。==上图中的N表示一个周期内(chirp)的采样次数,可以理解为把连续信号离散化采样N次。针对一个系统,采样次数一般为定值(太大的采样次数会给系统带来空间和时间上的负担),因此IF信号的频率也不能无限接近的取到B。

总结一下: 雷达的距离估计取决于Rx信号和Tx信号的频率差, 并且最大探测距离也受限于系统的采样频率和带宽, 与带宽成反比。采样频率S固定时,带宽越小,最大探测距离越大,但因距离分辨率与带宽成正比,所以带宽也不能无限变小。带宽固定时,采样次数N越大,最大探测距离越远,但因N的增加会引起计算量增加和储存量增加,所以N也不能无限增加

1.3 单目标速度估计

目标物体的速度则是通过检测混频信号中的频率变化来确定的。如果目标物体在雷达的视野内移动,其反射信号的频率会发生多普勒效应,从而导致混频信号中的频率发生变化。通过分析这种变化,可以计算出目标物体的速度。

  • 什么是多普勒效应?
    毫米波雷达的多普勒效应是指,当雷达系统与目标物体相对运动时,由于多普勒效应的作用,目标物体反射回来的电磁波的频率会发生变化。这种频率变化与目标物体的运动速度有关,可以通过雷达接收到的信号频率的变化来推断目标物体的运动状态。具体来说,多普勒效应有以下特点:
    • 正多普勒频移: 如果目标物体朝向雷达系统运动,反射回来的电磁波的频率会增加,称为正多普勒频移。这意味着接收到的信号频率比发射的信号频率高。
    • 负多普勒频移: 如果目标物体远离雷达系统,反射回来的电磁波的频率会降低,称为负多普勒频移。这时接收到的信号频率比发射的信号频率低。
      毫米波雷达利用多普勒效应可以实现对目标物体运动速度的测量。通过测量接收到的信号频率与发射的信号频率之间的差异,可以计算出目标物体相对于雷达系统的速度。

在这里插入图片描述
见上图,雷达发射了两个脉冲信号,打到同一个目标上,可以返回两个回波信号,因此构成了两个IF信号。如果目标静止,得到的IF信号的频率 ∇ f \nabla f f和相位 ∇ ϕ \nabla \phi ϕ 均一致(因为Tx信号和Rx信号之间仅有一个时间偏差,时间偏差可以计算出相位偏移) ∇ ϕ = 2 π f τ \nabla \phi = 2 \pi f \tau ϕ=2πfτ, τ \tau τ为Tx信号和Rx信号的时间差。

但是如果目标有速度在移动,那么两个发射信号Tx与两个回波信号Rx之间的时间差 τ 1 , τ 2 \tau_1,\tau_2 τ1,τ2就不一致了,后者会
稍微大一些,那么两个IF信号的相位就不一样了,两个IF信号之间就有了相位差。注意,公式中的频率和相位都是瞬时的,每个时间都不一样

根据这个相位差,就可以得到目标的速度。

但是切记,速度测量也有上限,与脉冲信号发射周期 T c T_c Tc成反比,在频率变化率S不变的时候,带宽B越小,最大测量测速也越大

在这里插入图片描述

1.4 单目标角度估计

角度估计的原理是: 对于有多个接收天线的雷达,目标相对多个接收天线的距离不同,这会导致距离FFT峰值的相位变化
在这里插入图片描述
在这里插入图片描述

1.5 多目标距离估计

多目标测距的原理是,一个发射信号Tx,得到了来自三个不同目标的反射信号 R x 1 , R x 2 , R x 3 R_{x1},R_{x2},R_{x3} Rx1,Rx2,Rx3,每个信号都有不同的延时,延时与目标的距离成正比。然后得到三个IF信号,通过IF信号的频率得到三个目标的距离

在这里插入图片描述

既然有多个目标,那么雷达能区分间距多远的目标,就也是个重点。术语是距离分辨率: 雷达能区分两个不同目标的最小距离。根据傅里叶变换理论,观测时间窗口T,可以分辨间隔超过 1 / T H z 1/T Hz 1/THz的频率分量,也就是说两个不同目标的IF信号的频率差需要超过这个值。

另外需要注意的一点是: 混频器输出的是多个单音信号的的叠加,并不是独立的单个信号,所以需要使用FFT操作将这个叠加信号分为一个具有不同峰值和相位的频谱,每个峰值就是不同距离的目标。多目标的距离估计,IF信号还是一维的
在这里插入图片描述
结论: 距离分辨率取决于带宽,与带宽成反比。在周期时间 T c T_c Tc不变的时候,提高频率变化率。在频率变化率不变的时候,延长chirp信号,也就是提高周期时间,都可以提高距离分辨率。但是因为最大探测距离与带宽成反比,因此也不能一味的提提升距离分辨率,而导致探测范围降低。可以简单的记为,最大探测距离和距离分辨率这两个性能是互相背离的

1.6 多目标速度估计

多目标速度估计的原理是单目标速度估计的拓展,单目标估计是得到两个chirp发射的脉冲信号和得到的对应回波信号之间的IF信号,然后根据两个IF信号的相位差得到该目标的速度。
对于多目标速度估计而言,同样也是雷达发射相邻chirp时间的Tx信号,只不过每个Chirp发出的Tx信号,都得到了若干个回波信号Rx。假如说需要计算某个时间段内的多个目标的速度,如果这个时间段雷达可以发射M个脉冲信号,并且每个脉冲信号得到了N个回波信号,那么就可以得到N个目标在这个时间段内的M个瞬时速度值。
针对单个目标,可以得到M个IF信号,对应M个目标距离。如果目标静止,那么这M个IF信号的频谱峰值相同,并且相位也相同。

承接上文,混频器输出的是一个叠加信号。所以对于多目标的速度估计,混频器信号经过FFT操作后得到的IF信号是二维的(形状为 M × N M \times N M×N),M表示在某个固定长度的时间内发射了M个信号,N表示每个发射信号得到了来自N个目标的回波信号。

对这个混频器输出的信号进行距离FFT操作,可以得到M个频谱,每个频谱都包含N个波峰,每个波峰对应一个目标的距离。
对这个混频器输出的信号进行速度FFT操作,可以得到N个频谱,每个频谱都包含M个相位,对应每个目标的M个相位偏移。然后通过相邻相位的差,就可以得到对应时间的速度。

在这里插入图片描述

与多目标距离估计类似,多目标速度估计也需要考虑速度分辨率,也就是说对应距离一致的两个目标,能否区分两个目标的关键就是两个目标的速度差是否超过了速度分辨率,否则的话无法区分
在这里插入图片描述

结论: 速度分辨率与时间窗口的长度有关,在这个时间窗口内,雷达可以发射M个脉冲信号,这个时间窗口术语就是一帧,也就是雷达一帧的时间周期,在雷达的周期内,可以发射若干的chirp信号。所以要想提升速度分辨率,可以提高帧时间,也就是降低雷达的频率,也可以理解为每个chirp的时间固定,提高了一帧内chirp的数量。

1.7多目标角度估计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.7 总结

  1. 雷达的距离估计取决于Rx信号和Tx信号的频率差, 并且最大探测距离也受限于系统的采样频率和带宽, 与带宽成反比。采样频率S固定时,带宽越小,最大探测距离越大,但因距离分辨率与带宽成正比,所以带宽也不能无限变小。带宽固定时,采样次数N越大,最大探测距离越远,但因N的增加会引起计算量增加和储存量增加,所以N也不能无限增加

  2. 距离分辨率取决于带宽,与带宽成反比。在周期时间 T c T_c Tc不变的时候,提高频率变化率。在频率变化率不变的时候,延长chirp信号,也就是提高周期时间,都可以提高距离分辨率。但是因为最大探测距离与带宽成反比,因此也不能一味的提提升距离分辨率,而导致探测范围降低。可以简单的记为,最大探测距离和距离分辨率这两个性能是互相背离的。

  3. 速度分辨率与时间窗口的长度有关,在这个时间窗口内,雷达可以发射M个脉冲信号,这个时间窗口术语就是一帧,也就是雷达一帧的时间周期。在雷达的周期内,可以发射若干的chirp信号。所以要想提升速度分辨率,可以提高帧时间,也就是降低雷达的频率,也可以理解为每个chirp的时间固定,提高了一帧内chirp的数量。

  4. 最大速度也有上限,与脉冲信号发射周期 T c T_c Tc成反比,在频率变化率S不变的时候,带宽B越小,最大测量测速也越大

  5. 角度分辨率依赖于目标的方位角和天线的个数。角度分辨率与天线个数成反比。越靠近FOV的边缘,角度分辨率越低

下边将通过python代码模拟,来展示测距,测速以及带宽B和采样频率对距离分辨率和速度分辨率的影响。

3. FMCW雷达数据处理算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 毫米波雷达的目标解析(含python代码)

这里将通过四个例子进一步理解测距,测速度,测角度,以及分辨率等的计算

  1. 计算距离和速度的分辨率和测量范围,以及角度的测量范围
  2. 估计目标的角度
  3. 估计多个目标的距离,速度和角度
  4. 调整雷达参数,区分距离或速度相近的目标

项目工程请看: radarFMCW
或者: csdn资源

项目实例:

在这里插入图片描述
在这里插入图片描述

5. ARS548 4D毫米波雷达数据demo(含python代码)

5.1 4D毫米波雷达原理

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2 ARS5484D毫米波雷达数据解析demo视频

在这里插入图片描述

5.3 ARS548 4D毫米波雷达&速腾M1激光雷达&balser相机 多模态数据集(含标注,已对齐)

在这里插入图片描述

  • 毫米波雷达参数
    在这里插入图片描述
  • 激光雷达参数
    在这里插入图片描述
  • 相机参数
    在这里插入图片描述

https://github.com/hjfenghj/ARS548Dataset

相关文章:

毫米波雷达原理(含代码)(含ARS548 4D毫米波雷达数据demo和可视化视频)

毫米波雷达原理 1. 传统毫米波雷达1.1 雷达工作原理1.2 单目标距离估计1.3 单目标速度估计1.4 单目标角度估计1.5 多目标距离估计1.6 多目标速度估计1.7多目标角度估计1.7 总结 3. FMCW雷达数据处理算法4. 毫米波雷达的目标解析(含python代码)5. ARS548 4D毫米波雷达数据demo(含…...

3.1 Gateway之路由请求和转发

1.依赖坐标 <!--网关--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--服务注册和发现--><dependency><groupId>com.alibab…...

人脸识别开源算法库和开源数据库

目录 1. 人脸识别开源算法库 1.1 OpenCV人脸识别模块 1.2 Dlib人脸识别模块 1.3 SeetaFace6 1.4 DeepFace 1.5 InsightFace 2. 人脸识别开源数据库 2.1 CelebA 2.2 LFW 2.3 MegaFace 2.4 Glint360K 2.5 WebFace260M 人脸识别 (Face Recognition) 是一种基于人的面部…...

Excel 中用于在一个范围中查找特定的值,并返回同一行中指定列的值 顺序不一样 可以处理吗

一、需求 Excel 中&#xff0c;在一列&#xff08;某范围内&#xff09;查找另一列特定的值&#xff0c;并返回同一行中另一指定列的值&#xff0c; 查找列和返回列的顺序不一样 二、 实现 1、下面是一个使用 INDEX 和 MATCH 函数的例子&#xff1a; 假设你有以下数据&…...

MySql-日期分组

一、分别统计各时间各类型数据条数 数据库的 request_time字段 数据类型&#xff1a;timestamp 默认值&#xff1a;CURRENT_TIMESTAMP 例子&#xff1a; 2024-01-26 08:25:48 原数据&#xff1a; 1、将数据按照日期&#xff08;年月日&#xff09;形式输出 按照request_…...

有哪些方法可以在运行时动态生成一个Java类?

使用 Java 反射 API&#x1f6a9;&#xff1a; Java 的反射 API 允许在运行时查询和操作类和对象。虽然反射 API 本身不直接提供生成新类的功能&#xff0c;但可以用于动态调用构造函数、方法和访问字段&#xff0c;这在某些情况下可以作为动态生成类的一部分。 字节码操作库&…...

JAVA两个线程交替打印实现

方案1 Semaphore 机制 通过信息号机制来 协调两个线程&#xff0c;一个线程打印后&#xff0c;给另一个线程释放一个信号量 Semaphore semaphorea new Semaphore(1);Semaphore semaphoreb new Semaphore(0);Thread threada new Thread(new Runnable() {Overridepublic void…...

【C语言】学习C语言

C语言简介 C语言是一门十分流行的编程语言&#xff0c;由美国贝尔实验室的 Dennis Ritchie 在 20 世纪 70 年代开发。 C语言具有高效、可移植、灵活、简单等特点&#xff0c;被广泛应用于操作系统、编译器、数据库、图形界面、嵌入式系统、网络通信、游戏等领域。 本文将带你…...

C 深入指针(2)

目录 1 野指针 1.1 成因 1.2 如何规避野指针 2 assert 断言 2.1 用法 2.2 assert 的优点 2.1 assert 的缺点 3 小注解 3.1 Debug 和 Release 1 野指针 【概念】&#xff1a; 野指针就是指针指向的位置是不可知的&#xff08;随机的、不正确的、没有明确限制的&#…...

FileLink跨网文件交换,推动企业高效协作|半导体行业解决方案

随着信息技术的迅猛发展&#xff0c;全球信息产业已经迎来了前所未有的繁荣与变革。在这场科技革命中&#xff0c;半导体作为信息产业的基础与核心&#xff0c;其重要性日益凸显&#xff0c;半导体的应用场景和市场需求将进一步扩大。 然而&#xff0c;在这一繁荣的背后&#x…...

代码随想录day56 | 动态规划P16 | ● 583. ● 72. ● 编辑距离总结篇

583. 两个字符串的删除操作 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1&#xff1a; 输入: word1 "sea", word2 "eat" 输出: 2 解释: 第一步将 &quo…...

ASP.NET网络在线考试系统

摘 要 随着计算机技术的发展和互联网时代的到来&#xff0c;人们已经进入了信息时代&#xff0c;也有人称为数字化时代。数在数字化的网络环境下&#xff0c;学生希望得到个性化的满足&#xff0c;根据自己的情况进行学习&#xff0c;同时也希望能够得到科学的评价&#xff0c…...

天锐绿盾 | 办公加密系统,源代码防泄密、源代码透明加密、防止开发部门人员泄露源码

天锐绿盾作为一款专注于数据安全与防泄密的专业解决方案&#xff0c;它确实提供了针对源代码防泄密的功能&#xff0c;帮助企业保护其核心的知识产权。 PC地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 以下是天锐绿盾可能采…...

Day1| Java基础 | 1 面向对象特性

Day1 | Java基础 | 1 面向对象特性 基础补充版Java中的开闭原则面向对象继承实现继承this和super关键字修饰符Object类和转型子父类初始化顺序 多态一个简单应用在构造方法中调用多态方法多态与向下转型 问题回答版面向对象面向对象的三大特性是什么&#xff1f;多态特性你是怎…...

Spring 事务失效的几种情况

目录 1. 事务方法不是public 2. 自调用问题 3. 异常处理不当 4. 数据源或事务管理器配置错误 5. 事务传播行为不当 6. 代理方式不正确 7. 事务同步问题 1. 事务方法不是public 在Spring中&#xff0c;默认情况下&#xff0c;只有public方法上的Transactional注解才会被代…...

【Linux 命令操作】如何在 Linux 中使用多行注释呢?

文章目录 1. 给代码进行多行注释2. 给代码取消多行注释 1. 给代码进行多行注释 &#x1f427;① 首先用 vim 打开代码&#xff0c;按 Esc进入命令模式(Normal mode)&#xff1b; &#x1f427;② 然后按住 ctrl v 进入列模式&#xff1b; &#x1f427;③ 再通过按 h(左)、j(…...

【RPC】Dubbo接口测试

关于rpc&#xff0c;推荐看看这篇 &#xff1a; 既然有HTTP协议&#xff0c;为什么还要有RPC 一、Dubbo 是一款alibaba开源的高性能服务框架&#xff1a; 分布式服务框架高性能和透明化的RPC远程服务调用方案SOA服务治理方案 二、Dubbo基础架构 三、 Dubbo接口测试 1、jme…...

PVZ2 植物克僵尸【第二期】

众所周知&#xff0c;PVZ2&#xff08;植物大战僵尸2&#xff09;中有许多恶心的僵尸&#xff0c;而我们不得不派出它们的————克星&#xff01;&#xff08;*为建议方法&#xff09; 5.战机小鬼 战机小鬼&#xff0c;恶心会发射子弹&#xff0c;所以&#xff1a; 1&…...

libcity笔记:libcity/data/batch.py

1 Batch 2 BatchPAD...

【Java EE】多线程(二)Thread 类与常用方法

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更…...

AGV无人叉车 | 我们为什么要投资“智慧生产”

AGV 作为一种智能工业车辆机器人&#xff0c;无人叉车充分融合叉车技术和AGV技术&#xff0c;近年来在仓储物流领域的应用逐步扩大。在传统叉车厂商、传统AGV厂商、物流集成商及仓储机器人企业等各方力量推动下&#xff0c;无人叉车市场在竞合中快速发展&#xff0c;并促使无人…...

【C++】滑动窗口:将x减到0的最小操作数

1.题目 2.算法思路 这个题目难在要转化一下才能用滑动窗口。 题意是需要在数组的前后两段区间进行解题&#xff0c;但同时对两段区间进行操作是比较困难的&#xff0c;我们可以将中间这段区间只和与nums_sum-x&#xff08;数组总和-x&#xff09;进行比较&#xff0c;这样就可…...

运动控制“MC_MoveVelocity“功能块详细应用介绍

1、运动控制单位u/s介绍 运动控制单位[u/s]介绍-CSDN博客文章浏览阅读91次。运动控制很多手册上会写这样的单位,这里的u是英文单词unit的缩写,也就是单位的意思,所以这里的单位不是微米/秒,也不是毫米/秒,这里是一个泛指,当我们的单位选择脉冲时,它就是脉冲/秒,也就是…...

9种单片机常用的软件架构

长文预警&#xff0c;加代码5000多字&#xff0c;写了4个多小时&#xff0c;盘软件架构&#xff0c;这篇文章就够了! 可能很多工程师&#xff0c;工作了很多年&#xff0c;都不会有软件架构的概念。 因为我在做研发工程师的第6年&#xff0c;才开始意识到这个东西&#xff0c;在…...

PyQt5中重要的概念:信号与槽

PyQt中信号与槽概念定义如下&#xff08;网络上引用的&#xff09;&#xff1a; 信号&#xff08;signal&#xff09;和槽&#xff08;slot&#xff09;是Qt的核心机制&#xff0c;也是在PyQt编程中对象之间进行通信的机制。在创建事件循环之后&#xff0c;通过建立信号和槽的…...

MacOS快速安装FFmpeg,并使用FFmpeg转换视频

前言&#xff1a;目前正在接入flv视频流&#xff0c;但是没有一个合适的flv视频流地址。网上提供的flv也都不是H264AAC&#xff08;一种视频和音频编解码器组合&#xff09;&#xff0c;所以想通过fmpeg来将flv文件转换为H264AAC。 一、MacOS环境 博主的MacOS环境&#xff08;…...

docker部署nginx并配置https

1.准备SSL证书&#xff1a; 生成私钥&#xff1a;运行以下命令生成一个私钥文件。 生成证书请求&#xff08;CSR&#xff09;&#xff1a;运行以下命令生成证书请求文件。 生成自签名证书&#xff1a;使用以下命令生成自签名证书。 openssl genrsa -out example.com.key 2048 …...

五一小长假,景区智慧公厕发挥了那些作用?

五一小长假已经过去&#xff0c;在旅途中相信大家非常开心&#xff0c;其中也不乏一些细节让你有了更好的体验&#xff0c;而在您享受美景、畅游风光的同时&#xff0c;或许并未留意到那个角落里&#xff0c;默默为您服务的智慧公厕。是的&#xff0c;它们将成为您旅途中不可或…...

Spring - 9 ( 10000 字 Spring 入门级教程 )

一&#xff1a; MyBatis XML 配置文件 Mybatis 的开发有两种方式&#xff1a; 注解XML 我们已经学习了注解的方式, 接下来我们学习 XML 的方式 MyBatis XML 的方式需要以下两步: 配置数据库连接字符串和 MyBatis写持久层代码 1.1 配置连接字符串和 MyBatis 此步骤需要进…...

shpfile转GeoJSON;控制shp转GeoJSON的精度;如何获取GeoJSON;GeoJSON是什么有什么用;GeoJSON结构详解(带数据示例)

目录 一、GeoJSON是什么 二、GeoJSON的结构组成 2.1、点&#xff08;Point&#xff09;数据示例 2.2、线&#xff08;LineString&#xff09;数据示例 2.3、面&#xff08;Polygon&#xff09;数据示例 2.4、特征&#xff08;Feature&#xff09;数据示例 2.5、特征集合&…...

没有强有力的科技支撑,就没有保密工作的高质量发展。新修订的《中华人民共和国保守国家秘密法》在总则中新增保密科技创新有关内容包括()

没有强有力的科技支撑,就没有保密工作的高质量发展。新修订的《中华人民共和国保守国家秘密法》在总则中新增保密科技创新有关内容包括&#xff08;&#xff09; 点击查看答案内容&#xff1a; A.国家鼓励和支持保密科学技术研究和应用B.提升自主创新能力 C.明确依法保护保密领…...

【快速入门】数据库的增删改查与结构讲解

文章的操作都是基于小皮php study的MySQL5.7.26进行演示 what 数据库是能长期存储在计算机内&#xff0c;有组织的&#xff0c;可共享的大量数据的集合。数据库中的数据按照一定的数据模型存储&#xff0c;具有较小的冗余性&#xff0c;较高的独立性和易扩展性&#xff0c;并为…...

使用AIGC生成软件类图表

文章目录 如何使用 AI 生成软件类图表什么是 MermaidMermaid 的图片如何保存&#xff1f;mermaid.liveDraw.io Mermaid可以画什么图&#xff1f;流程图时序图 / 序列图类图状态图甘特图实体关系图 / ER图 如何使用 AI 生成软件类图表 ChatGPT 大语言模型不能直接生成各类图表。…...

机器学习实践:超市商品购买关联规则分析

第2关&#xff1a;动手实现Apriori算法 任务描述 本关任务&#xff1a;编写 Python 代码实现 Apriori 算法。 相关知识 为了完成本关任务&#xff0c;你需要掌握 Apriori 算法流程。 Apriori 算法流程 Apriori 算法的两个输人参数分别是最小支持度和数据集。该算法首先会生成所…...

自动化图像识别:提高效率和准确性的新途径

自动化图像识别是人工智能领域中的一项关键技术&#xff0c;它通过算法自动解析图像内容&#xff0c;为各种应用提供准确的信息。随着技术的不断发展&#xff0c;自动化图像识别在提高效率和准确性方面展现出新的途径。 一、深度学习技术的应用 深度学习是自动化图像识别领域…...

根据最近拒包项目总结,详细讲解Google最新政策(上)

关于占比最多的移动垃圾软件拒审问题 移动垃圾软件(Mobile Unwanted Software)特征表现1> 具有欺骗性,承诺其无法实现的价值主张。2> 诱骗用户进行安装,或搭载在用户安装的其他程序上。3> 不向用户告知其所有主要功能和重要功能。4> 以非预期方式影响用户的系统…...

【Qt之OpenGL】01创建OpenGL窗口

1.创建子类继承QOpenGLWidget 2.重写三个虚函数 /** 设置OpenGL的资源和状态,最先调用且调用一次* brief initializeGL*/ virtual void initializeGL() override; /** 设置OpenGL视口、投影等&#xff0c;当widget调整大小(或首次显示)时调用* brief resizeGL* param w* para…...

如何判断代理IP质量?

由于各种原因&#xff08;从匿名性和安全性到绕过地理限制&#xff09;&#xff0c;代理 IP 的使用变得越来越普遍。然而&#xff0c;并非所有代理 IP 都是一样的&#xff0c;区分高质量和低质量的代理 IP 对于确保流畅、安全的浏览体验至关重要。以下是评估代理 IP 质量时需要…...

2023-2024年Web3行业报告合集(精选13份)

Web3行业报告&#xff08;精选13份&#xff09; 2023-2024年 来源&#xff1a;2023-2024年Web3行业报告合集&#xff08;精选13份&#xff09; 【以下是资料目录】 2023Web3产业发展现状分析及国内外落地实践报告 2023模块化区块链承载Web3.0应用的新模式 2023年AI应用需求…...

CSS中文本样式(详解网页文本样式)

目录 一、Text介绍 1.概念 2.特点 3.用法 4.应用 二、Text语法 1.文本格式 2.文本颜色 3.文本的对齐方式 4.文本修饰 5.文本转换 6.文本缩进 7.color&#xff1a;设置文本颜色。 8.font-family&#xff1a;设置字体系列。 9.font-size&#xff1a;设置字体大小。…...

tensorflow学习笔记(2)线性回归-20240507

通过调用Tensorflow计算梯度下降的函数tf.train.GradientDescentOptimizer来实现优化。 代码如下: #!/usr/bin/env python3 # -*- coding: utf-8 -*- #程序作用: #线性回归:通过调用Tensorflow计算梯度下降的函数tr.train.GradientDescentOptimizer来实现优化。import os …...

【JavaScript】作用域

作用域是指在程序中定义变量的区域&#xff0c;决定了这些变量在哪里可以被访问和使用。JavaScript 中的作用域有全局作用域、函数作用域和块级作用域。 1. 什么是作用域&#xff1f; 作用域是代码中定义变量的区域&#xff0c;它决定了变量的可见性和生命周期。作用域规定了…...

C++程序设计教案

文章目录&#xff1a; 一&#xff1a;软件安装环境 第一种&#xff1a;vc2012 第二种&#xff1a;Dev-C 第三种&#xff1a;小熊猫C 二&#xff1a;语法基础 1.相关 1.1 注释 1.2 换行符 1.3 规范 1.4 关键字 1.5 ASCll码表 1.6 转义字符 2.基本框架 2.1 第一种&…...

修改Ubuntu远程登录欢迎提示信息

无论何时登录公司的某些生产系统&#xff0c;你都会看到一些登录消息、警告或关于你已登录服务器的信息&#xff0c;如下所示。 修改方式 1.打开ubuntu终端,进入到/etc/update-motd.d目录下面 可以发现目录中的文件都是shell脚本, 用户登录时服务器会自动加载这个目录中的文件…...

暗区突围pc端下载教程 暗区突围pc端怎么下载

暗区突围pc端下载教程 暗区突围pc端怎么下载 《暗区突围》是一款刺激的第一人称射击游戏。目前pc版本要上线了&#xff0c;即将在5月正式上线。在这款游戏里&#xff0c;我们会在随机的时间、地点&#xff0c;拿着不一定的装备&#xff0c;跟其他玩家拼个高低&#xff0c;还需…...

大数据技术原理与技术简答

1、HDFS中名称节点的启动过程 名称节点在启动时&#xff0c;会将FsImage 的内容加载到内存当中&#xff0c;此时fsimage是上上次关机时的状态。然后执行 EditLog 文件中的各项操作&#xff0c;使内存中的元数据保持最新。接着创建一个新的FsImage 文件和一个空的 Editlog 文件…...

Mybatis的简介和下载安装

什么是 MyBatis &#xff1f; MyBatis 是一款优秀的持久层框架&#xff0c;它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息&#xff0c;将接口和 Java 的…...

大历史下的 tcp:一个松弛的传输协议

如果 tcp 是一个相对松弛的协议&#xff0c;会发生什么。 所谓松弛感&#xff0c;意思是它允许 “漏洞”&#xff0c;允许可靠传输的不封闭&#xff0c;大致就是&#xff1a;“不求 100% 可靠&#xff0c;只要 90%(或多或少) 可靠&#xff0c;另外 10% 的错误可检测到” or “…...

加州大学欧文分校英语中级语法专项课程03:Tricky English Grammar 学习笔记

Tricky English Grammar Course Certificate Course Intro 本文是学习 https://www.coursera.org/learn/tricky-english-grammar?specializationintermediate-grammar 这门课的学习笔记 文章目录 Tricky English GrammarWeek 01: Nouns, Articles, and QuantifiersLearning …...

AI项目二十一:视频动态手势识别

若该文为原创文章&#xff0c;转载请注明原文出处。 一、简介 人工智能的发展日新月异&#xff0c;也深刻的影响到人机交互领域的发展。手势动作作为一种自然、快捷的交互方式&#xff0c;在智能驾驶、虚拟现实等领域有着广泛的应用。手势识别的任务是&#xff0c;当操作者做出…...