从仿射矩阵得到旋转量平移量缩放量

article/2025/6/6 3:02:17

仿射变换原理

仿射变换是一种线性变换,可以包括平移、旋转、缩放和剪切等操作。其一般公式可以表示为:
$$\mathbf{x’} = A \mathbf{x} + \mathbf{b} ]
其中:

  • (\mathbf{x}) 是输入向量,通常表示一个点在二维或三维空间中的坐标。
  • (\mathbf{x’}) 是输出向量,表示经过仿射变换后的点。
  • (A) 是一个矩阵,称为仿射变换矩阵,它包含了线性变换的部分。
  • (\mathbf{b}) 是一个向量,称为平移向量,它包含了平移的部分。

具体来说,对于二维空间中的点 ((x, y)),仿射变换可以表示为:
( x ′ y ′ ) = ( a b c d ) ( x y ) + ( e f ) \begin{pmatrix} x' \\ y' \end{pmatrix} = \begin{pmatrix} a & b \\ c & d \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} + \begin{pmatrix} e \\ f \end{pmatrix} (xy)=(acbd)(xy)+(ef)
其中:

  • (a, b, c, d) 是仿射变换矩阵 (A) 的元素。
  • (e, f) 是平移向量 (\mathbf{b}) 的元素。

齐次坐标下:
( x ′ y ′ 1 ) = ( a b e c d f 0 0 1 ) ( x y 1 ) \begin{pmatrix} x' \\ y' \\ 1 \end{pmatrix} = \begin{pmatrix} a & b & e \\ c & d & f \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ 1 \end{pmatrix} xy1 = ac0bd0ef1 xy1

仿射变换是一种在二维或三维空间中保持点之间相对位置的几何变换。它包括平移、旋转、缩放和剪切等基本变换。仿射变换可以用矩阵表示,并且可以通过矩阵乘法进行组合。在计算机图形学和图像处理中,仿射变换是常用的技术。

齐次坐标

齐次坐标是一种将二维或三维坐标扩展到更高维度的方法,以便于表示平移变换。在二维空间中,齐次坐标是将 ( x , y ) (x, y) (x,y) 扩展为 ( x , y , 1 ) (x, y, 1) (x,y,1)。这使得平移、旋转、缩放等变换都可以用矩阵乘法表示,从而简化了变换的组合和计算。

例如,二维平移的齐次坐标表示为:
[ x ′ y ′ 1 ] = [ 1 0 t x 0 1 t y 0 0 1 ] [ x y 1 ] \begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix}=\begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} x \\ y \\ 1 \end{bmatrix} xy1 = 100010txty1 xy1

通过使用齐次坐标,我们可以将所有的仿射变换统一表示为矩阵乘法,从而简化了变换的组合和计算。

基本变换

仿射变换的公式可以通过线性代数的基本原理推导出来。例如,旋转矩阵的推导基于三角函数和线性组合。

组合所有基本仿射变换(平移、旋转、缩放和剪切)的总变换可以通过矩阵乘法来实现。为了简化计算,我们使用齐次坐标。在二维空间中,每个变换都可以表示为一个 3x3 矩阵。组合这些变换时,我们需要按照特定的顺序应用这些矩阵。

假设我们有一个点 P ( x , y ) P(x, y) P(x,y),我们想要先对其进行缩放,然后旋转,接着平移,最后进行剪切。变换的顺序很重要,因为它会影响最终结果。

  1. 缩放矩阵 S S S
    S = [ s x 0 0 0 s y 0 0 0 1 ] S = \begin{bmatrix} s_x & 0 & 0 \\ 0 & s_y & 0 \\ 0 & 0 & 1 \end{bmatrix} S= sx000sy0001

  2. 旋转矩阵 R R R
    R = [ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0 0 0 1 ] R = \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} R= cosθsinθ0sinθcosθ0001

  3. 平移矩阵 T T T
    T = [ 1 0 t x 0 1 t y 0 0 1 ] T = \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix} T= 100010txty1

  4. 斜切矩阵 H H H
    H = [ 1 − sin ⁡ ( Theta ) 0 0 cos ⁡ ( Theta ) 0 0 0 1 ] H = \begin{bmatrix} 1 & -\sin(\text{Theta}) & 0 \\ 0 & \cos(\text{Theta}) & 0 \\ 0 & 0 & 1 \end{bmatrix} H= 100sin(Theta)cos(Theta)0001

