VIO第3讲:基于优化的IMU与视觉信息融合之预积分残差雅可比推导

VIO第3讲:基于优化的IMU与视觉信息融合之预积分残差雅可比推导

文章目录

???

4 IMU 预积分残差的雅克比

4.1 预积分残差

e B ( x i , x j ) = [ r p r q r v r b a r b g ] = [ q b i w ( p w b j − p w b i − v i w Δ t + 1 2 g w Δ t 2 ) − α b i b j 2 [ q b j b i ⊗ ( q b i w ⊗ q w b j ) ] x y z q b i w ( v j w − v i w + g w Δ t ) − β b i b j b j a − b i a b j g − b i g ] 15 × 1 \mathbf{e}_B(x_i,x_j)=\begin{bmatrix}\mathbf{r}_p\\\mathbf{r}_q\\\mathbf{r}_v\\\mathbf{r}_{ba}\\\mathbf{r}_{bg}\end{bmatrix}=\begin{bmatrix}\mathbf{q}_{b_iw}(\mathbf{p}_{wb_j}-\mathbf{p}_{wb_i}-\mathbf{v}_i^w\Delta t+\frac12\mathbf{g}^w\Delta t^2)-\mathbf{\alpha}_{b_ib_j}\\2[\mathbf{q}_{b_jb_i}\otimes(\mathbf{q}_{b_iw}\otimes\mathbf{q}_{wb_j})]_{xyz}\\\mathbf{q}_{b_iw}(\mathbf{v}_j^w-\mathbf{v}_i^w+\mathbf{g}^w\Delta t)-\boldsymbol{\beta}_{b_ib_j}\\\mathbf{b}_j^a-\mathbf{b}_i^a\\\mathbf{b}_j^g-\mathbf{b}_i^g\end{bmatrix}_{15\times1} eB(xi,xj)= rprqrvrbarbg = qbiw(pwbjpwbiviwΔt+21gwΔt2)αbibj2[qbjbi(qbiwqwbj)]xyzqbiw(vjwviw+gwΔt)βbibjbjabiabjgbig 15×1

4.2 残差对两个关键帧i、j状态量的雅可比

  对于状态量的雅可比,是比较好计算的,但对于偏差较为复杂

  因为 i 时刻的 bias 相关的预积分计算是通过迭代一步一步累计递推的,可以算但是太复杂。所以对于预积分量直接在 i 时刻的 bias 附近用一阶泰勒展开来近似,而不用真的去迭代计算。
α b i b j = α b i b j + J b i a α δ b i a + J b i g α δ b i g β b i b j = β b i b j + J b i a β δ b i a + J b i g β δ b i g q b i b j = q b i b j ⊗ [ 1 1 2 J b i g q δ b i g ] \begin{aligned} &\boldsymbol{\alpha}_{b_{i}b_{j}} =\boldsymbol{\alpha}_{b_ib_j}+\mathbf{J}_{b_i^a}^\alpha\delta\mathbf{b}_i^a+\mathbf{J}_{b_i^g}^\alpha\delta\mathbf{b}_i^g \\ &\beta_{b_{i}b_{j}} =\beta_{b_ib_j}+\mathbf{J}_{b_i^a}^\beta\delta\mathbf{b}_i^a+\mathbf{J}_{b_i^g}^\beta\delta\mathbf{b}_i^g \\ &\mathbf{q}_{b_{i}}b_{j} =\mathbf{q}_{b_ib_j}\otimes\begin{bmatrix}1\\\frac12\mathbf{J}_{b_i^g}^q\delta\mathbf{b}_i^g\end{bmatrix} \end{aligned} αbibj=αbibj+Jbiaαδbia+Jbigαδbigβbibj=βbibj+Jbiaβδbia+Jbigβδbigqbibj=qbibj[121Jbigqδbig]
  下面式子表示了预积分量对i时刻的bias的导数
