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

[学习]RTKLib详解:sbas.c与rtcm.c


RTKLib详解:sbas.crtcm.c


本文是 RTKLlib详解 系列文章的一篇,目前该系列文章还在持续总结写作中,以发表的如下,有兴趣的可以翻阅。

[学习] RTKlib详解:功能、工具与源码结构解析
[学习]RTKLib详解:pntpos.c与postpos.c
[学习]RTKLib详解:rtkcmn.c与rtkpos.c
[学习]RTKLib详解:ppp.c与ppp_ar.c
[学习]RTKLib详解:ephemeris.c与rinex.c


文章目录

  • RTKLib详解:`sbas.c`与`rtcm.c`
    • PART A: `sbas.c`
      • 一、整体作用与工作流程
        • 1.1 整体作用
        • 1.2 工作流程概述
      • 二、代码函数详解
        • 2.1 函数列表与调用关系
        • 2.2 函数详解
          • 2.2.1 `init_sbas`
          • 2.2.2 `decode_sbas`
          • 2.2.3 `parse_sbas_data`
          • 2.2.4 `process_sbas_info`
          • 2.2.5 `apply_sbas_correction`
          • 2.2.6 `output_position`
      • 三、数学原理及推导过程
        • 3.1 伪距修正原理
        • 3.2 卡尔曼滤波在SBAS信息处理中的应用
        • 3.3 时间同步与钟差修正
    • PART B:`rtcm.c`
      • 一、整体作用与工作流程
        • 1.1 整体作用
        • 1.2 工作流程概述
      • 二、代码函数详解
        • 2.1 函数列表与调用关系
        • 2.2 函数详解
          • 2.2.1 `init_rtcm`
          • 2.2.2 `decode_rtcm`
          • 2.2.3 `parse_rtcm_data`
          • 2.2.4 `process_rtcm_info`
          • 2.2.5 `apply_rtcm_correction`
          • 2.2.6 `output_position`
      • 三、 数学原理及推导过程
        • 3.1 卫星钟差修正原理
        • 3.2 卡尔曼滤波在 RTCM 信息处理中的应用
        • 3.3 轨道修正原理


PART A: sbas.c

一、整体作用与工作流程

1.1 整体作用

sbas.c文件在RTKlib中主要负责SBAS数据的接收、解析、处理与应用。SBAS作为一种增强GPS定位精度的系统,通过提供差分修正信息、完整性监测等服务,显著提升了GPS定位的准确性和可靠性。sbas.c通过解码SBAS信号,提取其中的修正信息,并将其整合到GNSS数据处理流程中,从而实现更高精度的定位。

1.2 工作流程概述

sbas.c的工作流程大致可分为以下几个步骤:

  1. SBAS信号接收:通过GNSS接收机捕获SBAS信号。
  2. 信号解码:将接收到的SBAS信号解码为可识别的数据格式。
  3. 数据解析:从解码后的数据中提取出修正信息、完整性参数等关键信息。
  4. 数据处理:对提取的信息进行验证、滤波等处理,确保数据的准确性和可靠性。
  5. 数据应用:将处理后的SBAS数据应用于GNSS定位解算中,提升定位精度。

二、代码函数详解

逐一解析sbas.c中的关键函数,包括其主要功能、输入输出参数说明,并辅以必要的数学原理及推导过程。

2.1 函数列表与调用关系

首先,我们通过Mermaid流程图展示sbas.c中各函数的调用关系:

main
init_sbas
decode_sbas
parse_sbas_data
process_sbas_info
apply_sbas_correction
output_position
2.2 函数详解
2.2.1 init_sbas
  • 主要功能:初始化SBAS处理相关的数据结构、变量及资源,为后续的SBAS数据处理做好准备。
  • 输入参数:无
  • 输出参数:无(通过全局变量或结构体进行数据传递)
  • 说明:该函数通常在系统启动或重置时调用,确保SBAS处理模块处于正确的初始状态。
2.2.2 decode_sbas
  • 主要功能:对接收到的SBAS信号进行解码,将其转换为可处理的数据格式。
  • 输入参数
    • unsigned char *buffer:接收到的SBAS原始数据缓冲区。
    • int len:数据长度。
  • 输出参数
    • sbas_data_t *sbas_data:解码后的SBAS数据结构体指针。
  • 说明:解码过程可能涉及错误检测与校正,确保数据的准确性。解码后的数据被存储在sbas_data_t结构体中,供后续处理使用。
2.2.3 parse_sbas_data
  • 主要功能:从解码后的SBAS数据中提取出修正信息、完整性参数等关键信息。
  • 输入参数
    • sbas_data_t *sbas_data:解码后的SBAS数据结构体指针。
  • 输出参数
    • sbas_info_t *sbas_info:提取出的SBAS信息结构体指针。
  • 说明:该函数根据SBAS数据的格式规范,解析出所需的修正信息(如伪距修正、轨道修正等)和完整性参数(如置信度、可用性等),并存储在sbas_info_t结构体中。