组合这些变换的矩阵乘法顺序是从右到左,即最后一个变换矩阵在最右边。因此,总的变换矩阵 M M M 为:
M = H × T × R × S M = H \times T \times R \times S M=H×T×R×S

计算这个乘积,我们得到:
M = [ 1 − sin ⁡ ( Theta ) 0 0 cos ⁡ ( Theta ) 0 0 0 1 ] × [ 1 0 t x 0 1 t y 0 0 1 ] × [ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0 0 0 1 ] × [ s x 0 0 0 s y 0 0 0 1 ] M = \begin{bmatrix} 1 & -\sin(\text{Theta}) & 0 \\ 0 & \cos(\text{Theta}) & 0 \\ 0 & 0 & 1 \end{bmatrix} \times \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix} \times \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} \times \begin{bmatrix} s_x & 0 & 0 \\ 0 & s_y & 0 \\ 0 & 0 & 1 \end{bmatrix} M= 100sin(Theta)cos(Theta)0001 × 100010txty1 × cosθsinθ0sinθcosθ0001 × sx000sy0001

hom_mat2d_to_affine_par computes the affine transformation parameters corresponding to the homogeneous 2D transformation matrix HomMat2D. The parameters S_x and S_y determine how the transformation scales the original x- and y-axes, respectively. The two scaling factors are always positive. The angle Theta describes whether the transformed coordinate axes are orthogonal (Theta = 0) or slanted. If (|\Theta| > \pi/2), the transformation contains a reflection. The angle Phi determines the rotation of the transformed x-axis with respect to the original x-axis. The parameters t_x and t_y determine the translation of the two coordinate systems. The matrix HomMat2D can be constructed from the six transformation parameters by the following operator sequence: This is equivalent to the following chain of transformation matrices:
来源:hom_mat2d_to_affine_par (算子名称)

HomMat2D = [ 1 0 t x 0 1 t y 0 0 1 ] ⋅ [ cos ⁡ ( Phi ) − sin ⁡ ( Phi ) 0 sin ⁡ ( Phi ) cos ⁡ ( Phi ) 0 0 0 1 ] ⋅ [ 1 − sin ⁡ ( Theta ) 0 0 cos ⁡ ( Theta ) 0 0 0 1 ] ⋅ [ S x 0 0 0 S y 0 0 0 1 ] = [ S x cos ⁡ ( Phi ) − S x sin ⁡ ( Phi ) sin ⁡ ( Theta ) + S y cos ⁡ ( Phi ) cos ⁡ ( Theta ) S x sin ⁡ ( Phi ) cos ⁡ ( Theta ) + S y cos ⁡ ( Phi ) sin ⁡ ( Theta ) + t x S y sin ⁡ ( Phi ) S x cos ⁡ ( Phi ) cos ⁡ ( Theta ) + S y sin ⁡ ( Phi ) sin ⁡ ( Theta ) − S x cos ⁡ ( Phi ) sin ⁡ ( Theta ) + S y sin ⁡ ( Phi ) cos ⁡ ( Theta ) + t y 0 0 1 ] \text{HomMat2D} = \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} \cos(\text{Phi}) & -\sin(\text{Phi}) & 0 \\ \sin(\text{Phi}) & \cos(\text{Phi}) & 0 \\ 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} 1 & -\sin(\text{Theta}) & 0 \\ 0 & \cos(\text{Theta}) & 0 \\ 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} S_x & 0 & 0 \\ 0 & S_y & 0 \\ 0 & 0 & 1 \end{bmatrix} \\ = \begin{bmatrix} S_x \cos(\text{Phi}) & -S_x \sin(\text{Phi}) \sin(\text{Theta}) + S_y \cos(\text{Phi}) \cos(\text{Theta}) & S_x \sin(\text{Phi}) \cos(\text{Theta}) + S_y \cos(\text{Phi}) \sin(\text{Theta}) + t_x \\ S_y \sin(\text{Phi}) & S_x \cos(\text{Phi}) \cos(\text{Theta}) + S_y \sin(\text{Phi}) \sin(\text{Theta}) & -S_x \cos(\text{Phi}) \sin(\text{Theta}) + S_y \sin(\text{Phi}) \cos(\text{Theta}) + t_y \\ 0 & 0 & 1 \end{bmatrix} HomMat2D= 100010txty1 cos(Phi)sin(Phi)0sin(Phi)cos(Phi)0001 100sin(Theta)cos(Theta)0001 Sx000Sy0001 = Sxcos(Phi)Sysin(Phi)0Sxsin(Phi)sin(Theta)+Sycos(Phi)cos(Theta)Sxcos(Phi)cos(Theta)+Sysin(Phi)sin(Theta)0Sxsin(Phi)cos(Theta)+Sycos(Phi)sin(Theta)+txSxcos(Phi)sin(Theta)+Sysin(Phi)cos(Theta)+ty1

