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

BA是什么?

目录

1.EKF的步骤

一、问题定义与模型建立

二、线性化处理

三、应用卡尔曼滤波

四、迭代与收敛

五、结果评估与优化

注意事项

2.BA问题的步骤

一、问题定义与数据准备

二、构建优化模型

三、选择优化算法

四、执行优化过程

五、结果评估与优化

六、应用与验证

1.BA的定义

2.BA的基本原理

(1) 数学建模

(2) 误差函数构建

(3) 非线性优化

3.VSLAM中的优化


1.EKF的步骤

EKF,即扩展卡尔曼滤波(Extended Kalman Filter),是一种应用于非线性系统的状态估计方法。它通过泰勒级数展开将非线性系统线性化,然后使用标准的卡尔曼滤波算法进行状态估计。以下是EKF问题解决的一般步骤:

一、问题定义与模型建立
  1. 明确目标:确定要估计的状态变量,如位置、速度

  2. 建立模型

    • 状态方程:描述系统状态如何随时间变化的非线性方程。
    • 观测方程:描述系统状态与观测值之间的非线性关系。
二、线性化处理
  1. 泰勒级数展开:对状态方程和观测方程中的非线性函数进行泰勒级数展开,并忽略二阶及以上项,得到近似的线性化模型。
  2. 计算雅克比矩阵:线性化后的模型需要计算状态转移矩阵F和观测矩阵H的雅克比矩阵,这些矩阵描述了线性化后的状态变化率和观测变化率。
三、应用卡尔曼滤波
  1. 初始化:设置初始状态估计值、初始状态估计误差协方差矩阵等。

  2. 预测步骤

    • 状态预测:使用线性化后的状态方程预测当前时刻的状态。
    • 协方差预测:使用状态转移矩阵F和初始状态估计误差协方差矩阵预测当前时刻的协方差矩阵。
  3. 更新步骤

    • 计算卡尔曼增益:根据观测矩阵H、观测噪声协方差矩阵R和预测协方差矩阵计算卡尔曼增益。
    • 状态更新:使用观测值和卡尔曼增益更新状态估计值。
    • 协方差更新:使用卡尔曼增益和观测噪声协方差矩阵更新协方差矩阵。
四、迭代与收敛
  1. 迭代:重复预测和更新步骤,直到满足终止条件(如达到最大迭代次数或状态估计误差小于某个阈值)。
  2. 收敛性判断:检查状态估计值和协方差矩阵是否收敛,即是否在某个范围内稳定波动。
五、结果评估与优化
  1. 结果评估:通过对比实际观测值和估计值,评估EKF算法的性能。
  2. 优化:根据评估结果,调整模型参数、噪声协方差矩阵等,以提高EKF算法的准确性和稳定性。
注意事项
  1. 线性化假设:EKF依赖于局部线性化假设,当系统非线性较强时,线性化误差可能较大,导致算法性能下降。
  2. 噪声假设:EKF假设过程噪声和观测噪声都是高斯白噪声,且噪声统计特性已知。在实际应用中,这些假设可能不成立,需要进行适当的调整。
  3. 计算复杂度:EKF需要计算雅克比矩阵和进行矩阵运算,计算复杂度较高。在实际应用中,需要考虑计算资源的限制。

通过以上步骤,可以解决非线性系统中的状态估计问题,并应用EKF算法进行实时状态估计。

2.BA问题的步骤

BA问题,即束调整(Bundle Adjustment)问题,是计算机视觉和摄影测量中的一个关键问题。它本质上是一个优化问题,旨在通过最小化重投影误差来优化三维结构和相机参数。以下是BA问题解决的一般步骤:

一、问题定义与数据准备
  1. 明确目标:确定要优化的参数,包括三维点的位置、相机的姿态(旋转和平移)、内部校准参数(如焦距、主点等)以及可能的径向畸变参数。
  2. 收集数据:获取多张包含同一场景的照片以及对应的相机参数(如焦距、曝光时间等)和图像特征点(如角点、边缘等)的匹配信息。