J b i a α = ∂ α b i b j ∂ δ b i a , J b i g α = ∂ α b i b j ∂ δ b i g , J b i a β = ∂ β b i b j ∂ δ b i a , J b i g β = ∂ β b i b j ∂ δ b i g , J b i g q = q b i b j ∂ b i g \begin{aligned}\mathbf{J}_{b_i^a}^\alpha=\frac{\partial\alpha_{b_ib_j}}{\partial\delta\mathbf{b}_i^a},\mathbf{J}_{b_i^g}^\alpha=\frac{\partial\alpha_{b_ib_j}}{\partial\delta\mathbf{b}_i^g},\mathbf{J}_{b_i^a}^\beta=\frac{\partial\beta_{b_ib_j}}{\partial\delta\mathbf{b}_i^a},\mathbf{J}_{b_i^g}^\beta=\frac{\partial\beta_{b_ib_j}}{\partial\delta\mathbf{b}_i^g},\mathbf{J}_{b_i^g}^q=\frac{\mathbf{q}_{b_ib_j}}{\partial\mathbf{b}_i^g}\end{aligned} Jbiaα=δbiaαbibj,Jbigα=δbigαbibj,Jbiaβ=δbiaβbibj,Jbigβ=δbigβbibj,Jbigq=bigqbibj
  这些雅可比可以通过预积分中协方差传递公式进行一步步递推
J k + 1 = F J k \mathbf{J}_{k+1}=\mathbf{F}\mathbf{J}_k Jk+1=FJk
  由于 r p r_{p} rp r v r_{v} rv的误差形式很相近,对各状态量求导的 Jacobian 形式也很相似,所以这里只对 r v r_{v} rv的推导进行详细介绍

① 速度误差 r v r_{v} rvi时刻状态量雅可比

<1> 位移p

∂ r v ∂ δ p b i b i ′ = 0 \frac{\partial\mathbf{r}_v}{\partial\delta\mathbf{p}_{{b_ib_i}^{\prime}}}=\mathbf{0} δpbibirv=0

<2> 旋转q

  注意这里是四元数,四元素的导数等价于乘以一个微小的四元数,这些推导都可以在那个专门讲四元数的那个pdf里面找到!
∂ r v ∂ δ θ b i b i ′ = ∂ ( q w b i ⊗ [ 1 1 2 δ θ b i b i ′ ] ) − 1 ( v j w − v i w + g w Δ t ) ∂ δ θ b i b i ′ = ∂ ( R w b i exp ⁡ ( [ δ θ b i b i ′ ] × ) ) − 1 ( v j w − v i w + g w Δ t ) ∂ δ θ b i b i ′ = ∂ exp ⁡ ( [ − δ θ b i b i ′ ] × ) R b i w ( v j w − v i w + g w Δ t ) ∂ δ θ b i b i ′ \begin{aligned} \frac{\partial\mathbf{r}_v}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}}& =\frac{\partial(\mathbf{q}_{wb_i}\otimes\begin{bmatrix}1\\\frac12\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}\end{bmatrix})^{-1}(\mathbf{v}_j^w-\mathbf{v}_i^w+\mathbf{g}^w\Delta t)}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \\ &=\frac{\partial(\mathbf{R}_{wb_i}\exp([\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}]_\times))^{-1}(\mathbf{v}_j^w-\mathbf{v}_i^w+\mathbf{g}^w\Delta t)}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \\ &=\frac{\partial\exp([-\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}]_{\times})\mathbf{R}_{b_iw}(\mathbf{v}_j^w-\mathbf{v}_i^w+\mathbf{g}^w\Delta t)}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \end{aligned} δθbibirv=δθbibi(qwbi[121δθbibi])1(vjwviw+gwΔt)=δθbibi(Rwbiexp([δθbibi]×))1(vjwviw+gwΔt)=δθbibiexp([δθbibi]×)Rbiw(vjwviw+gwΔt)
  这里实际上还是转为了相应的李代数,这样子好求导!
∂ r v ∂ δ θ b i b i ′ = ∂ ( I − [ δ θ b i b i ′ ] × ) R b i w ( v j w − v i w + g w Δ t ) ∂ δ θ b i b i ′ = ∂ − [ δ θ b i b i ′ ] × R b i w ( v j w − v i w + g w Δ t ) ∂ δ θ b i b i ′ = ∂ [ R b i w ( v j w − v i w + g w Δ t ] × ) δ θ b i b i ′ ∂ δ θ b i b i ′ = [ R b i w ( v j w − v i w + g w Δ t ) ] × \begin{aligned} \frac{\partial\mathbf{r}_{v}}{\partial\delta\boldsymbol{\theta}_{b_{i}b_{i}^{\prime}}}& =\frac{\partial(\mathbf{I}-[\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}]_\times)\mathbf{R}_{b_iw}(\mathbf{v}_j^w-\mathbf{v}_i^w+\mathbf{g}^w\Delta t)}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \\ &=\frac{\partial-[\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}]_\times\mathbf{R}_{b_iw}(\mathbf{v}_j^w-\mathbf{v}_i^w+\mathbf{g}^w\Delta t)}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \\ &=\frac{\partial[\mathbf{R}_{b_iw}(\mathbf{v}_j^w-\mathbf{v}_i^w+\mathbf{g}^w\Delta t]_\times)\delta\boldsymbol{\theta}_{b_ib_i^\prime}}{\partial\delta\boldsymbol{\theta}_{b_ib_i^\prime}} \\ &=[\mathbf{R}_{b_{i}w}(\mathbf{v}_{j}^{w}-\mathbf{v}_{i}^{w}+\mathbf{g}^{w}\Delta t)]_{\times} \end{aligned} δθbibirv=δθbibi(I[δθbibi]×)Rbiw(vjwviw+gwΔt)=δθbibi[δθbibi]×Rbiw(vjwviw+gwΔt)=δθbibi[Rbiw(vjwviw+gwΔt]×)δθbibi=[Rbiw(vjwviw+gwΔt)]×