2.2.4 process_sbas_info
  • 主要功能:对提取出的SBAS信息进行验证、滤波等处理,确保数据的准确性和可靠性。
  • 输入参数
    • sbas_info_t *sbas_info:提取出的SBAS信息结构体指针。
  • 输出参数
    • processed_sbas_info_t *processed_info:处理后的SBAS信息结构体指针。
  • 说明:处理过程可能包括数据有效性检查、时间同步、滤波算法应用等。例如,通过卡尔曼滤波对修正信息进行平滑处理,提高数据的稳定性。
2.2.5 apply_sbas_correction
  • 主要功能:将处理后的SBAS修正信息应用于GNSS定位解算中,提升定位精度。
  • 输入参数
    • processed_sbas_info_t *processed_info:处理后的SBAS信息结构体指针。
    • gnss_solution_t *solution:当前的GNSS定位解算结果结构体指针。
  • 输出参数:无(直接修改solution结构体中的数据)
  • 说明:该函数根据SBAS提供的修正信息,对GNSS定位结果进行修正。例如,通过减去伪距修正量来减小定位误差,或者调整卫星钟差以提高时间同步精度。
2.2.6 output_position
  • 主要功能:输出经过SBAS修正后的高精度定位结果。
  • 输入参数
    • gnss_solution_t *solution:经过SBAS修正后的GNSS定位解算结果结构体指针。
  • 输出参数:无(通常通过串口、网络或其他通信接口输出定位结果)
  • 说明:该函数将最终的定位结果以合适的格式输出,供外部设备或应用程序使用。输出内容可能包括经纬度、高度、速度、时间等信息。

三、数学原理及推导过程

sbas.c的处理过程中,涉及多个数学原理与算法,以下对其中几个关键点进行简要介绍与推导。

3.1 伪距修正原理

SBAS提供的伪距修正信息用于减小GNSS定位中的伪距测量误差。伪距 ρ \rho ρ可以表示为:

ρ = ρ t r u e + c Δ t + I + T + ϵ \rho = \rho_{true} + c\Delta t + I + T + \epsilon ρ=ρtrue+cΔt+I+T+ϵ

其中:

  • ρ t r u e \rho_{true} ρtrue:真实的几何距离;
  • c Δ t c\Delta t cΔt:卫星钟差引起的距离误差;
  • I I I:电离层延迟;
  • T T T:对流层延迟;
  • ϵ \epsilon ϵ:其他误差项。

SBAS通过提供伪距修正量 Δ ρ s b a s \Delta\rho_{sbas} Δρsbas,可以将其应用于伪距测量中,得到修正后的伪距 ρ c o r r \rho_{corr} ρcorr

ρ c o r r = ρ − Δ ρ s b a s \rho_{corr} = \rho - \Delta\rho_{sbas} ρcorr=ρΔρsbas

从而减小定位误差,提高定位精度。

3.2 卡尔曼滤波在SBAS信息处理中的应用

为了提高SBAS信息的稳定性和准确性,process_sbas_info函数中可能采用了卡尔曼滤波算法对修正信息进行滤波处理。卡尔曼滤波是一种基于状态空间模型的最优估计方法,适用于线性动态系统的状态估计。

假设SBAS修正信息的状态方程和观测方程分别为:

x k = F k x k − 1 + B k u k + w k x_k = F_k x_{k-1} + B_k u_k + w_k xk=Fkxk1+Bkuk+wk
z k = H k x k + v k z_k = H_k x_k + v_k zk=Hkxk+vk

其中:

  • x k x_k xk:状态向量;
  • F k F_k Fk:状态转移矩阵;
  • B k B_k Bk:控制输入矩阵;
  • u k u_k uk:控制向量;
  • w k w_k wk:过程噪声;
  • z k z_k zk:观测向量;
  • H k H_k Hk:观测矩阵;
  • v k v_k vk:观测噪声。

卡尔曼滤波通过预测和更新两个步骤,对状态向量进行最优估计。预测步骤基于状态方程预测下一时刻的状态向量和协方差矩阵;更新步骤则利用观测信息对预测结果进行修正,得到更精确的状态估计。

process_sbas_info函数中,卡尔曼滤波可能被用于对SBAS修正信息进行时间序列上的平滑处理,减少噪声干扰,提高数据的稳定性。

3.3 时间同步与钟差修正

在GNSS定位中,准确的时间同步对于保证定位精度至关重要。SBAS提供的卫星钟差信息可以用于修正GNSS接收机与卫星之间的时间不同步问题。

假设接收机钟差为 Δ t r c v \Delta t_{rcv} Δtrcv,卫星钟差为 Δ t s a t \Delta t_{sat} Δtsat,则总的钟差 Δ t t o t a l \Delta t_{total} Δttotal可以表示为:

Δ t t o t a l = Δ t r c v + Δ t s a t \Delta t_{total} = \Delta t_{rcv} + \Delta t_{sat} Δttotal=Δtrcv+Δtsat

通过SBAS提供的卫星钟差信息,可以对 Δ t s a t \Delta t_{sat} Δtsat进行修正,从而减小总的钟差,提高时间同步精度。进而,在伪距测量中考虑钟差修正,可以得到更准确的伪距值,提升定位精度。


