傅里葉變換與大數乘法

我們知道,兩個 N 位數字的整數的乘法,如果使用常規的算法,時間復雜度是 O(N2)。然而,使用快速傅里葉變換,時間復雜度可以降低到 O(N logN loglogN)。

?

假設我們要計算以下兩個 N 位數字的乘積:

a = (aN-1aN-2...a1a0)10?= aN-1x10N-1?+ aN-2x10N-2?+ ... + a1x101?+ a0x100

b = (bN-1bN-2...b1b0)10?= bN-1x10N-1?+ bN-2x10N-2?+ ... + b1x101?+ b0x100

將上面兩個式子相乘,得到以下公式 (共 2N - 1 項):

c = a x b = c2N-2x102N-2?+ c2N-3x102N-3?+ ... + c1x101?+ c0x100

非常容易驗證,上式中的 ck?( 0 ≤ k ≤ 2N-2 ) 滿足以下公式:

ck?= a0xbk?+ a1xbk-1?+ ... + ak-2xb2?+ ak-1xb1
?? ?? + akxb0?+ ak+1xb-1?+ ... + aN-2xb-(N-2-k)?+ aN-1xb-(N-1-k)

上式共有 N 項,ai?和 bj?的下標 i 和 j 滿足 i + j = k。若不滿足 0 ≤ i, j ≤ N-1 時,則令 ai?= bj?= 0。

?

我們以兩個 3 ( N = 3 ) 位數 a = 678 和 b = 432 的乘積來說明以上過程吧。

a = (678)10?= 6x102?+ 7x101?+ 8x100

b = (432)10?= 4x102?+ 3x101?+ 2x100

由此:?

c0?= a0xb0?+ a1xb-1?+ a2xb-2?= 8x2 + 7x0 + 6x0 = 16 + 0 + 0 =?16

c1?= a0xb1?+ a1xb0?+ a2xb-1?= 8x3 + 7x2 + 6x0 = 24 + 14 + 0 =?38

c2?= a0xb2?+ a1xb1?+ a2xb0?= 8x4 + 7x3 +6x2 = 32 + 21 + 12 =?65

c3?= a0xb3?+ a1xb2?+ a2xb1?= 8x0 + 7x4 + 6x3 = 0 + 28 + 18 =?46

c4?= a0xb4?+ a1xb3?+ a2xb2?= 8x0 + 7x0 + 6x4 = 0 + 0 + 24 =?24

最后:

c = a x b = 104xc4?+ 103xc3?+ 102xc2?+ 101xc1?+ 100xc0
?? = 10000x24 + 1000x46 + 100x65 + 10x38 + 1x16
?? = 292896

如果按以上方法計算大整數的乘法,時間復雜度是 O(N2)。

?

但是,我們注意到,向量 {ck} 是向量 {ai} 和向量 {bj} 的卷積。根據卷積定理,向量卷積的離散傅里葉變換是向量離散傅里葉變換的乘積。于是,我們可以按照以下步驟來計算大整數乘法:

  1. 分別求出向量 {ai} 和向量 {bj} 的離散傅里葉變換?{Ai} 和 {Bj}。
  2. 將 {Ai} 和 {Bj} 逐項相乘得到向量 {Ck}。
  3. 對 {Ck} 求離散傅里葉逆變換,得到的向量 {ck} 就是向量 {ai} 和向量 {bj} 的卷積。
  4. 對的向量 {ck} 進行適當的進位就得到了大整數 a 和 b 的乘積 c。

對于復數向量 { xN-1, ..., x1, x0?},離散傅里葉變換公式為:

離散傅里葉逆變換公式為:

注意到離散傅里葉逆變換除了指數的符號相反以及結果需要乘以歸一化因子 1/N 外,與離散傅里葉變換是相同的。所以計算離散傅里葉變換的程序稍做修改也可以用于計算逆變換。


在我們的例子中,乘積 c = 292896,共 6 位數字,N 需要擴展到 23?= 8。那么,向量 {ai} 和向量 {bj} 如下所示:

{ a7, a6, a5, a4, a3, a2, a1, a0?} = { 0, 0, 0, 0, 0, 6, 7, 8 }

{ b7, b6, b5, b4, b3, b2, b1, b0?} = { 0, 0, 0, 0, 0, 4, 3, 2 }

