[学习]RTKLib详解:rtksvr.c与streamsvr.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 : `rtksvr`
- 一、整体作用与工作流程分析
- 二、函数详细说明
- 1. `writesolhead`:写入解算结果头部
- 2. `saveoutbuf`:保存输出缓冲区
- 3. `writesol`:输出解算结果
- 4. `updatenav`:更新导航数据波长
- 5. `updatefcn`:更新GLONASS频率信道
- 6. `updatesvr`:更新服务器状态
- 7. `decoderaw`:解码原始数据
- 三、函数调用关系图(Mermaid)
- 四、数学原理与公式
- 五、关键数据结构
- Part A:`streamsvr.c`
- 一、整体作用与工作流程分析
- 二、函数详细说明
- 1. `strconvnew`:创建流转换器
- 2. `raw2rtcm`:原始数据转 RTCM
- 3. `write_obs`:生成观测数据消息
- 4. `nextsat`:选择下一颗卫星
- 三、函数调用关系图(Mermaid)
- 四、数学原理与关键公式
- 五、关键数据结构
Part A : rtksvr
–
一、整体作用与工作流程分析
rtksvr.c
是RTK(实时动态定位)服务器的核心模块,负责处理多源输入数据(如观测值、星历、SSR修正等),执行实时动态差分定位解算,并输出高精度定位结果。其工作流程如下:
- 数据输入:通过多个流(
stream
)接收原始观测数据、星历、SSR修正等。 - 数据解码:调用
decoderaw
解析原始数据或RTCM格式数据,提取观测值、星历等信息。 - 状态更新:通过
updatesvr
更新服务器状态,包括导航数据、天线位置、SSR修正等。 - 定位解算:利用RTK算法(如双差载波相位处理)计算移动站位置。
- 结果输出:通过
writesol
将解算结果写入输出流,并保存至缓冲区或监控端口。
二、函数详细说明
1. writesolhead
:写入解算结果头部
- 功能:生成并写入解算结果的头部信息(如坐标系、时间格式)。
- 参数:
stream_t *stream
:输出流指针。solopt_t *solopt
:解算选项(如输出格式)。
- 流程:调用
outsolheads
生成头部数据,通过strwrite
写入流。
2. saveoutbuf
:保存输出缓冲区
- 功能:将解算结果存入环形缓冲区,支持多线程安全。
- 参数:
rtksvr_t *svr
:RTK服务器结构体。unsigned char *buff
:待保存的数据缓冲区。int n
:数据长度。int index
:缓冲区索引(区分不同输出流)。
- 关键操作:加锁(
rtksvrlock
)后复制数据至svr->sbuf[index]
,更新缓冲区指针nsb
。
3. writesol
:输出解算结果
- 功能:将定位结果写入输出流,并保存至缓冲区和监控端口。
- 参数:
rtksvr_t *svr
(服务器状态)、int index
(流索引)。 - 流程:
- 调用
outsols
生成标准解算结果,outsolexs
生成扩展结果。 - 通过
strwrite
写入流,并调用saveoutbuf
保存数据。 - 监控端口输出使用简化格式(
solopt_default
)。
- 调用
4. updatenav
:更新导航数据波长
- 功能:计算卫星信号的波长( λ \lambda λ),用于载波相位解算。
- 数学原理:波长公式为 λ = c / f \lambda = c / f λ=c/f,其中 c c c为光速, f f f为频率。
- 参数:
nav_t *nav
(导航数据结构体)。 - 实现:遍历所有卫星和频率,调用
satwavelen
计算波长并更新nav->lam
。
5. updatefcn
:更新GLONASS频率信道
- 功能:同步不同数据流中的GLONASS卫星频率信道号(
frq
)。 - 参数:
rtksvr_t *svr
。 - 流程:遍历GLONASS卫星,从任意流中获取有效
frq
,更新其他流的导航数据。
6. updatesvr
:更新服务器状态
- 功能:根据解码结果更新导航数据、观测值、SSR修正等。
- 参数:
rtksvr_t *svr
:服务器状态。ret
:数据类型标识(如1=观测值,2=星历)。obs_t *obs
:观测数据结构体。nav_t *nav
:导航数据结构体。
- 关键逻辑:
- 观测值:筛选有效数据并排序。
- 星历:更新GPS/GLONASS星历,确保时效性。
- SSR修正:检查轨道与钟差IOD一致性,避免数据冲突。
7. decoderaw
:解码原始数据
- 功能:解析原始数据或RTCM消息,提取观测值、星历等信息。
- 参数:
rtksvr_t *svr
、int index
(流索引)。 - 返回:解码结果状态(如1=观测值解码成功)。
三、函数调用关系图(Mermaid)
四、数学原理与公式
RTK定位基于双差载波相位观测模型,关键公式如下:
-
双差观测方程:
∇ Δ ϕ = ∇ Δ ρ + λ ∇ Δ N + ∇ Δ ϵ \nabla\Delta\phi = \nabla\Delta\rho + \lambda\nabla\Delta N + \nabla\Delta\epsilon ∇Δϕ=∇Δρ+λ∇ΔN+∇Δϵ- ∇ Δ ϕ \nabla\Delta\phi ∇Δϕ:双差载波相位(单位:周)。
- ∇ Δ ρ \nabla\Delta\rho ∇Δρ:双差几何距离。
- ∇ Δ N \nabla\Delta N ∇ΔN:双差整周模糊度。
- λ \lambda λ:信号波长。
-
Kalman滤波状态更新:
x ^ k = x ^ k − 1 + K k ( z k − H k x ^ k − 1 ) \hat{x}_k = \hat{x}_{k-1} + K_k(z_k - H_k\hat{x}_{k-1}) x^k=x^k−1+Kk(zk−Hkx^k−1)- K k K_k Kk:卡尔曼增益。
- z k z_k zk:观测向量。
- H k H_k Hk:设计矩阵。
五、关键数据结构
rtksvr_t
:包含服务器状态、缓冲区、导航数据(nav
)、解算结果(rtk
)等。nav_t
:存储星历、电离层参数、SSR修正等。solopt_t
:定义解算结果的输出格式选项。
Part A:streamsvr.c
一、整体作用与工作流程分析
streamsvr.c
是 RTKLIB 流服务器模块的核心部分,主要用于 多源数据流的格式转换与分发,支持将输入流(如接收机原始数据)转换为指定格式(如 RTCM 消息)并输出。其核心功能包括:
- 数据流转换:支持从原始数据(
raw_t
)或 RTCM 数据(rtcm_t
)转换为目标格式。 - 消息生成:按配置生成观测数据(OBS)、导航数据(NAV)及站信息(STA)的 RTCM 消息。
- 周期性输出:根据时间间隔(
tint
)控制消息的发送频率,支持循环发送导航数据。
工作流程:
- 初始化转换器:调用
strconvnew
创建流转换器,解析消息类型与时间间隔。 - 数据解码与转换:根据输入流类型(
itype
)调用raw2rtcm
或rtcm2rtcm
将数据复制到目标结构。 - 消息生成与发送:通过
write_obs
和write_nav
生成 RTCM 消息,调用strwrite
写入输出流。 - 循环导航数据:
write_nav_cycle
使用nextsat
选择下一颗卫星的星历,周期性发送。
二、函数详细说明
1. strconvnew
:创建流转换器
- 功能:初始化流转换器,解析消息类型与时间间隔,分配内存并配置 RTCM/原始数据结构。
- 参数:
int itype
:输入流类型(如STR_RAW
或STR_RTCM
)。int otype
:输出流类型(如STRFMT_RTCM3
)。const char *msgs
:消息类型与间隔(如"1019(30),1020(30)"
)。int staid
:站 ID。int stasel
:站信息选择(0=远程,1=本地)。
- 关键逻辑:
- 解析
msgs
字符串,提取消息类型(如 1019)和间隔(如 30 秒)。 - 初始化
rtcm_t
和raw_t
结构,配置选项(如-EPHALL
强制包含所有星历)。
- 解析
2. raw2rtcm
:原始数据转 RTCM
- 功能:将接收机原始数据(
raw_t
)复制到 RTCM 结构(rtcm_t
)。 - 参数:
rtcm_t *out
:目标 RTCM 结构。const raw_t *raw
:源原始数据。int ret
:数据类型标识(1=观测值,2=星历,9=UTC/电离层参数)。
- 数据映射:
- 观测值:
out->obs.data[i] = raw->obs.data[i]
。 - 星历:根据卫星系统(GPS/GLONASS)复制到
nav.eph
或nav.geph
。
- 观测值:
3. write_obs
:生成观测数据消息
- 功能:按配置生成观测数据 RTCM 消息并写入输出流。
- 参数:
gtime_t time
:当前时间。stream_t *str
:输出流指针。strconv_t *conv
:流转换器。
- 逻辑:
- 检查消息类型是否为观测数据(
is_obsmsg
)且满足时间间隔(is_tint
)。 - 调用
gen_rtcm2
或gen_rtcm3
生成消息,通过strwrite
发送。
- 检查消息类型是否为观测数据(
4. nextsat
:选择下一颗卫星
- 功能:循环选择下一颗卫星的星历,用于周期性导航数据输出。
- 参数:
nav_t *nav
:导航数据结构。int sat
:当前卫星编号。int msg
:消息类型(如 1019=GPS 星历)。
- 逻辑:
- 根据消息类型确定卫星系统(如 1019 对应 GPS),遍历 PRN 号寻找有效星历。
- 返回下一颗有效卫星编号,若无则重置为起始 PRN。
三、函数调用关系图(Mermaid)
四、数学原理与关键公式
-
时间间隔检查:
is_tint ( t ) = { 1 if mod ( t GPST + Δ , T ) ≤ 2 Δ 0 otherwise \text{is\_tint}(t) = \begin{cases} 1 & \text{if } \text{mod}(t_{\text{GPST}} + \Delta, T) \leq 2\Delta \\ 0 & \text{otherwise} \end{cases} is_tint(t)={10if mod(tGPST+Δ,T)≤2Δotherwise- 其中 t GPST t_{\text{GPST}} tGPST 为 GPS 时间, T T T 为间隔, Δ \Delta Δ 为容差(
DTTOL
)。
- 其中 t GPST t_{\text{GPST}} tGPST 为 GPS 时间, T T T 为间隔, Δ \Delta Δ 为容差(
-
星历循环逻辑:
- 对卫星 PRN 号进行模运算,确保周期性遍历所有有效星历:
p next = { p 1 if p ≥ p 2 p + 1 otherwise p_{\text{next}} = \begin{cases} p_1 & \text{if } p \geq p_2 \\ p + 1 & \text{otherwise} \end{cases} pnext={p1p+1if p≥p2otherwise- p 1 p_1 p1 和 p 2 p_2 p2 为 PRN 范围(如 GPS: 1-32)。
- 对卫星 PRN 号进行模运算,确保周期性遍历所有有效星历:
五、关键数据结构
strconv_t
:流转换器配置,包含消息列表、时间间隔、RTCM/原始数据实例。rtcm_t
:存储 RTCM 消息的观测值、星历、站信息及生成缓冲区。nav_t
:导航数据,包括星历(eph
)、GLONASS 星历(geph
)、电离层参数等。
研究学习不易,点赞易。
工作生活不易,收藏易,点收藏不迷茫 :)
相关文章:
[学习]RTKLib详解:rtksvr.c与streamsvr.c
本文是 RTKLlib详解 系列文章的一篇,目前该系列文章还在持续总结写作中,以发表的如下,有兴趣的可以翻阅。 [学习] RTKlib详解:功能、工具与源码结构解析 [学习]RTKLib详解:pntpos.c与postpos.c [学习]RTKLib详解&…...
QMK键盘固件开发全解析:QMK 固件开发的最新架构和规范(2025最新版)
QMK键盘固件开发全解析:QMK 固件开发的最新架构和规范(2025最新版) 📚 前言概述 QMK(Quantum Mechanical Keyboard)作为目前开源键盘固件领域的"扛把子",凭借其强大的功能和活跃的社区支持,已经…...
c++——二叉树进阶
1. 内容安排说明 二叉树在前面C数据结构阶段已经讲过,本节取名二叉树进阶是因为: 1. map和set特性需要先铺垫二叉搜索树,而二叉搜索树也是一种树形结构 2. 二叉搜索树的特性了解,有助于更好的理解map和set的特性 3. 二叉树中部…...
PyTorch API 3 - mps、xpu、backends、导出
文章目录 torch.mpsMPS 性能分析器MPS 事件 torch.xpu随机数生成器流与事件内存管理 torch.mtia流与事件 torch.mtia.memory元设备元张量操作惯用法 torch.backendstorch.backends.cputorch.backends.cudatorch.backends.cudnntorch.backends.cusparselttorch.backends.mhatorc…...
QTableWidget实现多级表头、表头冻结效果
最终效果: 实现思路:如果只用一个表格的话写起来比较麻烦,可以考虑使用两个QTableWidget组合,把复杂的表头一个用QTableWidget显示,其他内容用另一个QTableWidget。 #include "mainwindow.h" #include &qu…...
比 Mac 便笺更好用更好看的便利贴
在苹果电脑上,有自带的便签软件,但问题这个官方应用已经年久失修,界面跟最新的系统完全不搭。像同步、清单等功能也没有。 最近找到了一款更好看好用的桌面便利贴 - Desktop Note。这款应用在超过26个的效率榜排在前10。以下几个点是我认为做…...
【python】json解析:invalid literal for int() with base 10: ‘\“\“‘“
invalid literal for int() with base 10: ‘“”’" 从提供的 JSON 数据中,我可以看到导致 "invalid literal for int() with base 10: \"\"" 错误的具体情况: 错误分析 在 deal_resp 部分中发现了错误信息: &…...
超详细Kokoro-82M本地部署教程
经测试,Kokoro-82M的语音合成速度相比于其他tts非常的快,本文给出Windows版详细本地部署教程。 这里提供原始仓库进行参考:https://github.com/hexgrad/kokoro 一、依赖安装 1.新建conda环境 conda create --n kokoro python3.12 conda a…...
Day28 -js开发01 -JS三个实例:文件上传 登录验证 购物商城 ---逻辑漏洞复现 及 判断js的payload思路
本篇利用3个实例 来引出前端验证的逻辑漏洞 一、文件上传 实例:利用JS实现 【1】代码实现 js:文件后缀筛选 php:文件保存 00x1 先利用js文件上传 就利用之前php原生写的upload.html的模板,再加上script的后缀过滤。 <!…...
宝塔服务安装使用的保姆级教程
宝塔介绍: 宝塔面板(BT Panel) 是一款 国产的服务器运维管理面板,主要用于简化 Linux/Windows 服务器的网站、数据库、FTP、防火墙等管理操作。它通过图形化界面(Web端)和命令行工具(bt 命令&a…...
(四)YOLO_World-SAM-GraspNet的mujoco抓取仿真(操作记录)
一、创建虚拟环境 这里直接克隆之前项目的环境 (二)Graspnet在mujoco的仿真复现(操作记录)_graspnet仿真-CSDN博客 conda create -n graspnet --clone mujoco_graspnet conda activate graspnet 二、安装额外的环境包 pip in…...
Git Github Tutorial
Git & Github Tutorial 教程地址:Git & GitHub Tutorial | Visualized Git Course for Beginner & Professional Developers in 2024 git自动跟踪每个代码更改,允许多个人无缝处理同一个项目,让成员浏览项目历史纪录 1.检查gi…...
提高工作效率的新选择[特殊字符]——Element Plus UI库
在现代前端开发中,UI库的重要性不言而喻。它们不仅加速开发过程,还提高了应用的可维护性,形成了一致的用户体验。今天我们就来介绍一款由Element团队打造的Vue.js 3 UI库——Element Plus。 一、Element Plus:Vue.js 3的全新UI库…...
深入理解 TCP:重传机制、滑动窗口、流量控制与拥塞控制
TCP(Transmission Control Protocol)是一个面向连接、可靠传输的协议,支撑着绝大多数互联网通信。在实现可靠性的背后,TCP 引入了多个关键机制:重传机制、滑动窗口、流量控制 和 拥塞控制。这些机制共同协作࿰…...
从0开始学习大模型--Day05--理解prompt工程
提示词工程原理 N-gram:通过统计,计算N个词共同出现的概率,从而预测下一个词是什么。 深度学习模型:有多层神经网络组成,可以自动从数据中学习特征,让模型通过不断地自我学习不断成长,直到模型…...
全栈开发实战:FastAPI + React + MongoDB 构建现代Web应用
在Web开发领域,技术栈的选型直接影响着开发效率和系统性能。FARM(FastAPI, React, MongoDB)技术栈凭借其高性能、灵活架构和简洁语法,逐渐成为全栈开发的热门选择。本文将通过实际项目案例,详解如何从零搭建一个完整的…...
深入解析进程地址空间:从虚拟到物理的奇妙之旅
深入解析进程地址空间:从虚拟到物理的奇妙之旅 前言 各位小伙伴,还记得我们之前探讨的 fork 函数吗?当它返回两次时,父子进程中同名变量却拥有不同值的现象,曾让我们惊叹于进程独立性与写时拷贝的精妙设计。但你是否…...
Python教程(四)——数据结构
目录 1. 列表1.1 用列表实现堆栈1.2 用列表实现队列1.3 列表推导式1.4 嵌套的列表推导式 2. del语句3. 元组和序列4. 集合5. 字典6. 循环的技巧7. 深入条件控制8. 序列和其他类型的比较参考 1. 列表 方法含义list.append(x)在列表末尾添加一项,类似于a[len(a):] […...
Spring Cloud: Nacos
Nacos Nacos是阿里巴巴开源的一个服务发现,配置管理和服务管理平台。只要用于分布式系统中的微服务注册,发现和配置管理,nacos是一个注册中心的组件 官方仓库:https://nacos.io/ Nacos的下载 Releases alibaba/nacos 在官网中…...
基于 Q-learning 的城市场景无人机三维路径规划算法研究,可以自定义地图,提供完整MATLAB代码
一、引言 随着无人机技术的不断发展,其在城市环境中的应用越来越广泛,如物流配送、航拍测绘、交通监控等。然而,城市场景具有复杂的建筑布局、密集的障碍物以及多变的飞行环境,给无人机的路径规划带来了巨大的挑战。传统的路径规…...
Block Styler——字符串控件
字符串控件的应用 参考官方帮助案例:(这个方式感觉更好,第二种方式也可以)E:\NX1980\UGOPEN\SampleNXOpenApplications\C\BlockStyler\ColoredBlock 普通格式: 读取: //方法一 string0->GetProperti…...
【比赛真题解析】篮球迷
本次给大家分享一道比赛的题目:篮球迷。 洛谷链接:U561543 篮球迷 题目如下: 【题目描述】 众所周知,jimmy是个篮球迷。众所周知,Jimmy非常爱看NBA。 众所周知,Jimmy对NBA冠军球队的获奖年份和队名了如指掌。 所以,Jimmy要告诉你n个冠军球队的名字和获奖年份,并要求你…...
WPF之集合绑定深入
文章目录 引言ObservableCollection<T>基础什么是ObservableCollectionObservableCollection的工作原理基本用法示例ObservableCollection与MVVM模式ObservableCollection的局限性 INotifyCollectionChanged接口深入接口定义与作用NotifyCollectionChangedEventArgs详解自…...
第五天 车载系统安全(入侵检测、OTA安全) 数据加密(TLS/SSL、国密算法)
前言 随着汽车智能化程度不断提升,车载系统安全已成为行业关注焦点。本文将从零开始,带大家系统学习车载系统安全的核心技术,重点解析入侵检测、OTA安全、数据加密三大领域。即使没有安全背景,也能通过本文建立起完整的汽车网络安…...
采用SqlSugarClient创建数据库实例引发的异步调用问题
基于SqlSugar编写的多个WebApi接口,项目初始化时采用单例模式注册SqlSugarClient实例对象,前端页面采用layui布局,并在一个按钮事件中通过Ajax连续调用多个WebApi接口获取数据。实际运行时点击按钮会随机报下面几种错误: Execute…...
unity通过transform找子物体只能找子级
unity通过transform找子物体只能找子级,孙级以及更低级别都找不到,只能找到自己的下一级 如果要获取孙级以下的物体,最快的方法还是直接public挂载...
Dockers部署oscarfonts/geoserver镜像的Geoserver
Dockers部署oscarfonts/geoserver镜像的Geoserver 说实话,最后发现要选择合适的Geoserver镜像才是关键,所以所以所以…🐷 推荐oscarfonts/geoserver的镜像! 一开始用kartoza/geoserver镜像一直提示内存不足,不过还好…...
AtCoder AT_abc405_d ABC405D - Escape Route
前言 BFS 算法在 AtCoder 比赛中还是会考的,因为不常练习导致没想到,不仅错误 TLE 了很多,还影响了心态,3 发罚时后才 AC。 思路 首先,我们把所有位置和出口的距离算出来(用 BFS),…...
Redis-x64-3.0.500
E:\Workspace_zwf\Redis-x64-3.0.500 redis.windows.conf...
CUDA编程——性能优化基本技巧
本文主要介绍下面三种技巧: 使用 __restrict__ 让编译器放心地优化指针访存想办法让同一个 Warp 中的线程的访存 Pattern 尽可能连续,以利用 Memory coalescing使用 Shared memory 0. 弄清Kernael函数是Compute-bound 还是 Memory-bound 先摆出一个知…...
图像卷积初识
目录 一、卷积的概念 1、常见卷积核示例 二、使用 OpenCV 实现卷积操作 1、代码说明 2、运行说明 一、卷积的概念 在图像处理中,卷积是一种通过滑动窗口(卷积核)对图像进行局部计算的操作。卷积核是一个小的矩阵,它在图像上…...
K8S服务的请求访问转发原理
开启 K8s 服务异常排障过程前,须对 K8s 服务的访问路径有一个全面的了解,下面我们先介绍目前常用的 K8s 服务访问方式(不同云原生平台实现方式可能基于部署方案、性能优化等情况会存在一些差异,但是如要运维 K8s 服务,…...
VSCode-插件:codegeex:ai coding assistant / 清华智普 AI 插件
一、官网 https://codegeex.cn/ 二、vscode 安装插件 点击安装即可,无需复杂操作,国内软件,无需科学上网,非常友好 三、智能注释 输入 // 或者 空格---后边自动出现注释信息,,按下 Tab 键,进…...
Kubernetes生产实战(十四):Secret高级使用模式与安全实践指南
一、Secret核心类型解析 类型使用场景自动管理机制典型字段Opaque (默认)自定义敏感数据需手动创建data字段存储键值对kubernetes.io/dockerconfigjson私有镜像仓库认证kubelet自动更新.dockerconfigjsonkubernetes.io/tlsTLS证书管理Cert-Manager可自动化tls.crt/tls.keykube…...
【验证码】⭐️集成图形验证码实现安全校验
💥💥✈️✈️欢迎阅读本文章❤️❤️💥💥 🏆本篇文章阅读大约耗时5分钟。 ⛳️motto:不积跬步、无以千里 📋📋📋本文目录如下:🎁🎁&am…...
iOS瀑布流布局的实现(swift)
在iOS开发中,瀑布流布局(Waterfall Flow)是一种常见的多列不等高布局方式,适用于图片、商品展示等场景。以下是基于UICollectionView实现瀑布流布局的核心步骤和优化方法: 一、实现原理 瀑布流的核心在于动态计算每个…...
TGRS | FSVLM: 用于遥感农田分割的视觉语言模型
论文介绍 题目:FSVLM: A Vision-Language Model for Remote Sensing Farmland Segmentation 期刊:IEEE Transactions on Geoscience and Remote Sensing 论文:https://ieeexplore.ieee.org/document/10851315 年份:2025 单位…...
#Redis黑马点评#(四)优惠券秒杀
目录 一 生成全局id 二 添加优惠券 三 实现秒杀下单 方案一(会出现超卖问题) 方案二(解决了超卖但是错误率较高) 方案三(解决了错误率较高和超卖但是会出现一人抢多张问题) 方案四(解决一人抢多张问题“非分布式…...
https,http1,http2,http3的一些知识
温故知新,突然有人问我项目中🤔有使用http3么,一下不知从何说起,就有了这篇文章的出现。 https加密传输,ssltls https 验证身份 提供加密,混合加密 : 对称加密 非对称加密 原理:…...
《设计数据密集型应用》——阅读小记
设计数据密集型应用 这本书非常推荐看英语版,如果考过了CET-6就可以很轻松的阅读这本书。 当前计算机软件已经不是单体的时代了,分布式系统,微服务现在是服务端开发的主流,如果没有读过这本书,则强力建议读这本书。 …...
SpringCloud之Gateway基础认识-服务网关
0、Gateway基本知识 Gateway 是在 Spring 生态系统之上构建的 API 网关服务,基于 Spring ,Spring Boot 和 Project Reactor 等技术。 Gateway 旨在提供一种简单而有效的方式来对 API 进行路由,以及提供一些强大的过滤器功能,例如…...
MySQL 从入门到精通(三):日志管理详解 —— 从排错到恢复的核心利器
在 MySQL 数据库的日常运维中,日志是定位问题、优化性能、数据恢复的核心工具。无论是排查服务器启动异常,还是分析慢查询瓶颈,亦或是通过二进制日志恢复误删数据,日志都扮演着 “数据库黑匣子” 的角色。本文将深入解析 MySQL 的…...
单脉冲前视成像多目标分辨算法——论文阅读
单脉冲前视成像多目标分辨算法 1. 论文的研究目标及实际意义1.1 研究目标1.2 实际问题与产业意义2. 论文的创新方法及公式解析2.1 核心思路2.2 关键公式与模型2.2.1 单脉冲雷达信号模型2.2.2 匹配滤波输出模型2.2.3 多目标联合观测模型2.2.4 对数似然函数与优化2.2.5 MDL准则目…...
SpringBoot项目容器化进行部署,meven的docker插件远程构建docker镜像
需求:将Spring Boot项目使用容器化进行部署 前提 默认其他环境,如mysql,redis等已经通过docker部署完毕, 这里只讨论,如何制作springboot项目的镜像 要将Spring Boot项目使用docker容器进行部署,就需要将Spring Boot项目构建成一个docker镜像 一、手动…...
【金仓数据库征文】政府项目数据库迁移:从MySQL 5.7到KingbaseES的蜕变之路
摘要:本文详细阐述了政府项目中将 MySQL 5.7 数据库迁移至 KingbaseES 的全过程,涵盖迁移前的环境评估、数据梳理和工具准备,迁移实战中的数据源与目标库连接配置、迁移任务详细设定、执行迁移与过程监控,以及迁移后的质量验证、系…...
C++GO语言微服务和服务发现②
01 创建go-micro项目-查看生成的 proto文件 02 创建go-micro项目-查看生成的main文件和handler ## 创建 micro 服务 命令:micro new --type srv test66 框架默认自带服务发现:mdns。 使用consul服务发现: 1. 初始consul服务发现&…...
手机银行怎么打印流水账单(已解决)
一、中国银行 登录中国银行手机银行APP。 在首页点击“更多”,向左滑动找到并点击“助手”。 在助手页面选择“交易流水打印”。 点击“立即申请”,选择需要打印的账户和时间段。 输入接收流水账单的电子邮箱地址。 提交申请后,在“申请…...
单片机-STM32部分:10-2、逻辑分析仪
飞书文档https://x509p6c8to.feishu.cn/wiki/VrdkwVzOnifH8xktu3Bcuc4Enie 安装包如下:根据自己的系统选择,目前这个工具只有window版本哦 安装方法比较简单,都按默认下一步即可,注意不要安装到中文路径哦。 其余部分参考飞书文档…...
Scala与Go的异同教程
当瑞士军刀遇到电锯:Scala vs Go的相爱相杀之旅 各位准备秃头的程序猿们(放心,用Go和Scala不会加重你的发际线问题),今天我们来聊聊编程界的"冰与火之歌"——Scala和Go的异同。准备好瓜子饮料,我…...
【算法-哈希表】常见算法题的哈希表套路拆解
算法相关知识点可以通过点击以下链接进行学习一起加油!双指针滑动窗口二分查找前缀和位运算模拟链表 在刷题的过程中,我们会频繁遇到一些“高频套路”——而哈希表正是其中最常用也最高效的工具之一。它能帮助我们在 O(1) 的时间复杂度内完成查找、插入与…...