PART B:rtcm.c

一、整体作用与工作流程

1.1 整体作用

rtcm.c 文件在 RTKlib 中主要负责 RTCM 差分数据的接收、解析、处理与应用。RTCM 作为一种广泛使用的差分数据协议,通过提供卫星钟差、轨道修正等关键信息,显著提升了 GNSS 定位的准确性和可靠性。rtcm.c 通过解码 RTCM 信号,提取其中的修正信息,并将其整合到 GNSS 数据处理流程中,从而实现更高精度的定位。

1.2 工作流程概述

rtcm.c 的工作流程大致可分为以下几个步骤:

  1. RTCM 信号接收:通过 GNSS 接收机捕获 RTCM 信号。
  2. 信号解码:将接收到的 RTCM 信号解码为可识别的数据格式。
  3. 数据解析:从解码后的数据中提取出修正信息、完整性参数等关键信息。
  4. 数据处理:对提取的信息进行验证、滤波等处理,确保数据的准确性和可靠性。
  5. 数据应用:将处理后的 RTCM 数据应用于 GNSS 定位解算中,提升定位精度。

二、代码函数详解

接下来,我们将逐一解析 rtcm.c 中的关键函数,包括其主要功能、输入输出参数说明,并辅以必要的数学原理及推导过程。

2.1 函数列表与调用关系

首先,我们通过 Mermaid 流程图展示 rtcm.c 中各函数的调用关系:

main
init_rtcm
decode_rtcm
parse_rtcm_data
process_rtcm_info
apply_rtcm_correction
output_position
2.2 函数详解
2.2.1 init_rtcm
  • 主要功能:初始化 RTCM 处理相关的数据结构、变量及资源,为后续的 RTCM 数据处理做好准备。
  • 输入参数:无
  • 输出参数:无(通过全局变量或结构体进行数据传递)
  • 说明:该函数通常在系统启动或重置时调用,确保 RTCM 处理模块处于正确的初始状态。初始化过程可能包括分配内存、设置默认值、初始化通信接口等操作。
2.2.2 decode_rtcm
  • 主要功能:对接收到的 RTCM 信号进行解码,将其转换为可处理的数据格式。
  • 输入参数
    • unsigned char *buffer:接收到的 RTCM 原始数据缓冲区。
    • int len:数据长度。
  • 输出参数
    • rtcm_data_t *rtcm_data:解码后的 RTCM 数据结构体指针。
  • 说明:解码过程可能涉及错误检测与校正,确保数据的准确性。RTCM 数据通常采用特定的编码方式,如二进制编码或 ASCII 编码,decode_rtcm 函数需要根据 RTCM 协议规范对数据进行解析和转换。解码后的数据被存储在 rtcm_data_t 结构体中,供后续处理使用。
2.2.3 parse_rtcm_data
  • 主要功能:从解码后的 RTCM 数据中提取出修正信息、完整性参数等关键信息。
  • 输入参数
    • rtcm_data_t *rtcm_data:解码后的 RTCM 数据结构体指针。
  • 输出参数
    • rtcm_info_t *rtcm_info:提取出的 RTCM 信息结构体指针。
  • 说明:该函数根据 RTCM 数据的格式规范,解析出所需的修正信息(如卫星钟差、轨道修正等)和完整性参数(如置信度、可用性等),并存储在 rtcm_info_t 结构体中。这些信息对于后续的 GNSS 定位解算至关重要,能够显著提升定位的准确性和可靠性。
2.2.4 process_rtcm_info
  • 主要功能:对提取出的 RTCM 信息进行验证、滤波等处理,确保数据的准确性和可靠性。
  • 输入参数
    • rtcm_info_t *rtcm_info:提取出的 RTCM 信息结构体指针。
  • 输出参数
    • processed_rtcm_info_t *processed_info:处理后的 RTCM 信息结构体指针。
  • 说明:处理过程可能包括数据有效性检查、时间同步、滤波算法应用等。例如,通过卡尔曼滤波对修正信息进行平滑处理,提高数据的稳定性。卡尔曼滤波是一种基于状态空间模型的最优估计方法,适用于线性动态系统的状态估计。在 process_rtcm_info 函数中,卡尔曼滤波可能被用于对 RTCM 修正信息进行时间序列上的平滑处理,减少噪声干扰,提高数据的稳定性。
2.2.5 apply_rtcm_correction
  • 主要功能:将处理后的 RTCM 修正信息应用于 GNSS 定位解算中,提升定位精度。
  • 输入参数
    • processed_rtcm_info_t *processed_info:处理后的 RTCM 信息结构体指针。
    • gnss_solution_t *solution:当前的 GNSS 定位解算结果结构体指针。
  • 输出参数:无(直接修改 solution 结构体中的数据)
  • 说明:该函数根据 RTCM 提供的修正信息,对 GNSS 定位结果进行修正。例如,通过减去卫星钟差修正量来减小定位误差,或者调整卫星轨道参数以提高定位精度。修正后的定位结果存储在 solution 结构体中,供后续输出或使用。