為了求出以上向量的離散傅里葉變換,我們令

ω = e-2πi/N?= e-2πi/8?= e-πi/4?= cos(-π/4) + i sin(-π/4) = √2?/ 2 - i √2?/ 2 ≈ 0.7-0.7i

為了方便計算,我們預先求出 ω 的各次方,如下:

ω8?= ω0?= e0?= 1

ω9?= ω1?= e-πi/4?= cos(-π/4) + i sin(-π/4) ≈ 0.7-0.7i

ω10?= ω2?= e-πi/2?= cos(-π/2) + i sin(-π/2) = -i

ω11?= ω3?= e-3πi/4?= cos(-3π/4) + i sin(-3π/4) ≈ -0.7-0.7i

ω12?= ω4?= e-πi?= cos(-π) + i sin(-π) = -1

ω13?= ω5?= e-5πi/4?= cos(-5π/4) + i sin(-5π/4) ≈ -0.7+0.7i

ω14?= ω6?= e-3πi/2?= cos(-3π/2) + i sin(-3π/2) = i

ω15?= ω7?= e-7πi/4?= cos(-7π/4) + i sin(-7π/4) ≈ 0.7+0.7i

注意到當 n > 2 時,an?= 0,于是:?

A0?= a00x0?+ a11x0?+ a22x0?= 8xω0?+ 7xω0?+ 6xω0?= 8x1 + 7x1 + 6x1 = 21

A1?= a00x1?+ a11x1?+ a22x1?= 8xω0?+ 7xω1?+ 6xω2?≈ 8x1 + 7x(0.7 - 0.7i) + 6x(-i) = 12.9-10.9i

A2?= a00x2?+ a11x2?+ a22x2?= 8xω0?+ 7xω2?+ 6xω4?= 8x1 + 7x(-i) + 6x(-1) = 2-7i

A3?= a00x3?+ a11x3?+ a22x3?= 8xω0?+ 7xω3?+ 6xω6?≈ 8x1 + 7x(-0.7 - 0.7i) + 6xi = 3.1+1.1i

A4?= a00x4?+ a11x4?+ a22x4?= 8xω0?+ 7xω4?+ 6xω8?= 8x1 + 7x(-1) + 6x1 = 7

A5?= a00x5?+ a11x5?+ a22x5?= 8xω0?+ 7xω5?+ 6xω10?≈ 8x1 + 7x(-0.7 + 0.7i) + 6x(-i) = 3.1-1.1i

A6?= a00x6?+ a11x6?+ a22x6?= 8xω0?+ 7xω6?+ 6xω12?= 8x1 + 7xi + 6x(-1) = 2+7i

A7?= a00x7?+ a11x7?+ a22x7?= 8xω0?+ 7xω7?+ 6xω14?≈ 8x1 + 7x(0.7 + 0.7i) + 6xi = 12.9+10.9i

同樣,當 n > 2 時,bn?= 0,于是:?

B0?= b00x0?+ b11x0?+ b22x0?= 2xω0?+ 3xω0?+ 4xω0?= 2x1 + 3x1 + 4x1 = 9

B1?= b00x1?+ b11x1?+ b22x1?= 2xω0?+ 3xω1?+ 4xω2?≈ 2x1 + 3x(0.7 - 0.7i) + 4x(-i) = 4.1-6.1i

B2?= b00x2?+ b11x2?+ b22x2?= 2xω0?+ 3xω2?+ 4xω4?= 2x1 + 3x(-i) + 4x(-1) = -2-3i

B3?= b00x3?+ b11x3?+ b22x3?= 2xω0?+ 3xω3?+ 4xω6?≈ 2x1 + 3x(-0.7 - 0.7i) + 4xi = -0.1+1.9i

B4?= b00x4?+ b11x4?+ b22x4?= 2xω0?+ 3xω4?+ 4xω8?= 2x1 + 3x(-1) + 4x1 = 3

B5?= b00x5?+ b11x5?+ b22x5?= 2xω0?+ 3xω5?+ 4xω10?≈ 2x1 + 3x(-0.7 + 0.7i) + 4x(-i) = -0.1-1.9i

B6?= b00x6?+ b11x6?+ b22x6?= 2xω0?+ 3xω6?+ 4xω12?= 2x1 + 3xi + 4x(-1) = -2+3i

