新聞中心
隨著互聯(lián)網(wǎng)和云計(jì)算的快速發(fā)展,各種應(yīng)用系統(tǒng)和服務(wù)不斷涌現(xiàn),迅速推動(dòng)了企業(yè)的數(shù)字化轉(zhuǎn)型。然而,對于企業(yè)而言,如何保證各個(gè)系統(tǒng)和服務(wù)的穩(wěn)定運(yùn)行,保障用戶體驗(yàn),成為了一個(gè)重要的問題。針對這個(gè)問題,監(jiān)控技術(shù)應(yīng)運(yùn)而生。

監(jiān)控可以看做是一個(gè)對IT系統(tǒng)的實(shí)時(shí)監(jiān)測、預(yù)警和反饋的系統(tǒng)。也就是說,通過監(jiān)控系統(tǒng),可以實(shí)時(shí)了解各個(gè)系統(tǒng)的運(yùn)行狀況,及時(shí)發(fā)現(xiàn)異常情況,并及時(shí)采取措施,以保證系統(tǒng)安全和穩(wěn)定運(yùn)行。
在Linux系統(tǒng)中,有很多監(jiān)控軟件,比較常見的有Nagios和Zabbix等。不過,這些軟件都有各自的問題,比較瑣碎、配置復(fù)雜等,而且不能很好地滿足企業(yè)的監(jiān)控需求。為此,現(xiàn)在有一種優(yōu)雅的監(jiān)控解決方案──linux omd。
Linux OMD的概述
OMD是“Open Monitoring Distribution”的縮寫,也就是開源監(jiān)控系統(tǒng)分發(fā)版,是一種基于Nagios的開源監(jiān)控系統(tǒng),由多個(gè)監(jiān)控模塊組成的系統(tǒng),通過OMD將這些模塊統(tǒng)一起來,形成一個(gè)完整的監(jiān)控系統(tǒng),大大減少了監(jiān)控系統(tǒng)的配置時(shí)間和成本。
OMD集成了Nagios、Check_MK、NRPE、Livestatus、PNP4Nagios以及其他工具軟件,同時(shí)還集成了RRDtool、Apache、MySQL等服務(wù),以實(shí)現(xiàn)更大程度的監(jiān)控功能。OMD還支持可視化監(jiān)控、收集和分析系統(tǒng)和服務(wù)的性能指標(biāo)、提供預(yù)警等豐富的功能。
Linux OMD的優(yōu)勢
1、配置簡潔精練
使用OMD之后,只需要對Nagios的配置文件做一些簡單的配置即可,大大減少了配置的時(shí)間和成本,同時(shí)也增加了監(jiān)控配置的靈活性。
2、集成監(jiān)控軟件
OMD集成了多個(gè)優(yōu)秀的監(jiān)控軟件,如Nagios、Check_MK、PNP4Nagios等,能夠很好地滿足企業(yè)的監(jiān)控需求。同時(shí),OMD可以根據(jù)企業(yè)的具體需求,按照組件的方式部署,靈活地滿足用戶需要。
3、可視化報(bào)表
OMD提供了多種圖表和統(tǒng)計(jì)報(bào)表等可視化數(shù)據(jù),可以讓用戶直觀地了解監(jiān)控信息。
4、減少監(jiān)控成本
OMD提供了許多監(jiān)控和數(shù)據(jù)處理功能,大大減少了企業(yè)的監(jiān)控成本。
使用Linux OMD的注意點(diǎn)
1、選擇合適的版本
OMD的版本很多,用戶需要根據(jù)自己的系統(tǒng)環(huán)境和需求,選擇合適的版本進(jìn)行安裝。
2、配置正確的監(jiān)控對象
OMD的靈活性很大,用戶需要根據(jù)企業(yè)實(shí)際需求,配置正確的監(jiān)控對象,避免資源浪費(fèi)。
3、避免監(jiān)控病態(tài)
有些用戶為了讓監(jiān)控指標(biāo)更準(zhǔn)確,會(huì)設(shè)置很多的檢測對象,這容易造成監(jiān)控病態(tài),導(dǎo)致監(jiān)控系統(tǒng)失去思考,最終影響監(jiān)控效果。
OMD作為一個(gè)優(yōu)秀的監(jiān)控解決方案,能夠很好地滿足企業(yè)的監(jiān)控需求。同時(shí),OMD也存在一些配置問題和安裝過程中的坑點(diǎn),需要用戶自行解決。因此,在選擇和使用OMD之前,用戶需要對自己的系統(tǒng)和需求進(jìn)行仔細(xì)分析,選擇適合自己的版本和配置方案。
相關(guān)問題拓展閱讀:
- MD5加密算法 ASP版
MD5加密算法 ASP版
MD5的Java Bean實(shí)現(xiàn)
MD5簡介
MD5的全稱是Message-Digest Algorithm 5,在90年代初由MIT的計(jì)算機(jī)科學(xué)實(shí)驗(yàn)室和RSA Data Security Inc發(fā)明,經(jīng)MD2、MD3和MD4發(fā)展而來。
Message-Digest泛指字節(jié)串(Message)的Hash變換,就是把一個(gè)任意長度的字節(jié)串變換成一定長的大整數(shù)。枝辯請注意我使用了“字節(jié)串”而不是“字符串”這個(gè)詞,是因?yàn)檫@種變換只與字節(jié)的值有關(guān),與字符集或編碼方式無關(guān)。
MD5將任意長度的“字節(jié)串”變換成一個(gè)128bit的大整粗搭早數(shù),并且它是一個(gè)不可逆的字符串變換算法,換句話說就是,即使你看到源程序和算法描述,也無法將一個(gè)MD5的值變換回原始的字符串,從數(shù)學(xué)原理上說,是因?yàn)樵嫉淖址袩o窮多個(gè),這有點(diǎn)象不存在反函數(shù)的數(shù)學(xué)函數(shù)。
MD5的典型應(yīng)用是對一段Message(字節(jié)串)產(chǎn)生fingerprint(指紋),以防止被“篡改”。舉個(gè)例子,你將一段話寫在一個(gè)叫readme.txt文件中,并對這個(gè)readme.txt產(chǎn)生一個(gè)MD5的值并記錄在案,然后你可以傳播這個(gè)文件給別人,別人如果修改了文件中的任何內(nèi)容,你對這個(gè)文件重新計(jì)算MD5時(shí)就會(huì)發(fā)現(xiàn)。如果再有一個(gè)第三方的認(rèn)證機(jī)構(gòu),用MD5還可以防止文件作者的“抵賴”,這就是所謂的數(shù)字簽名應(yīng)用。
MD5還廣泛用于加密和解密技術(shù)上,在很多操作系統(tǒng)中,用戶的密碼是以MD5值(或類似的其它算法)的方式保存的,用戶Login的時(shí)候,系統(tǒng)是把用戶輸入的密碼計(jì)算成MD5值,然后再去和系統(tǒng)中保存的MD5值進(jìn)行比較,而系統(tǒng)并不“知道”用戶的密碼是什么。
一些黑客破獲這種密碼的方法是一種被稱為“跑字典”的方法。有兩種方法得到字典,一種是日常搜集的用做密碼的字符串表,另一種是用排列組合方法生成的,先用MD5程序計(jì)算出這些字典項(xiàng)的MD5值,然后再用目標(biāo)的MD5值在這個(gè)字典中檢索。
即使假設(shè)密碼的更大長度為8,同時(shí)密碼只能是字母和數(shù)字,共26+26+10=62個(gè)字符,排列組合出的字典的項(xiàng)數(shù)則是P(62,1)+P(62,2)….+P(62,8),那也已經(jīng)是一個(gè)很天文的數(shù)字了,存儲(chǔ)這個(gè)字典就需要TB級(jí)的磁盤組,而且這種方法還有一個(gè)前提,就是能獲得目標(biāo)賬戶的密碼MD5值的情況下才可以。
在很多電子商務(wù)和社區(qū)應(yīng)用中,管理用戶的Account是一種最常用的基本功能,盡管很多Application Server提供了這些基本組件,但很多應(yīng)用開發(fā)者為了管理的更大的靈活性還是喜歡采用關(guān)系數(shù)據(jù)庫來管理用戶,懶惰的做法是用戶的密碼往往使用明文或簡單的變換后直接保存在數(shù)據(jù)庫中,因此這些用戶的密碼對軟件開發(fā)者或系統(tǒng)管理員來說可以說毫無保密可言,本文的目的是介紹MD5的Java Bean的巖雀實(shí)現(xiàn),同時(shí)給出用MD5來處理用戶的Account密碼的例子,這種方法使得管理員和程序設(shè)計(jì)者都無法看到用戶的密碼,盡管他們可以初始化它們。但重要的一點(diǎn)是對于用戶密碼設(shè)置習(xí)慣的保護(hù)。
有興趣的讀者可以從這里取得MD5也就是RFC 1321的文本。
實(shí)現(xiàn)策略
MD5的算法在RFC1321中實(shí)際上已經(jīng)提供了C的實(shí)現(xiàn),我們其實(shí)馬上就能想到,至少有兩種用Java實(shí)現(xiàn)它的方法,之一種是,用Java語言重新寫整個(gè)算法,或者再說簡單點(diǎn)就是把C程序改寫成Java程序。第二種是,用JNI(Java Native Interface)來實(shí)現(xiàn),核心算法仍然用這個(gè)C程序,用Java類給它包個(gè)殼。
但我個(gè)人認(rèn)為,JNI應(yīng)該是Java為了解決某類問題時(shí)的沒有辦法的辦法(比如與操作系統(tǒng)或I/O設(shè)備密切相關(guān)的應(yīng)用),同時(shí)為了提供和其它語言的互操作性的一個(gè)手段。使用JNI帶來的更大問題是引入了平臺(tái)的依賴性,打破了SUN所鼓吹的“一次編寫到處運(yùn)行”的Java好處。因此,我決定采取之一種方法,一來和大家一起嘗試一下“一次編寫到處運(yùn)行”的好處,二來檢驗(yàn)一下Java 2現(xiàn)在對于比較密集的計(jì)算的效率問題。
實(shí)現(xiàn)過程
限于這篇文章的篇幅,同時(shí)也為了更多的讀者能夠真正專注于問題本身,我不想就某一種Java集成開發(fā)環(huán)境來介紹這個(gè)Java Bean的制作過程,介紹一個(gè)方法時(shí)我發(fā)現(xiàn)步驟和命令很清晰,我相信有任何一種Java集成環(huán)境三天以上經(jīng)驗(yàn)的讀者都會(huì)知道如何把這些代碼在集成環(huán)境中編譯和運(yùn)行。用集成環(huán)境講述問題往往需要配很多屏幕截圖,這也是我一直對集成環(huán)境很頭疼的原因。我使用了一個(gè)普通的文本編輯器,同時(shí)使用了Sun公司標(biāo)準(zhǔn)的JDK 1.3.0 for Windows NT。
其實(shí)把C轉(zhuǎn)換成Java對于一個(gè)有一定C語言基礎(chǔ)的程序員并不困難,這兩個(gè)語言的基本語法幾乎完全一致.我大概花了一個(gè)小時(shí)的時(shí)間完成了代碼的轉(zhuǎn)換工作,我主要作了下面幾件事:
把必須使用的一些#define的宏定義變成Class中的final static,這樣保證在一個(gè)進(jìn)程空間中的多個(gè)Instance共享這些數(shù)據(jù)
刪去了一些無用的#if define,因?yàn)槲抑魂P(guān)心MD5,這個(gè)推薦的C實(shí)現(xiàn)同時(shí)實(shí)現(xiàn)了MD2 MD3和 MD4,而且有些#if define還和C不同編譯器有關(guān)
將一些計(jì)算宏轉(zhuǎn)換成final static 成員函數(shù)。
所有的變量命名與原來C實(shí)現(xiàn)中保持一致,在大小寫上作一些符合Java習(xí)慣的變化,計(jì)算過程中的C函數(shù)變成了private方法(成員函數(shù))。
關(guān)鍵變量的位長調(diào)整
定義了類和方法
需要注意的是,很多早期的C編譯器的int類型是16 bit的,MD5使用了unsigned long int,并認(rèn)為它是32bit的無符號(hào)整數(shù)。而在Java中int是32 bit的,long是64 bit的。在MD5的C實(shí)現(xiàn)中,使用了大量的位操作。這里需要指出的一點(diǎn)是,盡管Java提供了位操作,由于Java沒有unsigned類型,對于右移位操作多提供了一個(gè)無符號(hào)右移:>>>,等價(jià)于C中的 >> 對于unsigned 數(shù)的處理。
因?yàn)镴ava不提供無符號(hào)數(shù)的運(yùn)算,兩個(gè)大int數(shù)相加就會(huì)溢出得到一個(gè)負(fù)數(shù)或異常,因此我將一些關(guān)鍵變量在Java中改成了long類型(64bit)。我個(gè)人認(rèn)為這比自己去重新定義一組無符號(hào)數(shù)的類同時(shí)重載那些運(yùn)算符要方便,同時(shí)效率高很多并且代碼也易讀,OO(Object Oriented)的濫用反而會(huì)導(dǎo)致效率低下。
限于篇幅,這里不再給出原始的C代碼,有興趣對照的讀者朋友可以去看RFC 1321。MD5.java源代碼
測試
在RFC 1321中,給出了Test suite用來檢驗(yàn)?zāi)愕膶?shí)現(xiàn)是否正確:
MD5 (“”) = d41d8cd98f00b204eecf8427e
MD5 (“a”) = 0cc175b9c0f1b6a831c399e
MD5 (“abc”) =cd24fb0d6963f7d28e17f72
MD5 (“message digest”) = f96b697d7cb7938d525a2f31aaf161d0
MD5 (“abcdefghijklmnopqrstuvwxyz”) = c3fcd3d76192e4007dfb496cca67e13b
……
這些輸出結(jié)果的含義是指:空字符串””的MD5值是d41d8cd98f00b204eecf8427e,字符串”a”的MD5值是0cc175b9c0f1b6a831c399e……
編譯并運(yùn)行我們的程序:
javac –d . MD5.java
java beartool.MD5
為了將來不與別人的同名程序沖突,我在我的程序的之一行使用了package beartool;
因此編譯命令javac –d . MD5.java 命令在我們的工作目錄下自動(dòng)建立了一個(gè)beartool目錄,目錄下放著編譯成功的 MD5.class
我們將得到和Test suite同樣的結(jié)果。當(dāng)然還可以繼續(xù)測試你感興趣的其它MD5變換,例如:
java beartool.MD
將給出1234的MD5值。
可能是我的計(jì)算機(jī)知識(shí)是從Apple II和Z80單板機(jī)開始的,我對大寫十六進(jìn)制代碼有偏好,如果您想使用小寫的Digest String只需要把byteHEX函數(shù)中的A、B、C、D、E、F改成a、b、 c、d、e、f就可以了。
MD5據(jù)稱是一種比較耗時(shí)的計(jì)算,我們的Java版MD5一閃就算出來了,沒遇到什么障礙,而且用肉眼感覺不出來Java版的MD5比C版的慢。
為了測試它的兼容性,我把這個(gè)MD5.class文件拷貝到我的另一臺(tái)Linux+IBM JDK 1.3的機(jī)器上,執(zhí)行后得到同樣結(jié)果,確實(shí)是“一次編寫到處運(yùn)行了”。
Java Bean簡述
現(xiàn)在,我們已經(jīng)完成并簡單測試了這個(gè)Java Class,我們文章的標(biāo)題是做一個(gè)Java Bean。
其實(shí)普通的Java Bean很簡單,并不是什么全新的或偉大的概念,就是一個(gè)Java的Class,盡管 Sun規(guī)定了一些需要實(shí)現(xiàn)的方法,但并不是強(qiáng)制的。而EJB(Enterprise Java Bean)無非規(guī)定了一些必須實(shí)現(xiàn)(非常類似于響應(yīng)事件)的方法,這些方法是供EJB Container使用(調(diào)用)的。
在一個(gè)Java Application或Applet里使用這個(gè)bean非常簡單,最簡單的方法是你要使用這個(gè)類的源碼工作目錄下建一個(gè)beartool目錄,把這個(gè)class文件拷貝進(jìn)去,然后在你的程序中import beartool.MD5就可以了。最后打包成.jar或.war是保持這個(gè)相對的目錄關(guān)系就行了。
Java還有一個(gè)小小的好處是你并不需要摘除我們的MD5類中那個(gè)main方法,它已經(jīng)是一個(gè)可以工作的Java Bean了。Java有一個(gè)非常大的優(yōu)點(diǎn)是她允許很方便地讓多種運(yùn)行形式在同一組代碼存,比如,你可以寫一個(gè)類,它即是一個(gè)控制臺(tái)Application和GUI Application,同時(shí)又是一個(gè)Applet,同時(shí)還是一個(gè)Java Bean,這對于測試、維護(hù)和發(fā)布程序提供了極大的方便,這里的測試方法main還可以放到一個(gè)內(nèi)部類中,有興趣的讀者可以參考:
這里講述了把測試和示例代碼放在一個(gè)內(nèi)部靜態(tài)類的好處,是一種不錯(cuò)的工程化技巧和途徑。
把Java Bean裝到P里
正如我們在本文開頭講述的那樣,我們對這個(gè)MD5 Bean的應(yīng)用是基于一個(gè)用戶管理,這里我們假設(shè)了一個(gè)虛擬社區(qū)的用戶login過程,用戶的信息保存在數(shù)據(jù)庫的個(gè)名為users的表中。這個(gè)表有兩個(gè)字段和我們的這個(gè)例子有關(guān),userid :char(20)和pwdmd5 :char(32),userid是這個(gè)表的Primary Key,pwdmd5保存密碼的MD5串,MD5值是一個(gè)128bit的大整數(shù),表示成16進(jìn)制的ASCII需要32個(gè)字符。
這里給出兩個(gè)文件,login.html是用來接受用戶輸入的form,login.jsp用來模擬使用MD5 Bean的login過程。
為了使我們的測試環(huán)境簡單起見,我們在P中使用了JDK內(nèi)置的JDBC-ODBC Bridge Driver,community是ODBC的DSN的名字,如果你使用其它的JDBC Driver,替換掉login.jsp中的
Connection con= DriverManager.getConnection(“jdbc:odbc:community”, “”, “”);
即可。
login.jsp的工作原理很簡單,通過post接收用戶輸入的UserID和Password,然后將Password變換成MD5串,然后在users表中尋找UserID和pwdmd5,因?yàn)閁serID是users表的Primary Key,如果變換后的pwdmd5與表中的記錄不符,那么SQL查詢會(huì)得到一個(gè)空的結(jié)果集。
這里需要簡單介紹的是,使用這個(gè)Bean只需要在你的P應(yīng)用程序的WEB-INF/classes下建立一個(gè)beartool目錄,然后將MD5.class拷貝到那個(gè)目錄下就可以了。如果你使用一些集成開發(fā)環(huán)境,請參考它們的deploy工具的說明。在P使用一個(gè)java Bean關(guān)鍵的一句聲明是程序中的第2行:
這是所有P規(guī)范要求P容器開發(fā)者必須提供的標(biāo)準(zhǔn)Tag。
id=實(shí)際上是指示P Container創(chuàng)建Bean的實(shí)例時(shí)用的實(shí)例變量名。在后面的之間的Java程序中,你可以引用它。在程序中可以看到,通過 pwdmd5=oMD5.getMD5ofStr (password)引用了我們的MD5 Java Bean提供的唯一一個(gè)公共方法: getMD5ofStr。
Java Application Server執(zhí)行.P的過程是先把它預(yù)編譯成.java(那些Tag在預(yù)編譯時(shí)會(huì)成為java語句),然后再編譯成.class。這些都是系統(tǒng)自動(dòng)完成和維護(hù)的,那個(gè).class也稱為Servlet。當(dāng)然,如果你愿意,你也可以幫助Java Application Server去干本該它干的事情,自己直接去寫Servlet,但用Servlet去輸出HTML那簡直是回到了用C寫CGI程序的惡夢時(shí)代。
如果你的輸出是一個(gè)復(fù)雜的表格,比較方便的方法我想還是用一個(gè)你所熟悉的HTML編輯器編寫一個(gè)“模板”,然后在把P代碼“嵌入”進(jìn)去。盡管這種P代碼被有些專家指責(zé)為“空心粉”,它的確有個(gè)缺點(diǎn)是代碼比較難管理和重復(fù)使用,但是程序設(shè)計(jì)永遠(yuǎn)需要的就是這樣的權(quán)衡。我個(gè)人認(rèn)為,對于中、小型項(xiàng)目,比較理想的結(jié)構(gòu)是把數(shù)據(jù)表示(或不嚴(yán)格地稱作WEB界面相關(guān))的部分用P寫,和界面不相關(guān)的放在Bean里面,一般情況下是不需要直接寫Servlet的。
如果你覺得這種方法不是非常的OO(Object Oriented),你可以繼承(extends)它一把,再寫一個(gè)bean把用戶管理的功能包進(jìn)去。
到底能不能兼容?
我測試了三種Java應(yīng)用服務(wù)器環(huán)境,Resin 1.2.3、Sun J2EE 1.2、IBM WebSphere 3.5,所幸的是這個(gè)Java Bean都沒有任何問題,原因其實(shí)是因?yàn)樗鼉H僅是個(gè)計(jì)算程序,不涉及操作系統(tǒng),I/O設(shè)備。其實(shí)用其它語言也能簡單地實(shí)現(xiàn)它的兼容性的,Java的唯一優(yōu)點(diǎn)是,你只需提供一個(gè)形態(tài)的運(yùn)行碼就可以了。請注意“形態(tài)”二字,現(xiàn)在很多計(jì)算結(jié)構(gòu)和操作系統(tǒng)除了語言本身之外都定義了大量的代碼形態(tài),很簡單的一段C語言核心代碼,轉(zhuǎn)換成不同形態(tài)要考慮很多問題,使用很多工具,同時(shí)受很多限制,有時(shí)候?qū)W習(xí)一種新的“形態(tài)”所花費(fèi)的精力可能比解決問題本身還多。比如光Windows就有EXE、Service、的普通DLL、COM DLL以前還有OCX等等等等,在Unix上雖說要簡單一些,但要也要提供一個(gè).h定義一大堆宏,還要考慮不同平臺(tái)編譯器版本的位長度問題。我想這是Java對我來說的一個(gè)非常重要的魅力吧。
MD5算法說明
一、補(bǔ)位
二、補(bǔ)數(shù)據(jù)長度
三、初始化MD5參數(shù)
四、處理位操作函數(shù)
五、主要變換過程
六、輸出結(jié)果
補(bǔ)位:
MD5算法先對輸入的數(shù)據(jù)進(jìn)行補(bǔ)位,使得數(shù)據(jù)位長度LEN對512求余的結(jié)果是448。即數(shù)據(jù)擴(kuò)展至K*512+448位。即K*64+56個(gè)字節(jié),K為整數(shù)。
具體補(bǔ)位操作:補(bǔ)一個(gè)1,然后補(bǔ)0至滿足上述要求。
補(bǔ)數(shù)據(jù)長度:
用一個(gè)64位的數(shù)字表示數(shù)據(jù)的原始長度B,把B用兩個(gè)32位數(shù)表示。這時(shí),數(shù)
據(jù)就被填補(bǔ)成長度為512位的倍數(shù)。
初始化MD5參數(shù):
四個(gè)32位整數(shù) (A,B,C,D) 用來計(jì)算信息摘要,初始化使用的是十六進(jìn)制表
示的數(shù)字
A=0X
B=0X89abcdef
C=0Xfedcba98
D=0X
處理位操作函數(shù):
X,Y,Z為32位整數(shù)。
F(X,Y,Z) = X&Y|NOT(X)&Z
G(X,Y,Z) = X&Z|Y?(Z)
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X|not(Z))
主要變換過程:
使用常數(shù)組T, T為32位整數(shù)用16進(jìn)制表示,數(shù)據(jù)用16個(gè)32位
的整數(shù)數(shù)組M表示。
具體過程如下:
/* 處理數(shù)據(jù)原文 */
For i = 0 to N/16-1 do
/*每一次,把數(shù)據(jù)原文存放在16個(gè)元素的數(shù)組X中. */
For j = 0 to 15 do
Set X to M.
end /結(jié)束對J的循環(huán)
/* Save A as AA, B as BB, C as CC, and D as DD.
*/
AA = A
BB = B
CC = C
DD = D
/* 第1輪*/
/* 以 表示如下操作
a = b + ((a + F(b,c,d) + X + T)
/* Do the following 16 operations. */
22 4>
22 8>
>
/* 第2輪* */
/* 以 表示如下操作
a = b + ((a + G(b,c,d) + X + T)
/* Do the following 16 operations. */
>
>
>
/* 第3輪*/
/* 以 表示如下操作
a = b + ((a + H(b,c,d) + X + T)
/* Do the following 16 operations. */
>
/* 第4輪*/
/* 以 表示如下操作
a = b + ((a + I(b,c,d) + X + T)
/* Do the following 16 operations. */
/* 然后進(jìn)行如下操作 */
A = A + AA
B = B + BB
C = C + CC
D = D + DD
end /* 結(jié)束對I的循環(huán)*/
linux omd的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux omd,Linux OMD——優(yōu)雅的監(jiān)控解決方案,MD5加密算法 ASP版的信息別忘了在本站進(jìn)行查找喔。
成都網(wǎng)站推廣找創(chuàng)新互聯(lián),老牌網(wǎng)站營銷公司
成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)(www.cdcxhl.com)專注高端網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì)制作,網(wǎng)站維護(hù),網(wǎng)絡(luò)營銷,SEO優(yōu)化推廣,快速提升企業(yè)網(wǎng)站排名等一站式服務(wù)。IDC基礎(chǔ)服務(wù):云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)、服務(wù)器租用、服務(wù)器托管提供四川、成都、綿陽、雅安、重慶、貴州、昆明、鄭州、湖北十堰機(jī)房互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)。
網(wǎng)頁名稱:Linux OMD——優(yōu)雅的監(jiān)控解決方案 (linux omd)
文章分享:http://m.fisionsoft.com.cn/article/cdghiie.html


咨詢
建站咨詢