2.2.6 output_position
  • 主要功能:输出经过 RTCM 修正后的高精度定位结果。
  • 输入参数
    • gnss_solution_t *solution:经过 RTCM 修正后的 GNSS 定位解算结果结构体指针。
  • 输出参数:无(通常通过串口、网络或其他通信接口输出定位结果)
  • 说明:该函数将最终的定位结果以合适的格式输出,供外部设备或应用程序使用。输出内容可能包括经纬度、高度、速度、时间等信息。输出方式可能根据具体应用场景而定,如通过串口通信、网络传输或文件保存等。

三、 数学原理及推导过程

rtcm.c 的处理过程中,涉及多个数学原理与算法,以下对其中几个关键点进行简要介绍与推导。

3.1 卫星钟差修正原理

RTCM 提供的卫星钟差信息用于修正 GNSS 接收机与卫星之间的时间不同步问题。假设接收机钟差为 Δ t r c v \Delta t_{rcv} Δtrcv,卫星钟差为 Δ t s a t \Delta t_{sat} Δtsat,则总的钟差 Δ t t o t a l \Delta t_{total} Δttotal 可以表示为:

Δ t t o t a l = Δ t r c v + Δ t s a t \Delta t_{total} = \Delta t_{rcv} + \Delta t_{sat} Δttotal=Δtrcv+Δtsat

通过 RTCM 提供的卫星钟差信息,可以对 Δ t s a t \Delta t_{sat} Δtsat 进行修正,从而减小总的钟差,提高时间同步精度。进而,在伪距测量中考虑钟差修正,可以得到更准确的伪距值,提升定位精度。

伪距 ρ \rho ρ 可以表示为:

ρ = ρ t r u e + c Δ t t o t a l + I + T + ϵ \rho = \rho_{true} + c\Delta t_{total} + I + T + \epsilon ρ=ρtrue+cΔttotal+I+T+ϵ

其中:

  • ρ t r u e \rho_{true} ρtrue:真实的几何距离;
  • c Δ t t o t a l c\Delta t_{total} cΔttotal:接收机与卫星之间的总钟差引起的距离误差;
  • I I I:电离层延迟;
  • T T T:对流层延迟;
  • ϵ \epsilon ϵ:其他误差项。

通过修正钟差 Δ t t o t a l \Delta t_{total} Δttotal,可以得到修正后的伪距 ρ c o r r \rho_{corr} ρcorr

ρ c o r r = ρ − c Δ t t o t a l \rho_{corr} = \rho - c\Delta t_{total} ρcorr=ρcΔttotal

从而减小定位误差,提高定位精度。

3.2 卡尔曼滤波在 RTCM 信息处理中的应用

为了提高 RTCM 信息的稳定性和准确性,process_rtcm_info 函数中可能采用了卡尔曼滤波算法对修正信息进行滤波处理。卡尔曼滤波是一种基于状态空间模型的最优估计方法,适用于线性动态系统的状态估计。

假设 RTCM 修正信息的状态方程和观测方程分别为:

x k = F k x k − 1 + B k u k + w k x_k = F_k x_{k-1} + B_k u_k + w_k xk=Fkxk1+Bkuk+wk
z k = H k x k + v k z_k = H_k x_k + v_k zk=Hkxk+vk

其中:

  • x k x_k xk:状态向量;
  • F k F_k Fk:状态转移矩阵;
  • B k B_k Bk:控制输入矩阵;
  • u k u_k uk:控制向量;
  • w k w_k wk:过程噪声;
  • z k z_k zk:观测向量;
  • H k H_k Hk:观测矩阵;
  • v k v_k vk:观测噪声。

卡尔曼滤波通过预测和更新两个步骤,对状态向量进行最优估计。预测步骤基于状态方程预测下一时刻的状态向量和协方差矩阵;更新步骤则利用观测信息对预测结果进行修正,得到更精确的状态估计。

process_rtcm_info 函数中,卡尔曼滤波可能被用于对 RTCM 修正信息进行时间序列上的平滑处理,减少噪声干扰,提高数据的稳定性。例如,对于卫星钟差修正量,可以通过卡尔曼滤波对其进行平滑处理,得到更准确的钟差估计值,从而提高定位精度。

3.3 轨道修正原理

RTCM 提供的轨道修正信息用于修正卫星轨道参数,提高定位精度。卫星轨道参数的准确性直接影响定位结果的准确性,因此轨道修正是 RTCM 数据处理中的重要环节。

假设卫星的真实轨道参数为 x t r u e x_{true} xtrue,广播星历提供的轨道参数为 x b r d x_{brd} xbrd,RTCM 提供的轨道修正量为 Δ x r t c m \Delta x_{rtcm} Δxrtcm,则修正后的轨道参数 x c o r r x_{corr} xcorr 可以表示为:

x c o r r = x b r d + Δ x r t c m x_{corr} = x_{brd} + \Delta x_{rtcm} xcorr=xbrd+Δxrtcm

通过轨道修正,可以减小广播星历与真实轨道之间的差异,提高定位精度。在 GNSS 定位解算中,使用修正后的轨道参数 x c o r r x_{corr} xcorr 进行计算,可以得到更准确的定位结果。

