正演的数值模拟(零基础,学习中)

摘要: 本贴从零开始学习正演的数值模拟方法.

1. 偏微分基础

本小节仅涉及高等数学相关知识, 与领域无关.

1.1 导数

引例: 物体从一维坐标的原点开始移动, 在 t t t 时刻, 它在坐标轴的位置由函数 s ( t ) s(t) s(t) 确定, 则速度为位置变化量与时间的比值:
v ( t ) = d s ( t ) d t = lim ⁡ Δ t → 0 s ( t + Δ t ) − s ( t ) Δ t (1) v(t) = \frac{\mathrm{d} s(t)}{\mathrm{d} t} = \lim_{\Delta t \to 0} \frac{s(t + \Delta t) - s(t)}{\Delta t} \tag{1} v(t)=dtds(t)=Δt0limΔts(t+Δt)s(t)(1)
加速度为速度变化量与时间的比值:
a ( t ) = d v ( t ) d t = lim ⁡ Δ t → 0 v ( t ) − v ( t − Δ t ) Δ t = lim ⁡ Δ t → 0 s ( t + Δ t ) − 2 s ( t ) + s ( t − Δ t ) Δ t 2 (2) a(t) = \frac{\mathrm{d} v(t)}{\mathrm{d} t} = \lim_{\Delta t \to 0} \frac{v(t) - v(t - \Delta t)}{\Delta t} = \lim_{\Delta t \to 0} \frac{s(t + \Delta t) - 2 s(t) + s(t - \Delta t)}{\Delta t^2} \tag{2} a(t)=dtdv(t)=Δt0limΔtv(t)v(tΔt)=Δt0limΔt2s(t+Δt)2s(t)+s(tΔt)(2)

推广 1: 给定一个单变量函数
y = f ( x ) (3) y = f(x) \tag{3} y=f(x)(3)
其一阶导数记为
y ′ = d f ( x ) d x (4) y' = \frac{\mathrm{d} f(x)}{\mathrm{d} x} \tag{4} y=dxdf(x)(4)
二阶导数记为
y ′ ′ = d 2 f ( x ) d x 2 (5) y'' = \frac{\mathrm{d}^2 f(x)}{\mathrm{d} x^2} \tag{5} y′′=dx2d2f(x)(5)

1.2 偏导

给定一个二变量函数
z = f ( x , y ) (6) z = f(x, y) \tag{6} z=f(x,y)(6)
其针对 x x x 偏导的为
∂ z ∂ x = lim ⁡ Δ x → 0 f ( x + Δ x , y ) − f ( x , y ) Δ x (7) \frac{\partial z}{\partial x} = \lim_{\Delta x \to 0} \frac{f(x + \Delta x, y) - f(x, y)}{\Delta x} \tag{7} xz=Δx0limΔxf(x+Δx,y)f(x,y)(7)
x x x 发生了变化, 而 y y y 并没变化. 二阶偏导为
∂ 2 z ∂ x 2 = lim ⁡ Δ x → 0 f ( x + Δ x , y ) − 2 f ( x , y ) + f ( x − Δ x , y ) Δ x 2 (8) \frac{\partial^2 z}{\partial x^2} = \lim_{\Delta x \to 0} \frac{f(x + \Delta x, y) - 2 f(x, y) + f(x - \Delta x, y)}{\Delta x^2} \tag{8} x22z=Δx0limΔx2f(x+Δx,y)2f(x,y)+f(xΔx,y)(8)

另外有:
∂ 2 z ∂ x ∂ y = lim ⁡ Δ x → 0 , Δ y → 0 f ( x + Δ x , y + Δ y ) − f ( x , y + Δ y ) − f ( x + Δ x , y ) + f ( x , y ) Δ x Δ y (9) \frac{\partial^2 z}{\partial x \partial y} = \lim_{\Delta x \to 0, \Delta y \to 0} \frac{f(x + \Delta x, y + \Delta y) - f(x, y + \Delta y) - f(x + \Delta x, y) + f(x, y)}{\Delta x \Delta y} \tag{9} xy2z=Δx0,Δy0limΔxΔyf(x+Δx,y+Δy)f(x,y+Δy)f(x+Δx,y)+f(x,y)(9)
∂ 2 z ∂ y ∂ x = ∂ 2 z ∂ x ∂ y (10) \frac{\partial^2 z}{\partial y \partial x} = \frac{\partial^2 z}{\partial x \partial y} \tag{10} yx2z=xy2z(10)
在进行数值模拟的时候, 不可能取 Δ x → 0 \Delta x \to 0 Δx0, 因此 (8) 式简化为
∂ 2 z ∂ x 2 ≈ f ( x + Δ x , y ) − 2 f ( x , y ) + f ( x − Δ x , y ) Δ x 2 (11) \frac{\partial^2 z}{\partial x^2} \approx \frac{f(x + \Delta x, y) - 2 f(x, y) + f(x - \Delta x, y)}{\Delta x^2} \tag{11} x22zΔx2f(x+Δx,y)2f(x,y)+f(xΔx,y)(11)
其中 Δ x \Delta x Δx 越小越准确, 但涉及的计算量越大, 我们只能取一个折中.

