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

[学习]RTKLib详解:convkml.c、convrnx.c与geoid.c


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

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


文章目录

    • Part A: convkml.c 文件解析
      • 一、文件整体说明
      • 二、执行流程与函数调用关系
      • 三、主要函数说明
        • 3.1 `main`
        • 3.2 `readcmdline`
        • 3.3 `readobsfile`
        • 3.4 `convkml`
        • 3.5 `writekmlhead`
        • 3.6 `writekmlbody`
        • 3.7 `writekmltail`
      • 四、关键算法数学原理与推导
        • 地理坐标系到 ECEF 的转换
    • Part B: convrnx.c 文件解析
      • 一、文件整体说明
      • 二、执行流程与函数调用关系
      • 三、主要函数说明
        • 3.1 `main`
        • 3.2 `readcmdline`
        • 3.3 `initrnx`
        • 3.4 `openfiles`
        • 3.5 `convertrnx`
        • 3.6 `readrawdata`
        • 3.7 `outputrnx`
        • 3.8 `closefiles`
      • 四、关键算法数学原理与推导
        • 时间系统转换
    • Part C: geoid.c 文件解析
      • 一、文件整体说明
      • 二、执行流程与函数调用关系
      • 三、主要函数说明
        • 3.1 `geoid_hgt`
        • 3.2 `load_geoid`
        • 3.3 `interp_geoid`
        • 3.4 `bilin_interp`
      • 四、关键算法数学原理与推导
        • 双线性插值


Part A: convkml.c 文件解析

一、文件整体说明

convkml.c 是 RTKLIB 中用于将 GNSS 数据转换为 KML(Keyhole Markup Language)格式的工具,便于在 Google Earth 等地理可视化软件中展示轨迹、观测点等信息。该文件主要实现了从 RINEX 或 RTKLIB 内部数据结构到 KML 标记语言的转换。

主要功能:

  • 将 GNSS 观测数据转换为 KML 格式。
  • 支持多种显示样式,如路径、标记点、高度剖面图等。
  • 可选输出模式包括静态点、动态路径等。

主要特色:

  • 支持多频段和多系统数据。
  • 提供灵活的样式配置选项。
  • 可导出不同时间分辨率的数据点。

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

程序执行流程如下:

  1. 初始化参数设置。
  2. 读取输入数据(如 RINEX 文件)。
  3. 处理数据并提取位置信息。
  4. 生成 KML 文件内容。
  5. 写入 KML 文件并关闭资源。

函数调用关系如下所示:

main
readcmdline
initopt
readobsfile
convkml
writekmlhead
writekmlbody
writekmldata
writekmltail

其中:

  • readcmdline: 解析命令行参数。
  • initopt: 初始化输出选项。
  • readobsfile: 读取观测文件(RINEX等)。
  • convkml: 主要转换逻辑入口。
  • writekml* 函数负责生成 KML 的各个部分。

三、主要函数说明

3.1 main
int main(int argc, char *argv[])

功能:
主函数,负责接收命令行参数并调度各模块完成 KML 转换。

输入参数:

  • argc: 命令行参数个数。
  • argv[]: 命令行参数数组。

输出参数:

  • 返回状态码(0 表示成功,非零表示错误)。

3.2 readcmdline
void readcmdline(int argc, char *argv[], opt_t *opt)

功能:
解析命令行参数并填充配置结构体 opt

输入参数:

  • argc, argv[]: 命令行参数。
  • opt: 输出参数,包含所有配置选项。

3.3 readobsfile
int readobsfile(const char *file, obs_t *obs, nav_t *nav, opt_t *opt)

功能:
读取观测文件(如 RINEX),并将数据存储到 obsnav 结构体中。

输入参数:

  • file: 输入文件路径。
  • obs: 存储观测数据的结构体指针。
  • nav: 存储导航数据的结构体指针。
  • opt: 配置选项。

返回值:

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

3.4 convkml
int convkml(FILE *fp, const obs_t *obs, const nav_t *nav, const opt_t *opt)

功能:
核心转换函数,将 GNSS 数据转换为 KML 格式并写入文件。