B7?= b00x7?+ b11x7?+ b22x7?= 2xω0?+ 3xω7?+ 4xω14?≈ 2x1 + 3x(0.7 + 0.7i) + 4xi = 4.1+6.1i

這樣,向量 {ai} 和向量 {bj} 的離散傅里葉變換 {Ai} 和 {Bj} 如下所示:

{ A7, A6, A5, A4, A3, A2, A1, A0?} = { 12.9+10.9i, 2+7i, 3.1-1.1i, 7, 3.1+1.1i, 2-7i, 12.9-10.9i, 21 }

{ B7, B6, B5, B4, B3, B2, B1, B0?} = { 4.1+6.1i, -2+3i, -0.1-1.9i, 3, -0.1+1.9i, -2-3i, 4.1-6.1i, 9 }

現在,將她們逐項相乘得到向量 {Ck},即 { C7, C6, C5, C4, C3, C2, C1, C0?}

= { -13.6+123.4i, -25-8i, -2.4-5.8i, 21, -2.4+5.8i, -25+8i, -13.6-123.4i, 189 }

?

為了求出向量 {Ck} 的離散傅里葉逆變換,我們令

ω = e2πi/N?= e2πi/8?= eπi/4?= cos(π/4) + i sin(π/4) = √2?/ 2 + i √2?/ 2 ≈ 0.7+0.7i

為了方便計算,我們預先求出 ω 的各次方(注意 ωk+8?= ωk),如下:

ω0?= e0?= 1

ω1?= eπi/4?= cos(π/4) + i sin(π/4) ≈ 0.7+0.7i

ω2?= eπi/2?= cos(π/2) + i sin(π/2) = i

ω3?= e3πi/4?= cos(3π/4) + i sin(3π/4) ≈ -0.7+0.7i

ω4?= eπi?= cos(π) + i sin(π) = -1

ω5?= e5πi/4?= cos(5π/4) + i sin(5π/4) ≈ -0.7-0.7i

ω6?= e3πi/2?= cos(3π/2) + i sin(3π/2) = -i

ω7?= e7πi/4?= cos(7π/4) + i sin(7π/4) ≈ 0.7-0.7i

于是:?

c0?= (1/N) x ( C00x0?+ C11x0?+ C22x0?+ C33x0?
????????????????? + C44x0?+ C55x0?+ C66x0?+ C77x0?)
??? = (1/8) x ( 189xω0?+ (-13.6-123.4i)xω0?+ (-25+8i)xω0?+ (-2.4+5.8i)xω0?
????????????????? + 21xω0?+ (-2.4-5.8i)xω0?+ (-25-8i)xω0?+ (-13.6+123.4i)xω0?)
??? = 0.125 x ( 189x1 + (-13.6-123.4i)x1 + (-25+8i)x1 + (-2.4+5.8i)x1?
????????????????? + 21x1 + (-2.4-5.8i)x1 + (-25-8i)x1 + (-13.6+123.4i)x1 )
??? = 0.125 x 128 =?16

c1?= (1/N) x ( 8xc1?= C00x1?+ C11x1?+ C22x1?+ C33x1?
????????????????? + C44x1?+ C55x1?+ C66x1?+ C77x1?)
??? = (1/8) x ( 189xω0?+ ( -13.6-123.4i)xω1?+ (-25+8i)xω2?+ (-2.4+5.8i)xω3?
????????????????? + 21xω4?+ (-2.4-5.8i)xω5?+ (-25-8i)xω6?+ (-13.6+123.4i)xω7?)
??? ≈ 0.125 x ( 189x1 + (-13.6-123.4i)x(0.7+0.7i) + (-25+8i)x(i) + (-2.4+5.8i)x(-0.7+0.7i)?
????????????????? + 21x(-1) + (-2.4-5.8i)x(-0.7-0.7i) + (-25-8i)x(-i) + (-13.6+123.4i)x(0.7-0.7i) )
??? = 0.125 x 300.96 = 37.62 ≈?38