注 1: 为统一起见, 即使一元函数, 以后也常使用 ∂ \partial 而不是 d \mathrm{d} d.

1.3 泰勒级数

然而, (11) 式本质上是有问题的. 注意到 Δ x → 0 \Delta x \to 0 Δx0 已经不成立, 且在实际地震数据中, 它可能是 5m 甚至 20m. 因此, 需要用到泰勒级数. 当函数 f ( x ) f(x) f(x) x 0 x_0 x0 处存在直到 n n n 阶的导数, 则
f ( x ) = f ( x 0 ) + ∑ i = 1 n f ( i ) ( x 0 ) ( x − x 0 ) i i ! + o ( ( x − x 0 ) n ) (12) f(x) = f(x_0) + \sum_{i = 1}^n \frac{f^{(i)}(x_0)(x - x_0)^i}{i!} + o((x - x_0)^n) \tag{12} f(x)=f(x0)+i=1ni!f(i)(x0)(xx0)i+o((xx0)n)(12)
其中 f ( i ) ( x 0 ) / i ! f^{(i)}(x_0) / i! f(i)(x0)/i! 称为泰勒展开式的系数.
直观的解释: 如果函数 f ( x ) f(x) f(x) 不是线性的, 则它的变化量不仅与斜率有关, 而且与斜率的变化率也有关. 更多内容就只有自己去找数学书啃了.
为与我们前面的内容相符, 将 (12) 式 x 0 x_0 x0 记作 x x x, x x x 记作 x + Δ x x + \Delta x x+Δx, 得到
f ( x + Δ x ) = f ( x ) + ∑ i = 1 n f ( i ) ( x ) Δ x i i ! + o ( Δ x n ) (13) f(x + \Delta x) = f(x) + \sum_{i = 1}^n \frac{f^{(i)}(x) \Delta x^i}{i!} + o(\Delta x^n) \tag{13} f(x+Δx)=f(x)+i=1ni!f(i)(x)Δxi+o(Δxn)(13)

为方便学计算机的同学理解, 来讲几个特例. 数学学院的同学忽略.
例 1. 验证二次函数
f ( x ) = a x 2 + b (14) f(x) = a x^2 + b \tag{14} f(x)=ax2+b(14)
f ( x + Δ x ) = ( a x 2 + b ) + 2 a x Δ x + 2 a Δ x 2 / 2 = a x 2 + 2 a x Δ x + a Δ x 2 + b = a ( x + Δ x ) 2 + b f(x + \Delta x) = (a x^2 + b) + 2ax \Delta x + 2a \Delta x^2/2 = ax^2 + 2ax \Delta x + a \Delta x^2 + b = a(x + \Delta x)^2 + b f(x+Δx)=(ax2+b)+2axΔx+2aΔx2/2=ax2+2axΔx+aΔx2+b=a(x+Δx)2+b
验证结束.
注意: 泰勒级数现实的意义不在于这种一直连续可导的函数, 而是在某些区域可导的函数.

1.4 2 阶精度

