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

[学习] RTKLib详解:qzslex.c、rcvraw.c与solution.c

RTKLib详解:qzslex.crcvraw.csolution.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
[学习]RTKLib详解:rtksvr.c与streamsvr.c
[学习]RTKLib详解:convkml.c、convrnx.c与geoid.c
[学习]RTKLib详解:datum.c、download.c与lambda.c
[学习]RTKLib详解:ionex.c、options.c与preceph.c
[学习] RTKLib详解:qzslex.c、rcvraw.c与solution.c


文章目录

  • RTKLib详解:`qzslex.c`、`rcvraw.c`与`solution.c`
  • RTKLIB src目录文件解析(续)
    • Part A: qzslex.c 文件解析
      • 一、文件整体说明
      • 二、执行流程与函数调用关系
      • 三、主要函数说明
        • 3.1 `lex_init`
        • 3.2 `lex_read_frame`
        • 3.3 `lex_check_crc`
        • 3.4 `lex_decode_frame`
      • 四、关键算法数学原理与推导
        • LEX 信号电文结构
    • Part B: rcvraw.c 文件解析
      • 一、文件整体说明
      • 二、执行流程与函数调用关系
      • 三、主要函数说明
        • 3.1 `raw_init`
        • 3.2 `raw_read`
        • 3.3 `raw_parse`
        • 3.4 `raw_output`
      • 四、关键算法数学原理与推导
        • 观测值时间戳同步
    • Part C: solution.c 文件解析
      • 一、文件整体说明
      • 二、执行流程与函数调用关系
      • 三、主要函数说明
        • 3.1 `sol_init`
        • 3.2 `sol_load_obs`
        • 3.3 `sol_update`
        • 3.4 `sol_output`
      • 四、关键算法数学原理与推导
        • 卡尔曼滤波观测方程


RTKLIB src目录文件解析(续)

Part A: qzslex.c 文件解析

一、文件整体说明

qzslex.c 是 RTKLIB 中用于解析 QZSS(Quasi-Zenith Satellite System)LEX(L-band EXperimental)信号的模块。该文件实现了从原始信号数据中提取导航电文、星历信息和时钟校正参数的功能,支持日本准天顶卫星系统(QZSS)的高精度定位。

主要功能:

  • 解析 QZSS LEX 信号电文。
  • 提取星历参数、时钟偏差和电离层校正信息。
  • 支持 LEX 数据 CRC 校验与帧同步。

主要特色:

  • 支持 QZSS 多频段信号(L1/L2/L5/LEX)。
  • 高效的位操作与电文解码算法。
  • 可扩展至未来新型 GNSS 信号。

二、执行流程与函数调用关系

程序执行流程如下:

  1. 初始化 LEX 信号解析器。
  2. 逐帧读取原始信号数据。
  3. 执行 CRC 校验与帧同步。
  4. 解码电文内容并提取参数。

函数调用关系如下:

main
lex_init
lex_read_frame
lex_check_crc
lex_decode_frame
lex_output_data

三、主要函数说明

3.1 lex_init
int lex_init(lex_t *lex)

功能:
初始化 LEX 信号解析器,设置默认参数。

输入参数:

  • lex: LEX 数据结构体指针。

返回值:

  • 成功返回 1,失败返回 0。

3.2 lex_read_frame
int lex_read_frame(FILE *fp, unsigned char *buff, int *len)

功能:
从文件或流中读取 LEX 信号帧数据。

输入参数:

  • fp: 文件指针。
  • buff: 缓冲区。
  • len: 输出读取长度。

返回值:

  • 成功返回字节数,失败返回负值。

3.3 lex_check_crc
int lex_check_crc(const unsigned char *buff, int len)

功能:
验证 LEX 帧的 CRC 校验码。

输入参数:

  • buff: 数据缓冲区。
  • len: 数据长度。

返回值:

  • 校验成功返回 1,失败返回 0。

3.4 lex_decode_frame
int lex_decode_frame(const unsigned char *buff, lex_data_t *data)

功能:
解码 LEX 帧电文,提取星历、时钟等参数。

输入参数:

  • buff: 解析后的帧数据。
  • data: 输出参数存储结构体。

返回值:

  • 成功返回 1,失败返回 0。

四、关键算法数学原理与推导

LEX 信号电文结构