c2?= (1/N) x ( C00x2?+ C11x2?+ C22x2?+ C33x2?
????????????????? + C44x2?+ C55x2?+ C66x2?+ C77x2?)
??? = (1/8) x ( 189xω0?+ (-13.6-123.4i)xω2?+ (-25+8i)xω4?+ (-2.4+5.8i)xω6?
????????????????? + 21xω8?+ (-2.4-5.8i)xω10?+ (-25-8i)xω12?+ (-13.6+123.4i)xω14?)
??? = 0.125 x ( 189x1 + (-13.6-123.4i)x(i) + (-25+8i)x(-1) + (-2.4+5.8i)x(-i)?
????????????????? + 21x1 + (-2.4-5.8i)x(i) + (-25-8i)x(-1) + (-13.6+123.4i)x(-i) )
??? ≈ 0.125 x 518.4 = 64.8 ≈?65

c3?= (1/N) x ( C00x3?+ C11x3?+ C22x3?+ C33x3?
????????????????? + C44x3?+ C55x3?+ C66x3?+ C77x3?)
??? = (1/8) x ( 189xω0?+ (-13.6-123.4i)xω3?+ (-25+8i)xω6?+ (-2.4+5.8i)xω9?
????????????????? + 21xω12?+ (-2.4-5.8i)xω15?+ (-25-8i)xω18?+ (-13.6+123.4i)xω21?)
??? ≈ 0.125 x ( 189x1 + (-13.6-123.4i)x(-0.7+0.7i) + (-25+8i)x(-i) + (-2.4+5.8i)x(0.7+0.7i)?
????????????????? + 21x(-1) + (-2.4-5.8i)x(0.7-0.7i) + (-25-8i)x(i) + (-13.6+123.4i)x(-0.7-0.7i) )
??? = 0.125 x 364.32 = 45.54 ≈?46

c4?= (1/N) x ( C00x4?+ C11x4?+ C22x4?+ C33x4?
????????????????? + C44x4?+ C55x4?+ C66x4?+ C77x4?)
??? = (1/8) x ( 189xω0?+ (-13.6-123.4i)xω4?+ (-25+8i)xω8?+ (-2.4+5.8i)xω12?
????????????????? + 21xω16?+ (-2.4-5.8i)xω20?+ (-25-8i)xω24?+ (-13.6+123.4i)xω28?)
??? = 0.125 x ( 189x1 + (-13.6-123.4i)x(-1) + (-25+8i)x1 + (-2.4+5.8i)x(-1)?
????????????????? + 21x1 + (-2.4-5.8i)x(-1) + (-25-8i)x1 + (-13.6+123.4i)x(-1) )
??? = 0.125 x 192 =?24

c5?= (1/N) x ( C00x5?+ C11x5?+ C22x5?+ C33x5?
????????????????? + C44x5?+ C55x5?+ C66x5?+ C77x5?)
??? = (1/8) x ( 189xω0?+ (-13.6-123.4i)xω5?+ (-25+8i)xω10?+ (-2.4+5.8i)xω15?
????????????????? + 21xω20?+ (-2.4-5.8i)xω25?+ (-25-8i)xω30?+ (-13.6+123.4i)xω35?)
??? ≈ 0.125 x ( 189x1 + (-13.6-123.4i)x(-0.7-0.7i) + (-25+8i)x(i) + (-2.4+5.8i)x(0.7-0.7i)?
????????????????? + 21x(-1) + (-2.4-5.8i)x(0.7+0.7i) + (-25-8i)x(-i) + (-13.6+123.4i)x(-0.7+0.7i) )
??? = 0.125 x 3.04 = 0.38 ≈?0

c6?= (1/N) x ( C00x6?+ C11x6?+ C22x6?+ C33x6?
????????????????? + C44x6?+ C55x6?+ C66x6?+ C77x6?)
??? = (1/8) x ( 189xω0?+ (-13.6-123.4i)xω6?+ (-25+8i)xω12?+ (-2.4+5.8i)xω18?
????????????????? + 21xω24?+ (-2.4-5.8i)xω30?+ (-25-8i)xω36?+ (-13.6+123.4i)xω42?)
??? = 0.125 x ( 189x1 + (-13.6-123.4i)x(-i) + (-25+8i)x(-1) + (-2.4+5.8i)x(i)?
????????????????? + 21x1 + (-2.4-5.8i)x(-i) + (-25-8i)x(-1) + (-13.6+123.4i)x(i) )
??? = 0.125 x 1.6 = 0.2 ≈?0