(13) 式的 o ( Δ x n ) o(\Delta x^n) o(Δxn) 用于应对存在 n n n 阶导数, 但计算时不需要这么高精度的情况. 如仅考虑 2 阶导数的时候
f ( x + Δ x ) = f ( x ) + ∂ f ∂ x Δ x + ∂ 2 f ∂ x 2 Δ x 2 2 + o ( Δ x 2 ) (15) f(x + \Delta x) = f(x) + \frac{\partial f}{\partial x} \Delta x + \frac{\partial^2 f}{\partial x^2} \frac{\Delta x^2}{2} + o(\Delta x^2) \tag{15} f(x+Δx)=f(x)+xfΔx+x22f2Δx2+o(Δx2)(15)
将 (15) 式移项得到
f ( x + Δ x ) − f ( x ) = ∂ f ∂ x Δ x + ∂ 2 f ∂ x 2 Δ x 2 2 + o ( Δ x 2 ) (16) f(x + \Delta x) - f(x)= \frac{\partial f}{\partial x} \Delta x + \frac{\partial^2 f}{\partial x^2} \frac{\Delta x^2}{2} + o(\Delta x^2) \tag{16} f(x+Δx)f(x)=xfΔx+x22f2Δx2+o(Δx2)(16)
同理得到
f ( x ) − f ( x − Δ x ) = ∂ f ∂ x Δ x − ∂ 2 f ∂ x 2 Δ x 2 2 + o ( Δ x 2 ) (17) f(x) - f(x - \Delta x)= \frac{\partial f}{\partial x} \Delta x - \frac{\partial^2 f}{\partial x^2} \frac{\Delta x^2}{2} + o(\Delta x^2) \tag{17} f(x)f(xΔx)=xfΔxx22f2Δx2+o(Δx2)(17)
这里 o ( Δ x 2 ) o(\Delta x^2) o(Δx2) 的符号可正可负.
(16) 式减去 (17) 式, 然后将两边同时除以 Δ x 2 \Delta x^2 Δx2 可得
∂ 2 f ∂ x 2 = f ( x + Δ x ) − 2 f ( x ) + f ( x − Δ x ) Δ x 2 + O ( Δ x 2 ) (18) \frac{\partial^2 f}{\partial x^2} = \frac{f(x + \Delta x) - 2 f(x) + f(x - \Delta x)}{\Delta x^2} + O(\Delta x^2) \tag{18} x22f=Δx2f(x+Δx)2f(x)+f(xΔx)+O(Δx2)(18)
这里的高阶无穷小除了相应的变量后, 成为同阶无穷小.
注 2: 奇数阶精度不用计算, 例如 3 阶与 2 阶精度的表达式是一样的, 仅把 O ( Δ x 2 ) O(\Delta x^2) O(Δx2) 替换为 O ( Δ x 3 ) O(\Delta x^3) O(Δx3) 即可.

1.4 4 阶精度

