有限元中弱形式的一些数学基础

有限元方法在求解PED时,一般先将控制方程转化为等效的若积分形式,本文试图总结一下这一过程的一些数学基础,本文主要从工程的角度出发和理解,不探讨严谨的数学证明过程。

PDE强形式

强形式是PDE及其边界条件的原始形式。求解强形式问题要求解函数满足方程及其边界条件中的所有微分算子和约束。
例如一维泊松方程:
− d 2 u d x 2 = f in ( 0 , 1 ) -\frac{d^2 u}{dx^2} = f \quad \text{in} \quad (0,1) dx2d2u=fin(0,1)
边界条件为:
u ( 0 ) = u ( 1 ) = 0 u(0) = u(1) = 0 u(0)=u(1)=0
例如弹性力学中的平衡方程:
∇ ⋅ σ + b = 0 in Ω \nabla \cdot \sigma + b = 0 \quad \text{in} \quad \Omega σ+b=0inΩ
边界条件为:
u = 0 on ∂ Ω u u = 0 \quad \text{on} \quad \partial \Omega_u u=0onΩu σ ⋅ n = t on ∂ Ω t \sigma \cdot n = t \quad \text{on} \quad \partial \Omega_t σn=tonΩt
大部分的PDE方程都很难搞,无法直接求得解析解,只能从逼近的角度求得近似数值解,再进行数值求解之前,一般需要弄一个试探函数, 试探函数给定了一些基函数的形式但是系数待定,通过让试探函数满足控制方程来获取一组方程从而求解系数。这里面有一个较大的问题就是,PDE中一般含有高阶导数想,如果想让试探函数满足PDE方程,那么对试探函数的连续性要求就比较高,如果通过一定的方式对方称进行转换,降低对试函数的连续性要求,将会对方程的求解带来极大地方便。

等效积分和弱形式

偏微分方程的等效积分形式是通过乘以一个权函数并在定义域上积分得到的。这一形式通过将原始的偏微分方程转化为一个积分方程,能够更容易地处理边界条件并降低对解的光滑性要求。

下面以泊松方程为例详细说明这个过程。

强形式

考虑一个定义在区域 Ω \Omega Ω 上的泊松方程:
− Δ u = f 在    Ω -\Delta u = f \quad \text{在} \; \Omega Δu=fΩ
有Dirichlet边界条件:
u = 0 在    ∂ Ω u = 0 \quad \text{在} \; \partial \Omega u=0Ω

弱形式的推导

乘以测试函数:选择一个适当的测试函数 v ∈ H 0 1 ( Ω ) v \in H_0^1(\Omega) vH01(Ω)(在 ∂ Ω \partial \Omega Ω 上为零的平方可积函数),并将泊松方程乘以 v v v − Δ u ⋅ v = f ⋅ v -\Delta u \cdot v = f \cdot v Δuv=fv

在定义域上积分:对上述等式在定义域 Ω \Omega Ω 上积分: ∫ Ω ( − Δ u ) v   d Ω = ∫ Ω f v   d Ω \int_\Omega (-\Delta u) v \, d\Omega = \int_\Omega f v \, d\Omega Ω(Δu)vdΩ=ΩfvdΩ

应用分部积分(高斯定理):为了简化左边的积分,我们应用分部积分(也称为高斯散度定理):
∫ Ω ( − Δ u ) v   d Ω = ∫ Ω ∇ ⋅ ( ∇ u ) v   d Ω = ∫ ∂ Ω ( ∇ u ⋅ n ) v   d S − ∫ Ω ∇ u ⋅ ∇ v   d Ω \int_\Omega (-\Delta u) v \, d\Omega = \int_\Omega \nabla \cdot (\nabla u) v \, d\Omega = \int_{\partial \Omega} (\nabla u \cdot \mathbf{n}) v \, dS - \int_\Omega \nabla u \cdot \nabla v \, d\Omega Ω(Δu)vdΩ=Ω(u)vdΩ=Ω(un)vdSΩuvdΩ
其中, n \mathbf{n} n Ω \Omega Ω 的外法向量, ∂ Ω 是 Ω \partial \Omega 是 \Omega ΩΩ的边界。由于 v v v在边界 ∂ Ω \partial \Omega Ω 上为零,边界项消失,因此: ∫ Ω ( − Δ u ) v d Ω = − ∫ Ω ∇ u ⋅ ∇ v d Ω \int_\Omega (-\Delta u) v d\Omega = - \int_\Omega \nabla u \cdot \nabla v d\Omega Ω(Δu)vdΩ=ΩuvdΩ