c7?= (1/N) x ( C00x7?+ C11x7?+ C22x7?+ C33x7?
????????????????? + C44x7?+ C55x7?+ C66x7?+ C77x7?)
??? = (1/8) x ( 189xω0?+ (-13.6-123.4i)xω7?+ (-25+8i)xω14?+ (-2.4+5.8i)xω21?
????????????????? + 21xω28?+ (-2.4-5.8i)xω35?+ (-25-8i)xω42?+ (-13.6+123.4i)xω49?)
??? ≈ 0.125 x ( 189x1 + (-13.6-123.4i)x(0.7-0.7i) + (-25+8i)x(-i) + (-2.4+5.8i)x(-0.7-0.7i)?
????????????????? + 21x(-1) + (-2.4-5.8i)x(-0.7+0.7i) + (-25-8i)x(i) + (-13.6+123.4i)x(0.7+0.7i) )
??? = 0.125 x 3.68 = 0.46 ≈?0?

這樣,我們就使用離散傅里葉變換和逆變換計算出了向量 {ai} 和向量 {bj} 的卷積向量 {ck},如下所示:

{ c7, c6, c5, c4, c3, c2, c1, c0?} = { 0, 0, 0, 0, 24, 46, 65, 38, 16 }

這和我們在前面直接使用向量 {ai} 和向量 {bj} 來計算卷積的結果是一樣的。

但是,這個算法的時間復雜度還是 O(N2)。我們繞了這么一大圈,不是白費勁了嗎?


現在就到了關鍵時刻,關鍵在于:直接進行離散傅里葉變換的計算復雜度是 O(N2)。快速傅里葉變換可以計算出與直接計算相同的結果,但只需要 O(N logN) 的計算復雜度。?N logN 和 N2?之間的差別是巨大的。例如,當 N = 106?時,在一個每秒運算百萬次的計算機上,粗略地說,它們之間就是占用 30 秒 CPU 時間和兩星期 CPU 時間的差別。

快速傅里葉變換的要點如下:一個界長為 N 的離散傅里葉變換可以重新寫成兩個界長各為 N/2 的離散傅里葉變換之和。其中一個變換由原來 N 個點中的偶數點構成,另一個變換由奇數點構成。這個過程可以遞歸地進行下去,直到我們將全部數據細分為界長為 1 的變換。什么是界長為 1 的傅里葉變換呢?它正是把一個輸入值復制成它的一個輸出值的恒等運算。要實現以上算法,最容易的情況是原始的 N 為 2 的整冪次項,如果數據集的界長不是 2 的冪次時,則可添上一些零值,直到 2 的下一冪次。在這個算法中,每遞歸一次需 N 階運算,共需要 log N 次遞歸,所以快速傅里葉變換算法的時間復雜度是 O(N logN)。

?

由于快速傅里葉變換是采用了浮點運算,因此我們需要足夠的精度,以使在出現舍入誤差時,結果中每個組成部分的準確整數值仍是可辨認的。長度為 N 的 B 進制數可產生大到 B2N 階的卷積分量。我們知道,雙精度浮點數的尾數是 53 個二進位,所以:

2 x log2B + log2N + 幾個 x log2log2N < 53

上式中左邊最后一項是為了快速傅里葉變換的舍入誤差。

所以,為了能夠計算盡量大的整數,一般 B 不會取得太大。在計算機程序中經常使用 256 進制進行運算。但是如果經常需要將計算結果和十進制互相轉換,則往往使用 100 進制進行運算。

?

關于快速傅里葉變換以及卷積定理的更深入的知識,請參閱文末的參考文獻。這一篇隨筆主要是講述相關的原理,在下一篇隨筆中,我將給出一個使用快速傅里葉變換進行任意精度的算術運算的 C# 程序。

?

順便說一句,我在準備正文的例題的時候,是使用 google 計算器來進行復雜的復數運算的。發現她非常好用。以計算?c2?為例, 只要將要計算的表達式復制到 goole 搜索欄,然后按回車,就能得到計算結果:

(189 x 1) + (((-13.6) - (123.4 * i)) x i) + (((-25) + (8 * i)) x (-1)) + (((-2.4) + (5.8 * i)) x (-i)) + (21 x 1) + (((-2.4) - (5.8 * i)) x i) + (((-25) - (8 * i)) x (-1)) + (((-13.6) + (123.4 * i)) x (-i)) = 518.4 - 1.77635684 × 10-15?i
Google 計算器詳情