考虑到 4 阶导数的时候
f ( x + Δ x ) = f ( x ) + ∂ f ∂ x Δ x + ∂ 2 f ∂ x 2 Δ x 2 2 + ∂ 3 f ∂ x 3 Δ x 3 6 + ∂ 4 f ∂ x 4 Δ x 4 12 + o ( Δ x 4 ) (19) f(x + \Delta x) = f(x) + \frac{\partial f}{\partial x} \Delta x + \frac{\partial^2 f}{\partial x^2} \frac{\Delta x^2}{2} + \frac{\partial^3 f}{\partial x^3} \frac{\Delta x^3}{6} + \frac{\partial^4 f}{\partial x^4} \frac{\Delta x^4}{12}+ o(\Delta x^4) \tag{19} f(x+Δx)=f(x)+xfΔx+x22f2Δx2+x33f6Δx3+x44f12Δx4+o(Δx4)(19)
f ( x + Δ x ) − f ( x ) = ∂ f ∂ x Δ x + ∂ 2 f ∂ x 2 Δ x 2 2 + ∂ 3 f ∂ x 3 Δ x 3 6 + ∂ 4 f ∂ x 4 Δ x 4 12 + o ( Δ x 4 ) (20) f(x + \Delta x) - f(x) = \frac{\partial f}{\partial x} \Delta x + \frac{\partial^2 f}{\partial x^2} \frac{\Delta x^2}{2} + \frac{\partial^3 f}{\partial x^3} \frac{\Delta x^3}{6} + \frac{\partial^4 f}{\partial x^4} \frac{\Delta x^4}{12}+ o(\Delta x^4) \tag{20} f(x+Δx)f(x)=xfΔx+x22f2Δx2+x33f6Δx3+x44f12Δx4+o(Δx4)(20)
f ( x ) − f ( x − Δ x ) = ∂ f ∂ x Δ x − ∂ 2 f ∂ x 2 Δ x 2 2 + ∂ 3 f ∂ x 3 Δ x 3 6 − ∂ 4 f ∂ x 4 Δ x 4 12 + o ( Δ x 4 ) (21) f(x) - f(x - \Delta x)= \frac{\partial f}{\partial x} \Delta x - \frac{\partial^2 f}{\partial x^2} \frac{\Delta x^2}{2} + \frac{\partial^3 f}{\partial x^3} \frac{\Delta x^3}{6} - \frac{\partial^4 f}{\partial x^4} \frac{\Delta x^4}{12}+ o(\Delta x^4) \tag{21} f(x)f(xΔx)=xfΔxx22f2Δx2+x33f6Δx3x44f12Δx4+o(Δx4)(21)
(20) 式减去 (21) 式, 然后将两边同时除以 Δ x 2 \Delta x^2 Δx2 可得
∂ 2 f ∂ x 2 = f ( x + Δ x ) − 2 f ( x ) + f ( x − Δ x ) Δ x 2 − ∂ 4 f ∂ x 4 Δ x 2 6 + o ( Δ x 2 ) (22) \frac{\partial^2 f}{\partial x^2} = \frac{f(x + \Delta x) - 2 f(x) + f(x - \Delta x)}{\Delta x^2} - \frac{\partial^4 f}{\partial x^4} \frac{\Delta x^2}{6}+ o(\Delta x^2) \tag{22} x22f=Δx2f(x+Δx)2f(x)+f(xΔx)x44f6Δx2+o(Δx2)(22)
Δ x \Delta x Δx 换为 2 Δ x 2 \Delta x x, 同理可得
∂ 2 f ∂ x 2 = f ( x + 2 Δ x ) − 2 f ( x ) + f ( x − 2 Δ x ) 4 Δ x 2 − ∂ 4 f ∂ x 4 16 Δ x 2 6 + o ( Δ x 2 ) (23) \frac{\partial^2 f}{\partial x^2} = \frac{f(x + 2\Delta x) - 2 f(x) + f(x - 2\Delta x)}{4 \Delta x^2} - \frac{\partial^4 f}{\partial x^4} \frac{16 \Delta x^2}{6} + o(\Delta x^2) \tag{23} x22f=x2f(x+x)2f(x)+f(xx)x44f616Δx2+o(Δx2)(23)
(22) 式乘以 16 减去 (23) 式, 可得
∂ 2 f ∂ x 2 = 16 15 f ( x + Δ x ) − 2 f ( x ) + f ( x − Δ x ) Δ x 2 − 1 15 f ( x + 2 Δ x ) − 2 f ( x ) + f ( x − 2 Δ x ) 4 Δ x 2 + O ( Δ x 4 ) (24) \frac{\partial^2 f}{\partial x^2} = \frac{16}{15}\frac{f(x + \Delta x) - 2 f(x) + f(x - \Delta x)}{\Delta x^2} - \frac{1}{15}\frac{f(x + 2\Delta x) - 2 f(x) + f(x - 2\Delta x)}{4 \Delta x^2}+ O(\Delta x^4) \tag{24} x22f=1516Δx2f(x+Δx)2f(x)+f(xΔx)151x2f(x+x)2f(x)+f(xx)+O(Δx4)(24)
从这里可以看到, 通过引入 2 Δ x 2 \Delta x x, 可以消去 4 阶偏导. 这是增加精度的核心技巧.

1.4 2 n 2n 2n 阶精度

通过前面的“核心技巧”, 将 (24) 式进一步推广, 可得 2 n 2n 2n 阶精度的表达式
∂ 2 f ∂ x 2 = ∑ i = 1 n ( − 1 ) i + 1 c i f ( x + i Δ x ) − 2 f ( x ) + f ( x − i Δ x ) i 2 Δ x 2 + O ( Δ x 2 n ) (25) \frac{\partial^2 f}{\partial x^2} = \sum_{i = 1}^n (-1)^{i + 1}c_i\frac{f(x + i \Delta x) - 2 f(x) + f(x - i \Delta x)}{i^2 \Delta x^2} + O(\Delta x^{2n}) \tag{25} x22f=i=1n(1)i+1cii2Δx2f(x+iΔx)2f(x)+f(xiΔx)+O(Δx2n)(25)

其中:

  • 系数 c 1 , … , c n c_1, \dots, c_n c1,,cn 没有给出理论值. 在实际工作中, 由于 Δ x \Delta x Δx 比较大, 所以要专门计算系数, 它们与差分格式有关. 也是这个方向的重要研究内容.
  • 误差为 O ( Δ x 2 n ) O(\Delta x^{2n}) O(Δx2n), 即 n n n 越大误差越小, 计算量也越大 (不知道是否可以用 GPU 计算, 速度就会增快很多).

