電信營運(yùn)研發(fā)設(shè)計(jì)數(shù)據(jù)采集與整合_第1頁
電信營運(yùn)研發(fā)設(shè)計(jì)數(shù)據(jù)采集與整合_第2頁
電信營運(yùn)研發(fā)設(shè)計(jì)數(shù)據(jù)采集與整合_第3頁
電信營運(yùn)研發(fā)設(shè)計(jì)數(shù)據(jù)采集與整合_第4頁
電信營運(yùn)研發(fā)設(shè)計(jì)數(shù)據(jù)采集與整合_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、電信營運(yùn)設(shè)計(jì)后臺(tái):數(shù)據(jù)采集與整合文檔編號(hào):Version 1.02008年 05 月達(dá)內(nèi) IT 培訓(xùn)集團(tuán)修改記錄摘要日期修改原因版本2008-05-28新建10數(shù)據(jù)采集UI 設(shè)計(jì) (無)二、數(shù)據(jù)采集類圖設(shè)計(jì)(一 ) 數(shù)據(jù)采集客戶端1) 類結(jié)構(gòu)概要說明-類圖2) 類功能結(jié)構(gòu)說明 -時(shí)序圖3) 配置文件說明: 為了保證系統(tǒng)得靈活性,在該系統(tǒng)中把服務(wù)器和本機(jī)有關(guān)的參數(shù)都通過屬性文件配置, 由程序動(dòng)態(tài)讀取。文件名確定為unix perties 矚慫潤厲釤瘞睞櫪廡賴。屬性 key屬性 value 例子備注說明intervalinterval = 60采集的間隔時(shí)間 ,以分鐘為單位ip

2、ip = 0采集點(diǎn)的 IP 地址。sourcefilesourcefile= f:usradmwtmpx采集的源的文件名,包含目錄destinationpathdestinationpath= f:usrhistory采集源的備份目錄,目錄后面必須加目錄分隔符號(hào)。commandcommand=cmd /C move數(shù)據(jù)源被采集的時(shí)候,先移動(dòng)到備份 目錄,這個(gè)屬性設(shè)置數(shù)據(jù)源文件移動(dòng) 的 shell 指令或 dos 指令。historyfilehistoryfile = history.dat由于在采集的時(shí)候有的用戶正在登 錄中,還沒有登出,所以無法處理這 種數(shù)據(jù),這就是不能

3、匹配成對(duì)的數(shù)據(jù)。這些數(shù)據(jù)必須保存起來,在下次 采集的時(shí)候用來匹配,這個(gè)屬性就是 設(shè)置沒有匹配成功的數(shù)據(jù)的保存文 件名。該屬性只指定文件名,目錄采 用上面指定的備份目錄。serveripserverip = 接收服務(wù)器 IPserverport接收服務(wù)器端口。storefilestorefile= store.dat數(shù)據(jù)發(fā)送失敗的臨時(shí)存儲(chǔ)文件。目錄 采用使用上面的指定的備份目錄。4) 類詳細(xì)說明1. 類 CollectionLaunchor 采集主程序類,發(fā)動(dòng)采集線程。創(chuàng)建線程 CollectionThreadth=new CollectionThread啟動(dòng)線程th.star

4、t();a) Main 函數(shù)函數(shù)說明創(chuàng)建 CollectionThread 線程對(duì)象,并調(diào)用 run 函數(shù)啟動(dòng)線程。參數(shù)args:環(huán)境變量參數(shù)返回類型void函數(shù)流程說明b) 注意:該啟動(dòng)器可以由用戶發(fā)起為一個(gè)后臺(tái)服務(wù),也可以由 Unix 的 定時(shí)服務(wù)發(fā)起, 我們采用使用 Unix 發(fā)起的方式。 用戶后臺(tái)服務(wù)發(fā)起 的方式只需要把線程的運(yùn)行方式改變成循環(huán)就是。 聞創(chuàng)溝燴鐺險(xiǎn)愛氌譴凈。2. 類 CollectionThread 采集線程,負(fù)責(zé)啟動(dòng)采集過程。封裝一個(gè)采集線程。 該類主要調(diào)用采集器類 DataCollector 進(jìn)行數(shù)據(jù)采集。該類繼承 JDK 的 Thread 類殘騖樓諍錈瀨濟(jì)溆塹籟。