LEX 信号采用前向纠错编码(FEC)和交织技术,电文结构包含:

  • 帧头(8 bit): 标识帧起始。
  • 数据域(N bit): 星历参数、时钟校正等。
  • CRC 校验(24 bit): 使用多项式 x 24 + x 23 + x 18 + x 17 + x 14 + x 11 + x 10 + x 6 + x 5 + x 4 + x 3 + x + 1 x^{24} + x^{23} + x^{18} + x^{17} + x^{14} + x^{11} + x^{10} + x^6 + x^5 + x^4 + x^3 + x + 1 x24+x23+x18+x17+x14+x11+x10+x6+x5+x4+x3+x+1

CRC 校验公式为:

CRC ( D ) = ( D ⋅ x 24 ) m o d G ( x ) \text{CRC}(D) = \left(D \cdot x^{24}\right) \mod G(x) CRC(D)=(Dx24)modG(x)

其中 G ( x ) G(x) G(x) 为上述多项式。


Part B: rcvraw.c 文件解析

一、文件整体说明

rcvraw.c 是 RTKLIB 中用于解析接收机原始观测数据的核心模块。它支持多种接收机格式(如 UBX、RTCM、BINEX),将原始二进制数据转换为内部观测结构,为后续处理提供基础。

主要功能:

  • 解析接收机原始数据流。
  • 支持多频段、多系统观测值提取。
  • 提供时间戳同步与数据校验。

主要特色:

  • 自动探测输入数据格式。
  • 支持实时流与文件模式。
  • 高效的数据缓存与解析机制。

二、执行流程与函数调用关系

程序执行流程如下:

  1. 读取原始数据流并识别格式。
  2. 解析观测值、星历和校正信息。
  3. 将数据转换为 RTKLIB 内部结构。
  4. 输出观测数据与状态信息。

函数调用关系如下:

main
raw_init
raw_read
raw_parse
raw_output

三、主要函数说明

3.1 raw_init
int raw_init(raw_t *raw, int format)

功能:
初始化接收机原始数据解析器,指定数据格式。

输入参数:

  • raw: 原始数据结构体。
  • format: 数据格式(如 FORMAT_UBX)。

返回值:

  • 成功返回 1,失败返回 0。

3.2 raw_read
int raw_read(FILE *fp, unsigned char *buff, int nmax)

功能:
从文件或流中读取原始数据。

输入参数:

  • fp: 文件指针。
  • buff: 缓冲区。
  • nmax: 最大读取长度。

返回值:

  • 成功返回字节数,失败返回负值。

3.3 raw_parse
int raw_parse(raw_t *raw, int type, const unsigned char *buff, int len)

功能:
解析原始数据,识别消息类型并填充结构体。

输入参数:

  • raw: 解析器结构体。
  • type: 消息类型(如 MSG_NAV_PVT)。
  • buff: 数据缓冲区。
  • len: 数据长度。

返回值:

  • 成功返回 1,失败返回 0。

3.4 raw_output
int raw_output(raw_t *raw, FILE *fp)

功能:
将解析后的观测数据写入输出文件或流。

输入参数:

  • raw: 解析器结构体。
  • fp: 输出文件指针。

返回值:

  • 成功返回 1,失败返回 0。

四、关键算法数学原理与推导

观测值时间戳同步

接收机时间戳 t r e c v t_{recv} trecv 与 GPS 时间 t G P S t_{GPS} tGPS 的关系为:

t G P S = t r e c v + Δ t u t c t_{GPS} = t_{recv} + \Delta t_{utc} tGPS=trecv+Δtutc

其中 Δ t u t c \Delta t_{utc} Δtutc 是 UTC 与 GPS 时间的闰秒修正值,需通过星历或头文件获取。


Part C: solution.c 文件解析

一、文件整体说明

solution.c 是 RTKLIB 中用于 GNSS 定位解算的核心模块。它实现了从观测数据到最终位置、速度、时间(PVT)的求解过程,支持单点定位(SPP)、差分定位(DGPS)和实时动态定位(RTK)等多种模式。

主要功能:

  • 计算卫星位置与钟差。
  • 实现观测方程与参数估计。
  • 支持多种解算模式(SPP/DGPS/RTK)。

主要特色:

  • 支持多频段、多系统联合解算。
  • 高精度卡尔曼滤波器实现。
  • 可视化解算状态与质量指标。