得到等效弱形式:结合右边的积分,我们得到泊松方程的弱形式: ∫ Ω ∇ u ⋅ ∇ v   d Ω = ∫ Ω f v   d Ω \int_\Omega \nabla u \cdot \nabla v \, d\Omega = \int_\Omega f v \, d\Omega ΩuvdΩ=ΩfvdΩ
在这个弱形式中,求解的函数 u u u 只需要在区域 Ω \Omega Ω内具有一阶导数的平方可积性,而不需要具有二阶连续导数。这使得弱形式在有限元方法中具有广泛的应用,因为它降低了对解的光滑性要求,并且能够自然地处理边界条件。

再来看一个弹性力学平衡方程的弱积分形式

弹性力学平衡方程

假设我们有一个弹性体,定义在区域 Ω \Omega Ω 上,具有以下强形式的平衡方程:
∇ ⋅ σ + b = 0 在    Ω \nabla \cdot \sigma + b = 0 \quad \text{在} \; \Omega σ+b=0Ω
这里 σ \sigma σ 是应力张量, b b b 是体力密度。
假设边界条件包括:

  • Dirichlet 边界条件:位移 u = 0 u = 0 u=0 在边界 Γ u \Gamma_u Γu 上。
  • Neumann 边界条件:表面力 σ ⋅ n = t \sigma \cdot n = t σn=t 在边界 Γ t \Gamma_t Γt 上,其中 n n n 是外法向量。

弱形式推导

乘以测试函数:选择一个适当的测试函数 v ∈ [ H 0 1 ( Ω ) ] n v \in [H_0^1(\Omega)]^n v[H01(Ω)]n,并将平衡方程乘以 v v v ( ∇ ⋅ σ + b ) ⋅ v = 0 (\nabla \cdot \sigma + b) \cdot v = 0 (σ+b)v=0

在定义域上积分:对上述等式在定义域 Ω \Omega Ω 上积分: ∫ Ω ( ∇ ⋅ σ ) ⋅ v   d Ω + ∫ Ω b ⋅ v   d Ω = 0 \int_\Omega (\nabla \cdot \sigma) \cdot v \, d\Omega + \int_\Omega b \cdot v \, d\Omega = 0 Ω(σ)vdΩ+ΩbvdΩ=0

应用分部积分(高斯散度定理):为了简化第一项的积分,我们应用分部积分(高斯散度定理): ∫ Ω ( ∇ ⋅ σ ) ⋅ v   d Ω = − ∫ Ω σ : ∇ v   d Ω + ∫ ∂ Ω ( σ ⋅ n ) ⋅ v   d S \int_\Omega (\nabla \cdot \sigma) \cdot v \, d\Omega = - \int_\Omega \sigma : \nabla v \, d\Omega + \int_{\partial \Omega} (\sigma \cdot n) \cdot v \, dS Ω(σ)vdΩ=Ωσ:vdΩ+Ω(σn)vdS
其中, ∂ Ω \partial \Omega Ω Ω \Omega Ω 的边界,由于 ∂ Ω = Γ u ∪ Γ t \partial \Omega = \Gamma_u \cup \Gamma_t Ω=ΓuΓt
我们有: ∫ ∂ Ω ( σ ⋅ n ) ⋅ v   d S = ∫ Γ t t ⋅ v   d S + ∫ Γ u ( σ ⋅ n ) ⋅ v   d S \int_{\partial \Omega} (\sigma \cdot n) \cdot v \, dS = \int_{\Gamma_t} t \cdot v \, dS + \int_{\Gamma_u} (\sigma \cdot n) \cdot v \, dS Ω(σn)vdS=ΓttvdS+Γu(σn)vdS
注意到在 Γ u \Gamma_u Γu 上,测试函数 v = 0 v = 0 v=0,所以: ∫ Γ u ( σ ⋅ n ) ⋅ v   d S = 0 \int_{\Gamma_u} (\sigma \cdot n) \cdot v \, dS = 0 Γu(σn)vdS=0
因此: ∫ ∂ Ω ( σ ⋅ n ) ⋅ v   d S = ∫ Γ t t ⋅ v   d S \int_{\partial \Omega} (\sigma \cdot n) \cdot v \, dS = \int_{\Gamma_t} t \cdot v \, dS Ω(σn)vdS=ΓttvdS