二、构建优化模型
  1. 建立重投影误差模型:对于每个图像特征点,计算其在三维空间中的位置,并将其投影到对应的图像平面上,与实际观测到的位置进行比较,形成重投影误差。
  2. 构建非线性最小二乘问题:将重投影误差的平方和作为目标函数,形成一个非线性最小二乘问题。
三、选择优化算法
  1. Levenberg-Marquardt算法:BA问题通常使用Levenberg-Marquardt(LM)算法进行求解,因为它在处理非线性最小二乘问题时具有较好的收敛性和鲁棒性。
  2. 稀疏性利用:由于BA问题的线性系统具有稀疏块结构,可以利用稀疏性来减少计算量,提高求解效率。
四、执行优化过程
  1. 初始化参数:为待优化的参数设置初始值,这些初始值可以通过其他方法(如SFM、ICP等)获得或随机生成。
  2. 迭代优化:使用LM算法进行迭代优化,每次迭代都更新参数值,并计算新的重投影误差。
  3. 检查收敛性:在每次迭代后,检查目标函数的值是否满足收敛条件(如变化量小于某个阈值),如果满足,则停止迭代;否则,继续迭代。
五、结果评估与优化
  1. 评估结果:检查优化后的参数是否满足预期要求,如三维点的位置是否合理、相机的姿态是否准确等。
  2. 优化调整:如果评估结果不理想,可以调整优化算法的参数(如LM算法的阻尼因子、迭代次数等),或重新收集数据并重新执行优化过程。
六、应用与验证
  1. 应用优化结果:将优化后的参数应用于实际场景,如三维重建、相机定位等。
  2. 验证准确性:通过与其他方法(如激光扫描、GPS等)的结果进行比较,验证BA问题的优化结果的准确性。

通过以上步骤,可以解决BA问题,并优化三维结构和相机参数,为计算机视觉和摄影测量的应用提供准确的基础数据。

3.0滑窗

在视觉SLAM(Simultaneous Localization and Mapping)中,滑动窗口法是一种用于控制后端束调整(Bundle Adjustment,BA)规模的有效方法。以下是视觉SLAM中滑动窗口法的解决步骤:

一、滑动窗口法引入

在SLAM过程中,随着关键帧和路标点的增多,后端BA的计算效率会不断下降。为了避免这种情况,需要使用滑动窗口法将待优化的关键帧限制在一定的数量内,从而控制BA的规模。

二、滑动窗口法操作

滑动窗口法的核心在于如何有效地添加和删除关键帧,同时保持优化问题的稀疏性和一致性。

  1. 新增关键帧

    • 当新的关键帧被添加到窗口中时,需要将其及其观测到的路标点一起加入到BA优化问题中。
    • 这通常涉及构建新的误差项,并更新整体的Hessian矩阵和残差向量。
  2. 删除旧的关键帧

    • 为了保持窗口的大小固定,需要定期删除窗口中的旧关键帧。
    • 然而,直接删除关键帧会丢失信息,并破坏相邻关键帧之间的约束关系。因此,实际上采用的是边缘化的方法。
三、边缘化过程

边缘化是一种将某些变量从优化问题中移除,同时保留其信息的方法。在滑动窗口法中,边缘化通常用于处理被删除的关键帧及其观测到的路标点。

  1. 选择被边缘化的变量

    • 确定要删除的关键帧,并找出其观测到的所有路标点。
  2. 构建边缘化方程

    • 利用BA优化问题的Hessian矩阵和残差向量,构建与被边缘化变量相关的边缘化方程。
  3. 执行边缘化操作

    • 通过舒尔补(Schur complement)等方法,将被边缘化的变量从Hessian矩阵中消去,同时更新残差向量。
    • 这将导致与被边缘化变量相关的变量在新的线性化点上计算雅可比矩阵,从而引入先验信息。
  4. 保持稀疏性

    • 为了保持优化问题的稀疏性,需要采取一些策略来减少Fill-in现象。例如,在边缘化旧的关键帧时,可以同时边缘化其观测到的路标点,从而将路标点的信息转换成剩下关键帧之间的共视信息。