5、a) 函數(shù) run:函數(shù)說明就是主要?jiǎng)?chuàng)建 DataCollector 對(duì)象,并調(diào)用其 collection 函數(shù)進(jìn)行數(shù)據(jù)采集。 該函數(shù)是 Thread 的 run 函數(shù)覆蓋函數(shù) .參數(shù)void返回類型void流程說明產(chǎn)生 DataCollector 對(duì)象調(diào)用數(shù)據(jù)采集函 數(shù)collect釋放資源線程關(guān)閉 returnb) 函數(shù) start():函數(shù)說明負(fù)責(zé)啟動(dòng)線程,該函數(shù)來自 Thread 線程類,該函數(shù)繼承自 JDK 標(biāo)準(zhǔn)類 Thread。參數(shù)void返回類型voidc) 注意:該線程是否循環(huán)決定采集器啟動(dòng)的方式是否利用 Unix 的定時(shí) 啟動(dòng)功能,如果采用 Unix 的定時(shí)功能,則該線程采集

6、完畢自動(dòng)關(guān)閉 清空。 釅錒極額閉鎮(zhèn)檜豬訣錐。3. 類 DataCollector 負(fù)責(zé)采集環(huán)境的處理與數(shù)據(jù)采集,分析處理。所有的 采集任務(wù)有該類完成,主要獲取本機(jī)IP ,復(fù)制備份并清空日志文件,讀取日志文件,解析日志文件,匹配處理日志登錄/登出記錄獲取用戶登錄時(shí)間,在線用戶下次匹配。 彈貿(mào)攝爾霽斃攬磚鹵廡。a) 函數(shù) getNativeIP函數(shù)說明讀取要采集服務(wù)器的 IP,該 IP 用屬性文件配置。參數(shù)void返回類型String 返回屬性文件中配置的本機(jī)的 IP 地址數(shù)據(jù)b) 函數(shù) initlog ()函數(shù)說明負(fù)責(zé)調(diào)用 Runtime 執(zhí)行 mv shell 指令進(jìn)行日志文件的備份并清空原始

7、文 件。備份的文件名 wtmpx+ 年(4 位)+月(2 位)+日(2位)+時(shí)(2 位), 比如 wtmpx2008053013.參數(shù)void返回類型String 返回的是采集數(shù)據(jù)源的備份文件(包含路徑)注意:利用 Unix 系統(tǒng)的 Kenerl 函數(shù)讀取的時(shí)候, 該文件必須采用 x 結(jié)尾,在這里用 java 處理就不需要。 謀蕎摶篋飆鐸懟類蔣薔。調(diào)用move /var/adm/wtmpx / 指令清空登錄歷史紀(jì)錄c) 函數(shù) mappingLogBuffer函數(shù)說明函數(shù)原型:public MappedByteBuffer mappingLogBuffer(String fileName) 主要

8、把備份的日志文件映射為本地內(nèi)存緩沖,便于后面解析。參數(shù)String filename 備份日志文件名返回類型String 本地文件映射緩沖 MappedByteBuffer已知要采集的日志文件名 filename創(chuàng)建 /var/adm/wtmpx 日志文件的 FileInputStream 流得到FileChannel通過 FileChannel 得到日志文件的內(nèi)存映射 MappedByteBufferd) 函數(shù) parseLogBuffer ,函數(shù)說明函數(shù)原型:private void parseLogBuffer(MappedByteBuffer logbuffer, Vector log

9、ins, Vector logouts) 負(fù)責(zé)解析緩沖的內(nèi)存結(jié)構(gòu),利用參數(shù)返回兩個(gè) Vector 結(jié)構(gòu)對(duì)象,一個(gè)存 放登錄數(shù)據(jù),一個(gè)存放登出數(shù)據(jù)。參數(shù)MappedByteBuffer logbuffer 要解析的本地內(nèi)存緩沖。 Vector logins 返回解析后的登錄數(shù)據(jù)。 Vector logouts 返回解析后的登出數(shù)據(jù)返回類型void位置范圍字節(jié)長度含義000-03132/* user login name */032-0354/* inittab id */036-06732/* device name (console, lnxx) */8#define DEAD_PROCESS