HomMat2D = [ 1 0 t x 0 1 t y 0 0 1 ] ⋅ [ cos ⁡ ( ϕ ) − sin ⁡ ( ϕ ) 0 sin ⁡ ( ϕ ) cos ⁡ ( ϕ ) 0 0 0 1 ] ⋅ [ 1 − sin ⁡ ( θ ) 0 0 cos ⁡ ( θ ) 0 0 0 1 ] ⋅ [ S x 0 0 0 S y 0 0 0 1 ] = [ 1 0 t x 0 1 t y 0 0 1 ] ⋅ [ cos ⁡ ( ϕ ) − cos ⁡ ( ϕ ) sin ⁡ ( θ ) − sin ⁡ ( ϕ ) cos ⁡ ( θ ) 0 sin ⁡ ( ϕ ) − sin ⁡ ( ϕ ) sin ⁡ ( θ ) + cos ⁡ ( ϕ ) cos ⁡ ( θ ) 0 0 0 1 ] ⋅ [ S x 0 0 0 S y 0 0 0 1 ] = [ S x cos ⁡ ( ϕ ) − S y cos ⁡ ( ϕ ) sin ⁡ ( θ ) − S y sin ⁡ ( ϕ ) cos ⁡ ( θ ) t x S x sin ⁡ ( ϕ ) − S y sin ⁡ ( ϕ ) sin ⁡ ( θ ) + S y cos ⁡ ( ϕ ) cos ⁡ ( θ ) t y 0 0 1 ] \text{HomMat2D} = \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} \cos(\phi) & -\sin(\phi) & 0 \\ \sin(\phi) & \cos(\phi) & 0 \\ 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} 1 & -\sin(\theta) & 0 \\ 0 & \cos(\theta) & 0 \\ 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} S_x & 0 & 0 \\ 0 & S_y & 0 \\ 0 & 0 & 1 \end{bmatrix} =\begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} \cos(\phi) & -\cos(\phi)\sin(\theta)-\sin(\phi)\cos(\theta) & 0 \\ \sin(\phi) & -\sin(\phi)\sin(\theta)+\cos(\phi)\cos(\theta) & 0 \\ 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} S_x & 0 & 0 \\ 0 & S_y & 0 \\ 0 & 0 & 1 \end{bmatrix} = \begin{bmatrix} S_x \cos(\phi) & -S_y \cos(\phi)\sin(\theta) -S_y \sin(\phi)\cos(\theta) & t_x \\ S_x \sin(\phi) & -S_y \sin(\phi)\sin(\theta) +S_y \cos(\phi)\cos(\theta) & t_y \\ 0 & 0 & 1 \end{bmatrix} HomMat2D= 100010txty1 cos(ϕ)sin(ϕ)0sin(ϕ)cos(ϕ)0001 100sin(θ)cos(θ)0001 Sx000Sy0001 = 100010txty1 cos(ϕ)sin(ϕ)0cos(ϕ)sin(θ)sin(ϕ)cos(θ)sin(ϕ)sin(θ)+cos(ϕ)cos(θ)0001 Sx000Sy0001 = Sxcos(ϕ)Sxsin(ϕ)0Sycos(ϕ)sin(θ)Sysin(ϕ)cos(θ)Sysin(ϕ)sin(θ)+Sycos(ϕ)cos(θ)0txty1