<3> 速度v

∂ r v ∂ δ v i w = − R b i w \frac{\partial\mathbf{r}_v}{\partial\delta\mathbf{v}_i^w}=-\mathbf{R}_{b_iw} δviwrv=Rbiw

<4> 加速度偏置

  注意 bias 量只和预积分 β 有关
∂ r v ∂ δ b i a = − ∂ β b i b j ∂ δ b i a = − J b i a β \frac{\partial\mathbf{r}_v}{\partial\delta\mathbf{b}_i^a}=-\frac{\partial\beta_{b_ib_j}}{\partial\delta\mathbf{b}_i^a}=-\mathbf{J}_{b_i^a}^\beta δbiarv=δbiaβbibj=Jbiaβ

<5> 角速度偏置

速度中没有角速度这种分量,导数是0

② 角度误差 r q r_{q} rqi时刻状态量雅可比

<1> 位移p

∂ r q ∂ δ p b i b i ′ = 0 \frac{\partial\mathbf{r}_q}{\partial\delta\mathbf{p}_{b_i}b_i^{\prime}}=\mathbf{0} δpbibirq=0

<2> 旋转q

  角标xyz表示四元数的虚部,*表示四元数的逆
∂ r q ∂ δ θ b i b i ′ = ∂ 2 [ q b j b i ⊗ ( q b i w ⊗ q w b j ) ] x y z ∂ δ θ b i b i ′ = ∂ 2 [ q b i b j ∗ ⊗ ( q w b i ⊗ [ 1 1 2 δ θ b i b i ′ ] ) ∗ ⊗ q w b j ] x y z ∂ δ θ b i b i ′ = ∂ − 2 [ ( q b i b j ∗ ⊗ ( q w b i ⊗ [ 1 1 2 δ θ b i b i ′ ] ) ∗ ⊗ q w b j ) ∗ ] x y z ∂ δ θ b i b i ′ = ∂ − 2 [ q w b j ∗ ⊗ ( q w b i ⊗ [ 1 1 2 δ θ b i b i ′ ] ) ⊗ q b i b j ] x y z ∂ δ θ b i b i ′ \begin{aligned} \frac{\partial\mathbf{r}_q}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}}& =\frac{\partial2[\mathbf{q}_{b_jb_i}\otimes(\mathbf{q}_{b_iw}\otimes\mathbf{q}_{wb_j})]_{xyz}}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \\ &=\frac{\partial2[\mathbf{q}_{b_ib_j}^*\otimes(\mathbf{q}_{wb_i}\otimes\begin{bmatrix}1\\\frac12\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}\end{bmatrix})^*\otimes\mathbf{q}_{wb_j}]_{xyz}}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \\ &=\frac{\partial-2[(\mathbf{q}_{b_ib_j}^*\otimes(\mathbf{q}_{wb_i}\otimes\begin{bmatrix}1\\\frac12\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}\end{bmatrix})^*\otimes\mathbf{q}_{wb_j})^*]_{xyz}}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \\ &=\frac{\partial-2[\mathbf{q}_{wb_j}^*\otimes(\mathbf{q}_{wb_i}\otimes\begin{bmatrix}1\\\frac12\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}\end{bmatrix})\otimes\mathbf{q}_{b_ib_j}]_{xyz}}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \end{aligned} δθbibirq=δθbibi2[qbjbi(qbiwqwbj)]xyz=δθbibi2[qbibj(qwbi[121δθbibi])qwbj]xyz=δθbibi2[(qbibj(qwbi[121δθbibi])qwbj)]xyz=δθbibi2[qwbj(qwbi[121δθbibi])qbibj]xyz
  这里实际上还是转为了相应的李代数,这样子好求导!