四、滑动窗口法的迭代优化

在滑动窗口法中,随着窗口的滑动,需要不断迭代地更新Hessian矩阵和残差向量,并重新进行BA优化。这通常涉及以下步骤:

  1. 更新窗口

    • 根据一定的策略(如时间、空间等)选择新的关键帧添加到窗口中,并删除最旧的关键帧。
  2. 构建新的优化问题

    • 根据更新后的窗口内容,构建新的BA优化问题。
  3. 执行BA优化

    • 利用现有的优化算法(如Gauss-Newton、Levenberg-Marquardt等)对新的优化问题进行求解。
  4. 更新状态估计

    • 根据优化结果更新相机位姿和路标点位置等状态变量。
五、注意事项
  1. 一致性问题

    • 在滑动窗口法中,由于边缘化操作会引入先验信息,并导致与被边缘化变量相关的变量在不同的线性化点上计算雅可比矩阵,因此可能会破坏系统的一致性。为了缓解这一问题,可以采取一些策略来减少Fill-in现象,并保持优化问题的稀疏性。
  2. 滑动窗口法适用性

    • 滑动窗口法比较适合视觉里程计(Visual Odometry,VO)系统,因为它能够实时地处理新的关键帧并丢弃旧的关键帧。然而,对于大规模建图的系统来说,滑动窗口法可能无法提供足够的全局一致性信息。在这种情况下,可以考虑使用其他方法(如位姿图优化)来补充全局信息。

综上所述,视觉SLAM中的滑动窗口法是一种有效的控制后端BA规模的方法。通过合理地添加和删除关键帧,并保持优化问题的稀疏性和一致性,可以实现实时的位姿估计和地图构建。

1.BA的定义

BA的中文译为“光束法平差”,也有翻译为“束调整”、“捆绑调整”等,是一种用于计算机视觉和机器人领域的优化技术,主要用于精确优化相机参数(包括内参数和外参数)和三维空间中特征点的位置。BA的目标是通过最小化重投影误差来提高三维重建的精度和一致性。重投影误差是指实际观测到的图像点和通过估计的三维点投影到图像平面上的点之间的距离。重投影误差的示意图如图3所示,其中p1 、p2 和p3 是通过特征匹配知道的同一个空间点P的投影,但是相机的位姿是未知的。初值中P的投影p'1 与实际的p1 之间有距离e,此时可以 调整相机的位姿使之变小。由于这个调整要考虑到很多 个点,而每个点的误差不会为0,因此最终的效果应是整体误差的缩小,这种把相机和三维点放在一起进行最小化的问题统称为BA

2.BA的基本原理

BA的基本原理可以概括为以下几个步骤:

(1) 数学建模

假设有n个三维点和m个相机位置,定义一个误差函 数,该函数计算所有图像观测值与重投影值之间的误差和。 考虑空间中的第i个3D路标点坐标为Pi =[Xi ,Yi ,Zi ]T, 其投影的2D像素坐标为pi ,希望计算的相机位姿的李代 数用ξ表述,每个匹配好的特征点相应的深度为s,相机的内参矩阵为K,包含fx 、fy 、Cx 、Cy 四个参数,Pi 变换到相机坐标系下的空间点坐标为P'i ,则3D路标点到2D 特征点的转换关系如下:

(2) 误差函数构建

由于未知的相机位姿和观测中的噪声,这个等式存在 误差,无法找到一个准确的解。因此,将误差求和构造一 个最小二乘问题,然后找到最佳相机位姿以及特征点的位 置进行最小化,方程如下:

(3) 非线性优化

常用的解非线性最小二乘问题的方法有最速下降法、 高斯牛顿(GaussianNewton,GN)法、列文伯格马尔夸特(LevenbergMarquardt,LM)法等。然而,最速下降法 在计算时容易走出锯齿路线,反而增加了迭代次数,GN 法采用的近似二阶泰勒展开只能在展开点附近有较好的近似效果。