已知仿射变换矩阵如下:求变换参数
( x ′ y ′ 1 ) = ( a b e c d f 0 0 1 ) ( x y 1 ) \begin{pmatrix} x' \\ y' \\ 1 \end{pmatrix} = \begin{pmatrix} a & b & e \\ c & d & f \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ 1 \end{pmatrix} xy1 = ac0bd0ef1 xy1

可得
[ S x cos ⁡ ( ϕ ) − S y cos ⁡ ( ϕ ) sin ⁡ ( θ ) − S y sin ⁡ ( ϕ ) cos ⁡ ( θ ) t x S x sin ⁡ ( ϕ ) − S y sin ⁡ ( ϕ ) sin ⁡ ( θ ) + S y cos ⁡ ( ϕ ) cos ⁡ ( θ ) t y 0 0 1 ] = ( a b e c d f 0 0 1 ) \begin{bmatrix} S_x \cos(\phi) & -S_y \cos(\phi)\sin(\theta) -S_y \sin(\phi)\cos(\theta) & t_x \\ S_x \sin(\phi) & -S_y \sin(\phi)\sin(\theta) +S_y \cos(\phi)\cos(\theta) & t_y \\ 0 & 0 & 1 \end{bmatrix} = \begin{pmatrix} a & b & e \\ c & d & f \\ 0 & 0 & 1 \end{pmatrix} Sxcos(ϕ)Sxsin(ϕ)0Sycos(ϕ)sin(θ)Sysin(ϕ)cos(θ)Sysin(ϕ)sin(θ)+Sycos(ϕ)cos(θ)0txty1 = ac0bd0ef1
通过比较矩阵的元素,我们可以得到以下关系:

  1. S x cos ⁡ ( ϕ ) = a S_x \cos(\phi) = a Sxcos(ϕ)=a
  2. − S y cos ⁡ ( ϕ ) sin ⁡ ( θ ) − S y sin ⁡ ( ϕ ) cos ⁡ ( θ ) = b -S_y \cos(\phi)\sin(\theta) -S_y \sin(\phi)\cos(\theta) = b Sycos(ϕ)sin(θ)Sysin(ϕ)cos(θ)=b
  3. S x sin ⁡ ( ϕ ) = c S_x \sin(\phi) = c Sxsin(ϕ)=c
  4. − S y sin ⁡ ( ϕ ) sin ⁡ ( θ ) + S y cos ⁡ ( ϕ ) cos ⁡ ( θ ) = d -S_y \sin(\phi)\sin(\theta) +S_y \cos(\phi)\cos(\theta) = d Sysin(ϕ)sin(θ)+Sycos(ϕ)cos(θ)=d
  5. t x = e t_x = e tx=e
  6. t y = f t_y = f ty=f

通过这些方程,我们可以解出 S x , S y , ϕ , θ , t x , t y S_x, S_y, \phi, \theta, t_x, t_y Sx,Sy,ϕ,θ,tx,ty

  1. S x = a 2 + c 2 S_x = \sqrt{a^2+c^2} Sx=a2+c2
  2. ϕ = arctan ⁡ c a \phi = \arctan{\frac{c}{a}} ϕ=arctanac
  3. θ = arctan ⁡ d c + a b b c − d a \theta = \arctan{\frac{dc+ab}{bc-da}} θ=arctanbcdadc+ab
  4. S y = b 2 + d 2 S_y= \sqrt{b^2 +d^2} Sy=b2+d2
  5. t x = e t_x = e tx=e
  6. t y = f t_y = f ty=f

其中过程如下:
从方程 (1) 和 (3) 中解出:
S x 2 cos ⁡ 2 ( ϕ ) + S x 2 sin ⁡ 2 ( ϕ ) = S x 2 = a 2 + b 2 S_x^2 \cos^2(\phi) + S_x^2 \sin^2(\phi)=S_x^2= a^2+b^2 Sx2cos2(ϕ)+Sx2sin2(ϕ)=Sx2=a2+b2
cos ⁡ ( ϕ ) sin ⁡ ( ϕ ) = tan ⁡ ϕ = c a \frac{\cos(\phi)}{\sin(\phi)}=\tan{\phi}=\frac{c}{a} sin(ϕ)cos(ϕ)=tanϕ=ac

