如何做网站服务器/百度推广后台登录入口
第十二章 学习笔记(Rotation About a Point)
上一章是绕定轴转动,这章是绕定点转动。这一章明显上难度了。
12.1 Tensor of Inertia
在正式的公式推导之前,我们先复习一个矢量公式,下面推导时会用到这个公式:
A × ( B × C ) = ( A ⋅ C ) B − ( A ⋅ B ) C \mathbf A \times (\mathbf B \times \mathbf C) = (\mathbf A \cdot\mathbf C) \mathbf B - (\mathbf A \cdot \mathbf B) \mathbf C A×(B×C)=(A⋅C)B−(A⋅B)C
首先计算刚体绕定点转动时的角动量。
L = ∑ m i ( r i × v i ) = ∑ m i ( r i × ( ω × r i ) ) = ∑ m i ( ( r i ⋅ r i ) ω − ( r i ⋅ ω ) r i ) = ∑ m i ( x i 2 + y i 2 + z i 2 ) ( ω x ω y ω z ) − ( x i ω x + y i ω y + z i ω z ) ( x i y i z i ) \begin{aligned} \mathbf L &= \sum m_i (\mathbf r_i \times \mathbf v_i) \\ &= \sum m_i (\mathbf r_i \times (\mathbf \omega \times \mathbf r_i)) \\ &= \sum m_i \left((\mathbf r_i \cdot \mathbf r_i) \mathbf \omega -(\mathbf r_i \cdot \mathbf \omega) \mathbf r_i\right)\\ &= \sum m_i (x_i^2+y_i^2+z_i^2) \begin{pmatrix} \omega_x \\ \omega_y \\ \omega_z\end{pmatrix} - (x_i \omega_x + y_i \omega_y + z_i \omega_z)\begin{pmatrix} x_i \\ y_i \\ z_i\end{pmatrix} \end{aligned} L=∑mi(ri×vi)=∑mi(ri×(ω×ri))=∑mi((ri⋅ri)ω−(ri⋅ω)ri)=∑mi(xi2+yi2+zi2) ωxωyωz −(xiωx+yiωy+ziωz) xiyizi
写成分量形式:
L x = ∑ m i ( x i 2 + y i 2 + z i 2 ) ω x − ( x i ω x + y i ω y + z i ω z ) x i = ∑ m i ( y i 2 + z i 2 ) ω x − x i y i ω y − x i z i ω z \begin{aligned} L_x &= \sum m_i (x_i^2+y_i^2+z_i^2) \omega_x - (x_i \omega_x + y_i \omega_y + z_i \omega_z) x_i\\ &=\sum m_i (y_i^2+z_i^2) \omega_x - x_i y_i \omega_y -x_i z_i \omega_z\\ \end{aligned} \\ Lx=∑mi(xi2+yi2+zi2)ωx−(xiωx+yiωy+ziωz)xi=∑mi(yi2+zi2)ωx−xiyiωy−xiziωz
L y = ∑ m i ( x i 2 + y i 2 + z i 2 ) ω y − ( x i ω x + y i ω y + z i ω z ) y i = ∑ m i ( x i 2 + z i 2 ) ω y − y i x i ω x − y i z i ω z \begin{aligned} L_y &= \sum m_i (x_i^2+y_i^2+z_i^2) \omega_y - (x_i \omega_x + y_i \omega_y + z_i \omega_z) y_i\\ &= \sum m_i (x_i^2+z_i^2) \omega_y - y_i x_i \omega_x - y_i z_i \omega_z \\ \end{aligned} Ly=∑mi(xi2+yi2+zi2)ωy−(xiωx+yiωy+ziωz)yi=∑mi(xi2+zi2)ωy−yixiωx−yiziωz
L z = ∑ m i ( x i 2 + y i 2 + z i 2 ) ω z − ( x i ω x + y i ω y + z i ω z ) z i = ∑ m i ( x i 2 + y i 2 ) ω z − x i z i ω x − y i z i ω y \begin{aligned} L_z &= \sum m_i (x_i^2+y_i^2+z_i^2) \omega_z - (x_i \omega_x + y_i \omega_y + z_i \omega_z) z_i\\ &= \sum m_i (x_i^2+y_i^2) \omega_z - x_i z_i \omega_x - y_i z_i \omega_y \\ \end{aligned} Lz=∑mi(xi2+yi2+zi2)ωz−(xiωx+yiωy+ziωz)zi=∑mi(xi2+yi2)ωz−xiziωx−yiziωy
写成矩阵形式:
Θ = ( ∑ m i ( y i 2 + z i 2 ) − ∑ m i x i y i − ∑ m i x i z i − ∑ m i x i y i ∑ m i ( x i 2 + z i 2 ) − ∑ m i y i z i − ∑ m i x i z i − ∑ m i y i z i ∑ m i ( x i 2 + y i 2 ) ) L = Θ ^ ⋅ ω \Theta = \begin{pmatrix}\sum m_i (y_i^2+z_i^2) & -\sum m_i x_i y_i& -\sum m_i x_i z_i\\ -\sum m_i x_i y_i& \sum m_i (x_i^2+z_i^2)& -\sum m_i y_i z_i\\ -\sum m_i x_i z_i& -\sum m_i y_i z_i& \sum m_i (x_i^2+y_i^2)\\ \end{pmatrix} \\ \mathbf L = \hat\Theta \cdot \omega Θ= ∑mi(yi2+zi2)−∑mixiyi−∑mixizi−∑mixiyi∑mi(xi2+zi2)−∑miyizi−∑mixizi−∑miyizi∑mi(xi2+yi2) L=Θ^⋅ω
上面式子中的 Θ ^ \hat\Theta Θ^ 就是这章的主角 惯性张量。
12.2 Kinetic Energy of a Rotating Rigid Body
这里推导定轴转动时的转动能。首先还是先补充一个矢量公式:
A ⋅ ( B × C ) = B ⋅ ( C × A ) = C ⋅ ( A × B ) \mathbf A \cdot (\mathbf B \times \mathbf C) = \mathbf B \cdot (\mathbf C \times \mathbf A) = \mathbf C \cdot (\mathbf A \times \mathbf B) A⋅(B×C)=B⋅(C×A)=C⋅(A×B)
有了这个矢量公式就可以开始下面的推导了。
T = 1 2 ∑ m i v i 2 = 1 2 ∑ m i ( v i ⋅ ( ω × r i ) ) = 1 2 ∑ m i ( ω ⋅ ( r i × v i ) ) = 1 2 ω ⋅ ∑ m i ( r i × v i ) = 1 2 ω ⋅ L = 1 2 ω T ⋅ Θ ^ ⋅ ω \begin{aligned} T &= \frac{1}{2}\sum m_i \mathbf v_i^2 \\ &= \frac{1}{2} \sum m_i (\mathbf v_i \cdot (\omega \times \mathbf r_i))\\ &= \frac{1}{2} \sum m_i (\omega \cdot (\mathbf r_i \times \mathbf v_i) ) \\ &= \frac{1}{2} \omega \cdot \sum m_i (\mathbf r_i \times \mathbf v_i) \\ &= \frac{1}{2} \omega \cdot \mathbf L \\ &= \frac{1}{2} \omega^T \cdot \hat\Theta \cdot \omega \end{aligned} T=21∑mivi2=21∑mi(vi⋅(ω×ri))=21∑mi(ω⋅(ri×vi))=21ω⋅∑mi(ri×vi)=21ω⋅L=21ωT⋅Θ^⋅ω
12.3 The Principal Axes of Inertia (惯量主轴)
12.4 Existence and Orthogonality of the Principal Axes
12.5 Transformation of the Tensor of Inertia
这三个小节 Greiner 写作顺序不太好。个人认为应该先讲 12.5 节,然后是12.3 最后是12.4。另外,现在的大学生都学过线性代数,对矩阵的相似变换有足够的了解。利用矩阵可以简化推导过程。
下面就按照我自己的理解来推导。
通过选取合适的坐标系,我们可以让转动惯量张量成为对角矩阵。
首先回忆一下坐标变换。在一个坐标系下的单位矢量记为 ( e 1 , e 2 , e 3 ) (\mathbf e_1, \mathbf e_2, \mathbf e_3) (e1,e2,e3)。相对坐标原点做一个旋转之后单位矢量变为 ( e 1 ′ , e 2 ′ , e 3 ′ ) (\mathbf e'_1, \mathbf e'_2, \mathbf e'_3) (e1′,e2′,e3′)。 两套坐标系的关系可以用下面的式子来表示。
e 1 ′ = a 11 e 1 + a 12 e 2 + a 13 e 3 e 2 ′ = a 21 e 1 + a 22 e 2 + a 23 e 3 e 3 ′ = a 31 e 1 + a 32 e 2 + a 33 e 3 \mathbf e'_1 = a_{11} \mathbf e_1 + a_{12} \mathbf e_2 + a_{13} \mathbf e_3 \\ \mathbf e'_2 = a_{21} \mathbf e_1 + a_{22} \mathbf e_2 + a_{23} \mathbf e_3 \\ \mathbf e'_3 = a_{31} \mathbf e_1 + a_{32} \mathbf e_2 + a_{33} \mathbf e_3 e1′=a11e1+a12e2+a13e3e2′=a21e1+a22e2+a23e3e3′=a31e1+a32e2+a33e3
或者写为矩阵形式:
( e 1 ′ e 2 ′ e 3 ′ ) = A ( e 1 e 2 e 3 ) \begin{pmatrix}\mathbf e'_1 \\\mathbf e'_2 \\\mathbf e'_3 \end{pmatrix} = \mathbf A \begin{pmatrix}\mathbf e_1 \\\mathbf e_2 \\\mathbf e_3 \end{pmatrix} e1′e2′e3′ =A e1e2e3
一个矢量 x x x ,在 e \mathbf e e 坐标系下的分量为 ( x 1 , x 2 , x 3 ) (x_1, x_2, x_3) (x1,x2,x3),在 e ′ \mathbf e' e′ 坐标系下的分量为 ( x 1 ′ , x ’ 2 , x 3 ′ ) (x'_1, x’_2, x'_3) (x1′,x’2,x3′)。
x = x 1 e 1 + x 2 e 2 + x 3 e 3 = x 1 ′ e 1 ′ + x 2 ′ e 2 ′ + x 3 ′ e 3 ′ = x 1 ′ ( a 11 e 1 + a 12 e 2 + a 13 e 3 ) + x 2 ′ ( a 21 e 1 + a 22 e 2 + a 23 e 3 ) + x 3 ′ ( a 31 e 1 + a 32 e 2 + a 33 e 3 ) = ( x 1 ′ a 11 + x 2 ′ a 21 + x 3 ′ a 31 ) e 1 + ( x 1 ′ a 12 + x 2 ′ a 22 + x 3 ′ a 32 ) e 2 + ( x 1 ′ a 13 + x 2 ′ a 23 + x 3 ′ a 33 ) e 3 \begin{aligned} \mathbf x &= x_1 \mathbf e_1 + x_2 \mathbf e_2 + x_3 \mathbf e_3 \\ &= x'_1 \mathbf e'_1 + x'_2 \mathbf e'_2 + x'_3 \mathbf e'_3 \\ &= x'_1 (a_{11} \mathbf e_1 + a_{12} \mathbf e_2 + a_{13} \mathbf e_3) + x'_2 (a_{21} \mathbf e_1 + a_{22} \mathbf e_2 + a_{23} \mathbf e_3) + x'_3 (a_{31} \mathbf e_1 + a_{32} \mathbf e_2 + a_{33} \mathbf e_3)\\ &= (x'_1 a_{11} + x'_2 a_{21} + x'_3 a_{31}) \mathbf e_1 + (x'_1 a_{12} + x'_2 a_{22} + x'_3 a_{32}) \mathbf e_2 + (x'_1 a_{13} + x'_2 a_{23} + x'_3 a_{33}) \mathbf e_3 \end{aligned} x=x1e1+x2e2+x3e3=x1′e1′+x2′e2′+x3′e3′=x1′(a11e1+a12e2+a13e3)+x2′(a21e1+a22e2+a23e3)+x3′(a31e1+a32e2+a33e3)=(x1′a11+x2′a21+x3′a31)e1+(x1′a12+x2′a22+x3′a32)e2+(x1′a13+x2′a23+x3′a33)e3
写成矩阵形式:
( x 1 x 2 x 3 ) = ( a 11 a 21 a 31 a 12 a 22 a 32 a 13 a 23 a 33 ) ( x 1 ′ x 2 ′ x 3 ′ ) \begin{pmatrix} x_1 \\x_2 \\x_3\end{pmatrix} = \begin{pmatrix} a_{11} & a_{21} &a_{31} \\ a_{12} & a_{22} & a_{32}\\ a_{13} & a_{23} & a_{33}\end{pmatrix} \begin{pmatrix} x'_1 \\x'_2 \\x'_3\end{pmatrix}\\ x1x2x3 = a11a12a13a21a22a23a31a32a33 x1′x2′x3′
和上面比较一下,可以看出:
x = A T x ′ x ′ = A x \mathbf x = \mathbf A^T \mathbf x' \\ \mathbf x' = \mathbf A \mathbf x x=ATx′x′=Ax
可以看出,坐标变换矩阵和基矢的变换矩阵是相同的。另外我们还知道 A \mathbf A A 是实对称矩阵, ∣ A ∣ = 1 , A T = A − 1 |\mathbf A| = 1, \mathbf A^T = \mathbf A^{-1} ∣A∣=1,AT=A−1。关于 A \mathbf A A 的这些特性在随便一本线性代数的教科书里都有,这里就不详细推导了。
L = Θ ^ ⋅ ω \mathbf L = \hat\Theta \cdot \omega L=Θ^⋅ω 这个公式在一个坐标系下成立,对这个坐标系做个旋转之后也必须成立。在旋转后的坐标系下, ω , L \omega ,\mathbf L ω,L 成为了 ω ′ , L ′ \omega' ,\mathbf L' ω′,L′。他们之间的关系如下:
ω = A T ⋅ ω ′ L = A T ⋅ L ′ \omega= \mathbf A^T \cdot\omega' \\ \mathbf L = \mathbf A^T \cdot \mathbf L' ω=AT⋅ω′L=AT⋅L′
带入角动量的公式:
L = Θ ^ ⋅ ω A T ⋅ L ′ = Θ ^ A T ⋅ ω ′ L ′ = A Θ ^ A T ⋅ ω ′ = A Θ ^ A − 1 ⋅ ω ′ \mathbf L = \hat\Theta \cdot \omega \\ \mathbf A^T \cdot \mathbf L' = \hat\Theta \mathbf A^T \cdot\omega' \\ \mathbf L' = \mathbf A \hat\Theta \mathbf A^T \cdot\omega' =\mathbf A \hat\Theta \mathbf A^{-1} \cdot\omega' L=Θ^⋅ωAT⋅L′=Θ^AT⋅ω′L′=AΘ^AT⋅ω′=AΘ^A−1⋅ω′
因此我们就推导出了二阶张量的坐标变换公式:
Θ ^ ′ = A Θ ^ A − 1 \hat \Theta' = \mathbf A \hat \Theta \mathbf A^{-1} Θ^′=AΘ^A−1
上面这个变换公式在线性代数教科书里称为相似变换。通过相似变换我们可以把一个实对称矩阵化为对角矩阵。也就是
Θ ^ ′ = ( Θ 1 0 0 0 Θ 2 0 0 0 Θ 3 ) \hat \Theta' = \begin{pmatrix} \Theta_1 & 0 &0 \\ 0 & \Theta_2 & 0\\ 0 & 0 & \Theta_3\end{pmatrix} Θ^′= Θ1000Θ2000Θ3
那么角动量和转动动能的表达式都会变得很简单:
( L 1 L 2 L 3 ) = ( Θ 1 ω 1 Θ 2 ω 2 Θ 3 ω 3 ) \begin{pmatrix} L_1 \\L_2 \\L_3\end{pmatrix} = \begin{pmatrix}\Theta_1 \omega_1 \\\Theta_2 \omega_2 \\ \Theta_3 \omega_3 \end{pmatrix} L1L2L3 = Θ1ω1Θ2ω2Θ3ω3
T = 1 2 ω T ⋅ Θ ^ ′ ⋅ ω = 1 2 ( Θ 1 ω 1 2 + Θ 2 ω 2 2 + Θ 3 ω 3 2 ) T = \frac{1}{2} \omega^T \cdot \hat \Theta' \cdot \omega = \frac{1}{2} (\Theta_1 \omega_1^2 + \Theta_2 \omega_2^2 + \Theta_3 \omega_3^2) T=21ωT⋅Θ^′⋅ω=21(Θ1ω12+Θ2ω22+Θ3ω32)
另外,我们还知道 Θ i \Theta_i Θi 其实就是矩阵 Θ ^ \hat \Theta Θ^ 的三个特征值。
Θ ^ ⋅ ω = λ ω ( Θ ^ − λ I ) ω = 0 \hat \Theta \cdot \omega = \lambda \omega \\ (\hat \Theta - \lambda \mathbf I ) \omega = 0 Θ^⋅ω=λω(Θ^−λI)ω=0
12.4 节就是在证明 Θ ^ \hat \Theta Θ^ 有三个实数的特征向量。书上给的证明有点繁琐,其实用矩阵运算,利用 Θ ^ \hat \Theta Θ^ 是实对称矩阵这么一个条件,可以很容易证明出来。下面的证明中,我们用 A ˉ \bar A Aˉ 表示对 A A A 取复共轭。
ω ‾ T ⋅ Θ ^ ⋅ ω = ω ‾ T ⋅ Θ ^ ⋅ ω = ω ‾ T ⋅ Θ ^ T ‾ ⋅ ω = ω T ⋅ Θ ^ T ‾ ⋅ ω = ( Θ ^ ⋅ ω ) T ‾ ⋅ ω = ( λ ⋅ ω ) T ‾ ⋅ ω = λ ‾ ⋅ ω T ‾ ⋅ ω \begin{aligned} \overline\omega^T \cdot \hat \Theta \cdot \omega &= \overline\omega^T \cdot \hat \Theta \cdot\omega \\ & = \overline\omega^T \cdot \overline{\hat \Theta^T} \cdot\omega\\ & = \overline{\omega^T \cdot \hat \Theta^T} \cdot\omega\\ & = \overline{(\hat \Theta \cdot \omega)^T} \cdot\omega \\ & = \overline{(\lambda \cdot \omega)^T} \cdot\omega \\ & = \overline{\lambda}\cdot \overline{\omega^T} \cdot\omega \\ \end{aligned} ωT⋅Θ^⋅ω=ωT⋅Θ^⋅ω=ωT⋅Θ^T⋅ω=ωT⋅Θ^T⋅ω=(Θ^⋅ω)T⋅ω=(λ⋅ω)T⋅ω=λ⋅ωT⋅ω
另一方面:
ω ‾ T ⋅ Θ ^ ⋅ ω = ω ‾ T ⋅ λ ⋅ ω = λ ⋅ ω T ‾ ⋅ ω \begin{aligned} \overline\omega^T \cdot \hat \Theta \cdot \omega &= \overline\omega^T \cdot \lambda\cdot\omega \\ & = \lambda \cdot\overline{\omega^T} \cdot\omega \end{aligned} ωT⋅Θ^⋅ω=ωT⋅λ⋅ω=λ⋅ωT⋅ω
所以有:
λ ‾ ⋅ ω T ‾ ⋅ ω = λ ⋅ ω T ‾ ⋅ ω ( λ ‾ − λ ) ω T ‾ ⋅ ω = 0 λ ‾ − λ = 0 \overline\lambda \cdot\overline{\omega^T} \cdot\omega =\lambda \cdot\overline{\omega^T} \cdot\omega\\ (\overline\lambda - \lambda ) \ \overline{\omega^T} \cdot\omega = 0\\ \overline\lambda - \lambda = 0 λ⋅ωT⋅ω=λ⋅ωT⋅ω(λ−λ) ωT⋅ω=0λ−λ=0
上面这个证明要比书上写的简单一些。至少是没有那么多让人眼花缭乱的上标、下标了。
至此,本章还剩下最后一个问题。就是我们已知 Θ ^ \hat \Theta Θ^ 之后如何去求某个方向上的转动惯量。
设单位方向向量为 n = ( n 1 , n 2 , n 3 ) \mathbf n = (n_1, n_2, n_3) n=(n1,n2,n3)。那么这个方向上的角速度可以表示为:
ω ⃗ = ω ⋅ n L = ω Θ ^ ⋅ n L n = n T ⋅ L = ω n T ⋅ Θ ^ ⋅ n \vec \omega = \omega \cdot \mathbf n \\ \mathbf L = \omega \hat \Theta \cdot \mathbf n \\ \mathbf L_n = \mathbf n^T \cdot \mathbf L = \omega \ \mathbf n^T \cdot \hat \Theta \cdot \mathbf n ω=ω⋅nL=ωΘ^⋅nLn=nT⋅L=ω nT⋅Θ^⋅n
从上面的式子我们就能看出来某个方向 n \mathbf n n上的 转动惯量为 Θ n = n T ⋅ Θ ^ ⋅ n \Theta_n = \mathbf n^T \cdot \hat \Theta \cdot \mathbf n Θn=nT⋅Θ^⋅n。
12.7 Ellipsoid of Inertia
从上面我们已经知道:
Θ n = n T ⋅ Θ ^ ⋅ n \Theta_n = \mathbf n^T \cdot \hat \Theta \cdot \mathbf n Θn=nT⋅Θ^⋅n
这个其实就是线性代数里面讨论的二次型问题。3维空间上的二次型就是个椭球体。
设 ϱ = n / Θ n \varrho = \mathbf n / \sqrt{\Theta_n} ϱ=n/Θn,那么有 n = Θ n ϱ \mathbf n = \sqrt{\Theta_n} \varrho n=Θnϱ。
Θ n = Θ n ( ϱ x ϱ y ϱ z ) ⋅ Θ ⋅ Θ n ( ϱ x ϱ y ϱ z ) \Theta_n = \sqrt{\Theta_n} \begin{pmatrix} \varrho_x &\varrho_y &\varrho_z \end{pmatrix} \cdot \Theta \cdot \sqrt{\Theta_n} \begin{pmatrix} \varrho_x \\ \varrho_y \\\varrho_z \end{pmatrix} Θn=Θn(ϱxϱyϱz)⋅Θ⋅Θn ϱxϱyϱz
也就是:
1 = ( ϱ x ϱ y ϱ z ) ⋅ ( Θ x x Θ x y Θ x z Θ y x Θ y y Θ y z Θ z x Θ z y Θ z z ) ⋅ ( ϱ x ϱ y ϱ z ) 1 = \begin{pmatrix} \varrho_x &\varrho_y &\varrho_z \end{pmatrix} \cdot \begin{pmatrix} \Theta_{xx} &\Theta_{xy} &\Theta_{xz} \\ \Theta_{yx} &\Theta_{yy} &\Theta_{yz}\\ \Theta_{zx} &\Theta_{zy} &\Theta_{zz} \end{pmatrix} \cdot \begin{pmatrix} \varrho_x \\ \varrho_y \\\varrho_z \end{pmatrix} 1=(ϱxϱyϱz)⋅ ΘxxΘyxΘzxΘxyΘyyΘzyΘxzΘyzΘzz ⋅ ϱxϱyϱz
展开之后得到:
Θ x x ϱ x 2 + Θ y y ϱ y 2 + Θ z z ϱ z 2 + 2 Θ x y ϱ x ϱ y + 2 Θ y z ϱ y ϱ z + 2 Θ x z ϱ x ϱ z = 1 \Theta_{xx} \varrho_x^2 + \Theta_{yy} \varrho_y^2 + \Theta_{zz} \varrho_z^2 +2 \Theta_{xy} \varrho_x \varrho_y + 2 \Theta_{yz} \varrho_y \varrho_z + 2 \Theta_{xz} \varrho_x \varrho_z = 1 Θxxϱx2+Θyyϱy2+Θzzϱz2+2Θxyϱxϱy+2Θyzϱyϱz+2Θxzϱxϱz=1
至此,这章的知识点就全都写完了。下一章将讨论各种陀螺问题,脱落问题算是古典力学最有趣的问题吧。
相关文章:

Greiner 经典力学(多体系统和哈密顿力学)第十二章 学习笔记(Rotation About a Point)
第十二章 学习笔记(Rotation About a Point) 上一章是绕定轴转动,这章是绕定点转动。这一章明显上难度了。 12.1 Tensor of Inertia 在正式的公式推导之前,我们先复习一个矢量公式,下面推导时会用到这个公式&#x…...

SQL进阶技巧:如何计算复合增长率?
目录 0 场景描述 1 数据准备 2 问题分析 3 小结 0 场景描述 复合增长率是第N期的数据除以第一期的基准数据,然后开N-1次方再减去1得到的结果。假如2018年的产品销售额为10000,2019年的产品销售额为12500,2020年的产品销售额为15000(销售额单位省略,下同)。那么这两…...

十一:java web(3)-- Spring框架 -- Spring简介
目录 1. Servlet 与 Spring 的关系 2. Spring 框架介绍 Spring 框架的起源与发展 Spring 框架的核心特性 Spring 主要模块介绍 核心模块(Core Container) 数据访问与集成模块(Data Access/Integration) Web 模块࿰…...

ts 如何配置引入 json 文件
ts 如何配置引入 json 文件 参考文档: https://maxgadget.dev/article/how-to-import-a-json-file-in-typescript-a-comprehensive-guide 项目中有一个 .json 的文件是配置文件,如何引入到 ts 项目中 配置 tsconfig.json 文件,添加这两个 {…...