10、 參考】 WTMPX 文件的結(jié)構(gòu)。參考】數(shù)據(jù)登錄登出的判別標(biāo)準(zhǔn)。#define EMPTY#define RUN_LVL#define BOOT_TIME#define OLD_TIME#define NEW_TIME#define INIT_PROCESS#define LOGIN_PROCESS-登錄進(jìn)程#define USER_PROCESS-用戶進(jìn)程-終止進(jìn)程068-0714/* process id */072-0732/* type of entry */074-0752/* process termination*/076-0772/* exit status*/2/* 這是 C

11、 數(shù)據(jù)類型補(bǔ)齊產(chǎn)生的空位 */080-0834/* time entry was made */* seconds */084-0874/* and microseconds */088-0914/* session ID, used for windowing */092-11120/* reserved for future use */112-1132/* significant length of ut host */114-371257/* remote host name */e) 函數(shù) activate函數(shù)說明函數(shù)原型:private Vector activate (Strin

12、g loginFilename) throws InitException負(fù)責(zé)把上次未匹配的數(shù)據(jù)讀取為 Vector 結(jié)構(gòu)。便于后面匹配。參數(shù)是存 放上次未匹配的登錄日志記錄,返回 Vector 結(jié)構(gòu),其中元素類型 LogRecord 。參數(shù)String loginFilename :保存上次未匹配的數(shù)據(jù)的文件名。該文件在屬性配 置文件中設(shè)置。返回類型Vector 上次未匹配的所有登錄數(shù)據(jù)。流程圖:已知要讀取的數(shù)據(jù)文件名 filename函數(shù)說明函數(shù)原型:private Vector match(Vector logins, Vector logouts) throws MatchedExce

13、ption負(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ù)Vector logins 登錄數(shù)據(jù)Vector logouts 登出數(shù)據(jù)返回類型Vector 匹配生成的用戶登錄時(shí)長數(shù)據(jù)f) 函數(shù) match,流程已知 login,logout 兩個(gè)Vector 類型的數(shù)據(jù)結(jié)構(gòu)循環(huán) logout 結(jié)構(gòu)按順序得到 logout 中LogRecord 類型的

14、登出對(duì)象在login 中查找最近 的匹配用戶與IP產(chǎn)生 MatchedRecord 對(duì)象, 并放入 Vector 類型的結(jié)構(gòu)計(jì)算登錄時(shí)間g) 函數(shù) passivate,函數(shù)說明函數(shù)原型:private void passivate(Vector logins, String loginFilename) throws InitException 負(fù)責(zé)把這次沒有匹配好的登錄記錄保存成文件,以便下次采集的時(shí)候匹 配。參數(shù)是沒有匹配好的登錄記錄, 類型是 Vector,其中元素類型是LogRecord.參數(shù)Vector logins 沒有匹配成功的登錄數(shù)據(jù)String loginFilename 保

15、存沒有成功的登錄數(shù)據(jù)的文件名,在屬性配置文 件中設(shè)置。返回類型void流程圖:已知需要保存的 Vector 類型login 結(jié)構(gòu)和文件名 filename打開文件保存結(jié)構(gòu),并關(guān)閉文件h) 函數(shù) collect,函數(shù)說明函數(shù)原型:public void collect() throws CollectionException 負(fù)責(zé)整個(gè)采集過程。這是該類中的唯一的一個(gè) 線程調(diào)用。public 函數(shù),主要供采集參數(shù)void。返回類型void獲取本地 IP getNativeIP初始化日志 文件 initlog注入 LogDealer 類型的 logdealer 對(duì)象日志文件內(nèi)存映射mappingLo

