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

[学习]RTKLib详解:ephemeris.c与rinex.c

文章目录

  • RTKLib详解:ephemeris.c与rinex.c
    • PART A: `ephemeris.c`
      • 一、代码整体作用与工作流程分析
        • 1.1 整体作用
        • 1.2 工作流程
      • 二、核心函数说明
        • 2.1 `alm2pos` (Almanac to Position)
        • 2.2 `eph2clk` (Ephemeris to Clock)
        • 2.3 `eph2pos` (Ephemeris to Position)
        • 2.4 `geph2pos` (GLONASS Ephemeris)
        • 2.5 `satpos_ssr` (SSR校正)
      • 三、核心算法数学推导
        • 3.1 开普勒方程求解
        • 3.2 坐标系转换
        • 3.3 SSR轨道校正
      • 四、完整函数调用关系
      • 五、误差模型
        • 5.1 URA转换模型
        • 5.2 SSR校正限幅
        • 5.3 相对论修正项
        • 5.4 微分方程形式(GLONASS)
        • 5.5 SSR钟差修正
      • 六、系统特性处理
    • PART B:`rinex.c`
      • 一、整体作用与工作流程分析
      • 二、函数详细说明
        • 2.1 `init_sta`
        • 2.2 `sat2code`
        • 2.3 `adjweek`
        • 2.4 `decode_eph`
        • 2.5 `uravalue` & `uraindex`
      • 三、函数调用关系图
      • 四、关键算法解析
        • 4.1 星历解码(`decode_eph`)
        • 4.2 相位偏移校正(`set_index`)
        • 4.3 多系统信号优先级
      • 五、输出流程

RTKLib详解:ephemeris.c与rinex.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: ephemeris.c


一、代码整体作用与工作流程分析

1.1 整体作用

该代码实现卫星星历与钟差计算的核心功能,支持多种卫星导航系统(GPS/Galileo/QZSS/北斗/GLONASS/SBAS),提供从广播星历、精密星历到SSR(State Space Representation)校正的多级精度支持,该代码通过模块化设计实现了多系统兼容,采用迭代法保证计算精度,结合误差模型和校正机制满足不同应用场景需求。主要功能包括:

  • 卫星位置与速度计算(ECEF坐标系)
  • 卫星钟差与钟漂计算
  • 星历数据选择与有效性验证
  • 坐标系旋转与相对论效应修正
  • 误差方差建模(URA/SSR)
1.2 工作流程
EPHOPT_BRDC
EPHOPT_SBAS
EPHOPT_SSR
satposs
satpos
ephopt
ephpos
satpos_sbas
satpos_ssr
seleph/selgeph/selseph
eph2pos/geph2pos/seph2pos
ephpos + SBAS校正
ephpos + SSR校正
开普勒方程求解
SSR轨道/钟差修正

二、核心函数说明

2.1 alm2pos (Almanac to Position)

功能: 通过卫星历书计算概略位置
输入:

  • time: 当前时间(GPST)
  • alm: 阿尔曼历数据(alm_t结构体)
    输出:
  • rs: 卫星位置 [x,y,z] (m)
  • dts: 钟差 (s)
    数学原理:
  1. 计算平近点角 M = M0 + √(μ/A³) * tk
  2. 牛顿迭代法解开普勒方程 E = M + e·sinE
  3. 真近点角转换: ν = atan2(√(1-e²)sinE, cosE - e)
  4. 极坐标到直角坐标转换: r = A(1 - e·cosE)
2.2 eph2clk (Ephemeris to Clock)

功能: 广播星历钟差计算
输入:

  • time: 卫星时钟时间(GPST)
  • eph: 广播星历数据(eph_t结构体)
    输出:
  • 返回钟差 Δt = f0 + f1·t + f2·t²
    特性: 双次迭代消除时间依赖性
2.3 eph2pos (Ephemeris to Position)

功能: 广播星历卫星位置计算
数学流程:

M计算
开普勒方程迭代
轨道平面坐标
摄动修正
坐标系旋转
相对论修正

关键公式:

  • 开普勒方程:E = M + e·sinE (迭代收敛精度1e-14)
  • 相对论修正项:Δt_rel = -2√(μA)/c² * e·sinE
  • 坐标旋转矩阵:涉及升交点赤经Ω的时变特性

2.4 geph2pos (GLONASS Ephemeris)