得到弱积分形式:结合右边的积分,我们得到平衡方程的弱积分形式: − ∫ Ω σ : ∇ v   d Ω + ∫ Ω b ⋅ v   d Ω + ∫ Γ t t ⋅ v   d S = 0 - \int_\Omega \sigma : \nabla v \, d\Omega + \int_\Omega b \cdot v \, d\Omega + \int_{\Gamma_t} t \cdot v \, dS = 0 Ωσ:vdΩ+ΩbvdΩ+ΓttvdS=0
代入应力-应变关系 σ = C : ϵ \sigma = \mathbb{C} : \epsilon σ=C:ϵ,并且 ϵ = 1 2 ( ∇ u + ( ∇ u ) T ) \epsilon = \frac{1}{2} (\nabla u + (\nabla u)^T) ϵ=21(u+(u)T)
我们有: − ∫ Ω ( C : ϵ ) : ∇ v   d Ω + ∫ Ω b ⋅ v   d Ω + ∫ Γ t t ⋅ v   d S = 0 - \int_\Omega (\mathbb{C} : \epsilon) : \nabla v \, d\Omega + \int_\Omega b \cdot v \, d\Omega + \int_{\Gamma_t} t \cdot v \, dS = 0 Ω(C:ϵ):vdΩ+ΩbvdΩ+ΓttvdS=0
注意到 ϵ : ∇ v = 1 2 ( ∇ u + ( ∇ u ) T ) : ∇ v = ∇ u : ∇ v \epsilon : \nabla v = \frac{1}{2} (\nabla u + (\nabla u)^T) : \nabla v = \nabla u : \nabla v ϵ:v=21(u+(u)T):v=u:v
我们得到: ∫ Ω C : ( ∇ u : ∇ v )   d Ω = ∫ Ω b ⋅ v   d Ω + ∫ Γ t t ⋅ v   d S \int_\Omega \mathbb{C} : (\nabla u : \nabla v) \, d\Omega = \int_\Omega b \cdot v \, d\Omega + \int_{\Gamma_t} t \cdot v \, dS ΩC:(u:v)dΩ=ΩbvdΩ+ΓttvdS

弹性力学平衡方程的弱积分形式
∫ Ω C : ( ∇ u : ∇ v )   d Ω = ∫ Ω b ⋅ v   d Ω + ∫ Γ t t ⋅ v   d S ∀ v ∈ [ H 0 1 ( Ω ) ] n \int_\Omega \mathbb{C} : (\nabla u : \nabla v) \, d\Omega = \int_\Omega b \cdot v \, d\Omega + \int_{\Gamma_t} t \cdot v \, dS \quad \forall v \in [H_0^1(\Omega)]^n ΩC:(u:v)dΩ=ΩbvdΩ+ΓttvdSv[H01(Ω)]n

在这个弱积分形式中降低了对解的光滑性要求,使得问题可以在更广泛的函数空间中讨论,并且能够自然地处理边界条件,处理积分时边界项可以自然地引入力的边界条件。在有限元方法中,弱形式为数值求解提供了方便和稳定性。这种形式在工程和科学计算中具有广泛的应用。

降阶的思想