16、gBuffer讀取上次未匹配的數(shù)據(jù) activate解析日志parseLogBuffer登出數(shù)據(jù)匹配 match保存未匹配數(shù)據(jù)passivate調(diào)用 logdealer 的 deal函數(shù)進(jìn)行數(shù)據(jù)處理4. LogRecord 類 ,負(fù)責(zé)登錄 /登出數(shù)據(jù)封裝。成員屬性名成員屬性說明user用戶登錄名visittime用戶登錄 / 登出時(shí)間userip用戶 IPlabip實(shí)驗(yàn)室服務(wù)器 IP5. MatchedRecord 類,負(fù)責(zé)匹配好的數(shù)據(jù)的封裝。成員屬性名成員屬性說明user用戶登錄名logintime用戶登錄時(shí)間logouttime用戶登出時(shí)間labip實(shí)驗(yàn)室服務(wù)器 IPuserip用戶的 I

17、Pduration用戶登錄的時(shí)長數(shù)據(jù)6. CollectionListener 接口,規(guī)范采集好的數(shù)據(jù)的處理方式。a) 抽象函數(shù) deal,函數(shù)說明函數(shù)原型:void deal(Vector matches); 負(fù)責(zé)匹配好數(shù)據(jù)的處理,返回 void, 參數(shù)是 Vector 類型,元素類型是 MatchedRecord,是匹配好的所有登錄時(shí)長數(shù)據(jù)。參數(shù)Vector matches 已經(jīng)匹配好的生成用戶登錄時(shí)長數(shù)據(jù)。返回類型void7. LogDealer 類,負(fù)責(zé)匹配好數(shù)據(jù)的發(fā)送處理,如果發(fā)送失敗,則數(shù)據(jù)被保存。該類主要實(shí)現(xiàn) CollectionListener 接口。 廈礴懇蹣駢時(shí)盡繼價(jià)騷。已

18、知服務(wù)器連接參數(shù)屬性文件加載屬性文件獲取 ip與 porta) 函數(shù) init函數(shù)說明函數(shù)原型:private void init()throws InitException 主要初始化服務(wù)器參數(shù),服務(wù)器參數(shù)使用屬性文件配置 port ,destinationpath , storefile 。,主要包含。 IP ,參數(shù)void返回類型void流程圖:b) 函數(shù) initSocket函數(shù)說明函數(shù)原型:public void initSocket()throws LinkException 主要初始化網(wǎng)絡(luò)連接。如果初始化失敗,則產(chǎn)生異常。參數(shù)void返回類型voidc) 函數(shù) send函數(shù)說明函

19、數(shù)原型:public void send(ObjectOutputStream oos,MatchedRecord data) throws SendException 主要負(fù)責(zé)數(shù)據(jù)發(fā)送。該函數(shù)調(diào)用前先度取歷史發(fā)送失敗數(shù)據(jù)合并。參數(shù)ObjectOutputStream oos :發(fā)送數(shù)據(jù)的網(wǎng)絡(luò)流。MatchedRecord data:要發(fā)送的數(shù)據(jù)。包含上次發(fā)射失敗未發(fā)射的數(shù)據(jù)。返回類型voidd) 函數(shù) receive。函數(shù)說明函數(shù)原型:public int recieve(DataInputStream dis) throws RecieveException 接受服務(wù)器發(fā)送過來的標(biāo)記。為避

20、免數(shù)據(jù)發(fā)送失敗產(chǎn)生數(shù)據(jù)丟失,服務(wù) 器接受數(shù)據(jù)保存成功后發(fā)送一個(gè)成功標(biāo)記,給客戶采集點(diǎn)。該函數(shù)負(fù)責(zé) 接受該標(biāo)記。參數(shù)DataInputStream dis:網(wǎng)絡(luò)接受流。返回類型int 服務(wù)器是否處理成功的標(biāo)記, 0:表示處理成功,否則是失敗。e) 函數(shù) store。函數(shù)說明函數(shù)原型:public void store(String path,String file,V ector matches)throws IOException 當(dāng)數(shù)據(jù)發(fā)送若干次失敗后,客戶采集點(diǎn)就會(huì)把數(shù)據(jù)存儲(chǔ)到臨時(shí)文件中, 在下次采集的時(shí)候在讀取出來合并發(fā)送,該函數(shù)就是把發(fā)送失敗的數(shù)據(jù) 保存到臨時(shí)文件。參數(shù)String p