特殊性:

  • 使用数值积分法解算轨道微分方程
  • 包含地球扁率J2和自转角速度Ω的摄动项
  • 微分方程形式:ẍ = [c+Ω²]x + 2Ωẏ + ax
2.5 satpos_ssr (SSR校正)

校正流程:

  1. 获取轨道偏差Δr [径向/切向/横向]
  2. 获取钟差校正Δt = dclk[0] + dclk[1]·t + dclk[2]·t²
  3. 天线相位中心修正
  4. 方差计算采用SSR URA模型

三、核心算法数学推导

3.1 开普勒方程求解

标准形式:
M = E − e sin ⁡ E M = E - e \sin E M=EesinE
牛顿迭代公式:
E n + 1 = E n − E n − e sin ⁡ E n − M 1 − e cos ⁡ E n E_{n+1} = E_n - \frac{E_n - e \sin E_n - M}{1 - e \cos E_n} En+1=En1ecosEnEnesinEnM
代码实现中设置最大迭代次数 30 30 30 次,相对容差 1 0 − 14 10^{-14} 1014

3.2 坐标系转换

从轨道坐标系到ECEF的转换矩阵:
[ cos ⁡ u − sin ⁡ u 0 sin ⁡ u cos ⁡ u 0 0 0 1 ] \begin{bmatrix} \cos u & -\sin u & 0 \\ \sin u & \cos u & 0 \\ 0 & 0 & 1 \end{bmatrix} cosusinu0sinucosu0001
结合升交点赤经 $ \Omega $ 的时变特性:
Ω = Ω 0 + ( Ω ˙ − ω e ) t − ω e t os \Omega = \Omega_0 + (\dot{\Omega} - \omega_e)t - \omega_e t_{\text{os}} Ω=Ω0+(Ω˙ωe)tωetos

3.3 SSR轨道校正

采用径向-切向-横向(Radial-Across-Along)分解:
Δ r ⃗ = e ⃗ r ⋅ Δ r radial + e ⃗ a ⋅ Δ r along + e ⃗ c ⋅ Δ r cross \Delta \vec{r} = \vec{e}_r \cdot \Delta r_{\text{radial}} + \vec{e}_a \cdot \Delta r_{\text{along}} + \vec{e}_c \cdot \Delta r_{\text{cross}} Δr =e rΔrradial+e aΔralong+e cΔrcross
其中 { e ⃗ r , e ⃗ a , e ⃗ c } \{\vec{e}_r, \vec{e}_a, \vec{e}_c\} {e r,e a,e c} 构成正交基矢量。

四、完整函数调用关系

satposs
satpos
satpos_sbas
satpos_ssr
ephpos
seleph
eph2pos
var_uraeph
ephpos + sbssatcorr
ephpos + SSR校正
var_urassr
selgeph
selseph
开普勒方程迭代
坐标旋转
相对论修正

五、误差模型

5.1 URA转换模型