LeetCode面试经典150题C++实现,更新中
用C实现下面网址的题目 https://leetcode.cn/problems/merge-sorted-array/?envTypestudy-plan-v2&envIdtop-interview-150 1、数组\字符串 88合并两个有序数组 以下是使用 C 实现合并两个有序数组的代码及测试用例 C代码实现 #include <iostream> #include &l…...

基于springboot的家装平台设计与实现
项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…...

CSS的配色
目录 1 十六进制2 CSS中的十六进制2.1 十六进制颜色的基本结构2.2 十六进制颜色的范围2.3 简写形式2.4 透明度 3 CSS的命名颜色4 配色4.1 色轮4.2 互补色4.3 类似色4.4 配色工具 日常在开发小程序中,客户总是希望你的配色是美的,但是美如何定义ÿ…...

Parallax.js:让智能设备视差效果更智能、更自然
今天给大家分享一款功能非常强大的javascript视觉差特效引擎插件:Parallax.js。 Parallax.js简介 Parallax.js是一个简单的,轻量级的视差引擎。你可以将它作为作为jQuery或Zepto插件来使用,也可以以纯JS的方式来使用。 最-最-最厉害的是它…...

一文熟悉新版llama.cpp使用并本地部署LLAMA
0. 简介 最近是快到双十一了再给大家上点干货。去年我们写了一个大模型的系列,经过一年,大模型的发展已经日新月异。这一次我们来看一下使用llama.cpp这个项目,其主要解决的是推理过程中的性能问题。主要有两点优化: llama.cpp …...