21、ath, 臨時(shí)保存文件的路徑。String file, 臨時(shí)保存文件名。Vector matches ,發(fā)送失敗后剩余的要保存的數(shù)據(jù)。返回類型voidf) 函數(shù) load。函數(shù)說明函數(shù)原型:public Vector load(String path,String file)throws IOException 發(fā)送失敗的數(shù)據(jù)被臨時(shí)保存起來,便于下次發(fā)送。該函數(shù)就是加載上次 未發(fā)送成功的數(shù)據(jù)。參數(shù)String path :臨時(shí)保存文件的路徑。String file :臨時(shí)保存文件名。返回類型Vector :讀取的上次未保存成功的數(shù)據(jù)。g) 函數(shù) deal函數(shù)說明函數(shù)原型:public void

22、 deal(Vector matches) 該函數(shù)是公有的函數(shù)。封裝整個(gè)發(fā)送過程。參數(shù)Vector matches 采集匹配成功的用戶登錄時(shí)長數(shù)據(jù)。返回類型void打開服務(wù)器連接打開連接判定保存數(shù)據(jù)失敗成功發(fā)送數(shù)據(jù)讀取歷史發(fā)送失敗數(shù)據(jù)并合并現(xiàn)在數(shù)據(jù)成功關(guān)閉連接保存未發(fā)送成功的數(shù)據(jù)流程圖:(二 ) 數(shù)據(jù)采集服務(wù)器端1) 數(shù)據(jù)庫等環(huán)境參數(shù)設(shè)計(jì)屬性 key屬性 value 例子備注說明portport = 9999采集的服務(wù)器端口driverdriver = com.mysql.jdbc.Driver數(shù)據(jù)庫驅(qū)動(dòng)程序類名urlurl = jdbc:mysql:/:3306/netct

23、oss?characterEncoding=gb2312數(shù)據(jù)庫連接 URL 。useruser = root數(shù)據(jù)庫連接用戶名passwordpassword = louisyyy數(shù)據(jù)庫連接口令2)數(shù)據(jù)實(shí)體類(原則上對(duì)應(yīng)數(shù)據(jù)結(jié)構(gòu)的實(shí)體表)1. 類 Detail, 該類的設(shè)計(jì)在后面還要使用。但在本模塊中使用的字段如下:成員屬性名成員屬性說明user用戶登錄名logintime用戶登錄時(shí)間logouttime用戶登出時(shí)間labip實(shí)驗(yàn)室服務(wù)器 IPuserip用戶的 IPduration用戶登錄的時(shí)長數(shù)據(jù)Detail 類對(duì)應(yīng)數(shù)據(jù)庫中對(duì)應(yīng)的 t_detail_x31 張表。3)類結(jié)構(gòu)概要說明 -類圖4

24、) 類功能結(jié)構(gòu)說明 -時(shí)序圖5) 詳細(xì)說明1. ServerLauncher 類:服務(wù)器數(shù)據(jù)接受器啟動(dòng)器 , 主要負(fù)責(zé)啟動(dòng)服務(wù)器接受線 程。a) 函數(shù) main函數(shù)說明主要?jiǎng)?chuàng)建 DataRecieverTh 對(duì)象 , 并調(diào)用起其 start 函數(shù)啟動(dòng)線程。參數(shù)args:環(huán)境變量參數(shù)返回類型void2. DataRecieverTh 類,服務(wù)器接受主線程。是一個(gè)線程類,繼承JDK 的標(biāo)準(zhǔn)線程類 Thread。主要負(fù)責(zé)接受客戶連接,并為每個(gè)客戶啟動(dòng)一個(gè)數(shù)據(jù)接 收線程來進(jìn)行客戶數(shù)據(jù)接收。 煢楨廣鰳鯡選塊網(wǎng)羈淚。a) 成員說明:成員屬性名成員屬性說明collectionth定義的一個(gè) Vector 的