2. 波动方程

2.1 弦振动 (横波) 方程

参见全波形反演的深度学习方法: 第 2 章 正演, 根据牛顿第二定律
F = m a (26) F = ma \tag{26} F=ma(26)
弦振动方程为
∂ 2 u ( x , t ) ∂ t 2 = c 2 ∂ 2 u ( x , t ) ∂ x 2 + f ( x , t ) (27) \frac{\partial^2 u(x, t)}{\partial t^2} = c^2 \frac{\partial^2 u(x, t)}{\partial x^2} + f(x, t) \tag{27} t22u(x,t)=c2x22u(x,t)+f(x,t)(27)
其中 c 2 = T / ρ c^2 = T / \rho c2=T/ρ, f ( x , t ) = F ( x , t ) / ρ f(x, t) = F(x, t) / \rho f(x,t)=F(x,t)/ρ, 左式的物理意义是瞬时加速度 a a a, 右式第一项的物理意义是 单位质量所受的力 F F F, c c c 的物理意义是速度.

进一步忽略重力 F ( x , t ) F(x, t) F(x,t) 的作用, 可以推出一维齐次波动方程的解:
∂ 2 u ( x , t ) ∂ x 2 = 1 c 2 ∂ 2 u ( x , t ) ∂ t 2 (28) \frac{\partial^2 u(x, t)}{\partial x^2} = \frac{1}{c^2} \frac{\partial^2 u(x, t)}{\partial t^2} \tag{28} x22u(x,t)=c21t22u(x,t)(28)

2.2 声波 (纵波) 方程

声波仅有纵波. 考虑二维的情况, 它满足
1 v 2 ∂ 2 U ∂ t 2 = ∂ 2 U ∂ x 2 + ∂ 2 U ∂ z 2 (29) \frac{1}{v^2} \frac{\partial^2 U}{\partial t^2} = \frac{\partial^2 U}{\partial x^2} + \frac{\partial^2 U}{\partial z^2} \tag{29} v21t22U=x22U+z22U(29)
其中 U U U 指压力.

图 1 矩阵网格剖分

为了便于数值模拟, 将平面进行离散化, 仅考虑某些网格交叉点, 质量、压力等仅存在于这些点 (称为质点, 不知是否专业). 这样, 我们只考察第 i i i 行第 j j j 列的质点在时间 k k k 的压力
U i , j k (30) U_{i, j}^k \tag{30} Ui,jk(30)
对于 2 阶精度, 将 (18) 式按照变量名改造后代入 (28) 式可得
1 v 2 U i , j k + 1 − 2 U i , j k + U i , j k − 1 Δ t 2 = U i + 1 , j k − 2 U i , j k + U i − 1 , j k Δ x 2 + U i , j + 1 k − 2 U i , j k + U i , j − 1 k Δ y 2 (31) \frac{1}{v^2} \frac{U_{i, j}^{k + 1} - 2 U_{i, j}^{k} + U_{i, j}^{k - 1}}{\Delta t^2} = \frac{U_{i + 1, j}^k - 2 U_{i, j}^{k} + U_{i - 1, j}^k}{\Delta x^2} + \frac{U_{i, j + 1}^k - 2 U_{i, j}^{k} + U_{i, j - 1}^k}{\Delta y^2} \tag{31} v21Δt2Ui,jk+12Ui,jk+Ui,jk1=Δx2Ui+1,jk2Ui,jk+Ui1,jk+Δy2Ui,j+1k2Ui,jk+Ui,j1k(31)
其中 k + 1 k + 1 k+1 表示下一个时间点, i + 1 i + 1 i+1 表示下一个质点.
对于 4 阶精度, 将 (24) 式按照变量名改造后代入 (28) 式可得
1 v 2 U i , j k + 1 − 2 U i , j k + U i , j k − 1 Δ t 2 = c 1 U i + 1 , j k − 2 U i , j k + U i − 1 , j k Δ x 2 + c 1 U i , j + 1 k − 2 U i , j k + U i , j − 1 k Δ y 2 + c 2 U i + 2 , j k − 2 U i , j k + U i − 2 , j k Δ x 2 + c 2 U i , j + 2 k − 2 U i , j k + U i , j − 2 k Δ y 2 + O ( Δ x 4 ) (32) \begin{array}{ll}\frac{1}{v^2} \frac{U_{i, j}^{k + 1} - 2 U_{i, j}^{k} + U_{i, j}^{k - 1}}{\Delta t^2} = &c_1 \frac{U_{i + 1, j}^k - 2 U_{i, j}^{k} + U_{i - 1, j}^k}{\Delta x^2} + c_1 \frac{U_{i, j + 1}^k - 2 U_{i, j}^{k} + U_{i, j - 1}^k}{\Delta y^2}\\ & + c_2 \frac{U_{i + 2, j}^k - 2 U_{i, j}^{k} + U_{i - 2, j}^k}{\Delta x^2} + c_2 \frac{U_{i, j + 2}^k - 2 U_{i, j}^{k} + U_{i, j - 2}^k}{\Delta y^2}\\ & + O(\Delta x^4) \end{array} \tag{32} v21Δt2Ui,jk+12Ui,jk+Ui,jk1=c1Δx2Ui+1,jk2Ui,jk+Ui1,jk+c1Δy2Ui,j+1k2Ui,jk+Ui,j1k+c2Δx2Ui+2,jk2Ui,jk+Ui2,jk+c2Δy2Ui,j+2k2Ui,jk+Ui,j2k+O(Δx4)(32)
利用式 (31) 或 (32), 根据 k k k k − 1 k - 1 k1 时刻各网格点的声压, 可以计算出 k + 1 k + 1 k+1 时刻各网格点的声压. 这样我们就可以正演啦.