输入参数:

  • fp: 文件指针。
  • obs, nav, opt: 输入数据与配置。

返回值:

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

3.5 writekmlhead
void writekmlhead(FILE *fp, const opt_t *opt)

功能:
写入 KML 文件头部信息,包括文档声明、命名空间等。

输入参数:

  • fp: 文件指针。
  • opt: 配置信息。

3.6 writekmlbody
void writekmlbody(FILE *fp, const obs_t *obs, const nav_t *nav, const opt_t *opt)

功能:
写入 KML 主体内容,包括路径、标记点等。

输入参数:

  • fp, obs, nav, opt: 同上。

3.7 writekmltail
void writekmltail(FILE *fp)

功能:
写入 KML 文件尾部标签,结束文档。

输入参数:

  • fp: 文件指针。

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

地理坐标系到 ECEF 的转换

GNSS 接收机通常输出经纬度和高度(LLH),但 KML 使用的是地心坐标系(ECEF)。因此需要进行 LLH 到 ECEF 的转换。

公式如下:

N = a 1 − e 2 sin ⁡ 2 ( ϕ ) x = ( N + h ) cos ⁡ ( ϕ ) cos ⁡ ( λ ) y = ( N + h ) cos ⁡ ( ϕ ) sin ⁡ ( λ ) z = [ N ( 1 − e 2 ) + h ] sin ⁡ ( ϕ ) \begin{aligned} &N = \frac{a}{\sqrt{1 - e^2 \sin^2(\phi)}} \\ &x = (N + h)\cos(\phi)\cos(\lambda) \\ &y = (N + h)\cos(\phi)\sin(\lambda) \\ &z = \left[N(1 - e^2) + h\right]\sin(\phi) \end{aligned} N=1e2sin2(ϕ) ax=(N+h)cos(ϕ)cos(λ)y=(N+h)cos(ϕ)sin(λ)z=[N(1e2)+h]sin(ϕ)

其中:

  • ϕ \phi ϕ: 纬度(弧度)
  • λ \lambda λ: 经度(弧度)
  • h h h: 椭球高
  • a a a: WGS84 长半轴
  • e 2 = 1 − b 2 a 2 e^2 = 1 - \frac{b^2}{a^2} e2=1a2b2: 第一偏心率平方

这个转换是绘制轨迹的基础。


Part B: convrnx.c 文件解析

一、文件整体说明

convrnx.c 是 RTKLIB 中用于将各种原始观测数据(如 BINEX、UBX、RTCM 等)转换为 RINEX 格式的工具。RINEX 是 GNSS 数据的标准格式,广泛用于后处理和分析。

主要功能:

  • 多种原始数据格式转 RINEX。
  • 支持多频段、多系统。
  • 自动识别输入数据格式。

主要特色:

  • 支持自动探测输入数据类型。
  • 提供灵活的时间过滤与输出选项。
  • 可以输出压缩的 RINEX(.crx/.gz)。

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

程序执行流程如下:

  1. 解析命令行参数。
  2. 打开输入/输出文件。
  3. 读取并解析原始数据流。
  4. 转换为 RINEX 格式并写入文件。
  5. 清理资源并退出。

函数调用关系如下:

main
readcmdline
initrnx
openfiles
convertrnx
readrawdata
outputrnx
closefiles

三、主要函数说明

3.1 main
int main(int argc, char *argv[])

功能:
主函数,解析命令行参数并控制整个转换流程。

输入输出:

  • 同前文。

3.2 readcmdline
void readcmdline(int argc, char *argv[], rnxopt_t *opt)

功能:
解析命令行参数并填充 rnxopt_t 结构体。

输入输出:

  • 同前文。

3.3 initrnx
int initrnx(rnxopt_t *opt)

功能:
根据用户配置初始化 RINEX 转换参数。

输入参数:

  • opt: 转换配置结构体。

3.4 openfiles
int openfiles(const char *infile, const char *outfile, FILE **fpin, FILE **fpout, rnxopt_t *opt)

功能:
打开输入和输出文件,支持压缩格式。