vue/react做多语言国际化的时候,在语言配置中不同的语言配置不同的字体,动态引入scss里面
如果想直接在vue文件的css里面使用,就可以使用i18n的t函数,注意t外层也有引号: font-size: v-bind("t(style.teamCurModelFontSize)"); 前提是要引入t函数:...

Unity——鼠标点击信息和当前位置获取
文章目录 前言一、应用场景二、实现方法1.获取鼠标在屏幕上的位置2.获取鼠标点击位置的世界坐标3.获取鼠标点击位置的UI元素总结前言 在Unity开发中,有时会需要我们获取一些鼠标的信息用于数据交互或者角色控制。 一、应用场景 交互式UI 按钮点击:检测用户是否点击了UI按钮,…...

vue 2的v-***关键字作用及使用场景
作为一个Vue 2的高级前端程序员,你需要熟悉Vue 2的所有指令(Directives)。以下是Vue 2中的指令及其详细说明: v-text 作用:更新元素的textContent。使用场景:当你需要将数据直接显示在页面上,且…...

Matlab实现鲸鱼优化算法优化随机森林算法模型 (WOA-RF)(附源码)
目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 鲸鱼优化算法(Whale Optimization Algorithm, WOA)是受座头鲸捕食行为启发而提出的一种新型元启发式优化算法。该算法通过模拟座头鲸围绕猎物的螺旋游动和缩小包围圈的方式,在…...

