在java算法(Scott robert ladd)中看到快速傅立葉變換,講的很詳細(xì),摘錄下來跟大家分享!
以下正文:
FFT或許是已知的最有效的算法,他應(yīng)用范圍廣。從信號的處理到數(shù)據(jù)壓縮到地震分析和圖形放大,F(xiàn)FT通過領(lǐng)域間的信息轉(zhuǎn)換
提供了一個(gè)強(qiáng)有力的工具,本節(jié)講討論FFT如何改進(jìn)多項(xiàng)式乘法的性能:
到目前為止,我用系數(shù)形式表示多項(xiàng)式,但有些應(yīng)用程序最適合用point-value形式表示多項(xiàng)式,任何多項(xiàng)式都可被n個(gè)點(diǎn)值
對來表示,這里,value是多項(xiàng)式在給定點(diǎn)point的值,許多數(shù)學(xué)應(yīng)用要使用FFT實(shí)現(xiàn)點(diǎn)值和系數(shù)之間的快速變換。
兩個(gè)多項(xiàng)式A和B快速相乘的過程如下:
1,用同一組值把A和B從十形式轉(zhuǎn)換為點(diǎn)值形式pA和pB。
2。pA和pB對應(yīng)的點(diǎn)值相乘,得到pC。
3。對pC進(jìn)行插值得到系數(shù)多項(xiàng)式C,他等于A乘上B。
表面上看,上述算法比在mul中使用之際相乘并不高效--卻更復(fù)雜,選擇合適的計(jì)算值可以使點(diǎn)-值乘法非常快。
public class PolynomialFFTextends polynomial
{
//utility field
final protected static Complex p|2|=new Complex(0.0D,6.283185307179586D);
//utility methods
protected static int log2(int n)
{
int x=1;
int c=0;
while(true)
{
if (x>=n) break;
++c;
x<<=1;
if (x==0) break;
}
return c;
}
protected static int FlipBits(int k,int bits)
{
int lm=1<<(bits-1);
int rm=1;
int r=0;
while (lm != 0)
{
if ((k&rm)!=0)
{
r|=lm;
lm>>=1;
rm<<=1;
}
}
return r;
}
};
//increase degree to power of two
protected static PolynomialFFT stretchFFT(PolynomialFFT p)
{
int n=1;
int d=p.m_nDegree;
while(true)
{
if (d<=n) break;
n<<=1;
if (n==0)
{
throw new ArithmeticException("StretchFFT failed");
}
n<<=1;
return new PolynomialFFT(p.stretch(n));
}
}
//待續(xù)
ping命令詳解
對于Windows下ping命令相信大家已經(jīng)再熟悉不過了,但是能把ping的功能發(fā)揮到最大的人卻并不是很多,當(dāng)然我也并不是說我可以讓ping發(fā)揮最大的功能,我也只不過經(jīng)常用ping這個(gè)工具,也總結(jié)了一些小經(jīng)驗(yàn),現(xiàn)在和大家分享一下。
現(xiàn)在我就參照ping命令的幫助說明來給大家說說我使用ping時(shí)會用到的技巧,ping只有在安裝了TCP/IP協(xié)議以后才可以使用:
Options:
-t Ping the specified host until stopped.To see statistics and continue - type Control-Break;To stop - type Control-C.
不停的ping地方主機(jī),直到你按下Control-C。
此功能沒有什么特別的技巧,不過可以配合其他參數(shù)使用,將在下面提到。
-a Resolve addresses to hostnames.
解析計(jì)算機(jī)NetBios名。
示例:C:\>ping -a 192.168.1.21
Pinging iceblood.yofor.com [192.168.1.21] with 32 bytes of data:
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Ping statistics for 192.168.1.21:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
從上面就可以知道IP為192.168.1.21的計(jì)算機(jī)NetBios名為iceblood.yofor.com。
-l size Send buffer size.
定義echo數(shù)據(jù)包大小。
在默認(rèn)的情況下windows的ping發(fā)送的數(shù)據(jù)包大小為32byt,我們也可以自己定義它的大小,但有一個(gè)大小的限制,就是最大只能發(fā)送65500byt,也許有人會問為什么要限制到65500byt,因?yàn)閃indows系列的系統(tǒng)都有一個(gè)安全漏洞(也許還包括其他系統(tǒng))就是當(dāng)向?qū)Ψ揭淮伟l(fā)送的數(shù)據(jù)包大于或等于65532時(shí),對方就很有可能擋機(jī),所以微軟公司為了解決這一安全漏洞于是限制了ping的數(shù)據(jù)包大小。雖然微軟公司已經(jīng)做了此限制,但這個(gè)參數(shù)配合其他參數(shù)以后危害依然非常強(qiáng)大,比如我們就可以通過配合-t參數(shù)來實(shí)現(xiàn)一個(gè)帶有攻擊性的命令:(以下介紹帶有危險(xiǎn)性,僅用于試驗(yàn),請勿輕易施于別人機(jī)器上,否則后果自負(fù))
C:\>ping -l 65500 -t 192.168.1.21
Pinging 192.168.1.21 with 65500 bytes of data:
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
………………
這樣它就會不停的向192.168.1.21計(jì)算機(jī)發(fā)送大小為65500byt的數(shù)據(jù)包,如果你只有一臺計(jì)算機(jī)也許沒有什么效果,但如果有很多計(jì)算機(jī)那么就可以使對方完全癱瘓,我曾經(jīng)就做過這樣的試驗(yàn),當(dāng)我同時(shí)使用10臺以上計(jì)算機(jī)ping一臺Win2000Pro系統(tǒng)的計(jì)算機(jī)時(shí),不到5分鐘對方的網(wǎng)絡(luò)就已經(jīng)完全癱瘓,網(wǎng)絡(luò)嚴(yán)重堵塞,HTTP和FTP服務(wù)完全停止,由此可見威力非同小可。
r count Record route for count hops.
在“記錄路由”字段中記錄傳出和返回?cái)?shù)據(jù)包的路由。
在一般情況下你發(fā)送的數(shù)據(jù)包是通過一個(gè)個(gè)路由才到達(dá)對方的,但到底是經(jīng)過了哪些路由呢?通過此參數(shù)就可以設(shè)定你想探測經(jīng)過的路由的個(gè)數(shù),不過限制在了9個(gè),也就是說你只能跟蹤到9個(gè)路由,如果想探測更多,可以通過其他命令實(shí)現(xiàn),我將在以后的文章中給大家講解。以下為示例:
C:\>ping -n 1 -r 9 202.96.105.101 (發(fā)送一個(gè)數(shù)據(jù)包,最多記錄9個(gè)路由)
Pinging 202.96.105.101 with 32 bytes of data:
Reply from 202.96.105.101: bytes=32 time=10ms TTL=249
Route: 202.107.208.187 ->
202.107.210.214 ->
61.153.112.70 ->
61.153.112.89 ->
202.96.105.149 ->
202.96.105.97 ->
202.96.105.101 ->
202.96.105.150 ->
61.153.112.90
Ping statistics for 202.96.105.101:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 10ms, Maximum = 10ms, Average = 10ms
從上面我就可以知道從我的計(jì)算機(jī)到202.96.105.101一共通過了202.107.208.187 ,202.107.210.214 , 61.153.112.70 , 61.153.112.89 , 202.96.105.149 , 202.96.105.97這幾個(gè)路由。
ping命令的其他技巧:在一般情況下還可以通過ping對方讓對方返回給你的TTL值大小,粗略的判斷目標(biāo)主機(jī)的系統(tǒng)類型是Windows系列還是UNIX/Linux系列,一般情況下Windows系列的系統(tǒng)返回的TTL值在100-130之間,而UNIX/Linux系列的系統(tǒng)返回的TTL值在240-255之間,TTL 字段值可以幫助我們識別操作系統(tǒng)類型。
UNIX 及類 UNIX 操作系統(tǒng) ICMP 回顯應(yīng)答的 TTL 字段值為 255
Compaq Tru64 5.0 ICMP 回顯應(yīng)答的 TTL 字段值為 64
微軟 Windows NT/2K操作系統(tǒng) ICMP 回顯應(yīng)答的 TTL 字段值為 128
微軟 Windows 95 操作系統(tǒng) ICMP 回顯應(yīng)答的 TTL 字段值為 32
當(dāng)然TTL的值在對方的主機(jī)里是可以修改的,Windows系列的系統(tǒng)可以通過修改注冊表以下鍵值實(shí)現(xiàn):
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"DefaultTTL"=dword:000000ff
255---FF
128---80
64----40
32----20
好了,ping命令也基本上完全講解完了,其中還有-j,-k參數(shù)我還沒有詳細(xì)說明,由于某些原因也包括我自己所收集的資料過少這里也沒有向大家詳細(xì)介紹,請大家見諒,如果在看了這篇文章的朋友當(dāng)中有知道得比我更多的,以及其他使用技巧的也希望您能告訴我,并在此先謝過。
Windows 開始→運(yùn)行→命令 集錦
winver---------檢查Windows版本
wmimgmt.msc----打開windows管理體系結(jié)構(gòu)(WMI)
wupdmgr--------windows更新程序
wscript--------windows腳本宿主設(shè)置
write----------寫字板
winmsd---------系統(tǒng)信息
wiaacmgr-------掃描儀和照相機(jī)向?qū)?nbsp;
winchat--------XP自帶局域網(wǎng)聊天
mem.exe--------顯示內(nèi)存使用情況
Msconfig.exe---系統(tǒng)配置實(shí)用程序
mplayer2-------簡易widnows media player
mspaint--------畫圖板
mstsc----------遠(yuǎn)程桌面連接
mplayer2-------媒體播放機(jī)
magnify--------放大鏡實(shí)用程序
mmc------------打開控制臺
mobsync--------同步命令
dxdiag---------檢查DirectX信息
drwtsn32------ 系統(tǒng)醫(yī)生
devmgmt.msc--- 設(shè)備管理器
dfrg.msc-------磁盤碎片整理程序
diskmgmt.msc---磁盤管理實(shí)用程序
dcomcnfg-------打開系統(tǒng)組件服務(wù)
ddeshare-------打開DDE共享設(shè)置
dvdplay--------DVD播放器
net stop messenger-----停止信使服務(wù)
net start messenger----開始信使服務(wù)
notepad--------打開記事本
nslookup-------網(wǎng)絡(luò)管理的工具向?qū)?nbsp;
ntbackup-------系統(tǒng)備份和還原
narrator-------屏幕“講述人”
ntmsmgr.msc----移動(dòng)存儲管理器
ntmsoprq.msc---移動(dòng)存儲管理員操作請求
netstat -an----(TC)命令檢查接口
syncapp--------創(chuàng)建一個(gè)公文包
sysedit--------系統(tǒng)配置編輯器
sigverif-------文件簽名驗(yàn)證程序
sndrec32-------錄音機(jī)
shrpubw--------創(chuàng)建共享文件夾
secpol.msc-----本地安全策略
syskey---------系統(tǒng)加密,一旦加密就不能解開,保護(hù)windows xp系統(tǒng)的雙重密碼
services.msc---本地服務(wù)設(shè)置
Sndvol32-------音量控制程序
sfc.exe--------系統(tǒng)文件檢查器
sfc /scannow---windows文件保護(hù)
tsshutdn-------60秒倒計(jì)時(shí)關(guān)機(jī)命令
tourstart------xp簡介(安裝完成后出現(xiàn)的漫游xp程序)
taskmgr--------任務(wù)管理器
eventvwr-------事件查看器
eudcedit-------造字程序
explorer-------打開資源管理器
packager-------對象包裝程序
perfmon.msc----計(jì)算機(jī)性能監(jiān)測程序
progman--------程序管理器
regedit.exe----注冊表
rsop.msc-------組策略結(jié)果集
regedt32-------注冊表編輯器
rononce -p ----15秒關(guān)機(jī)
regsvr32 /u *.dll----停止dll文件運(yùn)行
regsvr32 /u zipfldr.dll------取消ZIP支持
cmd.exe--------CMD命令提示符
chkdsk.exe-----Chkdsk磁盤檢查
certmgr.msc----證書管理實(shí)用程序
calc-----------啟動(dòng)計(jì)算器
charmap--------啟動(dòng)字符映射表
cliconfg-------SQL SERVER 客戶端網(wǎng)絡(luò)實(shí)用程序
Clipbrd--------剪貼板查看器
conf-----------啟動(dòng)netmeeting
compmgmt.msc---計(jì)算機(jī)管理
cleanmgr-------垃圾整理
ciadv.msc------索引服務(wù)程序
osk------------打開屏幕鍵盤
odbcad32-------ODBC數(shù)據(jù)源管理器
oobe/msoobe /a----檢查XP是否激活
lusrmgr.msc----本機(jī)用戶和組
logoff---------注銷命令
iexpress-------木馬捆綁工具,系統(tǒng)自帶
Nslookup-------IP地址偵測器
fsmgmt.msc-----共享文件夾管理器
utilman--------輔助工具管理器
gpedit.msc-----組策略