轨道修正量的计算可能涉及复杂的数学模型和算法,包括卫星动力学模型、轨道确定算法等。在 rtcm.c 中,轨道修正量的提取和应用可能通过特定的函数和数据结构实现,具体实现细节取决于 RTCM 协议和 RTKlib 的设计理念。


研究学习不易,点赞易。
工作生活不易,收藏易,点收藏不迷茫 :)


相关文章:

[学习]RTKLib详解:sbas.c与rtcm.c

RTKLib详解:sbas.c与rtcm.c 本文是 RTKLlib详解 系列文章的一篇,目前该系列文章还在持续总结写作中,以发表的如下,有兴趣的可以翻阅。 [学习] RTKlib详解:功能、工具与源码结构解析 [学习]RTKLib详解:pntp…...

【基础IO下】磁盘/软硬链接/动静态库

前言: 文件分为内存文件和磁盘文件。磁盘文件是一个特殊的存在,因为磁盘文件不属于冯诺依曼体系,而是位于专门的存储设备中。因此,磁盘文件存在的意义是将文件更好的存储起来,一边后续对文件进行访问。在高效存储磁盘…...

JAVA练习题(1) 卖飞机票

import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner scnew Scanner(System.in);System.out.println("请输入飞机的票价:");int pricesc.nextInt();System.out.println("请输入月份:");…...

SpringBoot框架开发网络安全科普系统开发实现

概述 基于SpringBoot框架的网络安全科普系统开发指南,该系统集知识科普、案例学习、在线测试等功能于一体,本文将详细介绍系统架构设计、功能实现及技术要点,帮助开发者快速构建专业的网络安全教育平台。 主要内容 系统功能架构 本系统采…...

机器学习 day02

文章目录 前言一、TF-IDF特征词重要度特征提取二、无量纲化处理1.最大最小值归一化2.normalize归一化3.StanderScaler标准化 前言 通过今天的学习,我掌握了TF-IDF特征词重要度特征提取以及无量纲化处理的相关知识和用法 一、TF-IDF特征词重要度特征提取 机器学习算…...

《AI大模型应知应会100篇》第53篇:Hugging Face生态系统入门

第53篇:Hugging Face生态系统入门 ——从模型获取到部署的全流程实战指南 📌 摘要 在人工智能快速发展的今天,Hugging Face已成为自然语言处理(NLP)领域最具影响力的开源平台之一。它不仅提供丰富的预训练模型、强大…...

计网学习笔记———网络

🌿网络是泛化的概念 网络是泛化的概念 🍂泛化理解 网络的概念在生活中无处不在举例:社交网络、电话网路、电网、计算机网络 🌿网络的定义 定义: 离散的个体通过通讯手段连成群体,实现资源的共享与交流、个…...

Vue3 怎么在ElMessage消息提示组件中添加自定义icon图标

1、定义icon组件代码&#xff1a; <template><svg :class"svgClass" aria-hidden"true"><use :xlink:href"iconName" :fill"color"/></svg> </template><script> export default defineComponen…...

17.Excel:实用的 VBA 自动化程序

一 excel 设置 开始-选项 二 批量创建工作表 某工作簿用于保存31天的东西&#xff0c;手动创建31个工作表不方便。 A1单元格输入内容&#xff0c;或者空着。从A2单元格开始&#xff0c;一定要以字符形式的&#xff0c;不能以数值和日期形式。12345这是数值形式&#xff0c;1月…...

Kubernetes生产实战(十六):集群安全加固全攻略

Kubernetes集群安全加固全攻略&#xff1a;生产环境必备的12个关键策略 在容器化时代&#xff0c;Kubernetes已成为企业应用部署的核心基础设施。但根据CNCF 2023年云原生安全报告显示&#xff0c;75%的安全事件源于K8s配置错误。本文将基于生产环境实践&#xff0c;系统讲解集…...

Cadence学习笔记之---导入PCB板框、网表

目录 01 | 引 言 02 | 环境描述 03 | 导入PCB板框 04 | 自画PCB板框 05 | 导入PCB网表 06 | 总 结 01 | 引 言 在上一篇小记中讲述了创建PCB工程的操作步骤、PCB工程中的类与子类&#xff0c;以及Cadence颇具特色的颜色管理器。 本篇小记主要记述如何导入PCB板框、自画…...

嵌入式硬件篇---麦克纳姆轮(简单运动实现)

文章目录 前言1. 麦克纳姆轮的基本布局X型布局O型布局 2. 运动模式实现原理(1) 前进/后退前进后退 (2) 左右平移向左平移向右平移 (3) 原地旋转顺时针旋转&#xff08;右旋&#xff09;逆时针旋转&#xff08;左旋&#xff09; (4) 斜向移动左上45移动 (5) 180旋转 3. 数学原理…...

en33网络配置文件未托管

从 nmcli device status 的输出可以看到&#xff0c;所有网络设备&#xff08;包括 ens33&#xff09;都处于 "未托管"&#xff08;unmanaged&#xff09;状态&#xff0c;这导致 NetworkManager 和传统的 network.service 都无法管理网络接口&#xff0c;从而引发 n…...