二、执行流程与函数调用关系

程序执行流程如下:

  1. 初始化解算器与状态向量。
  2. 加载观测数据与星历信息。
  3. 构建观测方程并更新卡尔曼滤波器。
  4. 输出解算结果与协方差矩阵。

函数调用关系如下:

main
sol_init
sol_load_obs
sol_update
sol_output

三、主要函数说明

3.1 sol_init
int sol_init(sol_t *sol, int mode)

功能:
初始化解算器,设置解算模式(SPP/RTK)。

输入参数:

  • sol: 解算器结构体。
  • mode: 解算模式(如 SOL_MODE_RTK)。

返回值:

  • 成功返回 1,失败返回 0。

3.2 sol_load_obs
int sol_load_obs(const obs_t *obs, const nav_t *nav, sol_t *sol)

功能:
加载观测数据与导航数据到解算器。

输入参数:

  • obs, nav: 观测与导航数据。
  • sol: 解算器结构体。

返回值:

  • 成功返回 1,失败返回 0。

3.3 sol_update
int sol_update(sol_t *sol)

功能:
执行一次解算迭代,更新状态向量与协方差矩阵。

输入参数:

  • sol: 解算器结构体。

返回值:

  • 成功返回 1,失败返回 0。

3.4 sol_output
int sol_output(const sol_t *sol, FILE *fp)

功能:
将解算结果(位置、速度、状态)写入文件。

输入参数:

  • sol: 解算器结构体。
  • fp: 输出文件指针。

返回值:

  • 成功返回 1,失败返回 0。

四、关键算法数学原理与推导

卡尔曼滤波观测方程

观测方程为:

y = H x + v \mathbf{y} = \mathbf{H} \mathbf{x} + \mathbf{v} y=Hx+v

其中:

  • y \mathbf{y} y: 观测向量(伪距、载波相位等)。
  • H \mathbf{H} H: 设计矩阵(几何距离对状态变量的偏导数)。
  • x \mathbf{x} x: 状态向量(位置、速度、模糊度等)。
  • v \mathbf{v} v: 观测噪声。

卡尔曼增益更新公式为:

K = P H T ( H P H T + R ) − 1 \mathbf{K} = \mathbf{P} \mathbf{H}^T \left( \mathbf{H} \mathbf{P} \mathbf{H}^T + \mathbf{R} \right)^{-1} K=PHT(HPHT+R)1

其中 P \mathbf{P} P 为状态协方差矩阵, R \mathbf{R} R 为观测噪声协方差矩阵。


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


相关文章:

[学习] RTKLib详解:qzslex.c、rcvraw.c与solution.c

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

【Ubuntu】neovim Lazyvim安装与卸载

安装neovim # 下载 AppImage wget https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.appimage# 添加执行权限 chmod ux nvim-linux-x86_64.appimage# 移动到系统路径,重命名为 nvim sudo mv nvim-linux-x86_64.appimage /usr/local/b…...

数据结构(一) 绪论

一. 时间复杂度: (1)定义: 时间复杂度是衡量算法执行时间随输入规模(通常用n表示)增长的变化趋势的指标,时间复杂度用O符号表示 用于描述算法在最坏情况下或平均情况下的时间需求 时间复杂度关注的是操作次数的增长率,而非具体执行时间 常见的时间复杂度由小到大依次…...

数据库事务并发问题

目录 脏读 幻读 不可重复读 三者的区别 脏读、幻读和不可重复读是在数据库并发操作中可能出现的问题,以下是对它们的详细介绍: 脏读 定义:指一个事务读取了另一个未提交事务修改的数据。示例:事务 A 修改了一条数据&#xf…...

Android之横向滑动列表

文章目录 前言一、效果图二、使用步骤1.xml布局2.代码3.HomeHxBean3.adapter4.item布局5.两个drawable 总结 前言 横向滑动列表有多种实现方式,也可以用tablayout,也可以用recyclerview,今天主要介绍recyclerview。 一、效果图 二、使用步骤…...

系统稳定性之上线三板斧

📕我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、…...

aardio - godking.vlistEx.listbar + win.ui.tabs 实现多标签多页面切换