输入参数:

  • infile, outfile: 文件路径。
  • fpin, fpout: 文件指针地址。
  • opt: 配置。

3.5 convertrnx
int convertrnx(FILE *fpin, FILE *fpout, rnxopt_t *opt)

功能:
主转换循环,读取原始数据并写入 RINEX。

输入输出:

  • 同上。

3.6 readrawdata
int readrawdata(FILE *fp, unsigned char *buff, int nmax, int format, raw_t *raw)

功能:
读取原始观测数据并解析为内部结构。

输入参数:

  • fp: 输入文件指针。
  • buff: 缓冲区。
  • nmax: 最大读取长度。
  • format: 数据格式(如 RTCM3, UBX 等)。
  • raw: 输出解析后的数据。

返回值:

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

3.7 outputrnx
int outputrnx(FILE *fp, const raw_t *raw, const rnxopt_t *opt)

功能:
将解析后的数据按 RINEX 格式写入输出文件。

输入参数:

  • fp, raw, opt: 同上。

3.8 closefiles
void closefiles(FILE *fpin, FILE *fpout)

功能:
关闭输入输出文件句柄。


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

时间系统转换

原始数据中的时间戳可能使用 GPS 时间、UTC、本地时间等,而 RINEX 要求使用 GPS 时间或 UTC。因此需要进行时间系统转换。

GPS 时间与 UTC 的关系为:

t G P S = t U T C + Δ t l e a p t_{GPS} = t_{UTC} + \Delta t_{leap} tGPS=tUTC+Δtleap

其中 Δ t l e a p \Delta t_{leap} Δtleap 是闰秒修正值,需通过星历或头文件获取。


Part C: geoid.c 文件解析

一、文件整体说明

geoid.c 实现了大地高与正常高的相互转换,依赖于大地水准面模型(如 EGM96、EGM2008)。它提供了基于插值方法的大地高与正高之间的转换功能。

主要功能:

  • 计算某一点的大地水准面高(N)。
  • 支持多种大地水准面模型。
  • 提供双线性插值功能。

主要特色:

  • 支持网格化模型数据。
  • 可扩展性强,易于添加新模型。
  • 高效的插值算法。

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

程序执行流程如下:

  1. 加载大地水准面模型文件。
  2. 对给定的地理坐标进行插值计算。
  3. 输出大地水准面高。

函数调用关系如下:

geoid_hgt
load_geoid
interp_geoid
bilin_interp

三、主要函数说明

3.1 geoid_hgt
double geoid_hgt(double lat, double lon, const char *model)

功能:
对外接口,输入经纬度和模型名,返回大地水准面高。

输入参数:

  • lat, lon: 地理纬度和经度(十进制度)。
  • model: 模型名称(如 “egm96_15”)。

返回值:

  • 大地水准面高 N(米)。

3.2 load_geoid
int load_geoid(const char *model, geoid_t *geoid)

功能:
加载指定模型的网格数据到内存。

输入参数:

  • model: 模型名。
  • geoid: 存储模型数据的结构体。

返回值:

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

3.3 interp_geoid
double interp_geoid(double lat, double lon, const geoid_t *geoid)

功能:
调用双线性插值函数计算某点的大地水准面高。

输入参数:

  • lat, lon: 插值点坐标。
  • geoid: 模型数据结构体。

返回值:

  • 插值结果(米)。

3.4 bilin_interp
double bilin_interp(double x, double y, double *v, int nx, int ny)

功能:
实现双线性插值算法。

输入参数:

  • x, y: 插值点坐标。
  • v: 网格数据数组。
  • nx, ny: 网格尺寸。

返回值:

  • 插值结果。

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

双线性插值

设四个角点分别为:

  • f ( x 1 , y 1 ) f(x_1, y_1) f(x1,y1)
  • f ( x 2 , y 1 ) f(x_2, y_1) f(x2,y1)
  • f ( x 1 , y 2 ) f(x_1, y_2) f(x1,y2)
  • f ( x 2 , y 2 ) f(x_2, y_2) f(x2,y2)

目标点 ( x , y ) (x, y) (x,y) 在矩形区域内,则插值公式为:

f ( x , y ) = ( x 2 − x ) ( y 2 − y ) Δ x Δ y f ( x 1 , y 1 ) + ( x − x 1 ) ( y 2 − y ) Δ x Δ y f ( x 2 , y 1 ) + ( x 2 − x ) ( y − y 1 ) Δ x Δ y f ( x 1 , y 2 ) + ( x − x 1 ) ( y − y 1 ) Δ x Δ y f ( x 2 , y 2 ) f(x,y) = \frac{(x_2 - x)(y_2 - y)}{\Delta x \Delta y} f(x_1,y_1) + \frac{(x - x_1)(y_2 - y)}{\Delta x \Delta y} f(x_2,y_1) + \frac{(x_2 - x)(y - y_1)}{\Delta x \Delta y} f(x_1,y_2) + \frac{(x - x_1)(y - y_1)}{\Delta x \Delta y} f(x_2,y_2) f(x,y)=ΔxΔy(x2x)(y2y)f(x1,y1)+ΔxΔy(xx1)(y2y)f(x2,y1)+ΔxΔy(x2x)(yy1)f(x1,y2)+ΔxΔy(xx1)(yy1)f(x2,y2)

其中 Δ x = x 2 − x 1 \Delta x = x_2 - x_1 Δx=x2x1, Δ y = y 2 − y 1 \Delta y = y_2 - y_1 Δy=y2y1

此方法用于大地水准面模型的离散数据插值。


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


相关文章:

[学习]RTKLib详解:convkml.c、convrnx.c与geoid.c

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

【ajax基础】

提示:文章为 学习过程中的记录实践笔记。有问题欢迎指正。 文章目录 前言一、实现步骤二、完整示例三、封装总结 前言 AJAX 不是编程语言,是一种从网页访问web服务器的技术。 可以实现不刷新页面更新网页 在页面加载后从服务器请求/获取数据 在后台向服…...

Nodejs核心机制

文章目录 前言 前言 结合 Node.js 的核心机制进行说明: 解释事件循环的各个阶段。 答案 Node.js 事件循环分为 6 个阶段,按顺序执行: Timers:执行 setTimeout 和 setInterval 的回调。 Pending I/O Callbacks:处理系…...

Kubernetes 集群部署应用

部署 Nginx 应用 命令行的方式 1. 创建 deployment 控制器的 pod # --imagenginx:这个会从 docker.io 中拉取,这个网站拉不下来 # kubectl create deployment mynginx --imagenginx# 使用国内镜像源拉取 kubectl create deployment mynginx --imaged…...

【Linux篇】高并发编程终极指南:线程池优化、单例模式陷阱与死锁避坑实战

深入理解线程池设计与应用:高效并发编程的秘密 一. 线程池1.1 什么是线程池1.2 线程池的优点1.3 线程池的应用场景 二. 线程池设计三. 单例模式3.1 什么是单例模式3.2 单例模式特点3.3 实现单例模式方法3.3.1 饿汉实现⽅式3.3.2 懒汉实现⽅式 四. 线程安全和重入问题…...

学习和测试WebApi项目限制客户端ip访问接口(基于中间件)

WebApi项目需要限制仅允许有限的客户端访问接口,百度相关内容,网上很多介绍WebApi接口IP限流的文章,稍微调整就能用于限制IP访问,微软官网中也有文章介绍客户端 IP 安全列表(参考文献1),可以通过…...

闲鱼智能客服机器人-实现闲鱼平台7×24小时自动化值守

专为闲鱼平台打造的AI值守解决方案,实现闲鱼平台724小时自动化值守,支持多专家协同决策、智能议价和上下文感知对话。 🌟 核心特性 智能对话引擎 功能模块技术实现关键特性上下文感知会话历史存储轻量级对话记忆管理,完整对话历…...

Apache Ranger 2.2.0 编译

安装包下载: https://ranger.apache.org/download.html 编译环境: Linux centos7jdk 1.8maven 3.9.6gitpython 3 git 安装 yum -y install gitpython3安装 yum install epel-release -y yum install python3 python3-devel -y批量安装开发工具套件 …...