嵌入式学习--江协51单片机day4

昨天周五没有学习&#xff0c;因为中午没有睡觉&#xff0c;下午和晚上挤不出整块的时间。周日有考试今天也没有学很多啊&#xff0c;但以后周末会是学一天&#xff0c;另一天休息和写周总结。 今天学了串口通信和LED点阵屏&#xff0c;硬件原理是真的很迷&#xff0c;一但想搞…...

Hadoop 2.x设计理念解析

目录 一、背景 二、整体架构 三、组件详解 3.1 yarn 3.2 hdfs 四、计算流程 4.1 上传资源到 HDFS 4.2 向 RM 提交作业请求 4.3 RM 调度资源启动 AM 4.4 AM运行用户代码 4.5 NodeManager运行用户代码 4.6 资源释放 五、设计不足 一、背景 有人可能会好奇&#xf…...

diy装机成功录

三天前&#xff0c;我正式开启了这次装机之旅&#xff0c;购入了一颗性能强劲的 i5-12400 CPU&#xff0c;一块绘图能力出色的 3060ti 显卡&#xff0c;还有技嘉主板、高效散热器、16G 内存条、2T 固态硬盘&#xff0c;以及气派的机箱和风扇&#xff0c;满心期待能亲手打造一台…...

睿思量化小程序

睿思量化小程序是成都睿思商智科技有限公司最新研发和运营的金融数据统计分析工具&#xff0c;旨在通过量化指标筛选与多策略历史回测&#xff0c;帮助用户科学配置基金资产&#xff0c;成为个人投资者与机构用户的“智能化财富管家”。 核心功能&#xff1a;数据驱动决策&…...

STM32实现九轴IMU的卡尔曼滤波

在嵌入式系统中&#xff0c;精确的姿态估计对于无人机、机器人和虚拟现实等应用至关重要。九轴惯性测量单元&#xff08;IMU&#xff09;通过三轴加速度计、陀螺仪和磁力计提供全面的运动数据。然而&#xff0c;这些传感器数据常伴随噪声和漂移&#xff0c;单独使用无法满足高精…...

JS DOM操作与事件处理从入门到实践

对于前端开发者来说&#xff0c;让静态的 HTML 页面变得生动、可交互是核心技能之一。实现这一切的关键在于理解和运用文档对象模型 (DOM) 以及 JavaScript 的事件处理机制。本文将带你深入浅出地探索 DOM 操作的奥秘&#xff0c;并掌握JavaScript 事件处理的方方面面。 目录 …...

Hive表JOIN性能问

在处理100TB的Hive表JOIN性能问题时&#xff0c;需采用分层优化策略&#xff0c;结合数据分布特征、存储格式和计算引擎特性。以下是系统性优化方案&#xff1a; 1. 数据倾斜优化&#xff08;Skew Join&#xff09; 1.1 识别倾斜键 方法&#xff1a;统计JOIN键的分布频率&…...

关键点检测--使用YOLOv8对Leeds Sports Pose(LSP)关键点检测

目录 1. Leeds Sports Pose数据集下载2. 数据集处理2.1 获取标签2.2 将图像文件和标签文件处理成YOLO能使用的格式 3. 用YOLOv8进行训练3.1 训练3.2 预测 1. Leeds Sports Pose数据集下载 从kaggle官网下载这个数据集&#xff0c;地址为link&#xff0c;下载好的数据集文件如下…...

2025年客运从业资格证备考单选练习题

客运从业资格证备考单选练习题 1、从事道路旅客运输活动时&#xff0c;应当采取必要措施保证旅客的人身和财产安全&#xff0c;发生紧急情况时&#xff0c;首先应&#xff08; &#xff09;。 A. 抢救财产 B. 抢救伤员 C. 向公司汇报 答案&#xff1a;B 解析&#xff1a;…...

QMK自定义4*4键盘固件创建教程:最新架构详解

QMK自定义4*4键盘固件创建教程&#xff1a;最新架构详解 前言 通过本教程&#xff0c;你将学习如何在QMK框架下创建自己的键盘固件。QMK是一个强大的开源键盘固件框架&#xff0c;广泛用于DIY机械键盘的制作。本文将详细介绍最新架构下所需创建的文件及其功能。 准备工作 在…...

获取conan离线安装包

1、获取conan离线安装包 # apt-get install python3.12-venv pip #缓存的安装存放在/var/cache/apt/archives目录 # mkdir /myenv && cd /myenv #创建虚拟环境目录 # python3 -m venv myenv #创建虚拟环境 # source myenv/bin/activate #激活虚拟环境&#xff…...

【Java ee初阶】网络原理

应用层 由于下面的四层都是系统已经实现好了的&#xff0c;但是应用层是程序员自己写的&#xff0c;因此应用层是程序员最重要的一层。 应用层中&#xff0c;程序员通常需要定义好数据传输格式&#xff0c;调用传输层api&#xff08;socket api&#xff09;进行真正的网络通信…...