25、數(shù)據(jù)結(jié)構(gòu),便于管理每個(gè)客戶采集點(diǎn)。serversocket服務(wù)器 Socket 對(duì)象。b) 函數(shù) initSocket ,函數(shù)說明函數(shù)原型: private void initSocket() 負(fù)責(zé)網(wǎng)絡(luò)服務(wù)器的初始化。參數(shù)void返回類型voidc) 函數(shù) run:函數(shù)說明函數(shù)原型:public void run()覆蓋 Thread 中的函數(shù),負(fù)責(zé)接收客戶連接,并建立客戶處理線程并啟動(dòng) 線程,并在 collectionth 中記錄該客戶線程處理對(duì)象。參數(shù)void返回類型void3.CollectionTh 類 ,每個(gè)客戶數(shù)據(jù)接收處理類。 該類主要接收采集器發(fā)送過來的數(shù)據(jù), 接收成功后發(fā)送一個(gè)

26、成功標(biāo)志, 然后保存接收的數(shù)據(jù)。 該類繼承 Thread。鵝婭盡損鵪慘歷蘢鴛賴。a) 成員屬性說明成員屬性名成員屬性說明socket每個(gè)客戶 Socket 的代理 socket。inputstream客戶 socket 輸入網(wǎng)絡(luò)流。outputstream客戶 socket 輸出網(wǎng)絡(luò)流。dao專門負(fù)責(zé)把接受的數(shù)據(jù)寫入到數(shù)據(jù)庫。b) 函數(shù) run:接收線程過程 ,主要調(diào)用 receive 私有函數(shù)。 c) 函數(shù) receive:函數(shù)說明函數(shù)原型:public Detail recieve()throws RecieveException通過 inputstream 讀取數(shù)據(jù),并發(fā)送成功標(biāo)記,然后

27、調(diào)用全局的 dao 保存 數(shù)據(jù)。參數(shù)void返回類型Detail 接受到的客戶采集的一個(gè)數(shù)據(jù)。 為保證數(shù)據(jù)的穩(wěn)定性, 沒有采用一 次發(fā)送所有的數(shù)據(jù)的相當(dāng)齪的發(fā)送方式。d) sendFlag 函數(shù):函數(shù)說明函數(shù)原型:public void sendFlag(int flag) throws IOException 向客戶端發(fā)送一個(gè)整數(shù)類型的標(biāo)記。參數(shù)int 表示數(shù)據(jù)是否接受并成功處理的標(biāo)記。 0 表示成功。 -1 表示失敗。返回類型void4. DBEnvInit 類 ,數(shù)據(jù)庫環(huán)境初始化類 , 該類封裝了兩個(gè)函數(shù)工具,完成對(duì)數(shù) 據(jù)庫的連接。a) 函數(shù) getDBParamter,函數(shù)說明函數(shù)原型

28、:public static Properties getDBParamter() 負(fù)責(zé)從屬性文件讀取數(shù)據(jù)庫連接參數(shù)。參數(shù)void返回類型Properties:用字符串 Hash 表的方式返回?cái)?shù)據(jù)連接參數(shù),包含: 驅(qū)動(dòng)類,連接 URL ,連接帳號(hào),連接口令。b) 函數(shù) getConnection 。函數(shù)說明函數(shù)原型:public static Connection getConnection(Properties prop) 負(fù)責(zé)根據(jù)連接屬性打開與數(shù)據(jù)庫的連接參數(shù)Properties prop;數(shù)據(jù)庫連接參數(shù)返回類型Connection :返回一個(gè)對(duì)數(shù)據(jù)庫的連接。注意:該工具可以提供對(duì)數(shù)據(jù)源的

29、支持,在后繼版本中提供數(shù)據(jù)源與Hibernate 的支持描述。5. DetailDAO 類 , 提供對(duì) Detail 數(shù)據(jù)庫的插入等操作訪問。a) 函數(shù) insert 負(fù)責(zé)把接收到的數(shù)據(jù)插入到數(shù)據(jù)庫。函數(shù)說明函數(shù)原型:public void insert(Detail detail) 負(fù)責(zé)把一個(gè)用戶登錄數(shù)據(jù)寫入到數(shù)據(jù)庫。參數(shù)Detail detail :一條用戶登錄數(shù)據(jù)。返回類型void函數(shù)說明函數(shù)原型:public void insert(List list) 負(fù)責(zé)把多個(gè)用戶登錄數(shù)據(jù)寫入到數(shù)據(jù)庫。參數(shù)List list :多個(gè)用戶登錄數(shù)據(jù)。返回類型void6. BasicDAO 泛型類a)