实战演练:用 AWS Lambda 和 API Gateway 构建你的第一个 Serverless API

实战演练:用 AWS Lambda 和 API Gateway 构建你的第一个 Serverless API 理论千遍,不如动手一遍!在前面几篇文章中,我们了解了 Serverless 的概念、FaaS 的核心原理以及 BaaS 的重要作用。现在,是时候把这些知识运用起来,亲手构建一个简单但完整的 Serverless 应用了。 …...

鱼眼相机生成-BEV鸟瞰图-入门教程

目录 原理介绍 1. ‌IPM与BEV转换的核心原理‌ 2. ‌尺度信息的来源‌ 3. ‌尺度信息的准确性限制‌ 4. ‌实际应用中的处理方法‌ 代码实现: 360 BEV环视拼接算法 一、核心算法流程‌ 三、实际应用挑战与优化‌ 四、开源实现参考 原理介绍 1. ‌IPM与BEV转换的核心…...

设计模式简述(十八)享元模式

享元模式 描述基本组件使用 描述 当内存中存在大量类似的对象时,可以考虑使用享元模式减少整体内存占用。 可以将相同的部分和不同的部分进行拆分,以达到多个对象共享相同部分内存的目的。 基本组件 通常享元对象通过共享的属性映射一个享元对象。 公…...

Google语法整理

以下是从整理出的 Google 语法: site:指定域名,如 “apache site:bbs.xuegod.cn”,可查询网站的收录情况 。 inurl:限定在 url 中搜索,如 “inurl:qq.txt”,可搜索 url 中包含特定内容的页面&a…...

【每日一题 | 2025年5.5 ~ 5.11】搜索相关题

个人主页:Guiat 归属专栏:每日一题 文章目录 1. 【5.5】P3717 [AHOI2017初中组] cover2. 【5.6】P1897 电梯里的尴尬3. 【5.7】P2689 东南西北4. 【5.8】P1145 约瑟夫5. 【5.9】P1088 [NOIP 2004 普及组] 火星人6. 【5.10】P1164 小A点菜7. 【5.11】P101…...

【MySQL】页结构详解:页的大小、分类、头尾信息、数据行、查询、记录及数据页的完整结构

📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...

C++ stl中的priority_queue的相关函数用法

文章目录 priority_queuepriority_queue定义方式priority_queue相关函数 priority_queue priority_queue 称为 优先级队列,默认使用vector作为底层存储数据的容器,因此priority_queue就是堆,所有需要用到堆的位置,都可以考虑使用…...

软件架构师知识点总结

一、综合知识 软件架构师综合知识总结-CSDN博客 二、案例 软件架构师案例知识点总结-CSDN博客 三、论文 1、题目类型:八大架构;系统开发(开发方法/模型、需求分析、测试等);系统可靠性、安全性、容错技术等&#…...

MySQL数据库常见面试题之三大范式

写在前面 此文章大部分不会引用最原始的概念,采用说人话的方式。 面试题:三大范式是什么?目的是什么?必须遵循吗? 假设有一张表(学号,姓名,课程,老师) 是…...

Scrapy 核心组件解析:Request Response 的深度应用与实战

Scrapy 是 Python 生态中最强大的爬虫框架之一,其核心组件 Request 和 Response 承担着数据抓取与处理的关键任务。本文深入解析 Scrapy 2.13.0 中 Request 和 Response 的高级用法,涵盖参数配置、回调函数、错误处理、子类扩展等,并结合 综合…...

mybatis执行sql过程

一、配置加载阶段​​ ​​1. 读取全局配置(mybatis-config.xml)​​ ​​入口类​​:SqlSessionFactoryBuilder.build()​​关键组件​​: XMLConfigBuilder:解析全局配置文件。Configuration:存储所有配…...

OceanBase 4.3版本向量数据库部署

OceanBase 4.3版本向量数据库部署 安装包准备最低资源配置重要的准备事项服务器配置操作系统内核参数BIOS设置磁盘挂载网卡设置 部署OAT工具初始化OBServer服务器使用oatcli部署OB集群安装OceanBase软件初始化OceanBase集群 启用向量检索功能 OceanBase最新的V4.3版本开始支持向…...