3. 正演基础代码

tbd

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

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

相关文章

k8s节点pod驱逐、污点标记

一、设置污点,禁止pod被调度到节点上 kubectl cordon k8s-node-145 设置完成后,可以看到该节点附带了 SchedulingDisabled 的标记 二、驱逐节点上运行的pod到其他节点 kubectl drain --ignore-daemonsets --delete-emptydir-data k8s-node-145 显示被驱逐…

2023年菏泽市中职学校技能大赛“网络安全”赛项规程

2023年菏泽市中职学校技能大赛 “网络安全”赛项规程 一、赛项名称 赛项名称:网络安全 赛项所属专业大类:信息技术类 二、竞赛目的 通过竞赛,检验参赛选手对网络、服务器系统等网络空间中各个信息系统的安全防护能力,以及分析…

测试框架pytest教程(2)-用例依赖库-pytest-dependency

对于 pytest 的用例依赖管理,可以使用 pytest-dependency 插件。该插件提供了更多的依赖管理功能,使你能够更灵活地定义和控制测试用例之间的依赖关系。 Using pytest-dependency — pytest-dependency 0.5.1 documentation 安装 pytest-dependency 插…

【小沐学NLP】Python进行统计假设检验

文章目录 1、简介1.1 假设检验的定义1.2 假设检验的类型1.3 假设检验的基本步骤 2、测试数据2.1 sklearn2.2 seaborn 3、正态分布检验3.1 直方图判断3.2 KS检验(scipy.stats.kstest)3.3 Shapiro-Wilk test(scipy.stats.shapiro)3.…

Php“牵手”淘宝商品详情页数据采集方法,淘宝API接口申请指南

淘宝天猫详情接口 API 是开放平台提供的一种 API 接口,它可以帮助开发者获取商品的详细信息,包括商品的标题、描述、图片等信息。在电商平台的开发中,详情接口API是非常常用的 API,因此本文将详细介绍详情接口 API 的使用。 一、…

java八股文面试[java基础]——浅拷贝和深拷贝