Makefile中 链接库,同一个库的静态库与动态库都链接了,生效的是哪个库

Makefile中 链接库&#xff0c;同一个库的静态库与动态库都链接了&#xff0c;生效的是哪个库 在 Makefile 中同时链接同一个库的静态库&#xff08;.a&#xff09;和动态库&#xff08;.so&#xff09;时&#xff0c;具体哪个库生效取决于链接顺序和编译器行为。以下是详细分析…...

【AI提示词】金字塔模型应用专家

提示说明 专业运用金字塔原理优化信息结构与逻辑表达&#xff0c;实现高效精准的思维传达。 提示词 # Role: 金字塔模型应用专家 ## Profile - **language**: 中文/英文 - **description**: 专业运用金字塔原理优化信息结构与逻辑表达&#xff0c;实现高效精准的思维传…...

电子电器架构 --- 车载以太网拓扑

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

使用FastAPI微服务在AWS EKS上实现AI会话历史的管理

架构概述 本文介绍如何使用FastAPI构建微服务架构&#xff0c;在AWS EKS上部署两个微服务&#xff1a; 服务A&#xff1a;接收用户提示服务B&#xff1a;处理对话逻辑&#xff0c;与Redis缓存和MongoDB数据库交互 该架构利用AWS ElastiCache(Redis)实现快速响应&#xff0c;…...

Flutter PIP 插件 ---- 为iOS 重构PipController, Demo界面,更好的体验

接上文 Flutter PIP 插件 ---- 新增PipActivity&#xff0c;Android 11以下支持自动进入PIP Mode 项目地址 PIP&#xff0c; pub.dev也已经同步发布 pip 0.0.3&#xff0c;你的加星和点赞&#xff0c;将是我继续改进最大的动力 在之前的界面设计中&#xff0c;还原动画等体验一…...

vue开发用户注册功能

文章目录 一、开发步骤二、效果图三、搭建页面创建views/Login.vue在App.vue中导入Login.vue 四、数据绑定五、表单校验六、访问后端 API 接口&#xff0c;完成注册七、完整的Login.vue代码八、参考资料 一、开发步骤 二、效果图 三、搭建页面 创建views/Login.vue 完整内容在…...

Qt中的RCC

Qt资源系统(Qt resource system)是一种独立于平台的机制&#xff0c;用于在应用程序中传输资源文件。如果你的应用程序始终需要一组特定的文件(例如图标、翻译文件和图片)&#xff0c;并且你不想使用特定于系统的方式来打包和定位这些资源&#xff0c;则可以使用Qt资源系统。 最…...

muduo源码解析

