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

正文內(nèi)容

畢業(yè)論文-基于java開發(fā)的電信ip計(jì)費(fèi)系統(tǒng)(編輯修改稿)

2024-09-06 22:53 本頁面
 

【文章內(nèi)容簡介】 可以由用戶發(fā)起為一個(gè)后臺(tái)服務(wù),也可以由操作系統(tǒng)為UNIX的客戶端的定時(shí)服務(wù)發(fā)起,課題在后期會(huì)設(shè)計(jì)一個(gè)測試界面,因此采用用戶發(fā)起的方式。用戶后臺(tái)服務(wù)發(fā)起的方式只需要把線程的運(yùn)行方式改變成循環(huán)就可以。而UNIX客戶端定時(shí)服務(wù)則更方便一些?!☆怌ollectionThread 類CollectionThread 采集線程,負(fù)責(zé)啟動(dòng)采集過程。封裝一個(gè)采集線程。該類主要調(diào)用采集器類DataCollector進(jìn)行數(shù)據(jù)采集。該類繼承JDK的Thread類。該類包含函數(shù)如下:(1)run函數(shù) 該函數(shù)的主要任務(wù)就是創(chuàng)建DataCollector對(duì)象,并調(diào)用其collection函數(shù)進(jìn)行數(shù)據(jù)采集。該函數(shù)是Thread的run函數(shù)的覆蓋函數(shù),即重寫了該父類函數(shù)。run函數(shù)流程說明:圖43 run函數(shù)流程圖(2)start函數(shù) 該函數(shù)負(fù)責(zé)啟動(dòng)線程,來自Thread線程類,該函數(shù)繼承自JDK標(biāo)準(zhǔn)類Thread。該線程是否循環(huán)決定采集器啟動(dòng)的方式是否利用客戶端操作系統(tǒng)的定時(shí)啟動(dòng)功能,如果采用客戶端操作系統(tǒng)的定時(shí)功能,則該線程采集完畢自動(dòng)關(guān)閉清空。 類DataCollector 類DataCollector負(fù)責(zé)采集環(huán)境的處理與數(shù)據(jù)采集,分析處理。所有的采集任務(wù)有該類完成,主要獲取本機(jī)IP,復(fù)制備份并清空日志文件,讀取日志文件,解析日志文件,匹配處理日志登錄/登出記錄獲取用戶登錄時(shí)間,在線用戶下次匹配。該類中包含的函數(shù)如下:(1)getNativeIP函數(shù) 該函數(shù)負(fù)責(zé)讀取要采集服務(wù)器的IP地址,該IP值由屬性文件進(jìn)行配置。此函數(shù)的返回值類型為String類型,即IP字符串。(2)initlog函數(shù) 該函數(shù)負(fù)責(zé)調(diào)用Runtime執(zhí)行mv shell指令進(jìn)行日志文件的備份并清空原始文件。備份的文件名wtmpx+年(4位)+月(2位)+日(2位)+時(shí)(2位),例如:wtmpx2009053013。該函數(shù)的返回值類型為String類型,返回的是采集數(shù)據(jù)源的備份文件路徑。在利用客戶端Unix操作系統(tǒng)的Kernel函數(shù)讀取的時(shí)候,該文件必須采用x結(jié)尾,在本系統(tǒng)中由于用java進(jìn)行處理就不需要這樣操作。(3)mappingLogBuffer函數(shù) 該函數(shù)主要把作為參數(shù)傳入的備份的日志文件映射為本地內(nèi)存緩沖,便于后面解析。返回值為MappedByteBuffer類型,即內(nèi)存緩沖。(4)parseLogBuffer函數(shù) 負(fù)責(zé)解析緩沖的內(nèi)存結(jié)構(gòu),利用參數(shù)返回兩個(gè)Vector結(jié)構(gòu)對(duì)象,一個(gè)存放登錄數(shù)據(jù),一個(gè)存放登出數(shù)據(jù)。其中,3個(gè)參數(shù)分別為:MappedByteBuffer logbuffer 要解析的本地內(nèi)存緩沖;VectorLogRecord logins返回解析后的登錄數(shù)據(jù);Vector LogRecord logouts 返回解析后的登出數(shù)據(jù)【參考】數(shù)據(jù)登錄登出的判別標(biāo)準(zhǔn)。define EMPTY 0define RUN_LVL 1define BOOT_TIME 2define OLD_TIME 3define NEW_TIME 4define INIT_PROCESS 5define LOGIN_PROCESS 6  登錄進(jìn)程define USER_PROCESS 7  用戶進(jìn)程define DEAD_PROCESS 8  終止進(jìn)程(5)activate函數(shù) 負(fù)責(zé)把上次未匹配的數(shù)據(jù)讀取為Vector結(jié)構(gòu)。便于后面匹配。參數(shù)是存放上次未匹配的登錄日志記錄,返回Vector結(jié)構(gòu),其中元素類型LogRecord。其參數(shù)loginFilename是保存上次未匹配的數(shù)據(jù)的文件名。該文件在屬性配置文件中設(shè)置。返回值類型為VectorLogRecord為上次未匹配的所有登陸數(shù)據(jù)。(6)match函數(shù) 負(fù)責(zé)匹配登錄/登出數(shù)據(jù),并返回用戶登錄時(shí)間數(shù)據(jù)。參數(shù)是兩個(gè)Vector類型的登錄/登出數(shù)據(jù)結(jié)構(gòu),元素類型是LogRecord,返回的是匹配好的用戶登錄時(shí)長記錄,數(shù)據(jù)類型是Vector,其中元素類型是MatchedRecord,詳細(xì)說明請(qǐng) 參考MatchedRecord類的說明。返回值表示匹配生成的用戶登錄時(shí)長數(shù)據(jù)。(7)passivate函數(shù) 負(fù)責(zé)把這次沒有匹配好的登錄記錄保存成文件,以便下次采集的時(shí)候匹配。參數(shù)是沒有匹配好的登錄記錄,類型是Vector,其中元素類型是LogRecord。(8)collect函數(shù) 負(fù)責(zé)整個(gè)采集過程。這是該類中的唯一的一個(gè)public函數(shù),主要供采集線程調(diào)用。 類LogRecord LogRecord類,負(fù)責(zé)登錄/登出數(shù)據(jù)封裝。該類中有四個(gè)屬性,其中user為登陸用戶的用戶登錄名;visittime為用戶登出時(shí)間和登錄時(shí)間的時(shí)間間隔,即為在線時(shí)間;userip是登錄用戶的客戶端主機(jī)的IP地址,以備擴(kuò)展程序,用于統(tǒng)計(jì)使用用戶的區(qū)域;labip為實(shí)驗(yàn)室服務(wù)器的IP地址?!☆怣atchedRecord MatchedRecord類,負(fù)責(zé)匹配好的數(shù)據(jù)的封裝。所謂匹配好的數(shù)據(jù),就是用戶一次登錄與登出為一對(duì)對(duì)應(yīng)數(shù)據(jù)。此對(duì)數(shù)據(jù)需符合一定條件,比如,登出時(shí)間必須大于登錄時(shí)間等。該類中擁有6個(gè)屬性和其所對(duì)應(yīng)的GETTERS和SETTERS,其中user為登錄用戶名;logintime為用戶登錄時(shí)間;logouttime為用戶登出時(shí)間;labip為實(shí)驗(yàn)室服務(wù)器IP地址;userip為用戶的IP地址;duration為用戶登錄的時(shí)長數(shù)據(jù)。 接口CollectionListener CollectionListener接口,對(duì)于軟件開發(fā)人員而言,一個(gè)好的程序設(shè)計(jì)應(yīng)該是面向接口編程,即為抽象編程[12]。具體實(shí)現(xiàn)由相應(yīng)的實(shí)現(xiàn)類來完成。此接口在本設(shè)計(jì)中是作為規(guī)范采集好的數(shù)據(jù)的處理方式。此接口中只包含一個(gè)抽象方法deal,是負(fù)責(zé)對(duì)匹配好的數(shù)據(jù)進(jìn)行處理。 類LogDealer LogDealer類,負(fù)責(zé)把匹配好的數(shù)據(jù)做發(fā)送處理,如果發(fā)送失敗,則數(shù)據(jù)被保存。該類主要實(shí)現(xiàn)CollectionListener接口,并重寫其抽象方法。此類在客戶端數(shù)據(jù)采集設(shè)計(jì)中是十分重要的,對(duì)采集數(shù)據(jù)的處理也是本設(shè)計(jì)的重點(diǎn)內(nèi)容之一。其算法設(shè)計(jì)的好壞會(huì)從某種程度上影響程序質(zhì)量的好壞。本類中所包含的重要函數(shù)如下:(1)函數(shù)init 此方法主要任務(wù)是初始化服務(wù)器參數(shù),服務(wù)器參數(shù)使用屬性文件配置,主要包含ip(IP地址),port(服務(wù)器端口),destination(采集源備份目錄),storefile(存儲(chǔ)文件位置)。(2)函數(shù)initSocket 此方法主要為初始化網(wǎng)絡(luò)連接,如果初始化失敗,則產(chǎn)生異常[13]。(3)函數(shù)send 主要負(fù)責(zé)數(shù)據(jù)發(fā)送,該方法調(diào)用前先讀取歷史發(fā)送失敗數(shù)據(jù)并合并。其中,參數(shù)ObjectOutputStream為發(fā)送數(shù)據(jù)的網(wǎng)絡(luò)流。(4)函數(shù)receive 接收服務(wù)器發(fā)送過來的標(biāo)記。為避免數(shù)據(jù)發(fā)送失敗產(chǎn)生數(shù)據(jù)丟失,服務(wù)器接收數(shù)據(jù)保存成功后發(fā)送一個(gè)成功標(biāo)記,給客戶采集點(diǎn)。此函數(shù)即負(fù)責(zé)接收該標(biāo)記。如果接收成功返回0,否則是失敗。(5)函數(shù)store 當(dāng)數(shù)據(jù)發(fā)送若干次失敗后,客戶采集點(diǎn)就會(huì)把數(shù)據(jù)存儲(chǔ)到臨時(shí)文件中,在下次采集的時(shí)候再讀取出來合并發(fā)送,該函數(shù)就是把發(fā)送失敗的數(shù)據(jù)保存到臨時(shí)文件中。(6)函數(shù)load 發(fā)送失敗的數(shù)據(jù)被臨時(shí)保存起來,便于下次發(fā)送。該函數(shù)就是加載上次未發(fā)送成功的數(shù)據(jù)。(7)函數(shù)deal 該函數(shù)重寫了實(shí)現(xiàn)接口中的抽象函數(shù)deal,是共有函數(shù)。封裝整個(gè)發(fā)送過程。 服務(wù)器端數(shù)據(jù)采集 服務(wù)器端數(shù)據(jù)采集設(shè)計(jì)類圖圖44 服務(wù)器端數(shù)據(jù)采集設(shè)計(jì)類圖在本系統(tǒng)中,服務(wù)器需要完成兩項(xiàng)主要任務(wù),其一就是數(shù)據(jù)采集,即采集來自數(shù)據(jù)采集點(diǎn)的數(shù)據(jù),其二就是進(jìn)行數(shù)據(jù)整合。因此本功能板塊的設(shè)計(jì)及實(shí)現(xiàn)和數(shù)據(jù)庫的聯(lián)系密不可分?!?shù)據(jù)庫環(huán)境參數(shù)Port:9999 采集的服務(wù)器端口Driver: 數(shù)據(jù)庫驅(qū)動(dòng)程序類名URL:jdbc:mysql://:3306/netctoss?characterEncoding=gb2312 數(shù)據(jù)庫連接URL[14]User:root 數(shù)據(jù)庫連接用戶名Password:meiyou 數(shù)據(jù)庫連接口令以上參數(shù)為默認(rèn)值,在實(shí)際操作中,會(huì)提供圖形化界面進(jìn)行修改?!☆愒敿?xì)說明 類ServerLauncher ServerLauncher類是服務(wù)器數(shù)據(jù)接受器啟動(dòng)器, 主要負(fù)責(zé)啟動(dòng)服務(wù)器接受線程,即服務(wù)器采集程序的入口。本類中只包含一個(gè)函數(shù),main函數(shù)。其主要任務(wù)是創(chuàng)建DataRecieverTh對(duì)象,并調(diào)用起其start函數(shù)啟動(dòng)線程。 類DataRecieverTh DataRecieverTh類,服務(wù)器接受主線程。是一個(gè)線程類,繼承JDK的標(biāo)準(zhǔn)線程類Thread。主要負(fù)責(zé)接受客戶連接,并為每個(gè)客戶啟動(dòng)一個(gè)數(shù)據(jù)接收線程來進(jìn)行客戶數(shù)據(jù)接收。本類中有兩個(gè)成員屬性,其中,collectionth定義的一個(gè)Vector的數(shù)據(jù)結(jié)構(gòu),便于管理每個(gè)客戶采集點(diǎn),serversocket表示服務(wù)器Socket對(duì)象。還包含如下函數(shù):(1)函數(shù)initSocket 負(fù)責(zé)網(wǎng)絡(luò)服務(wù)器的初始化。(2)函數(shù)run 覆蓋Thread中的函數(shù),負(fù)責(zé)接收客戶連接,并建立客戶處理線程并啟動(dòng)線程,并在CollectionTh中記錄該客戶線程處理對(duì)象?!☆怌ollectionTh CollectionTh類,每個(gè)客戶數(shù)據(jù)接收處理類。該類主要接收采集器發(fā)送過來的數(shù)據(jù),接收成功后發(fā)送一個(gè)成功標(biāo)志,然后保存接收的數(shù)據(jù)。該類繼承Thread。 類DBEnvInit DBEnvInit類,數(shù)據(jù)庫環(huán)境初始化類,該類封裝了兩個(gè)函數(shù)工具,完成對(duì)數(shù)據(jù)庫的連接。 本類中含有如下三個(gè)函數(shù):(1)函數(shù)getDBParamter 負(fù)責(zé)從屬性文件讀取數(shù)據(jù)庫連接參數(shù)。返回類型Properties代表用字符串Hash表的方式返回?cái)?shù)據(jù)連接參數(shù),包含:驅(qū)動(dòng)類,連接URL,連接帳號(hào),連接口令。(2)函數(shù)getConnection 負(fù)責(zé)根據(jù)連接屬性打開與數(shù)據(jù)庫的連接,返回類型Connection代表返回一個(gè)對(duì)數(shù)據(jù)庫的連接。該工具可以提供對(duì)數(shù)據(jù)源的支持。(3)函數(shù)insert 負(fù)責(zé)把接收到的數(shù)據(jù)插入到數(shù)據(jù)庫。參數(shù)detail標(biāo)示一條用戶登錄數(shù)據(jù)?!》盒皖怋asicDAOEntityType封裝對(duì)數(shù)據(jù)庫訪問最常用的規(guī)范。 服務(wù)器端數(shù)據(jù)整合 服務(wù)器端數(shù)據(jù)整合設(shè)計(jì)類圖圖45 服務(wù)器端數(shù)據(jù)整合設(shè)計(jì)類 類詳細(xì)說明 類ServerLauncher ServerLauncher類:整合啟動(dòng)程序類。函數(shù)main創(chuàng)建DataIntegratorTh線程對(duì)象,并調(diào)用run函數(shù)啟動(dòng)線程?!☆怐ataIntegratorTh DataIntegratorTh類:整合線程,主要完成整合的調(diào)用。函數(shù)run負(fù)責(zé)根據(jù)整合規(guī)則,并調(diào)用相應(yīng)的整合函數(shù)對(duì)數(shù)據(jù)進(jìn)行整合?!〗涌贗ntegration Integration接口:整合接口規(guī)范, (1)函數(shù)init 對(duì)整合的規(guī)則配置參數(shù)進(jìn)行初始化(2)函數(shù)integrate 負(fù)責(zé)根據(jù)整合規(guī)則,并調(diào)用相應(yīng)的整合函數(shù)對(duì)數(shù)據(jù)進(jìn)行整合。type指按時(shí),天,月三種類型整合。(3)函數(shù)release 負(fù)責(zé)釋放整合過程中產(chǎn)生的臨時(shí)數(shù)據(jù)?!☆怚ntegrationByCall IntegrationByCall類:整合的存儲(chǔ)過程調(diào)用實(shí)現(xiàn),實(shí)現(xiàn)Integration接口。 類IntegrationByClient IntegrationByClient:整合的Java調(diào)用實(shí)現(xiàn)。是本課題的實(shí)現(xiàn)手段?!☆怚ntegrationFactory IntegrationFactory類:利用工廠模式產(chǎn)生的一個(gè)類,負(fù)責(zé)產(chǎn)生整合對(duì)象。(1)函數(shù)getIntegrationCallDAO 該函數(shù)目前不實(shí)現(xiàn)。(2)函數(shù)getIntegrationClientDAO 讀取配置參數(shù),產(chǎn)生IntegrationByClient對(duì)象,并初始化,并返回給該函數(shù)的調(diào)用者。該函數(shù)的設(shè)計(jì)請(qǐng)參考Java模式設(shè)計(jì)中構(gòu)建模式之工廠模式。該模式的好處可以屏蔽具體實(shí)現(xiàn)類。返回類型Integration,就是整合對(duì)象。與具體的實(shí)現(xiàn)類無關(guān)?!☆怐BEnvInit DBEnvInit類:見數(shù)據(jù)采集存儲(chǔ)中的說明?!☆怌onnectionPool ConnectionPool類:該類的設(shè)計(jì)是故意設(shè)計(jì)的,主要想認(rèn)識(shí)一下連接池的設(shè)計(jì)原理,與實(shí)現(xiàn)方法。(1)函數(shù)getConnection 從連接池中獲取一個(gè)連接,在目前版本中,池的大小固定為1。在實(shí)際實(shí)現(xiàn)過程中采用1的池。返回類型Connection,就是連接對(duì)象。(2)函數(shù)open 負(fù)責(zé)調(diào)用DBEnvInit中的函數(shù)來打開連接并形成池。(3)函數(shù)close 負(fù)責(zé)關(guān)閉池中的某個(gè)連接,由于目前版本設(shè)計(jì)一個(gè)連接,關(guān)閉就直接關(guān)閉所有連接,沒有設(shè)計(jì)參數(shù)?!☆怋asicIntegrateDAO BasicIntegrateDAO負(fù)責(zé)所有整合的實(shí)現(xiàn),該類中應(yīng)該實(shí)現(xiàn)一個(gè)數(shù)據(jù)庫連接注入。(1)函數(shù)integratByHour 負(fù)責(zé)按用戶進(jìn)行時(shí)整合。(2)函數(shù)integratByDay 負(fù)責(zé)按用戶進(jìn)行天整合。(3)函數(shù)integratByMonth 負(fù)責(zé)按用戶進(jìn)行月整合。(4)函數(shù)integratByHourIP 負(fù)責(zé)按實(shí)驗(yàn)室服務(wù)器進(jìn)行時(shí)整合。(5)函數(shù)integratByDayIP 負(fù)責(zé)按實(shí)驗(yàn)室服務(wù)器進(jìn)行天整合。(6)函數(shù)integratByMonthIP 負(fù)責(zé)按實(shí)驗(yàn)室服務(wù)器進(jìn)行月整合。需要說明的是整合過程分兩類:根據(jù)客戶整合和根據(jù)實(shí)驗(yàn)室整合?!?shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)表4—1 按用戶統(tǒng)計(jì)整合的時(shí)記錄表detaildays_x(x是131)字段英文名字段漢字名類型loginname登錄名Varchar(20)loginip登錄IPVarchar(24)logouttime登出時(shí)間Timestamp
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1