LM法可以看作是GN法和最速下降法的结合。它 通过引入一个调整参数μ来平衡GN法和最速下降法,从 而提高算法的鲁棒性和收敛速度。LM法比GN法有更好的全局收敛性,对于不良条件化问题或远离最优解的初始估计,LM法表现更好。但是,LM方法的计算成本更高。通过增量求解方程,可以求解当前变量的一个改进, LM算法的增量方程如下:

在特征点优化的过程中,式(4)是一个三维线性方程组,在位姿估计过程中,式(4)是六维线性方程组。I为一 个单位矩阵,f(x)是在x处的目标函数值。当在FPGA上部署LM算法时,为了避免重复的λ更新操作,设置缩 放因子,并在每次迭代后,检查系统的误差情况,若误差减 小,则说明优化情况良好,λ除缩放因子,若误差增大,则λ乘缩放因子。

在进行矩阵求解时,针对矩阵的规模和类型,目前最 新的成果中有FSFICholesky、FIIterative和PCG等方 法。FSFICholesky是基于Cholesky分解的直接解法, 适用于稠密矩阵,通过将矩阵分解为下三角矩阵及其转置 来解矩阵。FSFICholesky优化了传统Cholesky分解中 的除法和平方根运算,因此在处理小规模矩阵时表现良 好,尤其在硬件实现中效率更高。FIIterative是基于迭 代法的求解方法,适合大规模矩阵,尤其是稀疏矩阵。它 通过迭代计算来逐步逼近线性方程组的解,计算复杂度较 低,适合高并行度的硬件实现。PCG也是一种迭代法,适 用于大规模稀疏对称正定矩阵。它通过引入预条件器来 加速收敛,特别适合解决复杂度较高的问题,在大规模矩 阵求解中常用。

3.VSLAM中的优化

VSLAM系统中的前端和后端均涉及BA优化,它 们各自承担不同的任务,并相互配合,最终完成机器人对 环境的建图和自我定位。前端优化主要处理图像数据,提 取视觉特征并建立初步的位姿估计;后端优化是全局优 化,主要对整个系统中的地图和位姿信息进行全局一致性 的调整和优化。

前端优化算法主要分为3类:对极几何法、迭代最近点算法(Iterative Closest Point, ICP)和透视n点算法(PerspectivenPoint, PnP)。对极几何法由于主要应用于单目相机,无法获取深度信息,因此具有一定的局限性。ICP算法通过旋转和平移操作来最小化两点集之间的距离,但其精度相对较低。PnP算法通过构建非线性优化问题, 采用最小二乘法进行求解,即通常所称的BA,它是最为关键的位姿估计方法之一。在机器人应用中,只有在获得物体的三维位置和方向后,机器人才能实现高效且精确的运动。在AR应用中,系统利用真实场景中的二维或三维对象作为标记,将虚拟信息与真实场景对齐,这一过程也与相机的姿态密切相关,从而为用户带来真实的体验。因此BA的应用范围更加广泛,合性能较为优异。

在后端优化中,BA是一种全局非线性优化方法,它优化的不仅是相机的位姿,还包括3D地图点的位置。BA是一个高度复杂的非线性最小二乘问题,涉及大量的计算资源。BA 的核心目标是最小化所有帧的重投影误差,从而实现整个系统的全局一致性

相关文章:

BA是什么?

目录 1.EKF的步骤 一、问题定义与模型建立 二、线性化处理 三、应用卡尔曼滤波 四、迭代与收敛 五、结果评估与优化 注意事项 2.BA问题的步骤 一、问题定义与数据准备 二、构建优化模型 三、选择优化算法 四、执行优化过程 五、结果评估与优化 六、应用与验证 1.…...

【IDEA】报错:Try to run Maven import with -U flag (force update snapshots)

问题 IDEA运行项目报错:Try to run Maven import with -U flag (force update snapshots) 原因 IDEA 的项目运行绑定的maven有问题, 解决问题 检查项目绑定的maven配置...

MATLAB提供的窗函数

加窗法 为什么使用加窗法? 在数字滤波器设计和频谱估计中,加窗函数的选择对于整体结果的质量有重大影响。加窗的主要作用是减弱因无穷级数截断而产生的吉布斯现象的影响。 windowDesigner 六种常见的窗函数 根据离散时间傅里叶变换的乘法性质&a…...