从方程 (2) 和 (4) 中解出:
− S y sin ⁡ ( θ + ϕ ) = b -S_y \sin(\theta+\phi) = b Sysin(θ+ϕ)=b
S y cos ⁡ ( θ + ϕ ) = d S_y \cos(\theta+\phi) = d Sycos(θ+ϕ)=d
S y 2 cos ⁡ 2 ( θ + ϕ ) + S y 2 sin ⁡ 2 ( θ + ϕ ) = S y 2 = b 2 + d 2 S_y^2 \cos^2(\theta+\phi) + S_y^2 \sin^2(\theta+\phi)=S_y^2= b^2+d^2 Sy2cos2(θ+ϕ)+Sy2sin2(θ+ϕ)=Sy2=b2+d2
tan ⁡ θ + tan ⁡ ϕ 1 − tan ⁡ θ tan ⁡ ϕ = − b d = tan ⁡ θ + c a 1 − tan ⁡ θ c a \frac{\tan{\theta}+\tan{\phi}}{1-\tan{\theta}\tan{\phi}}=\frac{-b}{d}=\frac{\tan{\theta}+\frac{c}{a}}{1-\tan{\theta}\frac{c}{a}} 1tanθtanϕtanθ+tanϕ=db=1tanθactanθ+ac


http://www.hkcw.cn/article/PawyGLqosC.shtml

相关文章

你的台式机PCIe插槽到底是几条lane

目录 1.如何查看台式机支持的PCIe插槽的模式 2.查看台式机主板型号 3.主板PCIe插槽配置确认 4.实际模式与理论模式不匹配原因 5.解决方案 在【PCIe XDMA开发】XDMA与MIG位宽一致性要求一文中,我们讨论了PCIe带宽计算过程。那么实际带宽与理论计算带宽是否能够一致或…

微软PowerBI考试 PL300-Power BI 入门

Power BI 入门 上篇更新了微软PowerBI考试 PL-300学习指南,今天分享PowerBI入门学习内容。 简介 Microsoft Power BI 是一个完整的报表解决方案,通过开发工具和联机平台提供数据准备、数据可视化、分发和管理。 Power BI 可以从使用单个数据源的简单…

【论文阅读】Dolphin: Document Image Parsing via Heterogeneous Anchor Prompting

Paper:https://arxiv.org/abs/2505.14059 Source code: https://github.com/bytedance/Dolphin 作者机构:字节跳动 背景 业务场景 企业数据大多数都以文本、图片、扫描件、电子表格、在线文档、邮件等文档的形式存在,例如:PDF文…

WPS 利用 宏 脚本拆分 Excel 多行文本到多行