方法一: import win.ui; import godking.vlistEx.listbar; import fonts.fontAwesome; /*DSG{{*/ mainForm win.form(text"vlistEx - table adapter";right895;bottom503) mainForm.add({ custom{cls"custom";text"自定义控件";lef…...

鸿蒙 核心与非核心装饰器

HarmonyOS NEXT 版本中完整的 ArkTS 装饰器分类整理(含核心与非核心装饰器,已剔除废弃特性) 一、核心装饰器(Essential Decorators) 1. 组件基础 装饰器功能Entry应用入口组件,每个模块必须且仅有一个&am…...

TypeScript 知识框架

一、TypeScript 基础 1. 类型系统 基本类型: number, string, boolean, null, undefined, symbol, bigint 引用类型: object, array, function, class 特殊类型: any, unknown, void, never 类型推断与类型注解 类型断言 (as 语法和 <Type> 语法) 2. 接口与类型别名 接口…...

web-ui开源程序是建立在浏览器使用的基础上,旨在使 AI 代理可以访问网站

​一、软件介绍 文末提供程序和源码下载 web-ui开源程序是建立在浏览器使用的基础上&#xff0c;旨在使 AI 代理可以访问网站。WebUI&#xff1a;基于 Gradio 构建&#xff0c;支持大部分 browser-use 功能。此 UI 设计为用户友好型&#xff0c;并支持与浏览器代理轻松交互。扩…...

【ns3】TCP三次握手源码解析

文章目录 TCP三次握手过程三次握手源码 TCP三次握手过程 三次握手源码 下面是ns3里三次握手整体过程的源码&#xff0c;和上面图解一一对应&#xff1a; TCP socket的状态枚举&#xff1a; 整体过程&#xff1a; 客户端首先connect&#xff1a;tcp-socket-base::connect调用Do…...

【YOLO模型】参数全面解读

使用YOLO模型时&#xff0c;需要调节各种参数&#xff0c;网络文章和官方文档有点不方便&#xff0c;整理了下面的内容备用&#xff1a; 获取最全最新的参数列表: Ultralytics官方文档: 这是获取YOLOv11&#xff08;以及YOLOv8等&#xff09;最权威、最详细参数信息的地方。通…...

跨境电商定价革命:亚马逊“逆向提价“策略背后的价值重构逻辑

导言&#xff1a;打破价格魔咒的销量奇迹 2024年Q3亚马逊平台上演商业悖论&#xff1a;在TOP5000卖家中&#xff0c;12%实施5%-15%温和提价的商户&#xff0c;41%实现单量30.4%的季度增长。这一现象颠覆"低价即流量"的电商铁律&#xff0c;揭开新消费时代"价值定…...

Kafka、RabbitMQ、RocketMQ的区别

以下是 RabbitMQ、RocketMQ、Kafka 的核心区别对比&#xff1a; 一、架构设计差异 ‌Kafka‌ 基于分布式日志的发布-订阅模型&#xff0c;通过分区&#xff08;Partition&#xff09;实现水平扩展&#xff0c;依赖 ZooKeeper 管理集群消费者通过消费者组&#xff08;Consumer G…...

win10 局域网内聊天

在 Windows 10 的局域网 中&#xff0c;如果你想实现 多个用户之间的聊天功能&#xff0c;可以选择以下几种方案&#xff0c;取决于你需要的是&#xff1a; • ✅ 命令行纯文字聊天&#xff08;如 Linux talk&#xff09; • ✅ 图形界面聊天室 • ✅ 局域网广播消息 • ✅ 多人…...

【前端三剑客】Ajax技术实现前端开发

目录 一、原生AJAX 1.1AJAX 简介 1.2XML 简介 1.3AJAX 的特点 1.3.1AJAX 的优点 1.3.2AJAX 的缺点 1.4AJAX 的使用 1.4.1核心对象 1.4.2使用步骤 1.4.3解决IE 缓存问题 1.4.4AJAX 请求状态 二、jQuery 中的AJAX 2.1 get 请求 2.2 post 请求 三、跨域 3.1同源策略…...

论文学习_Trex: Learning Execution Semantics from Micro-Traces for Binary Similarity

摘要&#xff1a;检测语义相似的函数在漏洞发现、恶意软件分析及取证等安全领域至关重要&#xff0c;但该任务面临实现差异大、跨架构、多编译优化及混淆等挑战。现有方法多依赖语法特征&#xff0c;难以捕捉函数的执行语义。对此&#xff0c;TREX 提出了一种基于迁移学习的框架…...

数据压缩的概念和优缺点

一、数据压缩的概念 数据压缩是通过特定算法&#xff08;压缩算法&#xff09;对数据进行重新编码&#xff0c;以减少数据存储空间或传输带宽的技术。其核心目标是在不丢失关键信息&#xff08;或允许一定程度信息损失&#xff09;的前提下&#xff0c;降低数据量&#xff0c;…...

spaCy基础入门

spaCy 概览说明 spaCy 是一个现代、快速、工业级 NLP 工具库&#xff0c;专门为实际工程应用设计&#xff0c;提供&#xff1a; • 分词&#xff08;Tokenization&#xff09; • 词性标注&#xff08;POS Tagging&#xff09; • 命名实体识别&#xff08;NER&#xff09; •…...

vue3项目创建-配置-elementPlus导入-路由自动导入

目录 方法一&#xff1a;create-vue 方法二 &#xff1a;Vite Vue Vite.config.ts配置 引入element-plus 安装 如何在项目中使用 Element Plus 完整引入 按需导入 vue3vite中自动配置路由的神器&#xff1a;vite-plugin-pages 1. 安装 2、修改vite.config.js中配置…...

2025年的电脑能装win7吗_2025年组装电脑装win7详细图文教程

2025年的电脑能装win7吗&#xff1f;2025年的电脑可以安装Win7&#xff0c;但存在一些限制和挑战。2025年的电脑基本上是14代和15代处理器&#xff0c;需要特定的条件和步骤才能安装win7&#xff0c;并且只能采用独立显卡&#xff0c;因为没有集成显卡驱动。另外注意目前2025年…...

windowsC++操作ADB

文章目录 一、ADB基础1. 工作原理2. 安装与配置 二、常用ADB指令分类1. 设备连接与管理2. 文件传输3. 应用管理4. 设备交互5. 系统信息6. 日志与调试7. 网络与端口转发 三、高级用法1. 多设备管理2. 无线ADB连接3. 批量执行命令4. ADB脚本示例 四、常见问题与解决方案五、注意事…...

Springboot实现重试机制

背景 研发工作中时常遇到要和其他服务对接&#xff0c;依赖对方能力的情况&#xff0c;最恶心的是对方提供的服务不稳定&#xff0c;时灵时不灵的&#xff0c;进而影响到自己功能的稳定性。万一发生了这种事&#xff0c;做为研发&#xff0c;咱该怎么办&#xff1f;通过容错直接…...

CS内网渗透 ----【内网渗透实战】PsExec vs Telnet:建立IPC通道实现横向移动与域控上线全解析

目录 1. 什么是 PsExec&#xff1f; 2. 什么是 Telnet&#xff1f; 3. PsExec 与 Telnet 的区别及优势 3.1 主要区别 3.2 内网渗透中的优势 4. 实际案例 —— 使用 PsExec 上线域控主机 案例背景 操作步骤 案例效果 5. 总结 利用 PsExec 建立 IPC 通道 —— IPC 的定…...

第二十三天打卡

作业&#xff1a; 整理下全部逻辑的先后顺序&#xff0c;看看能不能制作出适合所有机器学习的通用pipeline 数据预处理 → 特征选择 → 降维 → 模型训练 import pandas as pd import numpy as np from sklearn.model_selection import train_test_split, GridSearchCV from sk…...

aardio - 将文本生成CSS格式显示

import win.ui; /*DSG{{*/ var winform win.form(text"aardio form";right759;bottom469) winform.add( button{cls"button";text"Button";left340;top130;right430;bottom180;z3}; edit{cls"edit";text"我是一串文本";lef…...

【漫话机器学习系列】256.用 k-NN 填补缺失值

用 k-NN 填补缺失值&#xff1a;原理、实现与应用 在实际的数据科学项目中&#xff0c;我们经常会遇到数据缺失&#xff08;Missing Values&#xff09;的问题。缺失值如果处理不当&#xff0c;不仅会影响模型训练&#xff0c;还可能导致最终结果偏差。 今天&#xff0c;我们…...

tomcat与nginx之间实现多级代理

准备工作 准备5台虚拟主机&#xff1b;至少准备3台虚拟主机&#xff1b; 设备1作为代理服务器&#xff1b;设备2与设备4作为处理静态资源请求服务器&#xff08;使用nginx&#xff09;&#xff1b;设备3与设备5作为处理动态资源服务器&#xff08;使用tomcat&#xff09; 设…...

商业航天运动控制系统中的高可靠性芯片解决方案:挑战、策略与应用研究

摘要&#xff1a;随着商业航天领域的迅速发展&#xff0c;运动控制系统对芯片的可靠性提出了前所未有的挑战。本文深入探讨了商业航天运动控制系统中芯片可靠性面临的挑战&#xff0c;包括宇宙辐射效应、极端环境适应性及系统级可靠性保障等。同时&#xff0c;通过案例研究展示…...

[Java实战]Spring Boot 3 整合 Ehcache 3(十九)

[Java实战]Spring Boot 3 整合 Ehcache 3&#xff08;十九&#xff09; 引言 在微服务和高并发场景下&#xff0c;缓存是提升系统性能的关键技术之一。Ehcache 作为 Java 生态中成熟的内存缓存框架&#xff0c;其 3.x 版本在性能、功能和易用性上均有显著提升。本文将详细介绍…...

【Flask全栈开发指南】从零构建企业级Web应用

目录 &#x1f31f; 前言&#x1f3d7;️ 技术背景与价值&#x1f6a7; 当前技术痛点&#x1f6e0;️ 解决方案概述&#x1f465; 目标读者说明 &#x1f50d; 一、技术原理剖析&#x1f4ca; 核心概念图解&#x1f4a1; 核心作用讲解&#x1f9e9; 关键技术模块说明⚖️ 技术选…...

使用docker安装clickhouse集群

1、简介 clickhouse 作为大数据场景中&#xff0c;实现快速检索的常用列式存储数据库&#xff0c;采用物理机部署&#xff0c;会在数据量大的场景中&#xff0c;物理机器存储达到阈值需要扩容&#xff0c;会带来比较大的问题&#xff0c;因此&#xff0c;使用docker部署clickho…...

佰力博科技准静态d33测试的注意事项

准静态d33测试是测量压电材料纵向压电应变常数的重要方法&#xff0c;其注意事项包括以下几个方面&#xff1a; 选择合适的测量设备 准静态d33测试需要使用专用的压电测试仪&#xff0c;如佰力博PEAI1000高精度压电分析仪、准静态d33测量仪或PCA1000压电陶瓷综合参数分析仪。这…...

iOS设备投屏Archlinux

我的iphone手机屏太小&#xff0c;我想把手机投到archlinux电脑上看。与是我就想找一个免费的软件。 UxPlay https://github.com/FDH2/UxPlay GPLv3&#xff0c;开源。原来只支持 AirPlay Mirror 协议&#xff0c;现在新增 支持来自 AirPlay 的纯音频 &#xff08;Apple Los…...

VUE_UI组件的二次封装

属性和事件 <template><div><myInput a"1" b"2" c"3" change"() > {}"></myInput></div> </template>myInput.vue <template><div><el-input v-bind"$attrs">&…...

算法·KMP

KMP算法的思想 想要一次性遍历模板串 s 1 s_1 s1​&#xff0c;不在匹配失败时重新开始遍历子串 s 2 s_2 s2​&#xff0c;实现模板串不回退的效果。 KMP数组的理解 KMP数组有两种定义&#xff1a;一是匹配失败后&#xff0c;子串 s 2 s_2 s2​应该回退的位置&#xff0c;一种…...

如何正确地写出单例模式

如何正确地写出单例模式 | Jarks Blog 枚举方式&#xff1a; public class SingletonObject {private SingletonObject() {}/*** 枚举类型是线程安全的&#xff0c;并且只会装载一次*/private enum Singleton {INSTANCE;private final SingletonObject instance;Singleton() {…...

Mac M系列 安装 jadx-gui

安装 Homebrew在终端中执行以下命令&#xff08;需管理员密码&#xff09;&#xff1a; 安装 Homebrew&#xff08;官方源&#xff09; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"国内用户可用镜像源加速&…...

水滴Android面经及参考答案

目录 static 关键字有什么作用,它修饰的方法可以使用非静态的成员变量吗? Java 中创建线程有几种方式? wait 和 sleep 的区别,如何打断 sleep? Java 垃圾回收的目的是什么,垃圾回收机制是怎样的? Java 的垃圾回收(GC)机制是如何工作的? 请解释 Java 内存模型(J…...

《猜拳游戏》

综合案例《猜拳游戏》 需求&#xff1a; 本游戏是一款单机游戏&#xff0c;人机交互 规则&#xff1a; 需要双方出拳&#xff1a;石头、剪刀、布 赢&#xff1a; 石头 → 剪刀剪刀 → 布布 → 石头 平&#xff1a; 两边出拳相等 输&#xff1a; … 实现&#xff1a; 选择对…...

Mysql索引优化

一、索引 1. 主键索引&#xff08;Primary Index&#xff09; 定义 主键索引是一种特殊的唯一索引&#xff0c;用于唯一标识表中的每一行数据。每个表最多有一个主键索引&#xff0c;且索引列不允许为 NULL&#xff0c;自动添加 UNIQUE 和 NOT NULL 约束。 特点&#xff1a;…...

Postgresql与openguass对比

背景介绍 PostgreSQL是世界上最先进的开源关系型数据库&#xff0c;以其强大的功能、稳定性和可扩展性著称。而openGauss是华为公司于2020年6月30日开源的数据库系统&#xff0c;内核基于PostgreSQL 9.2.4版本演进而来。值得注意的是&#xff0c;PostgreSQL 11.3版本拥有290个数…...

线程的概念和控制

自从20世纪60年代提出了进程的概念之后&#xff0c;操作系统一直以进程作为独立运行的基本单位。到了20世纪80年代&#xff0c;人们又提出了比进程更小的、能独立运行的基本单位——线程。提出线程的目的是试图提高系统并发执行的程度&#xff0c;从而进一步提高系统的吞吐量。…...

如何配置activemq,支持使用wss协议连接。

1、到阿里云申请一个证书&#xff0c;通过后下载jks证书。 2、配置activemq&#xff1a; 打开activemq安装目录中“conf/activemq.xml”&#xff0c;增加以下记录&#xff1a; <transportConnectors> <transportConnector name"wss" uri"…...

【言语】刷题3

front&#xff1a;刷题2 题干 超限效应介绍冰桶挑战要避免超限效应 B明星的作用只是病痛挑战的一个因素&#xff0c;把握程度才是重点&#xff0c;不是强化弱化明星作用&#xff0c;排除 A虽没有超限效应&#xff0c;但是唯一的点出“冰桶效应”的选项&#xff0c;“作秀之嫌…...

关于 ast: Babel AST 全类型总览

AST 的每个节点都有一个 type 字段&#xff0c;用来标识它的语法类型。 程序结构节点 type说明示例Program整个程序的根节点整体代码结构BlockStatement大括号代码块 {}if、function、for 等的主体ExpressionStatement表达式语句&#xff08;如 a b;&#xff09;EmptyStatem…...

STM32 内存

根据STM32的存储器映射机制&#xff0c;其32位地址总线可访问4GB逻辑地址空间&#xff08;0x00000000-0xFFFFFFFF&#xff09;&#xff0c;但实际物理地址分配由芯片厂商定义。以下是STM32完整的地址映射结构及关键区域说明&#xff1a; 一、地址空间整体架构 4GB地址空间划分…...

图片的require问题

问题 <template><!--第一种方式--><img :src"require(/assets/${imageName})" style"width:100px;" /><!--第二种方式--><img :src"require(imageUrl)" style"width:100px;" /> </template><…...

关于 js:8. 反调试与混淆识别

一、常见反调试手段识别 1. debugger 死循环&#xff08;阻塞调试器&#xff09; 样例代码&#xff1a; while (true) {debugger; }原理&#xff1a; 每次执行到 debugger 语句&#xff0c;如果 DevTools 打开&#xff0c;将自动触发断点。 如果在死循环中&#xff0c;调试…...

深度Q网络(DQN)的基本概念

一、深度Q网络(DQN)的基本概念 深度Q网络(Deep Q-Network,DQN)是将强化学习中的Q学习(Q-Learning)与深度学习相结合的算法,由DeepMind在2013年提出,并在2015年发表于《Nature》杂志。它通过神经网络近似动作价值函数(Q函数),解决传统Q学习在高维状态空间下的计算难…...