git 使用配置

新拿到机器想配置git 获取代码权限,需要的配置方法 1. git 配置用户名和邮箱 git config --global user.name xxxgit config --global user.email xxemail.com 2. 生成ssh key ssh-keygen -t rsa -C "xxemail.com" 3. 获取ssh key cat ~/.ssh/id_rsa.…...

【深度学习】深入解析长短期记忆网络(LSTMs)

长短期记忆网络(Long Short-Term Memory networks, LSTMs)是一种特殊的递归神经网络(RNN),专门设计用来解决标准 RNN 在处理长序列数据时的梯度消失和梯度爆炸问题。LSTMs 在许多序列数据任务中表现出色,如…...

vue watch和computed的区别,computed和method的区别

发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。 在 Vue 中,watch、computed 和 methods 都是常用的响应式功能,它们的用途和工作方式有所不同。下面分别解…...

搭建高可用负载均衡系统:Nginx 与云服务的最佳实践

搭建高可用负载均衡系统:Nginx 与云服务的最佳实践 引言 在项目开发过程中,我们通常在开发和测试阶段采用单机架构进行开发和测试。这是因为在这个阶段,系统的主要目的是功能实现和验证,单机架构足以满足开发人员的日常需求&…...

FFmpeg 4.3 音视频-多路H265监控录放C++开发十九,ffmpeg复用

封装就是将 一个h264,和一个aac文件重新封装成一个mp4文件。 这里我们的h264 和 aac都是来源于另一个mp4文件,也就是说,我们会将 in.mp4文件解封装成一路videoavstream 和 一路 audioavstream,然后 将这两路的 avstream 合并成一…...

Node.js JWT认证教程

Node.js JWT认证教程 1. 项目介绍 JSON Web Token (JWT) 是一种安全的跨域身份验证解决方案,在现代Web应用中广泛使用。本教程将详细讲解如何在Node.js中实现JWT认证。 2. 项目准备 2.1 初始化项目 # 创建项目目录 mkdir nodejs-jwt-auth cd nodejs-jwt-auth# …...

nn.utils.clip_grad_value_

nn.utils.clip_grad_value_ 是 PyTorch 中的一个函数,用于在训练过程中对模型的梯度进行裁剪,以防止梯度爆炸(gradient explosion)问题。该函数对梯度的每个元素进行裁剪,将其限制在一个指定的最大绝对值范围内。裁剪后…...

Java后端面试模板(技术面)

1、自我介绍模板 面试官您好!我是来自----大学计算机学院的一名大三学生,我的名字叫—。 在大学期间,我主要自学了一些主流的Java技术栈,其中主要包括:Java主流的框架:Spring MVC Spring Boot Spring Clou…...

【大语言模型】ACL2024论文-24 图像化歧义:Winograd Schema 挑战的视觉转变