找不到和您的查詢 "189x1 + (-13.6-123.4i)x(i) + (-25+8i)x(-1) + (-2.4+5.8i)x(-i) + 21x1 + (-2.4-5.8i)x(i) + (-25-8i)x(-1) + (-13.6+123.4i)x(-i)" 相符的網頁。

參考文獻:
  1. Multiplication algorithm
  2. Convolution
  3. Convolution theorem
  4. Discrete Fourier transform
  5. Fast Fourier transform


轉自:http://www.cnblogs.com/skyivben/archive/2008/07/23/1248413.html

轉載于:https://www.cnblogs.com/freeopen/p/5482950.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396168.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396168.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396168.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

idea 啟動界面導入項目_如何為您的項目啟動有效的登錄頁面

idea 啟動界面導入項目by Christian-Peter Heimbach通過克里斯蒂安彼得海姆巴赫 如何為您的項目啟動有效的登錄頁面 (How to launch an effective landing page for your project) I began my career 10 years ago doing online marketing and advertising for video games. S…

linux程序已經在后臺運行凍結了_如何使程序在Linux后臺運行

經常在Linux上面運行程序都有這樣的體驗&#xff1a;某個程序運行的時候&#xff0c;會產生大量的log(提示)信息&#xff0c;但實際上我們只想讓它跑一下而已&#xff0c;log暫時不需要或者后面才有需要。同時run多個相同或者不同程序的時候&#xff0c;占了好多的命令行界面&a…

數字時代的精益組織

精益IT應該幫助簡化和改善我們為客戶創造價值的方式&#xff0c;并提出面向未來的更好的解決方案。未來的組織將專注于同行業的產品或業務流——其他的一切&#xff0c;包括專家和管理者在內&#xff0c;都是為了讓一線工作人員可以第一時間就做好&#xff0c;而又不會遇到任何…

9th week blog

1、第一個計算機語言&#xff1a;Fortran Fortran I誕生于1957年&#xff0c;由IBM設計&#xff0c;是世界上第一個真正的計算機語言。 Fortran I運行于IBM 704計算機上。 Fortran I支持&#xff1a;變量&#xff08;變量名最多6個字符&#xff09;、If和do語句、格式化IO。 不…

cas單點登錄系統:客戶端(client)詳細配置(包含統一單點注銷配置)

最近一直在研究cas登錄中心這一塊的應用&#xff0c;分享一下記錄的一些筆記和心得。后面會把cas-server端的配置和重構&#xff0c;另外還有這幾天再搞nginxcas的https反向代理配置&#xff0c;以及cas的證書相關的知識分享出來。 Cas由兩部分組成&#xff0c;Cas Server和Cas…

open 端口打開Linux,linux – nmap顯示打開的端口,但netstat沒有