自验证:创建Class Student两个类, Student中含有Class对象 public class Class implements Cloneable {public String getName() {return name;}public void setName(String name) {this.name name;}private String name;public Class(String name) {t…

【Flutter】Flutter 使用 geolocator 包进行地理定位、距离计算

【Flutter】Flutter 使用 geolocator 包进行地理定位、距离计算 文章目录 一、前言二、安装和基本使用1. 如何安装 geolocator 包2. 获取设备的当前位置3. 获取设备的最后已知位置 三、实际业务中的用法1. 连续定位更新2. 计算两个地理坐标之间的距离3. 检查和请求位置权限 四、…

如何评价国内的低代码开发平台(apaas)?

什么是低代码?低代码平台有什么价值?低代码开发到底能适应多广泛场景?低代码到底能做出多么复杂的应用?低代码平台应该如何筛选? 在低代码重新火爆的今天,我们又该如何利用低代码? 01 什么是a…

美妆行业产出一篇精美的软文,能获得多大回报/收益?

如今,很多美妆品牌运营工作者为了让自己的美妆营销软文发挥功效,就开始疯狂研究写作技巧或者是在网上广撒网,然而这样做依然没有得到正向的回报,因此容易大受打击。 其实也许不是你都内容不好,也不是美妆产品不行&…

HTTPS 握手过程

HTTPS 握手过程 HTTP 通信的缺点 通信使用明文,内容可能被窃听(重要密码泄露)不验证通信方身份,有可能遭遇伪装(跨站点请求伪造)无法证明报文的完整性,有可能已遭篡改(运营商劫持) HTTPS 握手过程 客户端发起 HTTPS 请求 用户在浏览器里…

CSS加载失败的6个原因

有很多刚刚接触 CSS 的新手有时会遇到 CSS 加载失败这个问题,但测试时,网页上没有显示该样式的问题,这就说明 CSS 加载失败了。出现这种状况一般是因为的 CSS 路径书写错,或者是在浏览器中禁止掉了 CSS 的加载,可以重新…

Android类加载机制

要说Android的类加载机制 ,就离不开 类加载器ClassLoader,它是一个抽象接口 下面这个图还是比较好表达了类加载流程,但如果不看我红色画的线,就会感觉有点乱,需要注意是采用的是双亲委派模式,class加载要先…

滑块验证码-接口返回base64数据

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言所需包图片示例使用方法提示前言 滑动验证码在实际爬虫开发过程中会遇到很多,不同网站返回的数据也是千奇百怪。这里分享一种接口返回base64格式的情况以及处理方式 所需包 opencv-python、…

flutter TARGET_SDK_VERSION和android 13

config.gradle ext{SDK_VERSION 33MIN_SDK_VERSION 23TARGET_SDK_VERSION 33COMPILE_SDK_VERSION SDK_VERSIONBUILD_TOOL_VERSION "33.0.0"//兼容库版本SUPPORT_LIB_VERSION "33.0.0"}app/build.gradle里面的 defaultConfig {// TODO: Specify your…

新能源汽车技术的最新进展和未来趋势

文章目录 电池技术的进步智能驾驶与自动驾驶技术充电基础设施建设新能源汽车共享和智能交通未来趋势展望结论 🎉欢迎来到AIGC人工智能专栏~探索新能源汽车技术的最新进展和未来趋势 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客…

Redis高可用:哨兵机制(Redis Sentinel)详解

目录 1.什么是哨兵机制(Redis Sentinel) 2.哨兵机制基本流程 3.哨兵获取主从服务器信息 4.多个哨兵进行通信 5.主观下线和客观下线 6.哨兵集群的选举 7.新主库的选出 8.故障的转移 9.基于pub/sub机制的客户端事件通知 1.什么是哨兵机制&#xf…

Ansible 临时命令搭建安装仓库

创建一个名为/ansible/yum.sh 的 shell 脚本,该脚本将使用 Ansible 临时命令在各个受管节点上安装 yum 存储库. 存储库1: 存储库的名称为 EX294_BASE 描述为 EX294 base software 基础 URL 为 http://content/rhel8.0/x86_64/dvd/BaseOS GPG 签名检查为…

WebDAV之π-Disk派盘 + Cloud Player

Cloud Player云媒体播放器是存储在常见云平台中的内容的通用播放器,无需将其下载到设备。支持以下云平台:Google Drive、DropBox、One Drive、WebDav等。此外,在播放或查看文件时,您可以将其下载到本地设备中,以便在未连接到互联网时稍后进行检查。 π-Disk派盘 – 知识管…

〔016〕Stable Diffusion 之 模型工具箱和图片背景移除 篇

✨ 目录 🎈 下载插件🎈 基础使用界面🎈 高级使用界面🎈 下载背景移除插件🎈 移除插件使用 🎈 下载插件 由于模型很多,而且底模也非常大,对于空间占用比较大,如果想缩小模…

Transformer在医学影像中的应用综述-分类

文章目录 COVID-19 Diagnosis黑盒模型可解释的模型 肿瘤分类黑盒模型可解释模型 视网膜疾病分类小结 总体结构 COVID-19 Diagnosis 黑盒模型 Point-of-Care Transformer(POCFormer):利用Linformer将自注意的空间和时间复杂度从二次型降低到线性型。POCFormer有200…