LeetCode 941. 有效的山脉数组 java题解

https://leetcode.cn/problems/valid-mountain-array/description/ 双指针 class Solution {public boolean validMountainArray(int[] arr) {int lenarr.length;if(len<3) return false;int left0,rightlen-1;while(left1<len&&arr[left]<arr[left1]){left…...

基于Java和高德开放平台的WebAPI集成实践-以搜索POI2.0为例

目录 前言 一、高德搜索API简介 1、高德开放平台 2、搜索功能介绍 3、部分API介绍 二、Uniapi集成高德API 1、API集成流程 2、访问接口的定义 3、业务调用集成 三、常见问题与优化 四、总结 前言 在当今数字化时代&#xff0c;地理信息系统&#xff08;GIS&#xff…...

Docker拉取ubuntu22.04镜像使用ROS2 humble及仿真工具可视化进行导航

创建Ubuntu22.04 容器 docker pull ubuntu:22.04 #下载22.04镜像 docker images #查看已下载镜像 #根据镜像创建容器 sudo docker run -it -v /home/lab118/BD_ICL/tools_BD/cailib_data:/calib_data -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY:0 --nethost -e GDK_SCAL…...

PXE安装Ubuntu系统

文章目录 1. 服务器挂载Ubuntu镜像2. 修改dhcp配置文件3. 修改tftp配置文件4.复制网络驱动文件和其他配置文件5. http目录下配置文件6. 踩坑记录6.1 Failed to load ldlinux.c326.2 no space left on device6.3 为啥用pxe安装系统时&#xff0c;客户端需要较大的内存&#xff1…...

外网访问内网海康威视监控视频的方案:WebRTC + Coturn 搭建

外网访问内网海康威视监控视频的方案&#xff1a;WebRTC Coturn 需求背景 在仓库中有海康威视的监控摄像头&#xff0c;内网中是可以直接访问到监控摄像的画面&#xff0c;由于项目的需求&#xff0c;需要在外网中也能看到监控画面。 实现这个功能的意义在于远程操控设备的…...

缓存局部性保留

在操作系统中&#xff0c;线程切换相比进程切换更轻量级的关键原因之一是 缓存&#xff08;Cache&#xff09;的有效性&#xff0c;尤其是对 CPU 缓存&#xff08;如 L1/L2/L3&#xff09;和 TLB&#xff08;Translation Lookaside Buffer&#xff09;的影响。以下从缓存角度详…...

MyBatis源码解读5(3.1、缓存简介)

3.1、简介 ​ 我们需要记住一句话&#xff0c;程序与数据库之间的交互是性能瓶颈的关键&#xff0c;所以我们在做优化的时候&#xff0c;数据库的优化要做&#xff0c;但是优先级是最低的&#xff0c;比它优先级高的是方面是程序与数据库之间的交互&#xff0c;先从宏观上解决…...

【MySQL】行结构详解:InnoDb支持格式、如何存储、头信息区域、Null列表、变长字段以及与其他格式的对比

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

Docker 部署Nexus仓库 搭建Maven私服仓库 公司内部仓库

介绍 Nexus 是广泛使用的仓库管理工具&#xff0c;常用于管理 Java 构件&#xff08;如 JAR、WAR、EAR 文件&#xff09;。它可以作为一个本地的 Maven 仓库&#xff0c;用来存储和管理项目的依赖包和构建产物。支持多种仓库类型&#xff0c;能够帮助开发团队更高效地管理构件…...

PostgreSQL 的 pg_column_size 函数

PostgreSQL 的 pg_column_size 函数 pg_column_size 是 PostgreSQL 提供的一个系统函数&#xff0c;用于返回特定列或值在数据库内部存储时所占用的字节数。这个函数对于数据库优化、存储空间分析和性能调优非常有用。 函数语法 pg_column_size(anyelement)参数说明 anyele…...

【前端】【HTML】【总复习】一万六千字详解HTML 知识体系