var_uraeph:
ura_value = [ 2.4 , 3.4 , … , 6144.0 ] \text{ura\_value} = \left[2.4, 3.4, \dots, 6144.0\right] ura_value=[2.4,3.4,,6144.0]
var = { ( 6144.0 ) 2 if ura < 0 or ura > 15 ( ura_value [ ura ] ) 2 otherwise \text{var} = \begin{cases} (6144.0)^2 & \text{if } \text{ura} < 0 \text{ or } \text{ura} > 15 \\ (\text{ura\_value}[\text{ura}])^2 & \text{otherwise} \end{cases} var={(6144.0)2(ura_value[ura])2if ura<0 or ura>15otherwise

var_urassr:
std = { ( 3 ( ⌊ ura / 8 ⌋ ) ⋅ ( 1 + ( ura m o d 7 ) / 4 ) − 1 ) × 1 0 − 3 if  0 < ura < 63 ( 5.4665 ) 2 if ura ≥ 63 ( 0.15 ) 2 if ura ≤ 0 \text{std} = \begin{cases} (3^{(\lfloor \text{ura}/8 \rfloor)} \cdot (1 + (\text{ura} \bmod 7)/4) - 1) \times 10^{-3} & \text{if } 0 < \text{ura} < 63 \\ (5.4665)^2 & \text{if } \text{ura} \geq 63 \\ (0.15)^2 & \text{if } \text{ura} \leq 0 \end{cases} std= (3(⌊ura/8⌋)(1+(uramod7)/4)1)×103(5.4665)2(0.15)2if 0<ura<63if ura63if ura0

5.2 SSR校正限幅
  • 最大轨道修正: 10 m 10 \, \text{m} 10m
  • 最大钟差修正: c ⋅ 1 0 − 6 m c \cdot 10^{-6} \, \text{m} c106m
  • 最大龄期:轨道 90 s 90 \, \text{s} 90s / 钟差 10 s 10 \, \text{s} 10s
5.3 相对论修正项

Δ t rel = − 2 c 2 μ A ⋅ e ⋅ sin ⁡ E \Delta t_{\text{rel}} = -\frac{2}{c^2} \sqrt{\mu A} \cdot e \cdot \sin E Δtrel=c22μA esinE

5.4 微分方程形式(GLONASS)

x ¨ = [ c + Ω 2 ] x + 2 Ω y ˙ + a x \ddot{x} = [c + \Omega^2]x + 2\Omega \dot{y} + a_x x¨=[c+Ω2]x+y˙+ax

5.5 SSR钟差修正

Δ t corr = Δ t clk + Δ r ⃗ radial c \Delta t_{\text{corr}} = \Delta t_{\text{clk}} + \frac{\Delta \vec{r}_{\text{radial}}}{c} Δtcorr=Δtclk+cΔr radial


六、系统特性处理

系统引力常数 $ \mu $地球自转角速度 $ \Omega $特殊处理
GPS 3.9860050 × 1 0 14 3.9860050 \times 10^{14} 3.9860050×1014 7.292115 × 1 0 − 5 7.292115 \times 10^{-5} 7.292115×105标准开普勒解算
GLONASS 3.9860044 × 1 0 14 3.9860044 \times 10^{14} 3.9860044×1014 7.292115 × 1 0 − 5 7.292115 \times 10^{-5} 7.292115×105数值积分法
Galileo 3.986004418 × 1 0 14 3.986004418 \times 10^{14} 3.986004418×1014 7.2921151467 × 1 0 − 5 7.2921151467 \times 10^{-5} 7.2921151467×105精密摄动模型
北斗GEO卫星 3.986004418 × 1 0 14 3.986004418 \times 10^{14} 3.986004418×1014 7.292115 × 1 0 − 5 7.292115 \times 10^{-5} 7.292115×105五度倾角坐标变换

PART B:rinex.c


一、整体作用与工作流程分析

该代码实现了一个RINEX(Receiver Independent Exchange Format)文件处理模块,主要用于GNSS(全球导航卫星系统)数据的读取、解析和输出,该代码通过模块化设计实现了复杂多系统的GNSS数据处理,其核心在于通过统一接口处理不同卫星系统的观测数据与导航数据,同时保持RINEX标准的兼容性。。其核心功能包括:

  • RINEX文件头解析与生成
  • 观测数据与导航电文的读取
  • 卫星星历解码
  • 相位偏移处理
  • 多系统(GPS/GLO/GAL/QZS/SBS/CMP)支持
  • 数据格式转换与输出

工作流程

Observation Data
Navigation Data
Input RINEX File
File Type
readrnxobs
readrnxnav
readrnxobsb
readrnxnavb
decode_obsdata
decode_eph
adjweek
Process Observations
Output Processed Data
outrnxobsb
Output RINEX File

二、函数详细说明

2.1 init_sta

功能:初始化测站参数结构体
输入参数

  • sta_t *sta:测站参数结构体指针
    输出参数
  • sta:初始化后的测站参数
2.2 sat2code

功能:将卫星编号转换为RINEX格式的卫星代码
输入参数

  • int sat:卫星编号(含系统标识)
  • char *code:输出缓冲区
    输出参数
  • code:格式如"G01" (GPS), “R24” (GLONASS)
    数学原理
    通过satsys()函数分离系统标识符(SYS_GPS/SYS_GLO等)和PRN编号,使用ASCII字符拼接。
2.3 adjweek

功能:调整时间以处理周跳问题
输入参数

  • gtime_t t:当前时间
  • gtime_t t0:参考时间
    输出参数
  • gtime_t:调整后的时间
    数学原理
    if  Δ t < − 302400 s ⇒ t = t + 604800 s if  Δ t > 302400 s ⇒ t = t − 604800 s \text{if } \Delta t < -302400s \Rightarrow t = t + 604800s \\ \text{if } \Delta t > 302400s \Rightarrow t = t - 604800s if Δt<302400st=t+604800sif Δt>302400st=t604800s
    其中 Δ t = timediff ( t , t 0 ) \Delta t = \text{timediff}(t, t_0) Δt=timediff(t,t0),确保时间连续性。
2.4 decode_eph

功能:解码GPS/北斗星历数据
输入参数

  • double ver:RINEX版本号
  • int sat:卫星编号
  • gtime_t toc:时钟参考时间
  • double *data:原始星历数据数组
    输出参数
  • eph_t *eph:填充后的星历结构体
    关键字段处理
  • 计算卫星健康状态(svh)、精度(sva)
  • 转换时间参数(toe, ttr)
2.5 uravalue & uraindex

功能:URA值与索引转换
数学关系
ura_value = { ura_eph [ i ] if  0 ≤ i < 15 32767 otherwise \text{ura\_value} = \begin{cases} \text{ura\_eph}[i] & \text{if } 0 \leq i < 15 \\ 32767 & \text{otherwise} \end{cases} ura_value={ura_eph[i]32767if 0i<15otherwise
ura_index ( x ) = min ⁡ { i ∣ ura_eph [ i ] ≥ x } \text{ura\_index}(x) = \min \left\{ i \mid \text{ura\_eph}[i] \geq x \right\} ura_index(x)=min{iura_eph[i]x}


三、函数调用关系图

Observation
Navigation
main
readrnx
file type
readrnxobs
readrnxnav
readrnxobsb
readrnxnavb
decode_obsdata
decode_eph
uraindex
adjweek
obsindex
save_slips
init_sta
init_rnxctr
malloc
free_rnxctr

四、关键算法解析

4.1 星历解码(decode_eph

北斗星历解码示例:

eph->iode = (int)data[3]; // AODE
eph->toes = data[11];     // Toe (s)
eph->week = (int)data[21]; 
eph->toe = bdt2gpst(bdt2time(eph->week, data[11])); 

将北斗时间(BDT)转换为GPS时间,并调整周跳。

4.2 相位偏移校正(set_index

通过配置选项(如-CL1C=1.5)设置相位偏移:

ind->shift[i] = shift; // 以cycle为单位

输出时应用偏移:

val[i] = str2num(...) + ind->shift[i];
4.3 多系统信号优先级
ind->pri[i] = getcodepri(sys, ind->code[i], opt);

根据系统(sys)和信号类型(code)确定观测值优先级,用于选择主观测值。


五、输出流程

Ver2
Ver3
Process Data
outrnxobsb
outrnxobsf
Output Type
Format Ver2
Format Ver3
%6d %02d %2.0f ...
%-3s %04.0f ...

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


相关文章:

[学习]RTKLib详解:ephemeris.c与rinex.c

文章目录 RTKLib详解&#xff1a;ephemeris.c与rinex.cPART A: ephemeris.c一、代码整体作用与工作流程分析1.1 整体作用1.2 工作流程 二、核心函数说明2.1 alm2pos (Almanac to Position)2.2 eph2clk (Ephemeris to Clock)2.3 eph2pos (Ephemeris to Position)2.4 geph2pos (G…...

JDBC:java与数据库连接,Maven,MyBatis

JDBC 是使用Java语言操作关系型数据库的一套API JDBC是接口&#xff0c;用其实现一系列不同种类关系型数据库的实现类 JDBC本质: 官方(sun公司)定义的一套操作所有关系型数据库的规则&#xff0c;即接口 各个数据库厂商去实现这套接口&#xff0c;提供数据库驱动jar包 我…...

代码随想录第39天:单调栈

一、每日温度&#xff08;Leetcode 739&#xff09; 思路&#xff1a; 栈里存放的是**“还没等到升温的日子”**的索引&#xff1b; 每遇到一个新的温度&#xff1a; 检查是否比栈顶的温度高&#xff1b; 如果高了&#xff0c;说明升温来了&#xff0c;栈顶元素可以出栈&…...

如何在vite构建的vue项目中从0到1配置postcss-pxtorem

1. 安装postcss-pxtorem和autoprefixer yarn add postcss-pxtorem autoprefixer2. 在vite.config.ts中写入 import { defineConfig } from "vite"; import vue from "vitejs/plugin-vue"; import postcssPxtorem from "postcss-pxtorem"; impo…...

基于51单片机的自动洗衣机衣料材质proteus仿真

地址&#xff1a;https://pan.baidu.com/s/13d2bJ6vKh8ZLuDBZnI0VGw 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C51 是一款常用的 8 位单片机&#xff0c;由 Atmel 公司&#xff08;现已被 Microchip 收…...

永久免费的小工具,内嵌微软接口

有时候我们制作短视频&#xff0c;需要为视频添加声音&#xff0c;但部分配音软件要收费。不过别担心&#xff0c;今天给大家推荐一款超实用的免费文字转语音软件&#xff0c;完全无需担忧费用问题&#xff01; 01 软件介绍 这款软件就是Read Aloud&#xff0c;具有以下特点&a…...

C++漫步结构与平衡的殿堂:AVL树

文章目录 1.AVL树的概念2.AVL树的结构3.AVL树的插入4.AVL树的旋转4.1 左单旋4.2 右单旋4.3 右左双旋4.4 左右双旋 5.AVL树的删除6.AVL树的高度7.AVL树的平衡判断希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 二叉搜索树有其自身的缺陷&#xf…...

MIST:一键解锁 macOS 历史版本,旧系统安装不再难!

在 Mac 电脑的使用过程中&#xff0c;你是否遇到过这些困扰&#xff1f;为了运行一款经典设计软件&#xff0c;新系统却无法兼容&#xff1b;或是想给老旧 Mac 设备升级&#xff0c;却找不到适配的系统版本。而 App Store 里&#xff0c;旧版 macOS 安装包就像 “隐藏副本”&am…...

mac连接lniux服务器教学笔记

从你的检查结果看&#xff0c;容器内已经安装了 XFCE 桌面环境&#xff08;xfce.desktop 和 xubuntu.desktop 的存在说明桌面环境已存在&#xff09;。以下是针对 Docker 容器环境的远程桌面配置方案&#xff1a; 一、容器内快速配置远程桌面&#xff08;XFCE VNC&#xff09;…...

网站公安备案流程及审核时间

在中国&#xff0c;网站运营除了需要 ICP备案&#xff08;工信部备案&#xff09;&#xff0c;还需完成 公安备案&#xff08;公安机关互联网站安全备案&#xff09;。以下是详细流程及审核时间说明&#xff1a; 一、公安备案流程 1. 备案对象 所有在中国境内运营的网站&#…...

python学生作业提交管理系统-在线作业提交系统

目录 技术栈介绍具体实现截图系统设计研究方法&#xff1a;设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理&#xff0c;难度适中&#xf…...

从颜料混色到网络安全:DH算法的跨界智慧

一、颜料混色的秘密 想象一下&#xff0c;你和朋友各自有一罐私密的颜料&#xff0c;但你们想共同调出一种只有彼此知道的新颜色&#xff0c;而旁观者即使看到你们的操作也无法复现。奇怪的是&#xff0c;你们全程没有直接交换颜料&#xff0c;却能达成共识——这就是**迪菲-赫…...

初学者的AI智能体课程:构建AI智能体的十堂课

初学者的AI智能体课程:构建AI智能体的十堂课 在人工智能(AI)领域,AI智能体正在逐渐发挥其不容忽视的作用。自动化的智能体不仅仅在理论上广泛讨论,更加在实际应用中开辟了一片新的天地。那么如何动手开发属于自己的AI智能体呢?Microsoft提供的AI智能体入门课正是为此而设…...

数据结构 - 8( AVL 树和红黑树 10000 字详解 )

一&#xff1a;二叉搜索树 1.1 回顾二叉搜索树 我们在树的章节中学习了二叉搜索树的概念。二叉搜索树满足以下性质&#xff1a;如果它的左子树存在&#xff0c;则左子树所有节点的值均小于根节点的值&#xff1b;如果右子树存在&#xff0c;则右子树所有节点的值均大于根节点…...

Tcp 通信简单demo思路

Server 端 -------------------------- 初始化部分 ------------------------------- 1.创建监听套接字&#xff1a; 使用socket(协议家族&#xff0c;套接字的类型&#xff0c;0) 套接字类型有 SOCK_STREAM&#xff1a;表示面向连接的套接字&#xff08;Tcp协议&#xff09;&…...

Cesium 导航控件(指南针 + 缩放按钮),自定义放置位置

Cesium 导航控件&#xff08;指南针 缩放按钮&#xff09; Cesium 导航控件&#xff08;指南针 缩放按钮&#xff09;的功能实现&#xff0c;从技术角度来看&#xff0c;可以整理出一整套实现流程和技术结构。这套流程结合了以下几个核心技术点&#xff1a; 1、整体功能目标 …...

MySQL的索引和事务

目录 1、索引 1.1 查看索引 1.2 创建索引 1.3 删除索引 1.4 索引的实现 2、事务 1、索引 索引等同于目录&#xff0c;属于针对查询操作的一个优化手段&#xff0c;可以通过索引来加快查询的速度&#xff0c;避免针对表进行遍历。 主键、unique和外键都是会自动生成索引的…...

【Fifty Project - D25】

今日完成记录 TimePlan完成情况9&#xff1a;00 - 11&#xff1a;30大论文修改修改情况书小论文修改√16&#xff1a;00 - 17 &#xff1a;00Leetcode√ Leetcode 每日一题 到达最后一个房间的最小时间II&#xff1a;和昨天的每日一题大致一样&#xff0c;增加一个条件&…...

pip下载tmp不够

问题描述 今天遇到一个小问题&#xff0c;在用pip安装的时候提示 ERROR: Could not install packages due to an OSError: [Errno 28] No space left on device 但我们单位用于生产环境的机器磁盘都是基本是论TB的&#xff0c;怎么会不够呢&#xff1f; 原因分析&#xff1a;…...

一种机载扫描雷达实时超分辨成像方法——论文阅读

一种机载扫描雷达实时超分辨成像方法 1. 专利的研究目标与产业意义1.1 研究目标与实际问题1.2 产业意义2. 专利的创新方法:滑窗递归优化与实时更新2.1 核心模型与公式2.2 与传统方法对比优势3. 实验设计与验证3.1 仿真参数3.2 实验结果4. 未来研究方向与挑战4.1 学术挑战4.2 技…...

nginx 会话保持(cookie的配置)

nginx会话保持主要有以下几种实现方式。 1. ip_hash ip_hash使用源地址哈希算法,将同一客户端的请求总是发往同一个后端服务器,除非该服务器不可用。 ip_hash语法: upstream backend { ip_hash; server backend1.example.com; server backend2.example.com; …...

nginx 实现动静分离

环境 : 三个机器,准备一个nginx代理 两个http 分别处理动态和静态 知识点--expires expires功能说明---(为客户端配置缓存时间) nginx缓存的设置可以提高网站性能,对于网站的图片,尤其是新闻网站,图片一旦发布,改动的可能是非常小的,为了减小对服务器请求的压力,提高…...

k8s的pod挂载共享内存

k8s的pod挂载共享内存&#xff0c;限制不生效问题&#xff1a; 注&#xff1a;/dev/shm 是 Linux 系统中用于共享内存的特殊路径。通过将 emptyDir 的 medium 设置为 Memory&#xff0c;可以确保 /dev/shm 正确地挂载到一个基于内存的文件系统&#xff0c;从而实现高效的共享内…...

Java高频面试之并发编程-14

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天又来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;指令重排有限制没有&#xff1f;happens-before 又是什么&#xff1f; 在并发编程中&#xff0c;指令重排&#xff08;…...

Linux基础(最常用基本命令)

1.查看文件ls 1.1 格式 ls 选项 参数&#xff0c;如&#xff1a;ls -lah ~/ 1.2 选项设置&#xff1a; -l&#xff1a;list 以列表方式显示文件 -h&#xff1a;human-readable 以人类可读的方式显示文件大小(会将纯数字转换为kb&#xff0c;mb) -a&#xff1a;all 显示所有的…...

【Python 日期和时间】

Python 中处理日期和时间主要依赖 datetime 模块&#xff0c;结合 dateutil 和 pytz 等第三方库可实现更复杂的需求。以下是日期和时间处理的核心知识点&#xff1a; 一、基础模块 1. datetime 模块 核心类&#xff1a;datetime, date, time, timedelta安装依赖&#xff1a;p…...

C#简易Modbus从站仿真器

C#使用NModbus库&#xff0c;编写从站仿真器&#xff0c;支持Modbus TCP访问&#xff0c;支持多个从站地址和动态启用/停用从站&#xff08;模拟离线&#xff09;&#xff0c;支持数据变化&#xff0c;可以很方便实现&#xff0c;最终效果如图所示。 项目采用.net framework 4.…...

FPGA图像处理(四)------ 图像裁剪

timescale 1ns / 1ps // // Description: 图像裁剪算法 // module image_crop(input wire clk,input wire reset,input wire [10:0] img_width,input wire [10:0] img_height,input wire [10:0] img_x_start,input wire [10:0] img_x_end,input wire [10:0] img_y_start,input…...

1.MySQL数据库初体验

1.1数据库简介 1.1.1使用数据库的必要性 使用数据库可以高效且条理分明地存储数据&#xff0c;使人们能够更加迅速、方便地管理数据。 数据库特点&#xff1a; a.可以结构化存储大量地数据信息&#xff0c;方便用户进行有效的检索 b.可以有效地保持数据信息的一致性、完整…...

量子密码的轻量级通信协议笔记

代码笔记 本文档提供了项目代码的详细说明&#xff0c;包括代码结构、关键算法实现和重要的代码片段。 代码结构 . ├── Makefile # 构建系统配置 ├── coap_client.c # CoAP客户端实现 ├── coap_server.c # CoAP服务端实现 ├─…...

探索 C++ 在行业应用与技术融合中的核心价值

引言 在科技飞速发展的今天&#xff0c;C 作为一门兼具高性能与灵活性的编程语言&#xff0c;正深度融入游戏开发、人工智能、区块链等多个关键领域。其高效的内存管理、底层控制能力以及对现代硬件架构的深度优化&#xff0c;使其成为复杂系统开发的首选语言。本文将深入探讨…...

雷赛伺服电机

ACM0经济 编码器17位&#xff1a; ACM1基本 编码器23位磁编&#xff0c; ACM2通用 编码器24位光电&#xff0c; 插头定义&#xff1a;...

word文档基本操作: 编辑页眉页脚和插入目录

文章目录 引言I 编辑页眉页脚II 插入目录III 知识扩展基于axure画架构图基于Knife4j导出接口文档基于PDManer导出数据库设计文档引言 背景: 信息安全认证需要准备相关文件用于审核 一般的开发设计包含总体设计、概要设计、详细设计、接口设计、数据库设计、部署结构设计、原型…...

数据结构(二)——线性表的链式表示和实现

一、单链表 1.单链表的定义 如图所示每个节点包含两个域:数据域和指针域。数据域存储数据元素&#xff0c;指针域存储下一个节点的地址&#xff0c;因此指针指向的类型也是节点类型。每个指针都指向下一个节点&#xff0c;都是朝一个方向的&#xff0c;这样的链表称为单向链表…...

HTML10:iframe内联框架

iframe内部框架 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>内联框架学习</title> </head> <body> <!--iframe内联框架 src:地址 width-height:高度宽度 --> <iframe…...

C++代码随想录刷题知识分享-----数组交集—LeetCode 349

1  题目描述 给定两个整型数组 nums1 和 nums2&#xff0c;请返回它们的交集。 交集中 每个元素必须是唯一的。输出结果的顺序可以任意。 示例输入输出说明1nums1 [1,2,2,1], nums2 [2,2][2]2 只出现一次2nums1 [4,9,5], nums2 [9,4,9,8,4][4,9] 或 [9,4]顺序不作要求…...

Wireshark基本使用

本文会对Wireshark做简单介绍&#xff0c;带大家熟悉一下Wireshark的界面&#xff0c;以及如何使用过滤器。 接着会带大家查看TCP五层模型下&#xff0c;带大家回顾各层首部的格式。 最后会演示 Wireshark 如何抓取三次握手和四次挥手包的过程。 目录 一.Wireshark简介 二…...

学习c语言的链表的概念、操作(另一篇链表的笔记在其他的栏目先看这个)

在学习Linux之间我们先插入一下链表的知识 学习链表&#xff08;一种数据结构思想&#xff09; 链表和数组的区别和实现&#xff1a; 链表&#xff08;链表是个好东西&#xff09; 链表概念&#xff08;什么是链表&#xff09;&#xff1f; 链表就是数据结构->数据的存储…...

快速上手Pytorch Lighting框架 | 深度学习入门

快速上手Pytorch Lighting框架 | 深度学习入门 前言参考官方文档 介绍快速上手基本流程常用接口LightningModule\_\_init\_\_ & setup()\*\_step()configure_callbacks()configure_optimizers()load_from_checkpoint Trainer常用参数 可选接口LoggersTensorBoard Logger Ca…...

ffmpeg多媒体(音视频)处理常用命令

概览 总结一些音视频常用的ffmpeg处理命令&#xff0c;会不断更新&#xff0c;涉及一些重要命令&#xff0c;各位读者也可在评论区不断更新&#xff0c;维护起来&#xff0c;希望可以帮助大家快速解决问题&#xff01; 1、音频相关 1.1 音频信息查看 ffmpeg -i test.wav 该命…...

QT中的网络请求

一、主程序&#xff08;main.cpp&#xff09; #include <QCoreApplication> #include <QNetworkAccessManager> #include <QNetworkReply> #include <QNetworkRequest> #include <QUrlQuery> #include <QJsonDocument> #include <QJso…...

Nacos源码—6.Nacos升级gRPC分析二

大纲 1.Nacos 2.x版本的一些变化 2.客户端升级gRPC发起服务注册 3.服务端进行服务注册时的处理 4.客户端服务发现和服务端处理服务订阅的源码分析 4.客户端服务发现和服务端处理服务订阅的源码分析 (1)Nacos客户端进行服务发现的源码 (2)Nacos服务端处理服务订阅请求的源…...

如何选择自己喜欢的cms

选择内容管理系统cms what is cms1.whatcms.org2.IsItWP.com4.Wappalyzer5.https://builtwith.com/6.https://w3techs.com/7. https://www.netcraft.com/8.onewebtool.com如何在不使用 CMS 检测器的情况下手动检测 CMS 结论 在开始构建自己的数字足迹之前&#xff0c;大多数人会…...

前端面经 作用域和作用域链

含义&#xff1a;JS中变量生效的区域 分类&#xff1a;全局作用域 或者 局部作用域 局部作用域&#xff1a;函数作用域 和 块级作用域ES6 全局作用域:在代码中任何地方都生效 函数中定义函数中生效&#xff0c;函数结束失效 块级作用域 使用let或const 声明 作用域链:JS查…...

开启智能Kubernetes管理新时代:kubectl-ai让操作更简单!

在如今的科技世界中,Kubernetes 已经成为容器编排领域的标杆,几乎所有现代应用的基础设施都离不开它。然而,面对复杂的集群管理和日常运维,许多开发者常常感到无所适从。今天,我们将为大家介绍一款结合了人工智能的强大工具——kubectl-ai。它不仅能帮助开发者更加顺畅地与…...

STM32 ADC

目录 ADC简介 逐次逼近型ADC STM32 ADC框图 输入通道 转换模式 •单次转换&#xff0c;非扫描模式 •连续转换&#xff0c;非扫描模式 •单次转换&#xff0c;扫描模式 •连续转换&#xff0c;扫描模式 触发控制 数据对齐 转换时间 校准 硬件电路 A…...

nextjs站点地图sitemap添加

app/sitemap.xml/route.ts (主站点地图索引) sitemap.xml 为文件夹名称 route.ts代码如下&#xff1a; import { NextResponse } from next/server; import { url } from /config/navigation; export async function GET() {// const entries generateMonthlyEntries();con…...

TCP/IP和OSI对比

​TCP/IP模型的实际特性 ​网络层&#xff08;IP层&#xff09;​ ​仅提供无连接的不可靠服务&#xff1a;TCP/IP模型的网络层核心协议是IP&#xff08;Internet Protocol&#xff09;&#xff0c;其设计是无连接且不可靠的。IP数据包独立传输&#xff0c;不保证顺序、不确认交…...

【hadoop】Hbase java api 案例

代码实现&#xff1a; HBaseConnection.java package com.peizheng.bigdata;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client…...

深入理解Spring缓存注解:@Cacheable与@CacheEvict

在现代应用程序开发中&#xff0c;缓存是提升系统性能的重要手段。Spring框架提供了一套简洁而强大的缓存抽象&#xff0c;其中Cacheable和CacheEvict是两个最常用的注解。本文将深入探讨这两个注解的工作原理、使用场景以及最佳实践。 1. Cacheable注解 基本概念 Cacheable…...