文章目录 WPS 利用 宏 脚本拆分 Excel 多行文本到多行效果需求背景🛠 操作步骤代码实现代码详解使用场景注意事项总结 WPS 利用 宏 脚本拆分 Excel 多行文本到多行 在 Excel 工作表中,我们经常遇到一列中包含多行文本(用换行符分隔&#xff…

STM32外部中断(EXTI)以及旋转编码器的简介

一、外部中断机制概述 中断是指当主程序执行期间出现特定触发条件(即中断源)时,CPU将暂停当前任务,转而执行相应的中断服务程序(ISR),待处理完成后恢复原程序的运行流程。该机制通过事件驱动…

【Unity开发】控制手机移动端的震动

🐾 个人主页 🐾 阿松爱睡觉,横竖醒不来 🏅你可以不屠龙,但不能不磨剑🗡 目录 一、前言二、Unity的Handheld.Vibrate()三、调用Android原生代码四、NiceVibrations插件五、DeviceVibration插件六、控制游戏手…

ES101系列07 | 分布式系统和分页

本篇文章主要讲解 ElasticSearch 中分布式系统的概念,包括节点、分片和并发控制等,同时还会提到分页遍历和深度遍历问题的解决方案。 节点 节点是一个 ElasticSearch 示例 其本质就是一个 Java 进程一个机器上可以运行多个示例但生产环境推荐只运行一个…

RabbitMQ在SpringBoot中的应用

1.简单模式 P:生产者,要发送消息的程序. C:消费者,消息的接收者. Queue:消息队列,类似于一个邮箱,生产者向其中投递消息,消费者从其中取出消息. 特点:一个生产者P,一个消费者C,消息只能被消费一次,也成为点对点模式. 适用场景:消息只能被单个消费者处理. 设置队列的名称为…

基于python写的目录/文件递归检索工具

核心功能 1. 目录结构检索 递归扫描 :深度遍历指定目录及其所有子目录 多种检索模式 : 仅文件夹模式:只显示目录结构仅文件模式:只显示文件列表文件文件夹模式:完整显示目录树结构(默认模式) …

Qwen3高效微调

高效微调 场景、模型、数据、算力 高效微调的应用场景 对话风格微调:高效微调可以用于根据特定需求调整模型的对话风格。例如,针对客服系统、虚拟助理等场景,模型可以通过微调来适应不同的 语气、礼貌程度 或 回答方式,从而在与…

不动产登记区块链系统(Vue3 + Go + Gin + Hyperledger Fabric)

好久没有介绍过新项目的制作了,之前做的一直都是Fisco Bcos的项目,没有介绍过Hyperledger Fabric的项目,这次来给大家分享下。 系统概述 不动产登记与交易平台是一个基于Hyperledger Fabric的综合性管理系统,旨在实现不动产登记…

深度学习学习率调度器指南:PyTorch 四大 scheduler 对决

在深度学习模型训练中,学习率调度器(Learning Rate Scheduler)是影响模型收敛效果和训练稳定性的关键因素。选择合适的学习率调度策略,往往能让模型性能产生质的飞跃。本文将深入对比PyTorch中最常用的四种学习率调度器&#xff0…

ERP学习-AP

业务需要。持续更新学习进度 借助网上零搭建平台上手实操 这个是简道云平台页面链接,登录的化去手机号登录 目前开始对应付模块进行学习

基于 ZYNQ UltraScale+ OV5640的高速图像传输系统设计,支持国产替代

引 言 随着电子信息技术的不断进步,人工智能、医 疗器械、机器视觉等领域都在高速发展 [1] ,工业相机 是机器视觉系统中的一部分 [2] ,对工业相机而言,传 输图像的速率、传输过程的抗干扰能力是其关键, 工业相…

smartGit 试用突破30天

1 下载 选择19.1版本 2 运行 我是linux环境 解压后, cd bin ./smartgit.sh 选择使用30天. 然后退出 3 绿色软件 破解步骤 下载破解文件:访问 Gitee 链接 goto下载下载破解文件 解压文件:下载后解压得到 crackSmartGit.jar 和 license.zip 用编辑…

一、基础环境配置

一、虚拟机 主:192.168.200.200 从:192.168.200.201 从:192.168.200.202 二、docker docker基础搭建,有不会的自行百度。 1.目录结构 /opt/software:软件包/opt/module:解压包,自定义脚本…

Java面试八股--08-数据结构和算法篇

1、怎么理解时间复杂度和空间复杂度 时间复杂度和空间复杂度一般是针对算法而言,是衡量一个算法是否高效的重要标准。先纠正一个误区,时间复杂度并不是算法执行的时间,在纠正一个误区,算法不单单指冒泡排序之类的,一个…

Oracle中的循环——FOR循环、WHILE循环和LOOP循环

目录 一、FOR循环 1.FOR循环语法结构 二、WHILE循环 1.WHILE循环语法结构 三、LOOP循环 1.LOOP循环语法结构 四、三个循环的区别(重要) Oracle中的循环常用的有:FOR循环、WHILE循环和LOOP循环 一、FOR循环 1.FOR循环语法结构 DECLARE --不声明变量&…

ubuntu 20.04挂载固态硬盘

我们有个工控机,可以接入一个固态硬盘。将固态硬盘插好后,就要进行挂载。在AI的指导下,过程并不顺利。记录如下: 1、检查硬盘是否被识别 安装好硬盘后,运行以下命令来检查Linux系统是否已识别新硬盘: …

SAP 自动编号的使用

1、NUMBER_RANGE_ENQUEUE用于锁定编号范围对象,防止多用户并发访问冲突 2、NUMBER_RANGE_DEQUEUE用于解锁已维护的编号范围对象。 3、此外,还提到了NUMBER_GET_NEXT函数模块,用于获取编号范围内的下一个号码。 文章目录 创建编号范围程序实现…