🌐 HTML 知识体系 一、HTML 基础入门 1. HTML 简介与作用 HTML(HyperText Markup Language,超文本标记语言)是构建网页的基础语言。它的核心作用是: 定义网页内容的结构(标题、段落、图片、表格等)提供语义化标签,帮助搜索引擎与辅助设备理解页面内容配合 CSS 实现…...

支持向量机与逻辑回归的区别及 SVM 在图像分类中的应用

支持向量机与逻辑回归的区别及 SVM 在图像分类中的应用 在机器学习的多元算法领域中&#xff0c;支持向量机&#xff08;SVM&#xff09;和逻辑回归&#xff08;LR&#xff09;作为两种经典的监督学习算法&#xff0c;被广泛应用于各类分类任务。尽管它们有着相似的目标&#…...

MySQL基础面试题集锦

MySQL基础面试题集锦 一、SQL基础语法 1. 数据库和表操作 -- 创建数据库 CREATE DATABASE test_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;-- 创建表 CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL UNIQUE,email VARCH…...

【网络分析工具】网络工具wireshark、TCPdump、iperf使用详解

这里写目录标题 1. wireshark1.1. 过滤包1.2. 常见分析 2. tcpdump3. iperf 1. wireshark **ip.dst eq 10.0.0.21** 是用于网络流量分析工具&#xff08;例如 Wireshark 或 tcpdump&#xff09;的过滤器表达式。 它的作用是筛选出所有目标IP地址为 10.0.0.21 的数据包 IP.add…...

【漫话机器学习系列】253.超平面(Hyperplane)

超平面&#xff08;Hyperplane&#xff09;详解&#xff1a;从二维到高维空间 在机器学习、深度学习、支持向量机&#xff08;SVM&#xff09;等领域中&#xff0c;经常会遇到一个重要的数学概念——超平面&#xff08;Hyperplane&#xff09;。但超平面究竟是什么&#xff1f…...

#微调重排序模型:Reranking从入门到实践

&#x1f9e0; 向所有学习者致敬&#xff01; “学习不是装满一桶水&#xff0c;而是点燃一把火。” —— 叶芝 我的博客主页&#xff1a; https://lizheng.blog.csdn.net &#x1f310; 欢迎点击加入AI人工智能社区&#xff01; &#x1f680; 让我们一起努力&#xff0c;共创…...

vector 常见用法及模拟

文章目录 1. vector的介绍与使用1.1 vector的构造1.2 vector iterator 的使用1.3 有关大小和容量的操作1.4 vector 增删查改1.5 vector 迭代器失效问题&#xff08;重点&#xff09;1.6 vector 中二维数组的使用 2. vector 的模拟实现2.1 拷贝构造和赋值重载的现代写法2.2 memc…...

可变参数模板

引入&#xff1a;为什么会有可变参数模板&#xff1f; 在C98/03中&#xff0c;也就是我们之前学的类模版和函数模版中只能含固定数量的模版参数&#xff0c;而C11中新增的可变参数模板能够不固定数量的模版参数&#xff01; 一&#xff1a;可变参数模板的格式 // Args是一个模板…...

缓存(5):常见 缓存数据淘汰算法/缓存清空策略

主要的三种缓存数据淘汰算法 FIFO(first in first out)&#xff1a;先进先出策略&#xff0c;最先进入缓存的数据在缓存空间不够的情况下&#xff08;超出最大元素限制&#xff09;会被优先被清除掉&#xff0c;以腾出新的空间接受新的数据。策略算法主要比较缓存元素的创建时…...

深入了解linux系统—— 自定义shell

shell的原理 我们知道&#xff0c;我们程序启动时创建的进程&#xff0c;它的父进程都是bash也就是shell命令行解释器&#xff1b; 那bash都做了哪些工作呢&#xff1f; 根据已有的知识&#xff0c;我们可以简单理解为&#xff1a; 输出命令行提示符获取并解析我们输入的指令…...

【通讯录教程】如何将号码快速导入手机通讯录,支持苹果和安卓手机,一次性导入大量号码进入手机通讯录,基于WPF的解决方案

