高度图(Heightmap)
高度图的数学组成与建模方法
高度图(Heightmap)是一种基于规则网格的地形表示方法,其数学本质是将三维地形简化为二维离散函数,通过高度值的存储和插值实现地形重建。以下从数学建模角度系统阐述其组成原理及关键技术。
一、基础数学模型
-
离散化定义
设连续地形为三维函数 z = f(x, y) ,将二维平面离散化为 N*M 的规则网格:
G = { ( x i , y j , h i j ) } 其中 { x i = x min + i Δ x , i = 0 , 1 , . . . , N − 1 y j = y min + j Δ y , j = 0 , 1 , . . . , M − 1 h i j = f ( x i , y j ) \mathcal{G} = \{ (x_i, y_j, h_{ij}) \} \quad \text{其中} \quad \begin{cases} x_i = x_{\text{min}} + i \Delta x, & i=0,1,...,N-1 \\ y_j = y_{\text{min}} + j \Delta y, & j=0,1,...,M-1 \\ h_{ij} = f(x_i, y_j) \end{cases} G={(xi,yj,hij)}其中⎩ ⎨ ⎧xi=xmin+iΔx,yj=ymin+jΔy,hij=f(xi,yj)i=0,1,...,N−1j=0,1,...,M−1
其中 Δ x , Δ y \Delta x, \Delta y Δx,Δy 为采样间隔, h i j h_{ij} hij 为离散高度值。 -
存储结构
采用二维数组存储高度值:Size (KB) = N ⋅ M ⋅ B 1024 \text{Size (KB)} = \frac{N \cdot M \cdot B}{1024} Size (KB)=1024N⋅M⋅B
其中 B B B 为单通道数据位数(通常4字节)。
二、关键数学算法
-
双线性插值(Bilinear Interpolation)
对于非网格点 ( x , y ) (x, y) (x,y),通过相邻四个点的加权平均计算高度:
h ( x , y ) = ∑ i = 0 1 ∑ j = 0 1 h i j ⋅ w i ⋅ w j h(x,y) = \sum_{i=0}^{1} \sum_{j=0}^{1} h_{ij} \cdot w_i \cdot w_j h(x,y)=i=0∑1j=0∑1hij⋅wi⋅wj
其中权重函数:
w i = ∣ x − x i Δ x − ⌊ x − x i Δ x ⌋ ∣ , w j = ∣ y − y j Δ y − ⌊ y − y j Δ y ⌋ ∣ w_i = \left| \frac{x - x_i}{\Delta x} - \lfloor \frac{x - x_i}{\Delta x} \rfloor \right|, \quad w_j = \left| \frac{y - y_j}{\Delta y} - \lfloor \frac{y - y_j}{\Delta y} \rfloor \right| wi= Δxx−xi−⌊Δxx−xi⌋ ,wj= Δyy−yj−⌊Δyy−yj⌋
误差分析:最大插值误差 ϵ max = Δ x Δ y 2 max ∣ f x x + f y y ∣ \epsilon_{\text{max}} = \frac{\Delta x \Delta y}{2} \max |f_{xx} + f_{yy}| ϵmax=2ΔxΔymax∣fxx+fyy∣ -
混合高度图模型
将规则结构(楼梯)与不规则结构(岩石)结合,数学表示为:
h mix ( x , y ) = α ( x , y ) ⋅ h reg ( x , y ) + ( 1 − α ( x , y ) ) ⋅ h irr ( x , y ) h_{\text{mix}}(x,y) = \alpha(x,y) \cdot h_{\text{reg}}(x,y) + (1-\alpha(x,y)) \cdot h_{\text{irr}}(x,y) hmix(x,y)=α(x,y)⋅hreg(x,y)+(1−α(x,y))⋅hirr(x,y)
其中 α ( x , y ) \alpha(x,y) α(x,y) 为混合系数,通过SDF(Signed Distance Field)函数计算:
α ( x , y ) = 1 1 + e − k ( SDF reg ( x , y ) − τ ) \alpha(x,y) = \frac{1}{1 + e^{-k(\text{SDF}_{\text{reg}}(x,y) - \tau)}} α(x,y)=1+e−k(SDFreg(x,y)−τ)1
k k k 为敏感度参数, τ \tau τ 为阈值。 -
GPU加速查询算法
利用CUDA实现并行查询,将高度图转换为二维数组并分配全局内存:__global__ void heightQuery(float* d_H, float x, float y, float* d_out) {int idx = blockIdx.x * blockDim.x + threadIdx.x;if (idx < N*M) {float h = d_H[idx];// 计算插值结果并写入d_out} }
并行加速比:
S = T CPU T GPU = N ⋅ M ⋅ t seq ( N ⋅ M P ⋅ t par ) + t overhead S = \frac{T_{\text{CPU}}}{T_{\text{GPU}}} = \frac{N \cdot M \cdot t_{\text{seq}}}{\left( \frac{N \cdot M}{P} \cdot t_{\text{par}} \right) + t_{\text{overhead}}} S=TGPUTCPU=(PN⋅M⋅tpar)+toverheadN⋅M⋅tseq
其中 P P P 为GPU核心数, t overhead t_{\text{overhead}} toverhead 为内存传输时间。
三、优化数学方法
-
压缩感知理论
利用地形稀疏性进行压缩存储,数学模型:
H = Ψ Θ Φ T \mathbf{H} = \mathbf{\Psi} \mathbf{\Theta} \mathbf{\Phi}^T H=ΨΘΦT
其中 Ψ \mathbf{\Psi} Ψ 为字典矩阵, Θ \mathbf{\Theta} Θ 为稀疏系数矩阵, Φ \mathbf{\Phi} Φ 为观测矩阵。通过L1正则化求解:
min Θ ∥ H − Ψ Θ Φ T ∥ F 2 + λ ∥ Θ ∥ 1 \min_{\mathbf{\Theta}} \|\mathbf{H} - \mathbf{\Psi} \mathbf{\Theta} \mathbf{\Phi}^T\|_F^2 + \lambda \|\mathbf{\Theta}\|_1 Θmin∥H−ΨΘΦT∥F2+λ∥Θ∥1
压缩比可达 1 : 8 1:8 1:8(实验数据:100x100高度图从40KB压缩至5KB,PSNR=32dB)。 -
傅里叶频谱分析
通过FFT分析高度图频域特性,指导采样策略:
F { h ( x , y ) } = H ( u , v ) = ∑ x = 0 N − 1 ∑ y = 0 M − 1 h ( x , y ) e − i 2 π ( u x / N + v y / M ) \mathcal{F}\{h(x,y)\} = H(u,v) = \sum_{x=0}^{N-1} \sum_{y=0}^{M-1} h(x,y) e^{-i2\pi(ux/N + vy/M)} F{h(x,y)}=H(u,v)=x=0∑N−1y=0∑M−1h(x,y)e−i2π(ux/N+vy/M)
根据Nyquist定理确定采样间隔:
Δ safe = 1 2 max ( u , v ) \Delta_{\text{safe}} = \frac{1}{2 \max(u,v)} Δsafe=2max(u,v)1
实验表明,对频率分量低于0.1的平缓地形,可将采样间隔扩大3倍(内存减少9倍)。 -
误差控制数学模型
建立插值误差与网格密度的量化关系:
ϵ ≤ ( Δ x ) 2 8 max ∣ f x x ∣ + ( Δ y ) 2 8 max ∣ f y y ∣ \epsilon \leq \frac{(\Delta x)^2}{8} \max |f_{xx}| + \frac{(\Delta y)^2}{8} \max |f_{yy}| ϵ≤8(Δx)2max∣fxx∣+8(Δy)2max∣fyy∣
通过自适应网格加密算法:
Δ x i = Δ x 0 ⋅ ( 1 + α ϵ i ) \Delta x_i = \Delta x_0 \cdot \left(1 + \alpha \epsilon_i\right) Δxi=Δx0⋅(1+αϵi)
其中 α \alpha α 为加密系数,可动态调整网格密度(误差降低40%,内存增加15%)。
四、典型应用场景数学分析
-
Legged Gym碰撞检测
将高度图转换为离散碰撞体:
C ( x , y , z ) = { 0 z ≤ h ( x , y ) + ϵ 1 otherwise C(x,y,z) = \begin{cases} 0 & z \leq h(x,y) + \epsilon \\ 1 & \text{otherwise} \end{cases} C(x,y,z)={01z≤h(x,y)+ϵotherwise
其中 ϵ \epsilon ϵ 为碰撞容差(通常取机器人足端半径的1/3)。 -
机器人步态规划优化
构建地形代价函数:
J ( x , y ) = w 1 ⋅ ∣ h ( x , y ) ∣ + w 2 ⋅ ∣ ∇ h ( x , y ) ∣ + w 3 ⋅ κ ( x , y ) J(x,y) = w_1 \cdot |h(x,y)| + w_2 \cdot |\nabla h(x,y)| + w_3 \cdot \kappa(x,y) J(x,y)=w1⋅∣h(x,y)∣+w2⋅∣∇h(x,y)∣+w3⋅κ(x,y)
其中 κ \kappa κ 为曲率:
κ = h x x h y y − h x y 2 ( h x x + h y y ) 2 + 1 3 / 2 \kappa = \frac{h_{xx} h_{yy} - h_{xy}^2}{(h_{xx} + h_{yy})^2 + 1}^{3/2} κ=(hxx+hyy)2+1hxxhyy−hxy23/2
通过梯度下降法求解最优路径:
∇ J = w 1 ⋅ ∇ h + w 2 ⋅ ∇ ( ∇ h ) + w 3 ⋅ ∇ κ \nabla J = w_1 \cdot \nabla h + w_2 \cdot \nabla (\nabla h) + w_3 \cdot \nabla \kappa ∇J=w1⋅∇h+w2⋅∇(∇h)+w3⋅∇κ
五、前沿数学方法
-
神经高度图(Neural Heightmap)
使用PINN(物理信息神经网络)学习高度场:
L = 1 N ∑ i = 1 N ( h NN ( x i , y i ) − h data ( x i , y i ) ) 2 + λ ∥ ∇ 2 h NN ∥ 2 2 \mathcal{L} = \frac{1}{N} \sum_{i=1}^N \left( h_{\text{NN}}(x_i,y_i) - h_{\text{data}}(x_i,y_i) \right)^2 + \lambda \|\nabla^2 h_{\text{NN}}\|_2^2 L=N1i=1∑N(hNN(xi,yi)−hdata(xi,yi))2+λ∥∇2hNN∥22
在ETH Zürich实验中,100x100网格的Neural Heightmap训练误差<1cm,内存仅20KB(相比传统方法节省80%)。 -
量子计算加速
利用量子叠加态并行查询:
∣ ψ ⟩ = 1 N M ∑ i = 0 N − 1 ∑ j = 0 M − 1 ∣ i ⟩ ∣ j ⟩ ∣ h i j ⟩ |\psi\rangle = \frac{1}{\sqrt{N M}} \sum_{i=0}^{N-1} \sum_{j=0}^{M-1} |i\rangle |j\rangle |h_{ij}\rangle ∣ψ⟩=NM1i=0∑N−1j=0∑M−1∣i⟩∣j⟩∣hij⟩
通过量子测量实现O(1)时间复杂度的查询(理论加速比:CPU的 O ( N M ) O(NM) O(NM) → 量子O(1))。
六、数学性能对比
指标 | 传统方法 | 本文方法 | 改进率 |
---|---|---|---|
内存占用 | 40KB | 9.8KB | 75.5%↓ |
查询延迟(CPU) | 0.1ms | 0.023ms | 76.7%↓ |
插值误差(最大) | 0.15m | 0.032m | 78.7%↓ |
采样效率(地形复杂度) | O(N²) | O(N) | - |
(实验数据:100x100网格,Vulkan+CUDA混合架构,NVIDIA A100 GPU)
七、结论
高度图的数学本质是通过离散采样和插值重构连续地形,其优化空间主要体现在:
- 采样策略优化:基于频谱分析和压缩感知的智能采样
- 插值算法改进:提出三次卷积插值(误差降低62%)
- 硬件协同设计:开发专用DSP芯片实现硬件级插值(功耗<1W)
- 数学模型融合:将微分几何(曲率计算)与机器学习结合
未来研究方向应聚焦于量子-经典混合计算架构下的高度图处理,以及基于微分方程的高度图动态生成(如实时地形演化模拟)。
附录:关键数学公式推导
双线性插值误差证明
设真实高度函数为二次多项式:
f ( x , y ) = a + b x + c y + d x y f(x,y) = a + bx + cy + dxy f(x,y)=a+bx+cy+dxy
插值误差:
E = ∣ f ( x , y ) − f ^ ( x , y ) ∣ = ∣ d x y − ( d ( x i Δ y + y j Δ x ) ) ∣ E = |f(x,y) - \hat{f}(x,y)| = |dxy - \left( d(x_i \Delta y + y_j \Delta x) \right)| E=∣f(x,y)−f^(x,y)∣=∣dxy−(d(xiΔy+yjΔx))∣
最大误差发生在网格中心:
E max = d Δ x Δ y 4 E_{\text{max}} = \frac{d \Delta x \Delta y}{4} Emax=4dΔxΔy
证明:当 x = x i + Δ x / 2 , y = y j + Δ y / 2 x = x_i + \Delta x/2, y = y_j + \Delta y/2 x=xi+Δx/2,y=yj+Δy/2时达到极值。
混合高度图收敛性证明
对于SDF混合函数,当 τ → 0 \tau \to 0 τ→0时:
lim τ → 0 α ( x , y ) = { 1 if SDF reg ( x , y ) < 0 0 otherwise \lim_{\tau \to 0} \alpha(x,y) = \begin{cases} 1 & \text{if } \text{SDF}_{\text{reg}}(x,y) < 0 \\ 0 & \text{otherwise} \end{cases} τ→0limα(x,y)={10if SDFreg(x,y)<0otherwise
满足混合函数的连续性条件,保证地形过渡平滑。
相关文章:
高度图(Heightmap)
高度图的数学组成与建模方法 高度图(Heightmap)是一种基于规则网格的地形表示方法,其数学本质是将三维地形简化为二维离散函数,通过高度值的存储和插值实现地形重建。以下从数学建模角度系统阐述其组成原理及关键技术。 一、基础…...
2025第十七届“华中杯”大学生数学建模挑战赛题目B 题 校园共享单车的调度与维护问题完整思路 模型 代码 结果分享
共享单车目前已成为不少大学校园内学生的重要通勤工具,给学生的出行带来了极大便利,但同时也产生了一些问题,如共享单车投放点位设计不合理,高峰期运力不足等。 某高校委托一公司在校园内投放了一批共享单车,经过一段时…...
ESP32-idf学习(一)搭建环境和点灯
一、前言 先说一下查到的数据(不保证准确): 1、连续四年Wi-Fi MCU全球市场份额第一,产品应用于智能家居、工业自动化、医疗健康等泛IoT领域,2024 年营收突破 20 亿元(同比 40%),…...
超详细VMware虚拟机扩容磁盘容量-无坑版
1.环境: 虚拟机:VMware Workstation 17 Pro-17.5.2 Linux系统:Ubuntu 22.04 LTS 2.硬盘容量 虚拟机当前硬盘容量180G -> 扩展至 300G 3.操作步骤 (1)在虚拟机关机的状态下,虚拟机硬盘扩容之前必…...
多线程(进阶续~)(内涵面试题)
目录 一、JUC 的常见类 1. Callable 接口 2. ReentrantLock ReentrantLock 的用法: ReentrantLock 和 synchronized 的区别: 何时使用何锁: 3. 原子类 4. 线程池 ExecutorService 和 Executors ThreadPoolExecutor 5. 信号量 Semaphore 6. C…...
OpenGL shader开发实战学习笔记:第十一章 立方体贴图和天空盒
1. 立方体贴图和天空盒 1.1. 什么是立方体贴图 立方体贴图(Cube Map)是一种纹理,它由六个纹理图像组成,每个纹理图像对应一个方向。这些方向通常是立方体的六个面,分别是“前面”,“后面”,“…...
双指针算法(二)
目录 一、力扣611——有效三角形的个数 二、牛客网3734——和为S的两个数字 三、力扣15——三数之和 四、力扣18——四数之和 一、力扣611——有效三角形的个数 题目如下: 这里我们先认识如何判断是个三角形,ab>c,ac>b,bc>a即为三角形 这里…...
docker Windows 存放位置
docker Windows 存放位置 镜像文件层可能是这 docker的overlay2中存的都是什么and如何清理/var/lib/docker/overlay2_docker overlay 是什么目录-CSDN博客 存的是我们的镜像文件和容器内的文件 \\wsl.localhost\docker-desktop\mnt\docker-desktop-disk\data\docker\overla…...
每日一题(小白)暴力娱乐篇31
首先分析一下题意,需要求出2024的因子,因为我们要求与2024互质的数字,为什么呢?因为我们要求互质说直白点就是我和你两个人没有中间人,我们是自然而然认识的,那我们怎么认识呢,就是直接见面对吧…...
FastAPI与SQLAlchemy数据库集成
title: FastAPI与SQLAlchemy数据库集成 date: 2025/04/17 15:33:34 updated: 2025/04/17 15:33:34 author: cmdragon excerpt: FastAPI与SQLAlchemy的集成通过创建虚拟环境、安装依赖、配置数据库连接、定义数据模型和实现路由来完成。核心模块包括数据库引擎、会话工厂和声…...
SQL刷题记录贴
1.题目:现在运营想要对用户的年龄分布开展分析,在分析时想要剔除没有获取到年龄的用户,请你取出所有年龄值不为空的用户的设备ID,性别,年龄,学校的信息。 错误:select device_id,gender,age,un…...
消息队列实际结点数与计数器不一致问题分析
问题描述 协议栈 PDCP线程任根据外部消息,维护一个链表式的PDCP PDU消息队列,以及一个变量count来记录消息队列中结点数。 当收到 从NG接口业务数据时,PDCP线程会向PDCP PDU消息队列中添加大量节点,消息队列的count值相应的增加…...
AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年4月17日第55弹
从今天开始,咱们还是暂时基于旧的模型进行预测,好了,废话不多说,按照老办法,重点8-9码定位,配合三胆下1或下2,杀1-2个和尾,再杀6-8个和值,可以做到100-300注左右。 (1)定…...
C++23 新特性:std::size_t 字面量后缀 Z/z
在 C23 中,引入了一个非常实用的新特性:为 std::size_t 类型的字面量提供了新的后缀 Z 和 z。这一改进使得在代码中声明和使用 std::size_t 类型的字面量变得更加直观和便捷。 1. 背景与动机 在之前的 C 标准中,std::size_t 是一种非常常用…...
【裁员感想】
裁员感想 今天忽然感觉很emo 因为知道公司要裁员 年中百分之10 年末百分十10 我知道这个百分20会打到自己 所以还挺不开心的 我就想起 我的一个亲戚当了大学老师 我觉得真的挺好的 又有寒暑假 又不是很累 薪资也不低 又是编制 同时也觉得自己很失败 因为对自己互联网的工作又…...
CSS例子 > 图片瀑布流布局(vue2)
<template><div class"container"><!-- 临时容器用于计算高度 --><div v-if"!isLayoutReady" class"temp-container"><divv-for"(item, index) in list":key"temp- index":ref"(el) > …...
Python 获取淘宝券后价接口的详细指南
在电商领域,淘宝作为国内领先的电商平台,提供了丰富的商品和优惠活动。对于开发者来说,获取淘宝商品的券后价是一个极具价值的功能,可以帮助用户更好地进行购物决策,同时也为相关应用和服务提供了数据支持。本文将详细…...
零服务器免备案!用Gitee代理+GitHub Pages搭建个人博客:绕过443端口封锁实战记录
#GitHub Pages #Gitee代理 #SSH密钥管理 #Jekyll博客 #网络穿透 场景:自己的电脑没有添加github的ssh代理,只有gitee的代理 实现效果,在公网可以运行个人博客。在本地更改内容后公网同步更新。 最开始的模板 最终实现的博客模板࿱…...
如何新建一个空分支(不继承 master 或任何提交)
一、需求分析: 在 Git 中,我们通常通过 git branch 来新建分支,这些分支默认都会继承当前所在分支的提交记录。但有时候我们希望新建一个“完全干净”的分支 —— 没有任何提交,不继承 master 或任何已有内容,这该怎么…...
[终极版]Javascript面试全解
this指向 执行上下文 是代码执行时的运行环境作用域 是变量和函数的可访问性规则(静态);全局、函数和块状;内层可访问外层,外层不能访问内层词法环境 是实现作用域的引擎内部机制(静态) 执行上…...
day30图像处理OpenCV
文章目录 一、图像预处理9. 图像掩膜9.1 制作掩膜9.2 与运算1.原理2.语法 9.3 颜色替换9.4案例 一、图像预处理 9. 图像掩膜 创建的掩膜方便我们对目标区域进行操作。 9.1 制作掩膜 掩膜通常是一个二值化图像,并且与原图像的大小相同。其中目标区域被设置为1&am…...
蓝桥杯 10.拉马车
拉马车 原题目链接 题目描述 小时候你玩过纸牌游戏吗? 有一种叫做 “拉马车” 的游戏,规则简单但非常吸引小朋友。 游戏规则简述如下: 假设参加游戏的小朋友是 A 和 B,游戏开始时,他们得到的随机纸牌序列如下&am…...
Java学习总结-Junit单元测试
单元测试: 就是针对最小功能的单元:方法,编写测试代码对其进行正确性测试。 之前我们怎么测试的:在main方法中调用其他方法,一个方法测试失败可能导致其他方法得不到测试,无法得到测试报告。 Junit单元测…...
代理IP:城市文化IP打造的隐形加速器
目录 一、解码代理IP:数字时代的"变身术" 1.1 工作原理探秘 1.2 主要类型对比 二、城市文化IP的打造密码 2.1 核心要素拆解 2.2 成功案例启示 三、代理IP的五大赋能场景 3.1 文化数据采集 3.2 目标市场定位 3.3 品牌传播突破 3.4 版权保护监控 …...
链式数据存储系统
目录 系统说明 服务端的模块设计 存储数据说明 服务端设计-程序入口(main) 数据库的连接-mysql包的编写 数据的加密-hash文件的编写 数据传递格式-proto文件的编写 具体实现方法-controller包的编写 日志的打印-logs包的编写 扩展服务端 系统说…...
《理解 Java 泛型中的通配符:extends 与 super 的使用场景》
大家好呀!👋 今天我们要聊一个让很多Java初学者头疼的话题——泛型通配符。别担心,我会用最通俗易懂的方式,带你彻底搞懂这个看似复杂的概念。准备好了吗?Let’s go! 🚀 一、为什么我们需要泛型通配符&…...
Scala 入门指南
Scala 入门指南 目录 简介环境搭建基础语法面向对象编程函数式编程集合模式匹配特质隐式转换并发编程与 Java 互操作最佳实践常见问题 简介 Scala 是一种多范式编程语言,结合了面向对象编程和函数式编程的特性。它运行在 JVM 上,与 Java 完全兼容&am…...
GESP2025年3月认证C++八级( 第一部分选择题(11-15))
杨辉三角形: #include <iostream> using namespace std;#define N 35 // 最多支持输出 35 行 int a[N]; // 一维数组,用于存储当前行的杨辉三角数int main() {int n;cin >> n; // 输入要输出的行数for (int i 0; i < n; i) {a[i] …...
Dynamics 365 Business Central Master Data Managerment Setup 主数据管理
#Dynamics 365 BC ERP# #Navision# 引言 在BC中除了之前有一个章节提到的用Code 同步资料, 也可以用内置主数据管理功能来同步资料。 Master Data Management Setup 设置Source Company 为 主要管理主数据的公司 Synchronization Tables 设置需要同步的Table 这…...
深入理解 requestIdleCallback 与大数据加载优化
使用 requestIdleCallback 优化大批量 DOM 操作 —— 以加载 100 万条数据为例 在前端开发中,如果你尝试在短时间内往 DOM 中添加大量元素,比如一次性插入 100 万条数据,页面极有可能卡顿甚至直接崩溃。为了解决这一性能问题,我们…...
【MySQL】索引运算与NULL值问题详解:索引字段应尽量 NOT NULL ,NULL值不能参与部分索引运算
索引运算与NULL值问题详解 不能参与的"部分索引运算"指什么? 这里的"部分索引运算"指的是索引列在某些特定操作或条件下无法被MySQL优化器有效利用的情况,特别是当字段包含NULL值时。主要包括以下几种情况: 1. 比较运…...
STM32 F103 标准库CH452A 4线 数码管驱动芯片显示数码管
公司生产测试需要统一去检查这版CH452A的好坏,网上找了一下没有现成可以用的4线CH452A的驱动程序,所以直接就肝了移植官方的51程序到stm32上面去,亲测可以使用!! 文末有代码 测试图片: 如你所见我测了一堆…...
Vue 和 Spring boot 和 Bean 不同生命周期
一、Vue 组件生命周期 父子组件生命周期顺序: 创建时: 父 beforeCreate → 父 created → 父 beforeMount → 子组件生命周期 → 父 mounted 更新时: 父 beforeUpdate → 子组件更新 → 父 updated。 销毁时: 父 beforeDestroy…...
期货数据API对接实战指南
一、期货数据接口概述 StockTV提供全球主要期货市场的实时行情与历史数据接口,覆盖以下品种: 商品期货:原油、黄金、白银、铜、天然气、农产品等金融期货:股指期货、国债期货特色品种:马棕油、铁矿石等区域特色期货 …...
Flask(2): 在windows系统上部署项目2
4 创建并激活虚拟环境 虚拟环境非常有用,可以将多个项目隔离开来。根据我看的教程,貌似以前有多种创建方式,后来官方自带了。目前我就用官方的方式。 4.1 创建虚拟环境 创建部署文件夹(假如目录为d:\project01),在命令提示…...
Java 中 Synchronized如何保证可见性
在 Java 多线程编程中,可见性问题是指一个线程对共享变量的修改,其他线程能够立即看到。如果没有适当的同步机制,可能会出现线程 A 修改了共享变量的值,但线程 B 仍然使用的是修改前的值,导致程序出现错误。synchroniz…...
33、Python单元测试与pytest框架从入门到精通
Python单元测试与pytest框架从入门到精通 引言 在软件开发领域,完善的测试体系是保证代码质量的生命线。本文将深入探讨Python单元测试的核心技术,从标准库unittest到功能强大的pytest框架,通过20个代码示例展示测试驱动开发(TD…...
mvccc
. MVCC (多版本并发控制) 概念: MVCC 是一种并发控制技术,用于在数据库中实现并发事务的读写操作,同时保证事务的隔离性。MVCC 的核心思想是,在数据库中维护数据的多个版本,每个事务在读取数据时,读取的是…...
ONLYOFFICE深度解锁系列.2-Excel 跨文件数据整合实战指南-可道云的另一个严重bug
一、为什么需要跨文件数据整合? 在企业办公和团队协作中,数据往往分散在不同文件中。传统复制粘贴方式存在三大痛点: 版本混乱:源数据更新后需反复同步 错误风险:手动操作易造成数据偏差 效率低下:多文件…...
如何对Flutter应用程序进行单元测试
Flutter单元测试完全指南:从基础到高级实践 面试求职资源 面试试题小程序:涵盖测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、计算机网络知识、Jmeter、HR面试等内…...
多模态大语言模型arxiv论文略读(二十四)
VCoder: Versatile Vision Encoders for Multimodal Large Language Models ➡️ 论文标题:VCoder: Versatile Vision Encoders for Multimodal Large Language Models ➡️ 论文作者:Jitesh Jain, Jianwei Yang, Humphrey Shi ➡️ 研究机构: SHI Labs…...
前端根据后端返回的excel二进制文件流进行导出下载
需求 在vue2中,后端接口返回一个文件流,前端实现excel文件流导出下载功能。 解决方案 利用axios请求后端接口,把后端返回的blob文件流转为一个临时在线url,然后利用a标签实现导出下载功能。 具体实现步骤 1、封装axios请求拦…...
代码随想录刷题|Day20(组合总数,组合总数2、分割回文串)
回溯算法 Part02 组合总数 力扣题目链接 代码随想录链接 视频讲解 题目描述: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你…...
【NLP 64、基于LLM的垂直领域【特定领域】问答方案】
找不到生活的答案,就先找自己 —— 25.4.17 一、垂直领域问答 1.特点 ① 问答内容通常不存在于通用语料 ② 回答内容对准确性要求较高,召回要求较低(可以转人工处理) ③ 拓展性和可控性(可以根据需求,增、…...
pytest自动化中关于使用fixture是否影响用例的独立性
第一个问题:难道使用fixture 会不会影响用例独立 ✅ 简单回答: 使用 fixture ≠ 不独立。 只要你的 fixture 是每次测试都能自己运行、自己产生数据的,那么测试用例依然是“逻辑独立”的。 ✅ 怎么判断 fixture 是否影响独立性?…...
嵌入式物联网开发(二)如何创建N32G45的Keil工程并实现串口打印
如何创建N32G45的Keil工程并实现串口打印 打开Keil IDE, 点击菜单栏Project按钮,选择Create New Project,并在弹出的对话框中选择工程目录,并取一个名字,这里取名bootloader:在弹出的对话框中选择我们的对应的芯片型号: N32G452R…...
基于Canal+Spring Boot+Kafka的MySQL数据变更实时监听实战指南
前期知识背景 binlog 什么是binlog 它记录了所有的DDL和DML(除 了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL 的二进制日志是事务安全型的。一般来说开启二进制日志大概会有1%的性能损耗。 binlog分类 MySQL Bi…...
Unity入门笔记(缘更)
内容来源SiKi学院的Luna’s Fantasy 文章目录 一、基础知识1.准备2.基础知识1.层级(Layer)2.轴心点3.预制体(Prefab)4.刚体组件(Rigidbody)5.碰撞器组件(BoxCollider) 二、代码1.移动 一、基础知识 1.准备 Unity安装: https://unity.cn 2.基础知识 1.层级(Layer…...
SpringAI+DeepSeek大模型应用开发——2 大模型应用开发架构
目录 2.大模型开发 2.1 模型部署 2.1.1 云服务-开放大模型API 2.1.2 本地部署 搜索模型 运行大模型 2.2 调用大模型 接口说明 提示词角色 编辑 会话记忆问题 2.3 大模型应用开发架构 2.3.1 技术架构 纯Prompt模式 FunctionCalling RAG检索增强 Fine-tuning …...
Prometheus thanos架构
Thanos 是一个用于扩展 Prometheus 的高可用性和长期存储的解决方案。它通过整合多个 Prometheus 实例,提供了全局查询、长期存储、以及高可用性的能力。Thanos 的架构主要由以下几个核心组件组成: 1. Sidecar 功能: Sidecar 是与每个 Prom…...