30、封裝對(duì)數(shù)據(jù)庫訪問最常用的規(guī)范。在后面的 DAO 類,缺省必須實(shí)現(xiàn) 該接口。注意:該設(shè)計(jì)中缺少一個(gè)日志類,請(qǐng)自行設(shè)計(jì),或采用 apache 中 log4j.jar三、數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)(一 ) 原始采集用戶登錄時(shí)長明細(xì)表(details x) 其中 x 是 1-31字段英文名字段漢字名類型約束條件說明loginname登錄名Varchar(20)loginip登錄 IPVarchar(24)logintime登錄時(shí)間Timestamplogouttime登出時(shí)間Timestamplabip實(shí)驗(yàn)室 IPVarchar(24)duration登錄時(shí)長long數(shù)據(jù)整合、 UI 設(shè)計(jì)、數(shù)據(jù)采集類圖設(shè)計(jì)1.

31、類結(jié)構(gòu)概要說明1) 數(shù)據(jù)配置環(huán)境參數(shù)設(shè)計(jì)屬性 key屬性 value 例子備注說明driverdriver = com.mysql.jdbc.Driver數(shù)據(jù)庫驅(qū)動(dòng)程序類名urlurl = jdbc:mysql:/:3306/netctoss?characterEncoding=gb2312數(shù)據(jù)庫連接 URL 。useruser = root數(shù)據(jù)庫連接用戶名passwordpassword = louisyyy數(shù)據(jù)庫連接口令dayruledayrule= 4每日整合時(shí)間規(guī)則。monthrule daymonthrule day= 16每月整合時(shí)間規(guī)則 -天monthrule

32、hourmonthrule hour= 4每月整合時(shí)間規(guī)則 -時(shí)intervalinterval=1時(shí)整合規(guī)則 -整合的單位間隔 時(shí)間2) 數(shù)據(jù)實(shí)體類結(jié)構(gòu)(原則上對(duì)應(yīng)數(shù)據(jù)庫表)3) 數(shù)據(jù)整合類2. 類功能結(jié)構(gòu)說明3. 類詳細(xì)說明1) ServerLauncher 類:整合啟動(dòng)程序類。1. 函數(shù) main函數(shù)說明創(chuàng)建 DataIntegratorTh 線程對(duì)象,并調(diào)用 run 函數(shù)啟動(dòng)線程。參數(shù)args:環(huán)境變量參數(shù)返回類型void2) DataIntegratorTh 類:整合線程,主要完成整合的調(diào)用。1. 函數(shù) run函數(shù)說明函數(shù)原型: public void run() 負(fù)責(zé)根據(jù)整合規(guī)則,

33、并調(diào)用相應(yīng)的整合函數(shù)對(duì)數(shù)據(jù)進(jìn)行整合。參數(shù)void3)Integration 接口:整合接口規(guī)范返回類型void1. 函數(shù) init函數(shù)說明函數(shù)原型:public void init() throws IntegrateInitException ; 對(duì)整合的規(guī)則配置參數(shù)進(jìn)行初始化參數(shù)void返回類型void2. 函數(shù) integrate函數(shù)說明函數(shù)原型:public void integrate(int type)throws IntegrationException; 負(fù)責(zé)根據(jù)整合規(guī) 則,并調(diào)用相應(yīng)的整合函數(shù)對(duì)數(shù)據(jù)進(jìn)行整合。參數(shù)int type 指按時(shí) ,天 ,月三種類型整合。返回類型voi