以下是一个基于WPF的解决方案&#xff0c;用于将大量号码快速导入苹果和安卓手机通讯录&#xff1a; 项目应用场景 ​​企业员工通讯录批量导入​​&#xff1a;HR需要将数百名员工的联系方式快速导入公司手机​​客户关系管理​​&#xff1a;销售人员需要将大量客户信息导入…...

Git初始化相关配置

Git配置 在Git安装完成后&#xff0c;windows操作系统上会多出一个Git Bash的软件&#xff0c;如果是linux或者是macOS&#xff0c;那么直接打开终端&#xff0c;在终端中敲击命令即可 # 检查git版本 git -v # 或 git --version在使用git时&#xff0c;需要配置一下用户名和邮…...

n8n中订阅MQTT数据

第一步&#xff1a;创建mqtt登录证证 第二步&#xff1a;创建mqtt trigger组件&#xff0c;并配置凭证和订阅主题 第三步&#xff1a;创建Code节点&#xff0c;编写格式转换代码 第四步&#xff1a;创建转发MQTT节点&#xff0c;并配置MQTT凭证 第五步&#xff1a;启用工作流 整…...

Docker、ECS 与 K8s 网段冲突:解决跨服务通信中的路由问题

&#x1f9e9; 问题背景 在阿里云的项目中&#xff0c;在项目初期搭建过程中遇到了一个让人头疼的网络冲突问题&#xff1a;同一个 VPC 中的 Docker 容器和 Kubernetes 集群由于使用相同的网段&#xff0c;导致k8s pod连接ECS容器之间的网络连接失败。 背景环境&#xff1a; …...

《智能网联汽车 自动驾驶系统设计运行条件》 GB/T 45312-2025——解读

目录 1. 标准概述 2. 核心概念 3. 标准核心内容 3.1 一般要求 3.2 ODC基础元素层级 3.3 ODC元素具体要求 3.4 附录A&#xff08;ODC示例&#xff09; 4. 技术挑战与实施建议 5. 标准意义 原文链接&#xff1a;国家标准|GB/T 45312-2025 &#xff08;发布&#xff1a;2…...

AARRR用户增长模型(海盗指标)详解

目录 一、模型起源与概述二、五大阶段详解1. 获取&#xff08;Acquisition&#xff09;1.1 定义1.2 关键指标 2. 激活&#xff08;Activation&#xff09;2.1 定义2.2 关键指标 3. 留存&#xff08;Retention&#xff09;3.1 定义3.2 关键指标3.3 提升留存手段案例3.4 互联网留…...

CSS专题之自定义属性

前言 石匠敲击石头的第 12 次 CSS 自定义属性是现代 CSS 的一个强大特性&#xff0c;可以说是前端开发需知、必会的知识点&#xff0c;本篇文章就来好好梳理一下&#xff0c;如果哪里写的有问题欢迎指出。 什么是 CSS 自定义属性 CSS 自定义属性英文全称是 CSS Custom Proper…...

JVM——Java字节码基础

引入 Java字节码&#xff08;Java Bytecode&#xff09;是Java技术体系的核心枢纽&#xff0c;所有Java源码经过编译器处理后&#xff0c;最终都会转化为.class文件中的字节码指令。这些指令不依赖于具体的硬件架构和操作系统&#xff0c;而是由Java虚拟机&#xff08;JVM&…...

【React中useRef钩子详解】

一、useRef的核心特性 useRef是React提供的Hook,用于在函数组件中创建可变的持久化引用,具有以下核心特性: 持久化存储 返回的ref对象在组件整个生命周期内保持不变,即使组件重新渲染,current属性的值也不会丢失。无触发渲染 修改ref.current的值不会导致组件重新渲染,适…...

《AI大模型应知应会100篇》第58篇:Semantic Kernel:微软的大模型应用框架

第58篇&#xff1a;Semantic Kernel&#xff1a;微软的大模型应用框架 ——用C#和Python构建下一代AI应用的统一编程范式 &#x1f4cc; 摘要 随着大模型&#xff08;LLM&#xff09;技术的快速发展&#xff0c;如何将这些强大的语言模型与传统代码系统进行无缝集成&#xff…...