【大语言模型】ACL2024论文-24 图像化歧义:Winograd Schema 挑战的视觉转变 目录 文章目录 【大语言模型】ACL2024论文-24 图像化歧义:Winograd Schema 挑战的视觉转变目录摘要研究背景问题与挑战如何解决核心创新点算法模型实验效果(包含重要…...

Docker 安装和使用

#Docker 安装和使用 文章目录 1. 安装2. 干掉讨厌的 sudo3. 使用镜像源3.1. 使用 upstart 的系统3.2. 使用 systemd 的系统 4. 基本使用4.1. 容器操作4.2. 镜像操作 5. 网络模式说明5.1. bridge 模式5.2. host 模式5.3. container 模式5.4. none 模式 6. 查看 Docker run 启动参…...

nginx网站服务

nginx介绍: 1、高并发,轻量级的web服务软件 2、稳定性高,系统资源消耗率低 对http的高并发处理能力高,单台物理服务器可以支持30000-50000个并发。 一般来说在工作中,单台的并发一般在20000. nginx的功能介绍&…...

MATLAB 手写判断点在多边形内外的2种方法(87)

MATLAB 手写判断点在多边形内外-方法1(87) 一、算法介绍二、算法实现1.方法1(代码+测试)2.方法2(代码+测试)三、结果一、算法介绍 手动实现两种方法,判断点在多边形的内部还是外部, 具体实现和测试代码如下,使用前请自行验证。(代码复制粘贴即可使用) 二、算法实现…...

Android SurfaceFlinger layer层级

壁纸作为显示的最底层窗口它是怎么显示的 1. SurfaceFlinger layer层级 锁屏状态dump SurfaceFlinger ,adb shell dumpsys SurfaceFlinger Display 0 (active) HWC layers: -----------------------------------------------------------------------------------…...

零基础快速掌握——【c语言基础】数组的操作,冒泡排序,选择排序

1.数组 内存空间连续: 2.定义格式 数组的定义格式: 数组分为一维数组、二维数组、以及多维数组,不同类型的数组定义格式时不一样 2.1 一维数组的定义 数据类型 数组名 [数组长度]; 解释: 数据类型&#xff1…...

个人IP建设:简易指南

许多个体创业者面临的一个关键挑战是如何为其企业创造稳定的需求。 作为个体创业者,您无法使用营销团队,因此许多人通过推荐和他们的网络来产生需求。因此,扩大您的网络是发展您的业务和产生持续需求的最佳策略。 这就是个人IP和品牌发挥作…...

【Unity高级】如何获取着色器(Shader)的关键词

在动态设置Shader时,会需要通过EnableKeyword, DisableKeyword来完成。但一个Shader有哪些关键词呢?Unity的文档中并没有列出来,但我们可以通过遍历Shader的KeywordSpace来查看。 1. 代码如下 using UnityEngine;public class KeywordExamp…...

OSS文件上传

1、我们这个系统对接的阿里云OSS需要先对接小鹏OSS系统获取accessKeyId、accessKeySecret,这个可以忽略 aliyun:oss:endpoint: https://oss-cn-hangzhou.aliyuncs.combucketName: xp-xpd-experiencedomain: https://xp-xpd-experience.oss-cn-hangzhou.aliyuncs.co…...

时序预测算法TimeXer代码解析

在时序预测领域,如何有效地利用外部变量(exogenous variables)来提升内部变量(endogenous variables)的预测性能一直是一个挑战。 在上一篇文章中,我结合论文为大家解读了TimeXer框架,今天&…...

【无标题】建议用坚果云直接同步zotero,其他方法已经过时,容易出现bug

created: 2024-12-06T16:07:45 (UTC 08:00) tags: [] source: https://zotero-chinese.com/user-guide/sync author: 数据与文件的同步 | Zotero 中文社区 Excerpt Zotero 中文社区,Zotero 中文维护小组,Zotero 插件,Zotero 中文 CSL 样式 数…...

Hive 分桶表的创建与填充操作详解

Hive 分桶表的创建与填充操作详解 在 Hive 数据处理中,分桶表是一个极具实用价值的功能,它相较于非分桶表能够实现更高效的采样,并且后续还可能支持诸如 Map 端连接等节省时间的操作。不过,值得注意的是,在向表写入数…...

docker怎么commit tag push?

在 Docker 中,commit、tag 和 push 是用于创建和推送自定义镜像到仓库的三个不同步骤。以下是每个命令的详细说明和使用方法: ### 1. docker commit 当你对一个运行中的容器做了修改,并希望将这些修改保存为一个新的镜像时,可以使…...

全面替换VMware,南昌大学一卡通的硬核智慧

将一昼夜分为十二时辰 是古人的博大智慧 晨光熹微,门扉轻启,负笈而行 智慧校园的“十二时辰”启幕新章 一、数字南大:一卡通打卡校园十二时辰 时辰轮转,一时有一时的使命师生们是如何高效、便捷地度过每个时辰?一张充…...

SpringMVC ,ioc和aop

IOC和AOP IOC 控制反转,将应用程序的控制权交给spring容器管理,而不是应用程序本身 1.创建一个mapper,测试用, 就写个普通方法 public class UserMapper {public void addUser(){System.out.println("dao层新增");} …...

3GPP R18 LTM(L1/L2 Triggered Mobility)是什么鬼?(三) RACH-less LTM cell switch

这篇看下RACH-less LTM cell switch。 相比于RACH-based LTM,RACH-less LTM在进行LTM cell switch之前就要先知道target cell的TA信息,进而才能进行RACH-less过程,这里一般可以通过UE自行测量或者通过RA过程获取,而这里的RA一般是通过PDCCH order过程触发。根据38.300中的描…...

Ansys Maxwell:Qi 无线充电组件

Qi 无线充电采用感应充电技术,无需物理连接器或电缆,即可将电力从充电站传输到兼容设备。由 WPC 管理的 Qi 标准确保了不同无线充电产品之间的互操作性。以下是 Qi v1.3 标准的核心功能: Qi v1.3 标准的主要特点 身份验证:确保充…...

Neo4j 图数据库安装与操作指南(以mac为例)

目录 一、安装前提条件 1.1 Java环境 1.2 Homebrew(可选) 二、下载并安装Neo4j 2.1 从官方网站下载 2.1.1 访问Neo4j的官方网站 2.1.2 使用Homebrew安装 三、配置Neo4j 3.1 设置环境变量(可选) 3.2 打开配置文件(bash_profile) 3.2.1 打开终端…...

基于MFC绘制门电路

MFC绘制门电路 1. 设计内容、方法与难点 本课题设计的内容包括了基本门电路中与门和非门的绘制、选中以及它们之间的连接。具体采用的方法是在OnDraw函数里面进行绘制,并设计元器件基类,派生出与门和非门,并组合了一个引脚类,在…...

Gitee上获取renren-fast-vue install并run dev错误处理

目的:获取一个手脚架、越简约越好、越干净越好、于是看上了renren-fast-vue… 前端:vue2 后端:jdk1.8 mysql 5.7 SpringBoot单体架构 一开始只是下载前后端项目到本地,一堆乱七八糟的错误,网上找的资料也参差不齐… …...

sdk项目的git 标记新tag的版本号

在 Git 中,tag 是用来标记某个特定的提交点(通常是发布版本或重要的里程碑)的工具。通过 git tag,你可以为版本号创建标记,帮助团队跟踪不同版本的代码。 如果你想创建一个新的版本号标签,可以按照以下步骤…...

学习日志022 -- python事件机制

作业: 1】思维导图 2】完成闹钟 main.py import sysfrom PySide6.QtCore import QTimerEvent, QTime,Qt from PySide6.QtGui import QMovie,QMouseEvent from PySide6.QtWidgets import QApplication, QWidget from Form import Ui_Formclass MyWidget(Ui_Form,Q…...

JAVA八股文-运行篇-创建项目运行(1)

前置环境搭建:jdk、maven、idea、linux环境 一、创建一个java项目 File->New->Project 二、填写基本信息 三、完成,写了一段代码 四、打包 五、本地运行,运行和debug二选一 六、上传至linux环境 七、linux环境下命令执行 7.1 指定Main方法类 …...

Vue Web开发(二)

1. 项目搭建 1.1. 首页架子搭建 使用Element ui中的Container布局容器,选择倒数第二个样式,将代码复制到Home.vue。 1.1.1.下载less (1)下载less样式 npm i less   (2)下载less编辑解析器 npm i less…...

Midjourney Describe API 的对接和使用

Midjourney Describe API 的对接和使用 Midjourney Describe API 的主要功能是通过上传图片,获取对图片的描述。使用该 API,只需要传递图片文件地址,API 会返回图片的详细描述。无需繁琐的参数设置,即可获得高质量的图片描述。 …...

MySQL是怎么加锁的

1. 全局锁 1.1 什么是全局锁? 全局锁是一种一次性锁住整个数据库的锁定机制。一旦加上全局锁,整个数据库的所有表都会处于只读状态,这意味着所有修改操作(如INSERT、UPDATE、DELETE)都会被阻塞。 常用的SQL命令&…...

burp suite 5

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…...

硬件和自驾功能

1 硬件 指令集架构 (ISA): ARM v6, v7, v8:这些是 ARM 公司设计的不同版本的指令集架构 (ISA)。ARM v6 和 v7 属于 32 位架构,而 ARM v8 则引入了 64 位支持(即 ARMv8-A)和 32 位向后兼容模式。需要强调的是&#xff…...

uviewplus中的时间单选框up-datetime-picker的在uni-app+vue3的使用方法

uviewplus中的时间单选框up-datetime-picker的使用方法 前言 在实际开发中,我们经常需要使用时间选择器来让用户选择特定的时间。本文将详细介绍uviewplus中up-datetime-picker组件的使用方法,特别是在处理年月选择时的一些关键实现,因为官方有很多相关的功能和方法…...

车联网安全学习之TBOX

Telematics BOX,简称 T-BOX,也称远程信息处理控制单元(Telematics Control Unit, TCU),集成GPS、外部通信接口、电子处理单元、微控制器、移动通信单元和存储器等功能模块。 TBOX 提供的功能有网络接入、OTA、远程控制…...

【教程】创建NVIDIA Docker共享使用主机的GPU

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 这套是我跑完整理的。直接上干货,复制粘贴即可! # 先安装toolkit sudo apt-get update sudo apt-get install -y ca-certifica…...

tomcat 运行加载机制解析

tomcat 运行加载机制 从tomcat jar包的加载顺序: tomcat的具体运行加载 可以从 start、setclasspath、catalina文件中看出来: start.bat执行 去找bin目录下的catalina.bat,catalina 或去找 bin\setenv.bat以获取标准环境变量,然后去找bin\…...

基于JWT跨语言开发分布式业务系统的挑战与实践:多语言协作的最佳方案

在现代分布式架构下,开发团队往往由来自不同技术栈和开发语言的工程师组成。如何有效地管理这些开发人员的协作,尤其是在实现跨语言的认证与授权机制时,成为了开发者面临的一个重大挑战。JSON Web Token(JWT)作为一种轻…...

Unity在运行状态下,当物体Mesh网格发生变化时,如何让MeshCollider碰撞体也随之实时同步变化?

旧版源代码地址:https://download.csdn.net/download/qq_41603955/90087225?spm1001.2014.3001.5501 旧版效果展示: 新版加上MeshCollider后的效果: 注意:在Unity中,当你动态地更改物体的Mesh时,通常期望…...

数组能排成的最小数

题目描述 输入一个正整数数组,把数组里所有整数拼接起来排成一个数,打印出能拼接出的所有数字中最小的一个。 例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字为321323 分析 3和32哪个数字排前面呢&…...

RNN模型介绍

RNN模型介绍 1.RNN模型介绍1.1什么是RNN模型1.2RNN模型作用1.3RNN模型分类 2.传统RNN模型2.1RNN结构图2.2RNN优缺点 3.LSTM模型3.1什么是LSTM模型3.2LSTM内部结构图3.3使用Pytorch构建LSTM模型3.4LSTM优缺点 4.GRU模型4.1什么是GRU模型4.2GRU内部图4.3使用Pytorch构建GRU模型4.…...

Maven最佳实践

Maven 是一种广泛使用的 Java 项目构建自动化工具。它简化了构建过程并帮助管理依赖关系,使开发人员的工作更轻松。Maven 详细介绍可以参考我写的这篇 Maven 核心概念总结 。 这篇文章不会涉及到 Maven 概念的介绍,主要讨论一些最佳实践、建议和技巧&am…...

Redis的高可用之哨兵模式

Redis哨兵主要是解决Redis主从同步时主数据库宕机问题,使其能够自动进行故障恢复,提高Redis系统的高可用性。 1. 哨兵的作用: 监控:哨兵通过心跳机制监控主库和从库的存活性。 选主:当主库宕机时,哨兵会选举出一个领…...

C# 设计模式--观察者模式 (Observer Pattern)

定义 观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。观察者模式的核心在于解耦主题(被观察者)和观察者之间的依赖关系。 …...