上面的若积分形式推导过程中,有一个关键的地方是利用分部积分将含有最高二阶导数的控制方程转换为只含有最高一阶导数的积分形式。这样对函数 u u u只需要求较低阶的连续性就可以了。这种降阶是以提高测试函数 v v v的连续性要求为代价的,但是适当提高其连续性的要求并不困难,因为它们是可以选择的已知函数。这种通过适当提高对任意函数 v v v 的连续性要求,以降低对微分方程场函数 u 的连续性要求所建立的等效积分形式称为微分方程的等效积分“弱”形式。它在近似计算中,尤其是在有限单元法中是十分重要的。值得指出的是,从形式上看“弱”形式对函数u的连续性要求降低了, 但对实际的物理问题却常常较原始的微分方程更通近真正解,因为原始微分方程往往对解提出了过分“平滑”的要求。

试函数连续性要求

对于一个C0连续的函数,其一阶导数和二阶导数是存在间断点的,如果对间断点附近进行光滑过度,那么一阶导数变得连续,二阶导数则可能出现无穷大。

image.png
看如下更具体一点的例子,这个分段线性函数 f ( x ) f(x) f(x)存在一个一阶导数不连续点,如果用一个光滑函数序列去无线逼近 f ( x ) f(x) f(x)函数,光滑函数的导数也将无限逼近 f ′ ( x ) f'(x) f(x),直观上看光滑函数导数围成的面积和 f ′ ( x ) f'(x) f(x)围成的面积接近。
image.png
image.png
image.png

不是一般性,我们总结一下:
如果弱形式积分方程含有最高二阶导数,那么要求试探函数满足C1连续,因为C1连续函数的一阶导数连续,二阶导数可求(不一定连续), 若只有C0连续,那么二阶导数可能会出现无穷大。
如果弱形式积分方程含有最高一阶导数,那么要求试探函数满足C0连续,弱不连续,则一阶导数可能会出现无穷大情况。

弱导数的思想

其实上面对连续性的要求暗含了弱导数的思想,对于C0函数,虽然一阶导数存在间断点,但是我们可以引入弱导数的概念,将导数的概念泛化,从而解决了数学理论上的一些棘手问题。

定义

f f f 是一个定义在开区间 Ω ⊂ R \Omega \subset \mathbb{R} ΩR 上的可积函数。若存在一个可积函数 g g g,使得对于任意一个紧支撑 φ ∈ C c ∞ ( Ω ) \varphi \in C_c^\infty(\Omega) φCc(Ω) Ω \Omega Ω上紧支撑的无限可微函数,紧支撑即在边界处为0),以下积分恒等式成立:
∫ Ω f ( x ) φ ′ ( x )   d x = − ∫ Ω g ( x ) φ ( x )   d x \int_\Omega f(x) \varphi '(x) \, dx = -\int_\Omega g(x) \varphi(x) \, dx Ωf(x)φ(x)dx=Ωg(x)φ(x)dx
则称 g g g f f f 的弱导数,记作 g = f ′ ; g = f'; g=f; g = d d x f g = \frac{d}{dx} f g=dxdf

直观理解

弱导数的定义意味着我们通过积分的形式来定义导数,使其能够应用于传统意义上不可导的函数。我们通过测试函数 φ \varphi φ 的积分来“探测” f f f 的导数。

示例

考虑 f ( x ) = ∣ x ∣ f(x) = |x| f(x)=x 在区间 ( − 1 , 1 ) (-1, 1) (1,1) 上的情况。

  1. f ( x ) = ∣ x ∣ f(x) = |x| f(x)=x x = 0 x = 0 x=0 处不可导,但在其他地方是可导的。
  2. f ( x ) f(x) f(x) 的传统导数 f ′ ( x ) f'(x) f(x) x = 0 x = 0 x=0 处不定义,但弱导数可以定义。

我们先计算 ∫ − 1 1 ∣ x ∣ φ ′ ( x )   d x \int_{-1}^1 |x| \varphi'(x) \, dx 11xφ(x)dx
由于 ∣ x ∣ |x| x x = 0 x = 0 x=0 处不可导,我们将积分分成两部分:

∫ − 1 1 ∣ x ∣ φ ′ ( x )   d x = ∫ − 1 0 ( − x ) φ ′ ( x )   d x + ∫ 0 1 x φ ′ ( x )   d x \int_{-1}^1 |x| \varphi'(x) \, dx = \int_{-1}^0 (-x) \varphi'(x) \, dx + \int_{0}^1 x \varphi'(x) \, dx 11xφ(x)dx=10(x)φ(x)dx+01xφ(x)dx

对每个部分进行分部积分:

∫ − 1 0 ( − x ) φ ′ ( x )   d x = [ − x φ ( x ) ] − 1 0 + ∫ − 1 0 φ ( x )   d x = ∫ − 1 0 φ ( x )   d x \int_{-1}^0 (-x) \varphi'(x) \, dx = \left[ -x \varphi(x) \right]_{-1}^0 + \int_{-1}^0 \varphi(x) \, dx = \int_{-1}^0 \varphi(x) \, dx 10(x)φ(x)dx=[xφ(x)]10+10φ(x)dx=10φ(x)dx ∫ 0 1 x φ ′ ( x )   d x = [ x φ ( x ) ] 0 1 − ∫ 0 1 φ ( x )   d x = − ∫ 0 1 φ ( x )   d x \int_{0}^1 x \varphi'(x) \, dx = \left[ x \varphi(x) \right]_{0}^1 - \int_{0}^1 \varphi(x) \, dx = -\int_{0}^1 \varphi(x) \, dx 01xφ(x)dx=[xφ(x)]0101φ(x)dx=01φ(x)dx

所以:

∫ − 1 1 ∣ x ∣ φ ′ ( x )   d x = ∫ − 1 0 φ ( x )   d x − ∫ 0 1 φ ( x )   d x \int_{-1}^1 |x| \varphi'(x) \, dx = \int_{-1}^0 \varphi(x) \, dx - \int_{0}^1 \varphi(x) \, dx 11xφ(x)dx=10φ(x)dx01φ(x)dx

合并积分:
∫ − 1 1 ∣ x ∣ φ ′ ( x )   d x = ∫ − 1 1 sgn ( x ) φ ( x )   d x \int_{-1}^1 |x| \varphi'(x) \, dx = \int_{-1}^1 \text{sgn}(x) \varphi(x) \, dx 11xφ(x)dx=11sgn(x)φ(x)dx

这里, sgn ( x ) \text{sgn}(x) sgn(x) 是符号函数,定义为:

sgn ( x ) = { − 1 , x < 0 0 , x = 0 1 , x > 0 \text{sgn}(x) = \begin{cases} -1, & x <0 \\ 0, & x = 0 \\ 1, & x>0 \end{cases} sgn(x)= 1,0,1,x<0x=0x>0

因此,我们得出:
∫ − 1 1 ∣ x ∣ φ ′ ( x )   d x = − ∫ − 1 1 sgn ( x ) φ ( x )   d x \int_{-1}^1 |x| \varphi'(x) \, dx = -\int_{-1}^1 \text{sgn}(x) \varphi(x) \, dx 11xφ(x)dx=11sgn(x)φ(x)dx
这表明:

d d x ∣ x ∣ = sgn ( x ) \frac{d}{dx} |x| = \text{sgn}(x) dxdx=sgn(x)

弱导数的概念使我们能够处理不具备传统导数的函数。通过积分形式定义导数,我们可以在更广泛的函数空间中讨论导数的概念。这在有限元分析、偏微分方程等领域中有重要应用。弱导数使得我们能够对不可导函数进行分析和计算。许多实际问题中,涉及的函数可能在某些点上不可导,但仍然可以定义其弱导数。例如撒花姑娘面的例子 f ( x ) = ∣ x ∣ f(x) = |x| f(x)=x x = 0 x = 0 x=0 处不可导,但其弱导数存在且等于符号函数 sgn ( x ) \text{sgn}(x) sgn(x)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java巅峰之路---基础篇---综合练习(面向对象)

目录 文字版格斗游戏 基础版 souf输出语句 进阶版 键盘录入的说明 复杂对象数组练习 需求&#xff1a; 添加和遍历 删除和遍历 修改和遍历 文字版格斗游戏 基础版 格斗游戏&#xff0c;每个游戏角色的姓名&#xff0c;血量&#xff0c;都不相同&#xff0c;在选定人…

[BJDCTF2020]Mark loves cat

黑盒直接扫 dirsearch -u http://bba9a212-64d3-4a16-88b4-3605fe3ef749.node5.buuoj.cn:81/ -w /home/kali/Desktop/dirsearch/db/dicc.txt我们用GitHack拿一下源码 没有的去下载一下&#xff0c;开源代码 cd GitHackpython GitHack.py http://bba9a212-64d3-4a16-88b4-3605…

排序算法3_冒泡排序、快速排序

一、冒泡排序 1.1 冒泡排序定义和思路 冒泡排序的基本思想是&#xff1a;通过相邻两个元素之间的比较和交换&#xff0c;使较大的元素逐渐从前面移向后面&#xff08;升序&#xff09;&#xff0c;就像水底下的气泡一样逐渐向上冒泡&#xff0c;所以被称为“冒泡”排序。  在…

垃圾收集篇

文章目录 垃圾收集算法垃圾的概念对象存活的判断引用计数器法可达性分析算法 算法标记清除算法复制算法标记压缩算法 垃圾收集的相关概念STW安全点安全区域 垃圾收集器重要指标吞吐量停顿时间 垃圾收集器的分类Serial 收集器&#xff1a;串行回收ParNew 收集器&#xff1a;并行…

【可视化大屏系列】Echarts之饼图绘制

本文为个人近期学习总结&#xff0c;若有错误之处&#xff0c;欢迎指出&#xff01; Echarts之饼图绘制 前言1.需求2.实现效果3.大概思路4.代码实现子组件写法父组件写法 5.附加&#xff08;1&#xff09;圆环饼图的绘制&#xff08;2&#xff09;南丁格尔玫瑰饼图A.半径展示数…

新手小白的pytorch学习第三弹-------tensor的基本操作

reshape, view, stacking, squeeze(), unsqueeze(),permute()torch.tensor 和 numpy 的 array切片&#xff0c;张量里面获取元素值随机种子 1 导入torch import torch2 reshape() tensor_A torch.arange(1, 11) tensor_Atensor_A.reshape(2, 5) tensor_A.reshape(2, 5)tenso…

浮点数存储方法(float,double,long double)

前言&#xff1a; 浮点数家族包括float、double、long double 类型。 如果你打出3.14&#xff0c;编译器默认是double类型的。若想让他为float类型&#xff0c;则要在前面加f&#xff1b; 1E10是科学计数法&#xff0c;代表1.010^10 (1) 浮点型如何在内存中存放&#xff1f;…

husky 和 lint-staged 构建代码项目规范

目录 前言 最简单的方法 过 scripts 来解决如果检测工具多&#xff0c;需要多次处理 通过 husky(哈士奇)来解决容易遗忘的问题 1. 安装 2. husky init 3. 试一试​ lint-stadge 只 lint 改动的 1. 安装 2. 修改 package.json 配置 3. 添加 npm 脚本: 4.使用 Husky…

Linux的load(负载)

负载(load)是Linux机器的一个重要指标&#xff0c;直观了反应了机器当前的状态。 在Linux系统中&#xff0c;系统负载是对当前CPU工作量的度量&#xff0c;被定义为特定时间间隔内运行队列中的平均线程数。 Linux的负载高&#xff0c;主要是由于CPU使用、内存使用、10消…

【AI】目标检测算法【R-CNN:Regions with CNN features】

1. 常用目标检测算法介绍 目标检测是计算机视觉领域的一个重要分支&#xff0c;它旨在识别并定位图像中的各种对象。以下是一些流行的目标检测算法&#xff1a; 1.1 二阶段目标检测算法 R-CNN (Regions with CNN features): 通过选择性搜索算法选取候选区域&#xff0c;然后…

【C语言】详解结构体(上)

文章目录 前言1. 结构体类型的含义2.结构体的声明2.1 结构体声明的语法2.2 结构体变量的创建和初始化 3.结构体的特殊声明4. 结构体的自引用5.小结 前言 C语言的数据类型分为内置数据类型和自定义的数据类型。所谓的内置的数据类型可以认为是C语言自带的数据类型&#xff08;c…

【网络安全】基于PHP study的DVWA靶场搭建教程

PHP study的安装本文略过 DVWA安装地址 https://github.com/digininja/DVWA?tabreadme-ov-file将zip文件安装至PHP study的www目录下&#xff1a; 解压&#xff0c;进入config目录中&#xff0c;将.dist后缀删除&#xff1a; 接着打开该php文件&#xff0c;将用户名、密码改为…

程序包不存在【java: 程序包org.springframework.boot不存在】

1、问题提示&#xff1a;java: 程序包org.springframework.boot不存在 注意&#xff1a;已经下载好了程序包&#xff0c;就是提示不存在 2、解决办法

Qt5离线安装包无法下载问题解决办法

Qt5离线安装包无法下载问题解决办法 文章目录 Qt5离线安装包无法下载问题解决办法1、前言2、Qt5安装包下载办法 更多精彩内容&#x1f449;个人内容分类汇总 &#x1f448;&#x1f449;Qt开发经验 &#x1f448; 1、前言 Qt安装包官方下载地址 Qt5离线安装包目前在国内已经被墙…

链表的回文结构(链表的中间节点+反转链表)

链表的回文结构 一.链表的中间节点思路1&#xff1a;暴力求解思路2&#xff1a;快慢指针 二.返回倒数第k个节点思路1&#xff1a;暴力求解思路2&#xff1a;快慢指针 三.反转链表思路1&#xff1a;头插法思路2&#xff1a;反转指针的指向 四.链表的回文结构思路1&#xff1a;利…

react + redux 状态管理操作

目录 1 概念2 Redux 安装3 创建子模块并导入4 中间件为 react 注入 store5 在组件中使用 store 数据6 修改 store 数据7 提交 action 传参8 异步状态操作9 redux 调试工具 1 概念 Redux 是一个全局状态管理的 JS 库 2 Redux 安装 在react中使用redux&#xff0c;官方要求安…

css设置弹性flex后,如果设置100vh高度不撑满的原因

问题 父元素设置height为100%&#xff0c;有两个子元素&#xff0c;第一个设置height:100vh&#xff0c;第二个设置flex:1&#xff0c;此时第一个高度无法撑满盒子 原因解决方式 当父元素设置display为flex,第一个div设置高度64px,剩一个div设置高度为flex&#xff1a;1,这时…

DROO论文笔记

推荐文章DROO源码及论文学习 读论文《Deep Reinforcement Learning for Online Computation Offloading in Wireless Powered Mobile-Edge Computing Networks》的笔记 论文地址&#xff1a;用于无线移动边缘计算网络在线计算卸载的深度强化学习 论文代码地址&#xff1a;DR…

AG32 的MCU与FPGA的主频可以达到568MHz吗

Customers: AG32/ AGRV2K 这个芯片主频和定时器最高速度是多少&#xff1f;用户期望 CPLD计时器功能0.1ns以下。 AGM RE: CPLD做不到 0.1ns的速率&#xff0c;这个需要10G以上的时钟。 那AGRV2K最高多少MHz呢&#xff1f; 一般200MHZ比较容易实现。 进一步说明&#xff1…

Vulnhub靶场DC-3-2练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. joomla漏洞查找2. SQL注入漏洞3. 破解hash4. 上传一句话木马5. 蚁剑连接shell6. 反弹shell7. 提权 0x04 总结 0x00 准备 下载链接&#xff1a;https://download.vulnhub.com/dc/DC-3-2.zip 介绍&#…