∂ r q ∂ δ θ b i b i ′ = − 2 [ 0 I ] ∂ q w b j ∗ ⊗ ( q w b i ⊗ [ 1 1 2 δ θ b i b i ′ ] ) ⊗ q b i b j ∂ δ θ b i b i ′ = − 2 [ 0 I ] ∂ [ q w b j ∗ ⊗ q w b i ] L [ q b i b j ] R [ 1 1 2 δ θ b i b i ′ ] ∂ δ θ b i b i ′ = − 2 [ 0 I ] [ q w b j ∗ ⊗ q w b i ] L [ q b i b j ] R [ 0 1 2 I ] \begin{aligned} \frac{\partial\mathbf{r}_q}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}}& =-2\begin{bmatrix}\mathbf{0}&\mathbf{I}\end{bmatrix}\frac{\partial\mathbf{q}_{wb_j}^*\otimes(\mathbf{q}_{wb_i}\otimes\begin{bmatrix}1\\\frac12\delta\boldsymbol{\theta}_{b_ib_i^\prime}\end{bmatrix})\otimes\mathbf{q}_{b_ib_j}}{\partial\delta\boldsymbol{\theta}_{b_ib_i^\prime}} \\ &=-2\begin{bmatrix}\mathbf{0}&\mathbf{I}\end{bmatrix}\frac{\partial[\mathbf{q}_{wb_j}^*\otimes\mathbf{q}_{wb_i}]_L[\mathbf{q}_{b_ib_j}]_R\begin{bmatrix}1\\\frac12\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}\end{bmatrix}}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \\ &=-2\begin{bmatrix}\mathbf{0}&\mathbf{I}\end{bmatrix}[\mathbf{q}_{wb_j}^*\otimes\mathbf{q}_{wb_i}]_L[\mathbf{q}_{b_ib_j}]_R\begin{bmatrix}\mathbf{0}\\\frac12\mathbf{I}\end{bmatrix} \end{aligned} δθbibirq=2[0I]δθbibiqwbj(qwbi[121δθbibi])qbibj=2[0I]δθbibi[qwbjqwbi]L[qbibj]R[121δθbibi]=2[0I][qwbjqwbi]L[qbibj]R[021I]
​   [ ⋅ ] L 和  [ ⋅ ] R [\cdot]_L\text{ 和 }[\cdot]_R []L  []R是四元数转为左/右旋转矩阵的算子,本质上是两个四元数乘法的不同表示!有的时候用L[q]R[q]表示!

<3> 速度v

∂ r v ∂ δ v i w = 0 \frac{\partial\mathbf{r}_v}{\partial\delta\mathbf{v}_i^w}=0 δviwrv=0

<4> 角速度偏置

  注意 bias 量只和预积分 γ 有关
r q ∂ δ b i g = ∂ 2 [ ( q b i b j ⊗ [ 1 1 2 J b i g q δ b i g ] ) ∗ ⊗ q w b i ∗ ⊗ q w b j ] x y z ∂ δ b i g = ∂ − 2 [ ( ( q b i b j ⊗ [ 1 1 2 J b i g q δ b i g ] ) ∗ ⊗ q w b i ∗ ⊗ q w b j ) ∗ ] x y z ∂ δ b i g = ∂ − 2 [ q w b j ∗ ⊗ q w b i ⊗ ( q b i b j ⊗ [ 1 1 2 J b i g q δ b i g ] ) ] x y z ∂ δ b i g = − 2 [ 0 I ] [ q w b j ∗ ⊗ q w b i ⊗ q b i b j ] L [ 0 1 2 J b i g q ] \begin{aligned} \frac{\mathbf{r}_q}{\partial\delta\mathbf{b}_i^g}& =\frac{\partial2[(\mathbf{q}_{b_ib_j}\otimes\begin{bmatrix}1\\\frac12\mathbf{J}_{b_i^g}^q\delta\mathbf{b}_i^g\end{bmatrix})^*\otimes\mathbf{q}_{wb_i}^*\otimes\mathbf{q}_{wb_j}]_{xyz}}{\partial\delta\mathbf{b}_i^g} \\ &=\frac{\partial-2[((\mathbf{q}_{b_ib_j}\otimes\begin{bmatrix}1\\\frac12\mathbf{J}_{b_i^g}^q\delta\mathbf{b}_i^g\end{bmatrix})^*\otimes\mathbf{q}_{wb_i}^*\otimes\mathbf{q}_{wb_j})^*]_{xyz}}{\partial\delta\mathbf{b}_i^g} \\ &=\frac{\partial-2[\mathbf{q}_{wb_j}^*\otimes\mathbf{q}_{wb_i}\otimes(\mathbf{q}_{b_ib_j}\otimes\begin{bmatrix}1\\\frac12\mathbf{J}_{b_i^g}^q\delta\mathbf{b}_i^g\end{bmatrix})]_{xyz}}{\partial\delta\mathbf{b}_i^g} \\ &=-2\begin{bmatrix}\mathbf{0}&\mathbf{I}\end{bmatrix}[\mathbf{q}_{wb_j}^*\otimes\mathbf{q}_{wb_i}\otimes\mathbf{q}_{b_ib_j}]_L\begin{bmatrix}\mathbf{0}\\\frac12\mathbf{J}_{b_i^g}^q\end{bmatrix} \end{aligned} δbigrq=δbig2[(qbibj[121Jbigqδbig])qwbiqwbj]xyz=δbig2[((qbibj[121Jbigqδbig])qwbiqwbj)]xyz=δbig2[qwbjqwbi(qbibj[121Jbigqδbig])]xyz=2[0I][qwbjqwbiqbibj]L[021Jbigq]