1.对类进行禁止拷贝 class noncopyable {public:noncopyable(const noncopyable&) delete;void operator(const noncopyable&) delete;protected:noncopyable() default;~noncopyable() default; }; 2.日志 使用枚举定义日志等级 enum LogLevel{TRACE,DEBUG,IN…...

Qt QCheckBox 使用

1.开发背景 Qt QCheckBox 是勾选组件&#xff0c;具体使用方法可以参考 Qt 官方文档&#xff0c;这里只是记录使用过程中常用的方法示例和遇到的一些问题。 2.开发需求 QCheckBox 使用和踩坑 3.开发环境 Window10 Qt5.12.2 QtCreator4.8.2 4.功能简介 4.1 简单接口 QChec…...

【工具记录分享】提取bilibili视频字幕

F12大法 教程很多 但方法比较统一 例快速提取视频字幕&#xff01;适用B站、AI字幕等等。好用 - 哔哩哔哩 无脑小工具 哔哩哔哩B站字幕下载_在线字幕解析-飞鱼视频下载助手 把链接扔进去就会自动生成srt文件 需要txt可以配合&#xff1a; SRT转为TXT...

设计模式【cpp实现版本】

文章目录 设计模式1.单例模式代码设计1.饿汉式单例模式2.懒汉式单例模式 2.简单工厂和工厂方法1.简单工厂2.工厂方法 3.抽象工厂模式4.代理模式5.装饰器模式6.适配器模式7.观察者模式 设计模式 1.单例模式代码设计 ​ 为什么需要单例模式&#xff0c;在我们的项目设计中&…...

Python数据分析案例74——基于内容的深度学习推荐系统(电影推荐)

背景 之前都是标准的表格建模和时间序列的预测&#xff0c;现在做一点不一样的数据结构的模型方法。 推荐系统一直是想学想做的&#xff0c;以前读研时候想学没多少相关代码&#xff0c;现在AI资源多了&#xff0c;虽然上班没用到这方面的知识&#xff0c;但是还是想熟悉一下…...

C PRIMER PLUS——第8节:字符串和字符串函数

目录 1. 字符串的定义与表示 2. 获取字符串的两种方式 3.字符串数组 4. 字符串输入函数 4.1 gets()&#xff08;不推荐使用&#xff0c;有缓冲区溢出风险&#xff09; 4.2 fgets()&#xff08;推荐使用&#xff09; 4.3 scanf() 4.4 gets_s()&#xff08;C11 标准&…...

Dia浏览器:AI驱动浏览网页,究竟怎么样?(含注册申请体验流程)

名人说&#xff1a;博观而约取&#xff0c;厚积而薄发。——苏轼《稼说送张琥》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、Dia浏览器简介1. 什么是Dia浏览器2. 开发背景与公司简介3. 与传统浏览器的区别 …...

milvus+flask山寨复刻《从零构建向量数据库》第7章

常规练手&#xff0c;图片搜索山寨版。拜读罗云大佬著作&#xff0c;结果只有操作层的东西可以上上手。 书中是自己写的向量数据库&#xff0c;这边直接用python拼个现成的milvus向量数据库。 1. 创建一个向量数据库以及对应的相应数据表&#xff1a; # Milvus Setup Argume…...

【大数据技术-HBase-关于Hmaster、RegionServer、Region等组件功能和读写流程总结】

Hmaster的作用 负责命名空间、表的创建和删除等一些DDL操作、region分配和负载均衡,并不参与数据读写,相比与其他大数据组件,如hdfs的namenode,在hbase中,Hmaster的作用是比较弱化的,即使挂掉,也暂时不影响现有表的读写。 RegionServer的作用 一个机器上一个regionse…...

用c语言实现——一个交互式的中序线索二叉树系统,支持用户动态构建、线索化、遍历和查询功能

知识补充&#xff1a;什么是中序线索化 中序遍历是什么 一、代码解释 1.结构体定义 Node 结构体&#xff1a; 成员说明&#xff1a; int data&#xff1a;存储节点的数据值。 struct Node* lchild&#xff1a;该节点的左孩子 struct Node* rchild&#xff1a;该节点的右孩子…...

Pale Moon:速度优化的Firefox定制浏览器

Pale Moon是一款基于Firefox浏览器的定制版浏览器&#xff0c;专为追求速度和性能的用户设计。它使用开放源代码创建&#xff0c;经过高度优化&#xff0c;适用于现代处理器&#xff0c;提供了更快的页面加载速度和更高效的脚本处理能力。Pale Moon不仅继承了Firefox的安全性和…...

广东省省考备考(第七天5.10)—言语:逻辑填空(每日一练)

错题 解析 第一空&#xff0c;搭配“各个环节”&#xff0c;根据“我国已经形成了相对完善的中药质量标准控制体系”可知&#xff0c;横线处应体现“包含”之意&#xff0c;C项“涵盖”指包括、覆盖&#xff0c;D项“囊括”指把全部包罗在内&#xff0c;均与“各个环节”搭配得…...

Gartner《Container发布与生命周期管理最佳实践》学习心得

近日&#xff0c;Gartner发布了《Best Practices for Container Release and Life Cycle Management》&#xff0c; 报告为技术专业人士提供了关于容器发布和生命周期管理的深入指导。这份报告强调了容器在现代应用开发和部署中的核心地位&#xff0c;并提供了一系列最佳实践&…...

内存、磁盘、CPU区别,Hadoop/Spark与哪个联系密切

1. 内存、磁盘、CPU的区别和作用 1.1 内存&#xff08;Memory&#xff09; 作用&#xff1a; 内存是计算机的短期存储器&#xff0c;用于存储正在运行的程序和数据。它的访问速度非常快&#xff0c;比磁盘快几个数量级。在分布式计算中&#xff0c;内存用于缓存中间结果、存储…...

SpringCloud之Eureka基础认识-服务注册中心

0、认识Eureka Eureka 是 Netflix 开源的服务发现组件&#xff0c;后来被集成到 Spring Cloud 生态中&#xff0c;成为 Spring Cloud Netflix 的核心模块之一。它主要用于解决分布式系统中​​服务注册与发现​​的问题。 Eureka Server 有必要的话&#xff0c;也可以做成集群…...

MySQL 中如何进行 SQL 调优?

在MySQL中进行SQL调优是一个系统性工程&#xff0c;需结合索引优化、查询改写、性能分析工具、数据库设计及硬件配置等多方面策略。以下是具体优化方法及案例说明&#xff1a; 一、索引优化&#xff1a;精准提速的关键 索引类型选择 普通索引&#xff1a;加速频繁查询的列&…...

Linux平台下SSH 协议克隆Github远程仓库并配置密钥

目录 注意&#xff1a;先提前配置好SSH密钥&#xff0c;然后再git clone 1. 检查现有 SSH 密钥 2. 生成新的 SSH 密钥 3. 将 SSH 密钥添加到 ssh-agent 4. 将公钥添加到 GitHub 5. 测试 SSH 连接 6. 配置 Git 使用 SSH 注意&#xff1a;先提前配置好SSH密钥&#xff0c;然…...

Android平台FFmpeg音视频开发深度指南

一、FFmpeg在Android开发中的核心价值 FFmpeg作为业界领先的多媒体处理框架&#xff0c;在Android音视频开发中扮演着至关重要的角色。它提供了&#xff1a; 跨平台支持&#xff1a;统一的API处理各种音视频格式完整功能链&#xff1a;从解码、编码到滤镜处理的全套解决方案灵…...