【Android】ubutun 创建Androidstudio桌面快捷方式
此方法不仅适合Androidstudio,其他应用的快捷方式创建同理。 创建桌面快捷方式 进入桌面 cd ~/Desktop创建.desktop文件 touch androidStudio.desktop编辑.desktop文件 [Desktop Entry] TypeApplication Terminalfalse NameAndroid Studio Comment android stu…...

javascript 流程控制,数组【知识点整理】
javascript JS 流程控制条件控制语句循环语句跳转语句:异常处理: JS 数组数组的方法 JS 流程控制 条件控制语句 if 语句:用于在满足特定条件时执行代码块。 if (condition) {// 如果条件为真,则执行代码块 }if…else 语句&#x…...

2.索引:SQL 性能分析详解
SQL性能分析是数据库优化中重要的一环。通过分析SQL的执行频率、慢查询日志、PROFILE工具以及EXPLAIN命令,能够帮助我们识别出数据库性能的瓶颈,并做出有效的优化措施。以下将详细讲解这几种常见的SQL性能分析工具和方法。 一、SQL 执行频率 SQL执行频率…...

Flink SQL
进入 JobManager 容器: docker exec -it 21442d9ca797 /bin/bash 启动 Flink 的 SQL 客户端: /opt/flink/bin/sql-client.sh embedded 尝试创建 Kafka 表: 在启动的 SQL 客户端中,尝试创建一个 Kafka 表,看看是否能…...

鸿蒙UI开发——实现环形文字
1、背 景 有朋友提问:您好关于鸿蒙UI想咨询一个问题 如果我想实现展示环形文字是需要通过在Text组件中设置transition来实现么,还是需要通过其他方式来实现。 针对这位粉丝朋友的提问,我们做一下解答。 2、实现环形文字效果 ❓ 什么是环形…...

QT版发送邮件程序
简单的TCP邮箱程序 **教学与实践目的:**学会网络邮件发送的程序设计技术。 1.SMTP协议 邮件传输协议包括 SMTP(简单邮件传输协议,RFC821)及其扩充协议 MIME; 邮件接收协议包括 POP3 和功能更强大的 IMAP 协议。 服务…...

JavaSE:初识Java(学习笔记)
java是高级语言的面向对象语言 .[最贴近生活.最快速分析和设计程序] 一,计算机语言发展历史 二,Java体系结构 1,JavaSE(Java Standard Edition) 标准版,定位在个人计算机上的应用 这个版本是Jav…...

ClickHouse创建分布式表
ClickHouse创建分布式表 当数据量剧增的时候,clickhouse是采用分片的方式进行数据的存储的,类似于redis集群的实现方式。然后想进行统一的查询的时候,因为涉及到多个本地表,可以通过分布式表的方式来提供统一的入口。由于是涉及到…...

Flink转换算子
Apache Flink 是一个用于处理无界和有界数据的开源流处理框架。在 Flink 中,转换(Transformation)是数据流处理的核心组件之一,它们定义了如何从输入数据集生成输出数据集。以下是 Flink 中一些常见的转换算子: Map: 将…...

ThinkBook 14+ 2024 Ubuntu 触控板失效 驱动缺失问题解决
首先我的电脑是thinkbook14 2024,从ubuntu18到ubuntu24,笔者整个都试了一遍,触摸板都没反应,确认不是linux系统内核问题,原因为驱动缺失。 解决步骤: (1)下载驱动,网址如…...

【青牛科技】应用方案 | D75xx-150mA三端稳压器
概 述 D75XX系列是一套三端高电流低压稳压器。它们可以提供 150mA 的输出电流和允许输入电压高达30V。它们有几个固定的输出电压范围为3.0 V至5.0 V。CMOS 技术确保低电压降和低静态电流。 虽然这些设备主要设计为固定电压调节器,但它们可以与外部元件一起使用&…...

WPF之iconfont(字体图标)使用
1,前文: WPF的Xaml是与前端的Html有着高度相似性的标记语言,所以Xaml也可同Html一般轻松使用阿里提供的海量字体图标,从而有效的减少开发工作度。 2,下载字体图标: 登录阿里图标库网iconfont-阿里巴巴矢量…...

08、Java学习-面向对象中级:
Java学习第十二天——面向对象中级: IDEA: 创建完新项目后,再src里面创建.java文件进行编写。 src——存放源码文件(.java文件);out——存放编译后的字节码文件(.class文件) 在I…...

springboot集成onlyoffice(部署+开发)
前言 最近有个项目需求是实现前端页面可以对word文档进行编辑,并且可以进行保存,于是一顿搜索,找到开源第三方onlyoffice,实际上onlyOffice有很多功能,例如文档转化、多人协同编辑文档、文档打印等,我们只用…...

LabVIEW编程基础教学(二)--数据类型
在LabVIEW中,数据类型是非常重要的基本概念,因为它们决定了如何存储和操作数据。掌握这些基础数据类型对于编写有效的程序非常关键。以下是LabVIEW中的基础数据类型介绍: 1. 数值类型(Numeric) 整型(Inte…...

「Mac畅玩鸿蒙与硬件29」UI互动应用篇6 - 多选问卷小应用
本篇将带你实现一个多选问卷小应用,用户可以勾选选项并点击提交按钮查看选择的结果。通过本教程,你将学习如何使用 Checkbox 组件、动态渲染列表、状态管理及用户交互,构建完整的应用程序。 关键词 UI互动应用Checkbox 组件状态管理动态列表…...

Flutter中文字体设置指南:打造个性化的应用体验
在使用Flutter进行开发时,可能会遇到中文字体显示不正常或者字体不符合设计需求的情况。Flutter默认的中文字体往往无法满足某些用户对个性化和美观的需求。今天,我们就来详细探讨如何在Flutter应用中设置中文字体,并结合不同场景提供相应的解…...