<5> 加速度偏置

  角度中没有加速度这种分量,导数是0

④ 总之还有很多,可以参考崔华坤推导,后续有时间再补充

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/700647.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高和汽车停工停产,创始人丁磊终于发话了!2024的冷门项目,投入小,但是真的很赚钱!

高和创始人丁磊站在停产停工的工厂呢&#xff0c; 环顾冷清❄️的四周&#xff0c;眉头紧锁&#x1f623;&#xff0c; 停顿片刻后对旁边同样愁眉苦脸的员工说道&#xff1a; 非常抱歉&#xff0c;因为经营的失误&#xff0c;面临了停产停工的窘境。 在互联网&#x1f517;、物…

力扣20.有效的括号

题目链接 这个学过数据结构栈的应用的基本上都会 就是把字符串进栈&#xff0c;如果是左边的括号&#xff0c;无脑入栈&#xff0c; 如果是右边的括号&#xff0c;那得看栈顶是不是和它匹配&#xff0c;如果匹配的话&#xff0c;一起出栈&#xff0c;如果不匹配&#xff0c;就先…

R语言【raster】——rasterize():栅格化点、线、面

Package raster version 3.6-27 Description 将与“对象”类型空间数据(点、线、多边形)相关的值转移到栅格单元。 对于多边形&#xff0c;如果多边形覆盖栅格单元的中心&#xff0c;则传输值。对于行&#xff0c;将值传输到与行接触的所有单元格。您可以通过先将多边形光栅化…

九、线性代数二-向量组的概念

目录 1、向量组的概念&#xff1a; 2、向量组线性组合的概念&#xff1a; 3、向量组的线性组合的矩阵表示&#xff1a; 4、向量组的线性组合的方程组表示&#xff1a; 1、向量组的概念&#xff1a; 理解&#xff1a; 矩阵是一个特殊的向量组。 2、向量组线性组合的概念&…

软考40-上午题-【数据库】-关系代数运算2-专门的集合运算

一、专门的集合运算 1、投影 示例&#xff1a; 可以用属性名进行投影&#xff0c;也可以用列的序号进行投影。 2、选择 例题 1、笛卡尔积 2、投影 3、选择 3、连接 第一步都要算&#xff1a;笛卡尔积。 3-1、θ连接 示例&#xff1a; 3-2、等值连接 示例&#xff1a; 3-3、自…

嵌入式ARM LINUX实战开发-linux常用指令

链接&#xff1a;https://pan.baidu.com/s/1KTnzt19pzOE2Uwvp7d4E-w?pwd1688 提取码&#xff1a;1688 (1) ls&#xff08;list&#xff0c;列表&#xff09; 作用&#xff1a;使用列表把当前文件夹下所有文件显示出来 ls -a 显示所有文件&#xff0c;包括隐藏文件 ls …

如何准确查询自己的大数据信用报告?

在当今数字化时代&#xff0c;大数据信用报告在个人信用评估中扮演着越来越重要的角色。然而&#xff0c;很多人可能不知道如何查询自己的大数据信用报告。本文贷大家一起了解一下&#xff0c;希望对你有帮助。 如何准确查询自己的大数据信用报告&#xff1a; 一、找到可靠的查…

Python学习 --- 面向对象