34、d3. 函數(shù) release函數(shù)說明函數(shù)原型: public void release(); 負(fù)責(zé)釋放整合過程中產(chǎn)生的臨時(shí)數(shù)據(jù)。參數(shù)void返回類型voidIntegration 接口。目前4) IntegrationByCall 類:整合的存儲(chǔ)過程調(diào)用實(shí)現(xiàn),實(shí)現(xiàn) 版本中沒有實(shí)現(xiàn)。 籟叢媽羥為贍僨蟶練淨(jìng)。5) IntegrationByClient :整合的 Java 調(diào)用實(shí)現(xiàn)。是目前版本的實(shí)現(xiàn)手段。6) IntegrationFactory 類:利用工廠模式產(chǎn)生的一個(gè)類,負(fù)責(zé)產(chǎn)生整合對(duì)象。1. 函數(shù) getIntegrationCallDAO 該函數(shù)目前不實(shí)現(xiàn)。2. 函數(shù) getIntegr

35、ationClientDAO:函數(shù)說明函數(shù)原型:public static Integration getIntegrationClientDAO()讀取配置參數(shù),產(chǎn)生 IntegrationByClient 對(duì)象,并初始化,并返回給該函 數(shù)的調(diào)用者。該函數(shù)的設(shè)計(jì)請(qǐng)參考 Java 模式設(shè)計(jì)中構(gòu)建模式之工廠模式。該模式的好 處可以屏蔽具體實(shí)現(xiàn)類。參數(shù)void返回類型Integration, 就是整合對(duì)象。與具體的實(shí)現(xiàn)類無關(guān)。7) DBEnvInit 類:見數(shù)據(jù)采集存儲(chǔ)中的說明。8) ConnectionPool 類:該類的設(shè)計(jì)是故意設(shè)計(jì)的,主要想認(rèn)識(shí)一下連接池的設(shè)計(jì) 原理,與實(shí)現(xiàn)方法。1. 函數(shù)

36、 getConnection函數(shù)說明函數(shù)原型:public Connection getConnection() throws DBException 從連接池中獲取一個(gè)連接,在目前版本中,池的大小固定為 在實(shí)際實(shí)現(xiàn)過程中采用 1 的池。1。參數(shù)void返回類型Connection,就是連接對(duì)象。2. 函數(shù) open函數(shù)說明函數(shù)原型:private void open()throws DBException 負(fù)責(zé)調(diào)用 DBEnvInit 中的函數(shù)來打開連接,并形成池。參數(shù)void返回類型void3. 函數(shù) close函數(shù)說明函數(shù)原型:public void close() 負(fù)責(zé)關(guān)閉池中的某個(gè)連

37、接,由于目前版本設(shè)計(jì)一個(gè)連接,關(guān)閉就直接關(guān) 閉所有連接,沒有設(shè)計(jì)參數(shù)。參數(shù)void返回類型void9) BasicIntegrateDAO 負(fù)責(zé)所有整合的實(shí)現(xiàn),該類中應(yīng)該實(shí)現(xiàn)一個(gè)數(shù)據(jù)庫連接注 入:1. 函數(shù): integratByHour函數(shù)說明函數(shù)原型:void integratByHour(int year,int month,int day,int hour)throws IntegrationException;負(fù)責(zé)按用戶進(jìn)行時(shí)整合。參數(shù)int year,數(shù)據(jù)整合的年 int month, 數(shù)據(jù)整合的月 int day, 數(shù)據(jù)整合的天int hour ,數(shù)據(jù)整合的時(shí)返回類型void2.

38、 函數(shù): integratByDay函數(shù)說明函數(shù)原型:void integratByDay(int year,int month,int day)throws IntegrationException; 負(fù)責(zé)按用戶進(jìn)行天整合。參數(shù)int year,數(shù)據(jù)整合的年int month, 數(shù)據(jù)整合的月 int day, 數(shù)據(jù)整合的天返回類型void3. 函數(shù): integratByMonth函數(shù)說明函數(shù)原型:void integratByMonth(int year,int month)throws IntegrationException; 負(fù)責(zé)按用戶進(jìn)行月整合。參數(shù)int year,數(shù)據(jù)整合的年int month, 數(shù)據(jù)整合的月返回類型void4. 函數(shù): integratByHourIP函數(shù)說明函數(shù)原型:void integratByHourIP(int year,int month,int day,int hour)throws IntegrationException;負(fù)責(zé)按實(shí)驗(yàn)室服務(wù)器進(jìn)行時(shí)整合。參數(shù)int year,數(shù)據(jù)整合的年 in

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論