freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

linux基于c實現(xiàn)的郵件服務(wù)器性能監(jiān)控系統(tǒng)的設(shè)計(論文)(doc畢業(yè)設(shè)計論文)-wenkub.com

2025-06-16 14:13 本頁面
   

【正文】 小部分的努力,可以獲得大的收獲;起關(guān)鍵作用的小部分,通常就能主宰整個組織的產(chǎn)出、盈虧和成敗。杜哈提說,不論他出多小錢的薪水,都不可能找到一個具有兩種能力的人。只要把問題想透徹了,才能找到問題到底是什么,才能找到解決問題最有效的手段。發(fā)現(xiàn)問題關(guān)鍵在許多領(lǐng)導(dǎo)者看來,高效能人士應(yīng)當(dāng)具備的最重要的能力就是發(fā)現(xiàn)問題關(guān)鍵能力,因為這是通向問題解決的必經(jīng)之路?!备惶m克林將自己一生的成就歸功于對“在一定時期內(nèi)不遺余力地做一件事”這一信條的實踐。以下為贈送文檔,祝你事業(yè)有成,財源廣進(jìn),身體健康,家庭和睦?。?!高效能人士的50個習(xí)慣l 在行動前設(shè)定目標(biāo)有目標(biāo)未必能夠成功,但沒有目標(biāo)的肯定不能成功。參考文獻(xiàn)《UML用戶指南》 Grady Booch等著, 邵維忠等譯, 機(jī)械工業(yè)出版社, 2001《Linux編程寶典》 John Goerzen著, 魏永明等譯, 電子工業(yè)出版社, 2000《Oracle8i for Linux 實用指南》 Steve Bobrowski著,劉藝譯, 機(jī)械工業(yè)出版社,2001《Oracle9i Pro*C/C++編程指南》 王海亮等著, 中國水利水電出版社, 2003《C/C++程序員實用大全》 Kris Jamsa等著, 張春暉等譯, 中國水利水電出版社, 1999《Essential C++中文版》 Stanley B. Lippman著, 侯捷譯, 華中科技大學(xué)出版社, 2001《淺談軟件開發(fā)中的需求開發(fā)及其管理》 邵建偉, 計算機(jī)時代, 2003年第8期以下內(nèi)容與本文檔無關(guān)!?。∫韵聝?nèi)容與本文檔無關(guān)?。?!。筆者真心的希望能有一個公證的組織通過收費郵箱評測活動,為網(wǎng)民提供多一些技術(shù)指標(biāo)、定量的分析,為郵件服務(wù)提供商提供服務(wù)品質(zhì)的考評依據(jù),從而提高互聯(lián)網(wǎng)收費服務(wù)質(zhì)量,推動網(wǎng)絡(luò)收費服務(wù)市場的健康、有序的發(fā)展。在網(wǎng)絡(luò)信息高速路上,電子郵件已經(jīng)成為人們生活、工作中不可或缺的通訊手段。 在可識別的網(wǎng)絡(luò)服務(wù)名下輸入錯誤的用戶名、密碼,如圖65所示。 Oracle服務(wù)器未開機(jī),或者配置不正確,導(dǎo)致監(jiān)聽器不能正常工作,如圖63所示。 用戶在未啟動系統(tǒng)的前提下,執(zhí)行stop命令,程序可以正常處理這一問題,如圖61所示。首先我們應(yīng)該將隨著系統(tǒng)不斷修改而不斷變化的一些內(nèi)容提取出來定義為一些變量,如生成的目標(biāo)文件名字,可執(zhí)行文件名字,以及一些編譯選項,如下所示:OBJS = EXECUTABLE = monitorCC = g++CFLAGS = WallCOMPILE = $(CC) $(CFLAGS) –c接下來我們進(jìn)行程序的連接工作,如下所示:all: $(EXECUTABLE)$(EXECUTABLE): $(OBJS) $(CC) L$(ORACLE_HOME)/lib lclntsh o $(EXECUTABLE) $(OBJS)由于在make中存在一種依賴性,表現(xiàn)在:冒號左邊的項必須和右邊的項具有相同的更新時間,或者更近的更新時間。當(dāng)程序變得越來越大的時候,對它們的管理過程也變得越來越復(fù)雜,并需要花費越來越多的時間。經(jīng)過以上分析后,我們得出網(wǎng)絡(luò)流量信息采集的順序圖,如圖55所示。而對于硬盤信息,在所有分區(qū)的可用空間采集完畢后還必須通過計算以得到最終需要的信息,getTotalVal函數(shù)負(fù)責(zé)對向量中的信息進(jìn)行計算,由于計算后此向量便已不再有用,因此對已用空間的采集可以在清空該向量后繼續(xù)使用,不必另申請一個向量,故只須維護(hù)一個MultiInfo對象。因為其中的一些操作,如根據(jù)文件指針找到我們所需要的元素(到達(dá)任一行,任一列),將需要的信息保存到字符串變量中,不僅僅在SingleInfo中使用,在稍后我們介紹的MultiInfo中也同樣需要使用,因此將其抽象為基類(Information)供這兩個子類共同使用,符合面向?qū)ο缶幊趟枷?,提高代碼質(zhì)量,避免同樣功能代碼的重復(fù)編寫。這就要求在使用這兩個模塊之前,必須先利用各自構(gòu)造函數(shù)指定其信息存儲的具體位置,以下其他模塊的設(shè)計也均具有該特點。PIDTTYTIMECMD19219tty100:00:00sh19220tty100:00:00ps表44(進(jìn)程文件格式)圖44(進(jìn)程信息收集順序圖)4.3 網(wǎng)絡(luò)流量信息收集本部分首先記錄當(dāng)前時間,并使用Shell取得從開機(jī)到現(xiàn)在的所有包流量并存入文件中,格式如表45所示,通過網(wǎng)絡(luò)流量采集(下一章第三節(jié)來介紹)取得我們需要的信息,其中宿主變量in_all、in_ok、out_all、out_ok存儲的分別是接收包的總數(shù)量、成功接收包的數(shù)量、總發(fā)送包的數(shù)量、成功發(fā)送包的數(shù)量,然后通過調(diào)用sleep函數(shù)使程序睡眠用戶所指定的監(jiān)視時間,當(dāng)程序繼續(xù)執(zhí)行時,我們再次使用Shell取得開機(jī)以來的所有包流量,兩次取得流量的差便是監(jiān)視時間內(nèi)的包流量。通過調(diào)用硬盤信息采集模塊取得已用硬盤信息和可用硬盤信息,分別保存到宿主變量used_disk和free_disk中。圖41(CPU信息收集順序圖)內(nèi)存信息收集的程序流程與CPU信息收集基本相同,內(nèi)存信息文件的存儲格式如表42所示。CPUINFO39。4.1 CPU和內(nèi)存信息收集的設(shè)計CPU信息收集工作由CPUOra類中的cpuTrans函數(shù)來完成,我們首先需要定義五個宿主變量:cur_time用來存儲測試開始時間,lasttime為每次測試持續(xù)時間,sys_cpu和usr_cpu分別用來存儲CPU系統(tǒng)占用率和用戶占用率(分別對應(yīng)表41的%system和%user兩項),還有一個flag是用來標(biāo)識CPUINFO表是否存在于數(shù)據(jù)庫中。 //標(biāo)志}因為我們系統(tǒng)中只需要使用一個信號量,故sem_num設(shè)置為0,使其對應(yīng)于我們在前面創(chuàng)建的信號量,sem_op指定了要完成的操作,正數(shù)表明信號量值應(yīng)該增加,表示資源的釋放,對應(yīng)于我們的release()函數(shù),而負(fù)數(shù)表明從信號量值中減去相應(yīng)的值,表示資源的消耗,對應(yīng)于我們的request()函數(shù)。在request()和release()中,通過填充sembuf結(jié)構(gòu)成員并調(diào)用函數(shù)semop(int semid, struct sembuf * sops, unsigned nsops)來實現(xiàn)信號量的使用狀況。 unsigned short int * array。如下來定義該union:if defined(__GNU_LIBRARY__) amp。接下來的五位分別用來存儲五個子進(jìn)程的進(jìn)程號,這樣當(dāng)用戶啟動stop進(jìn)程時,我們只須從共享內(nèi)存中讀到這五個子進(jìn)程號,便可以正常終止程序。我們可以通過調(diào)用 key_t ftok(const char* path, int id)函數(shù)來產(chǎn)生key值,再進(jìn)而由key值得到相同的共享內(nèi)存id。3.2 共享內(nèi)存的使用在上一節(jié)中我們詳細(xì)說明了如何將我們的程序放在后臺執(zhí)行,這里又有一個新的問題,程序在后臺運行,我們?nèi)绾蝸斫K止該程序?當(dāng)然可以讓用戶來手工終止每一個子進(jìn)程,這時父進(jìn)程發(fā)現(xiàn)所有子進(jìn)程都已經(jīng)結(jié)束,也就不再等待,程序自然正常退出,但畢竟把工作交給用戶來做,不是一件好事,因此我們設(shè)計了stopMonitor來實現(xiàn)監(jiān)視器的終止工作,這就要求stop進(jìn)程必須了解start進(jìn)程中的一些信息,因此需要我們上一節(jié)提到的共享內(nèi)存來完成這兩個進(jìn)程間的通信。為防止這一點,將文件創(chuàng)建掩模清除:umask(0)。一般需要將工作目錄改變到根目錄。按如下方法關(guān)閉它們:for(i=0。但它可以重新申請打開一個控制終端。但第一點已經(jīng)保證進(jìn)程不是會話組長??刂平K端,登錄會話和進(jìn)程組通常是從父進(jìn)程繼承下來的。//是父進(jìn)程,結(jié)束父進(jìn)程,子進(jìn)程繼續(xù)2. 脫離控制終端,登錄會話和進(jìn)程組:先介紹一下Linux中的進(jìn)程與控制終端,登錄會話和進(jìn)程組之間的關(guān)系:進(jìn)程屬于一個進(jìn)程組,進(jìn)程組號(GID)就是進(jìn)程組長的進(jìn)程號(PID)。在我們的程序當(dāng)中,需要建立五個子進(jìn)程,并在每個子進(jìn)程中無終止地運行相應(yīng)對象的監(jiān)視,直到用戶決定停止該子進(jìn)程;而父進(jìn)程在創(chuàng)建完子進(jìn)程后必須等待所有這些子進(jìn)程的執(zhí)行,一方面防止子進(jìn)程成為僵尸進(jìn)程(zombie),另一方面在所有子進(jìn)程都結(jié)束后才可以與數(shù)據(jù)庫斷開連接,父進(jìn)程等待子進(jìn)程通過使用waitpid函數(shù)來實現(xiàn)。為什么取這個名字呢?因為一個進(jìn)程在運行中,如果使用了fork,就產(chǎn)生了另一個進(jìn)程,于是進(jìn)程就“分叉”了,所以這個名字取得很形象。而數(shù)據(jù)段則存放程序的全局變量,常數(shù)以及動態(tài)數(shù)據(jù)分配的數(shù)據(jù)空間。為了滿足以上要求,系統(tǒng)中引入多進(jìn)程概念,我們在第一章已經(jīng)介紹了多進(jìn)程的概念,下面針對本系統(tǒng)說一下如何使用多進(jìn)程。順序圖分別如圖31和圖32所示。圖22(類圖)2.3.2 數(shù)據(jù)庫設(shè)計當(dāng)我們?nèi)〉脭?shù)據(jù)后必須將值保存在數(shù)據(jù)庫中,在數(shù)據(jù)庫中各種信息保存表格的格式設(shè)計是我們這一小節(jié)所要完成的任務(wù)。u Information:在仔細(xì)考慮SingleInfo和MultiInfo兩個類后,發(fā)現(xiàn)兩個類中有很多公共的東西,因此將其公共部分抽象為一個基類——Information,e_to_line函數(shù)使當(dāng)前文件指針到達(dá)具體某一行的開頭(文件指針和要達(dá)到的行數(shù)均由參數(shù)給定),而e_to_string函數(shù)使這個文件指針達(dá)到它當(dāng)前所在行的某個字符串,也可以說是具體某一列(文件指針和要達(dá)到的列數(shù)同樣由參數(shù)設(shè)定),saveVal函數(shù)通過調(diào)用e_to_line和e_to_string函數(shù)來完成將當(dāng)前文件指針?biāo)肝募械哪骋恍猩系哪硞€字符串(由參數(shù)設(shè)定)保存在成員變量_value中,以供子類使用。硬盤信息和網(wǎng)絡(luò)流量信息在采集數(shù)據(jù)后還需要額外的計算,這部分內(nèi)容分別放到各自類中,由getTotalVal函數(shù)來完成u SingleInfo:由于CPU、內(nèi)存信息均為單條確定信息,為了減少代碼量、提高代碼的復(fù)用率,我們將CPU和內(nèi)存信息采集共通部分的采集由getInfo函數(shù)來完成。這些類被Monitor所使用,因此他們之間的關(guān)系為單向關(guān)聯(lián)關(guān)系。監(jiān)視對象測試間隔監(jiān)視時間采集模塊收集模塊CPU15秒15秒CPUInfoCPUOra內(nèi)存15秒15秒MemInfoMemOra硬盤30分鐘瞬時DiskInfoDiskOra進(jìn)程1分鐘瞬時PsInfoPsOra網(wǎng)絡(luò)流量15秒15秒PackInfoPackOra表21監(jiān)視對象監(jiān)視信息采集函數(shù)收集函數(shù)CPU系統(tǒng)使用率sysCPUInfocpuTrans用戶使用率usrCPUInfo內(nèi)存空閑數(shù)量freeMemInfomemTrans使用數(shù)量usedMemInfo硬盤空閑數(shù)量freeDiskInfodiskTrans使用數(shù)量usedDiskInfo進(jìn)程進(jìn)程號psPIDpsTrans進(jìn)程名字psCMD網(wǎng)絡(luò)流量發(fā)送包的總量outPackAllpackTrans成功發(fā)送的數(shù)量outPackOK接收包的總量inPackAll成功接收的數(shù)量inPackOK表22下面來設(shè)計系統(tǒng)中使用的各個功能模塊的作用,同時確定其成員函數(shù):u Monitor:郵件服務(wù)器的性能監(jiān)視系統(tǒng)的啟動由Monitor類中的startMonitor函數(shù)來完成,而程序的終止則有函數(shù)stopMonitor來完成,initDeamon為守護(hù)進(jìn)程,負(fù)責(zé)將系統(tǒng)放在后臺運行,以免獨占終端,transaction為startMonitor的一部分,負(fù)責(zé)并發(fā)運行對各個對象的性能監(jiān)視。4. 將得到的數(shù)據(jù)信息保存到先前連接的數(shù)據(jù)庫中。這個步驟是對用戶業(yè)務(wù)需求的一個升華,是一個把用戶業(yè)務(wù)管理流程優(yōu)化,轉(zhuǎn)化為軟件產(chǎn)品,從而提升管理而實現(xiàn)的質(zhì)的飛躍,這一步是否成功,直接關(guān)系到開發(fā)出來的軟件產(chǎn)品能否得到用戶認(rèn)可,順利交付給客戶,客戶能否真正運用我們的產(chǎn)品幫助他解決業(yè)務(wù)或管理問題。程序運行后為了不獨占終端,將其放入后臺執(zhí)行;程序運行后使用共享內(nèi)存存儲其相關(guān)信息,以便與程序終止進(jìn)程之間進(jìn)行通信。并提供較好的可擴(kuò)展性,以方便日后監(jiān)測對象的增加。第二章 基于Mailserver性能監(jiān)視系統(tǒng)建模2.1 可行性分析可行性分析(Feasibility Analysis)也稱為可行性研究,是在系統(tǒng)調(diào)查的基礎(chǔ)上,針對新系統(tǒng)的開發(fā)是否具備必要性和可能性,對新系統(tǒng)的開發(fā)從技術(shù)、經(jīng)濟(jì)、社會等各方面進(jìn)行分析和研究,以避免投資失誤,保證新系統(tǒng)的開發(fā)成功。信號燈有以下兩種類型:178。因此,采用共享內(nèi)存的通信方式效率是非常高的。對于像管道和消息隊列等通信方式,則需要在內(nèi)核和用戶空間進(jìn)行四次的數(shù)據(jù)拷貝,而共享內(nèi)存則只拷貝兩次數(shù)據(jù)[1]:一次從輸入文件到共享內(nèi)存區(qū),另一次從共享內(nèi)存區(qū)到輸出文件。兩個不同進(jìn)程A、B共享內(nèi)存的意思是,同一塊物理內(nèi)存被映射到進(jìn)程A、B各自的進(jìn)程地址空間。它可以在Linux系統(tǒng)啟動時從啟動腳本/etc/,可以由作業(yè)規(guī)劃進(jìn)程crond啟動,還可以由用戶終端(通常是shell)執(zhí)行。守護(hù)進(jìn)程最重要的特性是后臺運行,在這一點上DOS下的常駐內(nèi)存程序TSR與之相似。主控程序又產(chǎn)生一個這樣的進(jìn)程對付,將程序設(shè)計成一個進(jìn)程只處理一次查詢即可,這個特點是操作系統(tǒng)的特點,并通過一定的通訊機(jī)制將它們有機(jī)地結(jié)合在一起,至少從人的時間觀念上來說是這樣的。一些小問題的計算是可以互不干擾的,首先將問題分解成一個個小問題,讓幾個程序精誠合作,(3)系統(tǒng)層次的保存:pointer,指向棧中函數(shù)調(diào)用的實參位置),block,進(jìn)程控制塊指針),PCBP(pointerPSW(processorMEMORY)的保存。包括正文段(TEXT),每個進(jìn)程都有自己的運行環(huán)境以使得在CPU做進(jìn)程切換時不會忘記該進(jìn)程已計算了一半的半成品
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1