如果我使用nmap掃描我的服務器,則表明已打開21端口.但是當我登錄到這個服務器并運行netstat時,我什么也看不見.$nmap -sT serverStarting Nmap 4.76 ( http://nmap.org ) at 2009-06-24 11:54 MSDInteresting ports on server (x.x.x.x):Not shown: 994 filtered portsPORT STA…

技能學習重要的古語_學習方法:最重要的開發人員技能

技能學習重要的古語by Preethi Kasireddy通過Preethi Kasireddy 學習方法&#xff1a;最重要的開發人員技能 (Learning How to Learn: The Most Important Developer Skill) Being an efficient learner is at least as important as being an efficient coder.成為高效的學習…

Git submodule 的筆記

這次不造輪子&#xff0c;寫寫文章。file最近想把自己的 blog 整理到 github 上&#xff0c;但由于其中依賴了一些主題以及插件&#xff0c;這時候 git submodule 就能很好的處理這種情況了。 submodule 是什么&#xff1f; submodule 顧名思義&#xff0c;子模塊。在一個項目依…

Leetcode690.Employee Importance員工的重要性

給定一個保存員工信息的數據結構&#xff0c;它包含了員工唯一的id&#xff0c;重要度 和 直系下屬的id。 比如&#xff0c;員工1是員工2的領導&#xff0c;員工2是員工3的領導。他們相應的重要度為15, 10, 5。那么員工1的數據結構是[1, 15, [2]]&#xff0c;員工2的數據結構是…

linux進程管理類命令大全,Linux進程管理類命令

一、htop命令選項-d #&#xff1a;指定延遲時間間隔&#xff1b;-u UserName&#xff1a;僅顯示指定用戶的進程&#xff1b;-s COLUME&#xff1a;以指定字段進行排序&#xff1b;子命令&#xff1a;l&#xff1a;顯示選定的進程打開的文件列表&#xff1b;s&#xff1a;跟蹤選…

C#操作Excel

1.System.Data.DataTable連接數據庫 ExcelFile 是excel的完整路徑//OleDbConnection conExcel new OleDbConnection("ProviderMicrosoft.Jet.OLEDB.4.0;Data Source" ExcelFile ";Extended PropertiesExcel 8.0");//if (conExcel.State ConnectionStat…

android抓包工具——使用fiddler4在安卓手機抓包

Fiddler是一款非常流行并且實用的http抓包工具&#xff0c;它的原理是在本機開啟了一個http的代理服務器&#xff0c;然后它會轉發所有的http請求和響應&#xff0c;因此&#xff0c;它比一般的firebug或者是chrome自帶的抓包工具要好用的多。不僅如此&#xff0c;它還可以支持…

rust風化速度_反駁《Golang、Rust的執行速度的對照,讓人大吃一驚。》——不會別瞎說...

首先我無意引戰&#xff0c;但是今天看到某位同學的文章里有某些錯誤&#xff0c;不得不指正一下。1. 測量時間的時候我們使用 std::time::SystemTime::elapsed 即可&#xff0c;不必蹩腳的使用兩個 system 輸出出來還得手動算一下。(當然你說對Rust不熟也就無所謂了)2. 最重要…

css flexbox模型_代碼簡介:CSS Flexbox有點像旅行

css flexbox模型Here are three stories we published this week that are worth your time:這是我們本周發布的三個值得您關注的故事&#xff1a; CSS Flexbox explained by road tripping across the country: 7 minute read CSS Flexbox在全國各地的旅途中進行了解釋&#…

Sharepoint 2013設置customErrors

原文地址&#xff1a;http://www.cnblogs.com/renzh/archive/2013/03/05/2944309.html#3407239 一、首先設置IIS中的Web.config文件 找到對應的IIS應用程序目錄&#xff0c;如&#xff1a;C:\inetpub\wwwroot\wss\VirtualDirectories\3000 在此文件夾下包含一個web.config文件&…

ddt數據驅動

數據驅動原理 1.測試數據為多個字典的list類型 2.測試類前加修飾ddt.ddt 3.case前加修飾ddt.data() 4.運行后用例會自動加載成三個單獨的用例 5.測試結果&#xff1a; Testing started at 21:51 ...start!{username: selenium\xe7\xbe\xa4, psw: 232607095}end!start!{username…

http協議報文體_HTTP報文基本概念學習

HTTP是什么HTTP是HyperText Transfer Protocol的縮寫,中文就是超文本傳輸協議,所謂的超,是個學術用語,是基于某種事物增加了更多的信息維度,比如超像素xxx之類的.協議是什么,協議說白了就是約定,約定就是模板,就是表格,就和你去銀行辦手續一樣,客戶不知道要提供什么信息,銀行又…

yeoman_使用yeoman輕松創建Yeoman生成器

yeomanby Krist Wongsuphasawat克里斯特旺蘇帕薩瓦(Krist Wongsuphasawat) 使用yeoman輕松創建Yeoman生成器 (Creating Yeoman generators easily with yeoman-easily) I’ve used Yeoman to start many of my projects. It’s an amazing web scaffolding tool.我已經用Yeoma…

linux 輕量化圖形界面,YOXIOS 入門教程--基于Linux的 輕量化GUI圖形系統和硬件平臺(41頁)-原創力文檔...

YOXIOS --基于 Linux 的輕量化 GUI圖形系統和硬件平臺YOXIOS 入門教程基于 Linux 的 輕量化 GUI圖形系統和硬件平臺(V1.0 2020-05)提示&#xff1a;閱讀此文檔需要有一定的單片機開發、C/C編程語言、和使用 IDE開發工具的基礎YOXIOS (C) 2020 游芯科技第 1 頁 共 41 頁YOXIOS -…