1.什么是对象 1.Python中创建类的关键字是 class 2.类的成员方法 1.函数是写在类外面的,方法则是写在类里面的 1.上面这一段代码中就展示了如何在方法中访问类的成员变量: self.成员变量名 3.魔术方法 魔术方法其实就是python中的类中的内置方法,下面这几个只是我们比较常…

Linux应用- RabbitMQ安装

RabbitMQ安装部署【简单】 简介 RabbitMQ一款知名的开源消息队列系统&#xff0c;为企业提供消息的发布、订阅、点对点传输等消息服务。 RabbitMQ在企业开发中十分常见&#xff0c;为大家演示快速搭建RabbitMQ环境。 安装 rabbitmq在yum仓库中的版本比较老&#xff0c;所以…

Git基本操作(1)

Git基本操作&#xff08;1&#xff09; 初始化git本地仓库git本地仓库配置git config user.name 和git config user.emailgit config --unset user.name和git config --unset user.emailgit config --global 认识工作区&#xff0c;暂存区&#xff0c;版本库更深层次理解 git a…

做qt界面样式,写代码,好用的搜索工具,我推荐ai伙伴

ai伙伴 这里有最全的官方qss样式&#xff0c;但还是有点不全 有些qt样式要配合csdn来搜

Java学习26--枚举类

enum枚举 Java 枚举是一个特殊的类&#xff0c;一般表示一组常量&#xff0c;比如一年的 4 个季节&#xff0c;一年的 12 个月份&#xff0c;一个星期的 7 天&#xff0c;方向有东南西北等。 Java 枚举类使用 enum 关键字来定义&#xff0c;各个常量使用逗号 , 来分割。 enu…

微服务Day6

文章目录 DSL查询文档RestClient查询文档快速入门 旅游案例 DSL查询文档 RestClient查询文档 快速入门 Testvoid testMatchAll() throws IOException {//1.准备RequestSearchRequest request new SearchRequest("hotel");//2.准备DSLrequest.source().query(QueryB…

海外媒体推广通过5个发稿平台开拓国际市场-华媒舍

随着全球化的进程&#xff0c;国际市场对于企业的吸引力日益增加。进入国际市场并获得成功并非易事。海外媒体推广发稿平台成为了一种重要的营销手段&#xff0c;能够帮助企业在国际市场中建立品牌形象、传递信息和吸引目标受众。本文介绍了五个海外媒体推广发稿平台&#xff0…

Linux系统安装部署RabbitMQ详细教程(图文详解)

前言:在分布式系统中进行消息传递和通信时,可能会用到RabbitMQ,这边我写一篇简易的部署教程,带大家了解一下,只要跟着文章一步步走就可以部署成功了,其中的坑博主都替大家踩过了。 博主的其他部署教程: 1、Docker部署前后端分离项目:手把手通过Docker部署前后端分离项目…

Linux:gcc的基本知识

gcc 是一个将C语言文件变成可执行文件的工具。 在Linux中&#xff0c;如果需要将一个C语言文件变得可以执行&#xff0c;那么除了这个文件本身的内容是C语言编写的内容外&#xff0c;还需要gcc这个编译工具进行编译才行。 gcc 使用的格式方法:gcc 要编译的文件 //在该代码下…

【软件架构】05-高性能架构

1、缓存 设计思路&#xff1a; 1.什么数据应该缓存 2.什么时机触发缓存和以及触发方式是什么 3.缓存的层次和粒度&#xff08; 网关缓存如 nginx&#xff0c;本地缓存如单机文件&#xff0c;分布式缓存如redis cluster&#xff0c;进程内缓存如全局变量&#xff09; 1&#…

Flink checkpoint操作流程详解与报错调试方法汇总,增量checkpoint原理及版本更新变化,作业恢复和扩缩容原理与优化

Flink checkpoint操作流程详解与报错调试方法汇总&#xff0c;增量checkpoint原理及版本更新变化&#xff0c;作业恢复和扩缩容原理与优化 flink checkpint出错类型flink 重启策略Checkpint 流程简介增量Checkpoint实现原理MemoryStateBackend 原理FsStateBackend原理RocksDBSt…

Javascript 运算符、流程控制语句和数组

【三】运算符 【1】算数运算符 &#xff08;1&#xff09;分类 加减乘除&#xff1a;*/取余&#xff1a;%和python不一样的点&#xff1a;没有取整// &#xff08;2&#xff09;特殊的点 只要NaN参与运算得到的结果也是NaNnull转换成0&#xff0c;undefined转换成NaN 【2…