![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/6/21/6d66c83d-753c-448b-ac79-83c3241bf60f/6d66c83d-753c-448b-ac79-83c3241bf60fpic.jpg)
![基于ssh的電信數(shù)據(jù)采集與整合_第1頁](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/6/21/6d66c83d-753c-448b-ac79-83c3241bf60f/6d66c83d-753c-448b-ac79-83c3241bf60f1.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于SSH的電信數(shù)據(jù)采集與整合</p><p><b> 序 言</b></p><p> 本課題采用由亞信公司提供的“電信用戶管理和計(jì)費(fèi)系統(tǒng)NetCT OSS” 該系統(tǒng)是一個(gè)典型的基于Unix平臺(tái)、Mysql數(shù)據(jù)庫、Web界面,以Java語言實(shí)現(xiàn)的大型軟件項(xiàng)目,是為電信運(yùn)營的IP計(jì)費(fèi)服務(wù)的。該系統(tǒng)運(yùn)行于Tomcat平臺(tái),采用JavaEE架構(gòu)
2、、Struts框架,Hibernate、Spring技術(shù)及Mysql數(shù)據(jù)庫,并成功運(yùn)行于Sun Solaris UNIX及Windows2000環(huán)境下。該系統(tǒng)主要分為用戶自服務(wù)管理模塊,管理員管理模塊,用戶管理等模塊,資費(fèi)模塊,帳單和帳務(wù)模塊以及數(shù)據(jù)采集與整合模塊。本論文主要闡述的是該系統(tǒng)下的兩個(gè)模塊,數(shù)據(jù)采集與整合。</p><p> 數(shù)據(jù)采集與整合是整個(gè)系統(tǒng)的后臺(tái)實(shí)現(xiàn),功能是定期采集(采集系統(tǒng))原始計(jì)費(fèi)日志
3、文件,并將采集的數(shù)據(jù)封裝整合,然后通過Socket將數(shù)據(jù)傳送到數(shù)據(jù)采集服務(wù)端;中數(shù)據(jù)采集服務(wù)端將數(shù)據(jù)保存到Mysql數(shù)據(jù)庫當(dāng)前時(shí)間所對(duì)應(yīng)的t_daily_x表中,最后周期性進(jìn)行數(shù)據(jù)的整合(整合系統(tǒng))。</p><p> 該課題在設(shè)計(jì)中要解決的主要問題就是在采集過程中,如何解決數(shù)據(jù)匹配問題,如何將采集到的有效數(shù)據(jù)封裝成我們需要的結(jié)構(gòu)并輸出到網(wǎng)絡(luò)另一端,由接收端將數(shù)據(jù)插入到數(shù)據(jù)庫中,如何在數(shù)據(jù)庫中進(jìn)行周期整合,產(chǎn)生
4、系統(tǒng)所需要的各個(gè)表。指導(dǎo)這些問題解決的思想就是文件讀寫、socket編程和UNIX下的作業(yè)操作。</p><p> 在設(shè)計(jì)中主要用到的語言以及技術(shù)主要是Java、jdbc。之所以選擇這些語言及技術(shù),一方面是因?yàn)樵陔娦胚\(yùn)營支撐系統(tǒng)中,安全性有著很關(guān)鍵的作用,安全性直接影響著整個(gè)系統(tǒng)的使用,另一方面是在Java語言中,已經(jīng)存在對(duì)日志文件讀取的各種方法,可以很方便的實(shí)現(xiàn)采集??紤]到數(shù)據(jù)采集與整合的這些諸多特點(diǎn),所以在
5、做該子系統(tǒng)時(shí)選擇了Java、jdbc等語言和技術(shù)。</p><p><b> 第1章 概述</b></p><p> 1.1 課題的背景及意義</p><p> 隨著網(wǎng)絡(luò)的不斷發(fā)展,網(wǎng)絡(luò)幾乎進(jìn)入了家家戶戶。查資料需要網(wǎng)絡(luò),看新聞需要網(wǎng)絡(luò),看電影需要網(wǎng)絡(luò),買東西也需要網(wǎng)絡(luò),網(wǎng)絡(luò)給人們帶來的方便無處不在,人們需要使用網(wǎng)絡(luò)的愿望也越來越大。無法
6、想象人們離開網(wǎng)絡(luò)會(huì)是什么樣的。現(xiàn)階段,要想上網(wǎng)就必須向網(wǎng)絡(luò)運(yùn)營商申請(qǐng)代理服務(wù)器,隨之而產(chǎn)生的問題就是計(jì)費(fèi)和管理問題。另一方面為了讓用戶更放心的使用網(wǎng)絡(luò)運(yùn)營商的代理服務(wù)器,讓用戶隨時(shí)可以查詢自己的信息及使用情況,方便網(wǎng)絡(luò)運(yùn)營商管理一系列的復(fù)雜事物,以及處理大量的數(shù)據(jù),我們?cè)O(shè)計(jì)了本系統(tǒng)。系統(tǒng)只針對(duì)電信運(yùn)營商出租的實(shí)驗(yàn)室,即服務(wù)器。</p><p> 《基于SSH電信系統(tǒng)》是利用J2EE平臺(tái)下的WEB技術(shù)設(shè)計(jì)和運(yùn)行。
7、通過讀取服務(wù)器日志文件采集數(shù)據(jù)然后整和到數(shù)據(jù)庫中,供用戶和管理員使用.其中持久層采用封裝了JDBC的Hibernate框架,數(shù)據(jù)庫采用Mysql,利用Struts框架作為控制器,頁面顯示采用JSP技術(shù),并且用Spring框架整合Hibernate、Struts,完成企業(yè)級(jí)應(yīng)用。</p><p> 1.2 課題內(nèi)容及目標(biāo)</p><p> 基于SSH的電信系統(tǒng)的后臺(tái)數(shù)據(jù)服務(wù)模塊分為數(shù)據(jù)采
8、集和數(shù)據(jù)整合模塊。數(shù)據(jù)采集模塊負(fù)責(zé)讀取數(shù)據(jù)服務(wù)器日志文件,并進(jìn)行過濾,將符合要求的數(shù)據(jù)存入數(shù)據(jù)庫;數(shù)據(jù)整合端負(fù)責(zé)將數(shù)據(jù)庫中的原數(shù)據(jù)按年、月、日進(jìn)行數(shù)據(jù)整合,并將整合后的數(shù)據(jù)存入數(shù)據(jù)庫中。</p><p> 1.3 開發(fā)及運(yùn)行環(huán)境</p><p> 基于SSH的電信系統(tǒng)的后臺(tái)數(shù)據(jù)服務(wù)模塊在開發(fā)時(shí)采用C/S架構(gòu),使用Myeclipce6.0的運(yùn)行環(huán)境;服務(wù)器和客戶機(jī)都采用Windows X
9、P操作系統(tǒng);數(shù)據(jù)庫服務(wù)器是Mysql5.0 ;</p><p> 第2章 系統(tǒng)分析和設(shè)計(jì)</p><p> 2.2系統(tǒng)設(shè)計(jì)思想 隨著網(wǎng)絡(luò)的不斷發(fā)展,網(wǎng)絡(luò)幾乎進(jìn)入了家家戶戶。查資料需要網(wǎng)絡(luò),看新聞需要網(wǎng)絡(luò),看電影需要網(wǎng)絡(luò),買東西也需要網(wǎng)絡(luò),網(wǎng)絡(luò)給人們帶來的方便無處不在,人們需要使用網(wǎng)絡(luò)的愿望也越來越大。無法想象人們離開網(wǎng)絡(luò)會(huì)是什么樣的。現(xiàn)階段,要想上網(wǎng)就必須向網(wǎng)絡(luò)運(yùn)營商申請(qǐng)代理
10、服務(wù)器,隨之而產(chǎn)生的問題就是計(jì)費(fèi)和管理問題。另一方面為了讓用戶更放心的使用網(wǎng)絡(luò)運(yùn)營商的代理服務(wù)器,讓用戶隨時(shí)可以查詢自己的信息及使用情況,方便網(wǎng)絡(luò)運(yùn)營商管理一系列的復(fù)雜事物,以及處理大量的數(shù)據(jù),我們?cè)O(shè)計(jì)了本系統(tǒng)。系統(tǒng)只針對(duì)電信運(yùn)營商出租的實(shí)驗(yàn)室,即服務(wù)器。</p><p> 《基于ssh的電信計(jì)費(fèi)系統(tǒng)》是利用J2EE平臺(tái)下的WEB技術(shù)設(shè)計(jì)和運(yùn)行.通過采集數(shù)據(jù)然后整和到數(shù)據(jù)庫中,供用戶和管理員使用.其中持久層采用
11、封裝了JDBC的Hibernate框架,數(shù)據(jù)庫采用Oracle,利用Struts框架作為控制器,頁面顯示采用JSP技術(shù),并且用Spring框架整和Hibernate、Spring,完成企業(yè)級(jí)應(yīng)用。</p><p> 2.2系統(tǒng)功能描述:</p><p> WEB系統(tǒng)可供用戶和管理員查詢相關(guān)內(nèi)容。通過登錄該系統(tǒng),用戶可以完成查詢帳單,修改個(gè)人信息,瀏覽電信運(yùn)營商提供的各種資費(fèi)服務(wù)。管理員
12、可以完成查詢所有用戶帳單,修改管理員信息,對(duì)用戶進(jìn)行管理(開通,關(guān)閉,刪除用戶帳號(hào)),對(duì)管理員進(jìn)行管理(開通,關(guān)閉,刪除管理員帳號(hào)),修改資費(fèi)項(xiàng)目,查看電信服務(wù)器運(yùn)行情況。</p><p> 采集模塊每小時(shí)執(zhí)行一次,從日志文件中循環(huán)讀取數(shù)據(jù),過濾掉不符合要求的數(shù)據(jù),采集符合要求的數(shù)據(jù)并將數(shù)據(jù)封裝成bIDR結(jié)構(gòu)發(fā)送到中央服務(wù)器端。整合模塊根據(jù)采集到的數(shù)據(jù)進(jìn)行整合并插入到各個(gè)表中,每小時(shí)執(zhí)行一次。</p>
13、;<p> 2.3 需求分析: </p><p><b> 各模塊功能:</b></p><p> 資費(fèi)管理:增、刪、改、查資費(fèi)信息(指定價(jià)格)</p><p> 管理員管理:增、刪、改、查管理員信息</p><p> 用戶管理:增、刪、改、查用戶信息(開通帳號(hào),修改自身信息和需求)</p&
14、gt;<p> 帳單查詢:按月生成用戶月計(jì)費(fèi)帳單</p><p> 帳務(wù)查詢:按月生成帳務(wù)月、年統(tǒng)計(jì)報(bào)表(對(duì)自己業(yè)務(wù)的查詢,對(duì)服務(wù)器查詢,管理)</p><p> 采集模塊:定期采集(次/小時(shí))原始計(jì)費(fèi)Log(wtmpx)文件,整理成bIDR數(shù)據(jù)清單,并上傳給中心處理系統(tǒng)。中心處理系統(tǒng)(接收系統(tǒng))偵聽并收集采集系統(tǒng)發(fā)送的數(shù)據(jù)信息bIDR,并將數(shù)據(jù)保存的數(shù)據(jù)庫表t_det
15、ail_X 。</p><p> 整合模塊:按小時(shí)合并清單表t_detail_X生成所有用戶計(jì)費(fèi)數(shù)據(jù)日表t_day_X;</p><p> 按天合并日表t_day_X生成所有用戶計(jì)費(fèi)數(shù)據(jù)月表t_month_X;</p><p> 按月合并月表t_month_X生成所有用戶計(jì)費(fèi)數(shù)據(jù)年表t_year_X;</p><p> 按小時(shí)合并清單
16、表t_detail_X生成所有Lab_IP數(shù)據(jù)日表t_day;</p><p> 按天合并日表t_day生成所有Lab_ip數(shù)據(jù)月表t_month;</p><p> 按月合并月表t_month生成所有Lab_ip數(shù)據(jù)年表t_year;</p><p><b> 1、用戶管理需求:</b></p><p> 用戶
17、開通管理:管理用戶登陸Open Lab的帳號(hào),包括帳號(hào)開通、暫停(加鎖)、恢復(fù)、刪除。</p><p> 用戶資料管理:管理用戶資料,包括姓名(單位)、身份證號(hào)碼、住址及資費(fèi)信息等。</p><p> 用戶信息:ID,姓名、帳務(wù)帳號(hào)/密碼、Open Lab帳號(hào)/密碼、狀態(tài)(正常/暫停/關(guān)閉)、聯(lián)系電話、Email、開通日期、停止日期、付款方式(現(xiàn)金/郵寄/支票/轉(zhuǎn)帳/電子銀行)、證件號(hào)
18、碼、職業(yè)(學(xué)生/IT從業(yè)人員/非IT從業(yè)人員)、國籍(中國/美國/加拿大/日本/英國/澳大利亞/其他)、性別(男/女)、單位、聯(lián)系地址、郵政編碼。</p><p> 注意:本系統(tǒng)一個(gè)用戶對(duì)應(yīng)一個(gè)帳務(wù)帳號(hào),可以對(duì)應(yīng)多個(gè)Open Lab帳號(hào)。</p><p> 2、管理員管理需求:</p><p> 管理員開通管理:管理用戶登陸NetCT OSS的帳號(hào),包括帳號(hào)開
19、通、暫停(加鎖)、恢復(fù)、刪除。</p><p> 管理員資料管理:管理管理員資料,包括姓名、身份證號(hào)碼、住址等。</p><p> 管理員權(quán)限管理:改變管理員的各類權(quán)限。</p><p> 管理員信息:ID,姓名、帳號(hào)(一個(gè))、密碼、狀態(tài)(正常/暫停/關(guān)閉)、聯(lián)系電話、Email、開通日期、停止日期、權(quán)限</p><p> 注意:一個(gè)
20、用戶對(duì)應(yīng)一個(gè)帳號(hào)。</p><p><b> 3、帳單管理需求:</b></p><p> 整合系統(tǒng)按月生成用戶月帳單。</p><p> 帳單信息 用戶標(biāo)識(shí)信息:帳單ID,姓名、帳號(hào)、狀態(tài)(正常/暫停/關(guān)閉)、聯(lián)系電話、Email、開通日期.</p><p> 帳務(wù)信息:帳號(hào)、日期、登錄時(shí)長(zhǎng)、本月費(fèi)用<
21、/p><p> 帳單明細(xì):登錄時(shí)間退出時(shí)間時(shí)長(zhǎng)</p><p><b> 4、帳務(wù)管理需求:</b></p><p> 按月、年分別生成《月帳務(wù)信息統(tǒng)計(jì)報(bào)表》和《年帳務(wù)信息統(tǒng)計(jì)報(bào)表》。</p><p><b> 月帳務(wù)信息</b></p><p> 生成一個(gè)計(jì)費(fèi)月周
22、期中,每一天的帳務(wù)信息。</p><p> 月帳務(wù)信息:日期時(shí)長(zhǎng)費(fèi)用</p><p><b> 年帳務(wù)信息</b></p><p> 生成一個(gè)計(jì)費(fèi)年周期中,每一月的帳務(wù)信息。</p><p> 年帳務(wù)信息:月份時(shí)長(zhǎng)費(fèi)用</p><p><b> 5、資費(fèi)管理需求:<
23、;/b></p><p> 用戶可以通過登錄系統(tǒng)來查詢電信公司所提供的一些資費(fèi)信息,以方便用戶來使用。管理員通過登錄系統(tǒng)可以根據(jù)公司運(yùn)營情況來向其中增、刪、改資費(fèi)信息。</p><p> 資費(fèi)信息:資費(fèi)ID,資費(fèi)名稱,月租,使用費(fèi),描述</p><p><b> 6、采集模塊需求:</b></p><p>
24、 所需系統(tǒng)文件:計(jì)費(fèi)Log文件</p><p> 數(shù)據(jù)庫表 資料信息表:用戶信息、管理員信息、資費(fèi)信息、URL信息</p><p> 數(shù)據(jù)存儲(chǔ)表:明細(xì)表、日表、月表、年表</p><p><b> 7、整合模塊需求:</b></p><p> 所需數(shù)據(jù)庫表:用戶消費(fèi)明細(xì)表、日表、月表、年表</p>
25、<p> 產(chǎn)生數(shù)據(jù)庫表:服務(wù)器被使用量的日表、月表、年表</p><p><b> 業(yè)務(wù)模型:</b></p><p> 用戶首先通過3A服務(wù)器驗(yàn)證后,可以使用出租實(shí)驗(yàn)室,并記錄用戶的登錄與退出信息,信息經(jīng)過加工處理生成系統(tǒng)所需數(shù)據(jù)持久化在數(shù)據(jù)庫中,供管理和查詢,如下圖:</p><p> 2.4 系統(tǒng)概要設(shè)計(jì)</p&
26、gt;<p> 2.4.1 系統(tǒng)模塊劃分:</p><p> 該系統(tǒng)包括兩個(gè)子系統(tǒng):數(shù)據(jù)采集與整合系統(tǒng)與WEB系統(tǒng)。在數(shù)據(jù)采集與整合系統(tǒng)中又可分為數(shù)據(jù)采集模塊與數(shù)據(jù)整合模塊。</p><p> 數(shù)據(jù)采集與整合系統(tǒng)中的數(shù)據(jù)采集模塊主要功能是將電信服務(wù)器上的計(jì)費(fèi)文件中所有用戶的消費(fèi)記錄采集并且整理出來,然后插入到數(shù)據(jù)庫中。從功能上講,該系統(tǒng)共分為三個(gè)模塊,分別是采集模塊,入
27、庫模塊和網(wǎng)絡(luò)模塊。從部署運(yùn)行方面講該采集系統(tǒng)分為客戶端和服務(wù)器端兩個(gè)部分??蛻舳瞬渴鹪陔娦欧?wù)器上,用于采集和整理計(jì)費(fèi)文件中的原始記錄并把結(jié)果發(fā)送到服務(wù)器端。服務(wù)器端用于接收從客戶端發(fā)送過來的數(shù)據(jù),并持久化到數(shù)據(jù)庫中相應(yīng)的表中。數(shù)據(jù)整合模塊主要功能是將數(shù)據(jù)庫中的用戶原始的消費(fèi)數(shù)據(jù)進(jìn)行整合,形成可供用戶和管理查詢的帳單,如日清單,月報(bào)表,年報(bào)表,以及僅供管理員查詢的帳務(wù)清單,主要用于考察電信服務(wù)器的運(yùn)行情況。該子系統(tǒng)是電信運(yùn)營支撐系統(tǒng)中的
28、后臺(tái)實(shí)現(xiàn),也是WEB系統(tǒng)的依賴。</p><p> WEB系統(tǒng)是整個(gè)電信運(yùn)營支撐系統(tǒng)的表現(xiàn),是和用戶進(jìn)行交互的部分。該系統(tǒng)可供用戶和管理員查詢相關(guān)內(nèi)容。通過登錄該系統(tǒng),用戶可以完成查詢帳單,修改個(gè)人信息,瀏覽電信運(yùn)營商提供的各種資費(fèi)服務(wù)。管理員可以完成查詢所有用戶帳單,修改管理員信息,對(duì)用戶進(jìn)行管理(開通,關(guān)閉,刪除用戶帳號(hào)),對(duì)管理員進(jìn)行管理(開通,關(guān)閉,刪除管理員帳號(hào)),修改資費(fèi)項(xiàng)目,查看電信服務(wù)器運(yùn)行情況
29、。根據(jù)以上功能,該系統(tǒng)可分為六個(gè)模塊,用戶管理模塊,管理員管理模塊,用戶自服務(wù)模塊,帳單管理模塊,資費(fèi)管理模塊,帳務(wù)管理模塊。</p><p> 2.4.2 業(yè)務(wù)流程圖:</p><p> 通過底層的采集與整合模塊將系統(tǒng)所需要的數(shù)據(jù)插入到數(shù)據(jù)庫當(dāng)中,供用戶及管理員使用。由圖可看出,用戶想使用Openlab服務(wù)器就必須通過3A服務(wù)器的驗(yàn)證,驗(yàn)證通過則允許使用并記錄日志。在web部分用戶可
30、以通過登錄系統(tǒng)來查詢及修改自己的信息,管理員可以管理相應(yīng)的信息。如用戶管理和計(jì)費(fèi)管理</p><p> 2.4.3 總體架構(gòu)圖:</p><p> 采集系統(tǒng)解析日志文件中的信息,把對(duì)我們有用的信息采集回來,封裝成一個(gè)結(jié)構(gòu)傳輸?shù)街醒胩幚硐到y(tǒng),然后持久化到數(shù)據(jù)庫當(dāng)中,經(jīng)過整合這些數(shù)據(jù),再分別存儲(chǔ)到不同的表中,供系統(tǒng)使用。通過登錄系統(tǒng),用戶可完成相應(yīng)的操作,包括查詢自己的消費(fèi)信息,修改自己的
31、一些信息等等。管理員則可對(duì)用戶、業(yè)務(wù)及服務(wù)器進(jìn)行管理。</p><p> 2.4.4 課題相關(guān)模塊</p><p> 2.4.4.1 系統(tǒng)部署圖:</p><p> 下圖中“中央處理器”模塊包括:數(shù)據(jù)采集服務(wù)端、數(shù)據(jù)整合端,也包括存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫。</p><p><b> 采集部署圖</b></p>
32、<p><b> 查詢和管理部署圖</b></p><p> 2.4.2.2 部署、用例與組件圖</p><p><b> 用例圖</b></p><p><b> 用例描述</b></p><p><b> 組件圖</b><
33、/p><p><b> 帳務(wù)管理模塊:</b></p><p><b> 用例圖</b></p><p><b> 用例描述</b></p><p><b> 組件圖</b></p><p> 2.5 課題設(shè)計(jì)思想:</
34、p><p> 本人所負(fù)責(zé)模塊的設(shè)計(jì)思想是從記錄有用戶登錄與退出信息的文件中讀取信息,并經(jīng)過解析,提取出有效信息,并封裝成我們所需要的結(jié)構(gòu),通過SOCKET編程將采集到的數(shù)據(jù)提交到中央處理系統(tǒng),經(jīng)過處理插入到數(shù)據(jù)庫的原始數(shù)據(jù)表中。然后經(jīng)過整合,分別整合成符合系統(tǒng)需求所需要的各個(gè)表中,供系統(tǒng)使用,如圖1:</p><p> 圖1:采集與整合設(shè)計(jì)模型</p><p>
35、2.6 課題詳細(xì)描述:</p><p> 用戶首先需要訪問3A服務(wù)器(Authentication:認(rèn)證,Authorization:授權(quán),Accounting:記賬,UNIX系統(tǒng)本身就可以作為3A服務(wù)器),3A服務(wù)器根據(jù)其中事先已經(jīng)記錄的用戶名(UNIX下:/etc/shadow)及密碼(UNIX下:/etc/passwd)進(jìn)行校驗(yàn)。驗(yàn)證通過則3A服務(wù)器允許用戶登錄。登錄成功后,用戶可以使用出租實(shí)驗(yàn)室,并生成
36、一個(gè)LOG文件。同時(shí)將用戶的登錄與退出的所有信息記錄到文件中(UNIX系統(tǒng)中的/var/adm/wtmpx),該文件中記錄的數(shù)據(jù)包括用戶名,用戶ID,用戶IP,進(jìn)程號(hào),登錄類型,狀態(tài),時(shí)間,SESSION ID等信息,這些都是為后面的數(shù)據(jù)采集做準(zhǔn)備。數(shù)據(jù)采集主要是解析3A服務(wù)器記錄的用戶上、下網(wǎng)數(shù)據(jù)形成用戶登錄數(shù)據(jù),通過SOCKET方式將數(shù)據(jù)從3A服務(wù)器發(fā)送至中央處理系統(tǒng),中央處理系統(tǒng)將收到的數(shù)據(jù)進(jìn)行持久化處理保存到Mysql數(shù)據(jù)庫里對(duì)
37、應(yīng)的表(details_x:x代表一個(gè)月中的每一天)中。在這個(gè)過程中所要解決的問題有:(1)如何從文件中讀取數(shù)據(jù);(2)如何過濾并選擇對(duì)我們有用的數(shù)據(jù);(3)如何匹配同一個(gè)用于上、下網(wǎng)的信</p><p> 數(shù)據(jù)整合模塊,將details_x表中的數(shù)據(jù)整合到detaildays_x中,x代表一個(gè)月中的第幾天;將detaildays_x表中的數(shù)據(jù)整合到detailmonths_x表中,x代表一年中的第幾個(gè)月;將d
38、etailmonths_x表中的數(shù)據(jù)整合到detailyears_x表中,x代表每一個(gè)年。另一方面,將details_x表中的數(shù)據(jù)整合到detaildays,detailmonths,detailyears三個(gè)表中,這三個(gè)表分別存放的是每個(gè)服務(wù)器在一天、一個(gè)月以及一年中的使用量,這三張表只能供管理員來使用。這些操作需要在數(shù)據(jù)庫中通過寫存儲(chǔ)過程和定制作業(yè)來完成。</p><p> 需要說明的是上面的幾張表,det
39、aildays_x表是用戶計(jì)費(fèi)數(shù)據(jù)日表(統(tǒng)計(jì)當(dāng)天每小時(shí)每個(gè)服務(wù)器上的每個(gè)用戶的總時(shí)長(zhǎng))每條數(shù)據(jù)記錄的是:一個(gè)服務(wù)器上的一個(gè)用戶某一小時(shí)的總時(shí)長(zhǎng)對(duì)于一個(gè)服務(wù)器上的一個(gè)用戶,最多有24條記錄;detailmonths_x表是用戶計(jì)費(fèi)數(shù)據(jù)月表(統(tǒng)計(jì)當(dāng)月每天每個(gè)服務(wù)器上的每個(gè)用戶的總時(shí)長(zhǎng))每條數(shù)據(jù)記錄的是:一個(gè)服務(wù)器上的一個(gè)用戶某一天的總時(shí)長(zhǎng)對(duì)于一個(gè)服務(wù)器上的一個(gè)用戶,最多有31條記錄;detailyears_x表是用戶計(jì)費(fèi)數(shù)據(jù)年表(統(tǒng)計(jì)當(dāng)年每
40、月每個(gè)服務(wù)器上的每個(gè)用戶的總時(shí)長(zhǎng))每條數(shù)據(jù)記錄的是:一個(gè)服務(wù)器上的一個(gè)用戶某一月份的總時(shí)長(zhǎng)對(duì)于一個(gè)服務(wù)器上的一個(gè)用戶,最多有12條記錄。</p><p> 采集模塊從日志文件中采集數(shù)據(jù)并封裝成一個(gè)結(jié)構(gòu),然后將這個(gè)結(jié)構(gòu)傳送到中央處理系統(tǒng)中,然后插入到明細(xì)表中,如圖2左半部分所示。由采集模塊插入到數(shù)據(jù)庫中的數(shù)據(jù)是一些零碎的,比較詳細(xì)的記錄,這些數(shù)據(jù)對(duì)用戶來說是沒什么用處的,需要由整合模塊整合到各個(gè)表中以供用戶使用。
41、</p><p> 整合模塊首先將由采集模塊采集到的數(shù)據(jù)按服務(wù)器IP,用戶登錄IP和用戶名分組,然后將分組查詢到的數(shù)據(jù)統(tǒng)計(jì)后插入到天表中,進(jìn)而再將天表中的數(shù)據(jù)整合到月表,月表中的數(shù)據(jù)整合到年表。需要說明的一點(diǎn)就是整合模塊將用戶消費(fèi)的原始數(shù)據(jù)信息整合成了兩套表,一套表包括detaildays_x,detailmonths_x,detailyears_x。這些表供用戶使用,用來查詢自己的消費(fèi)信息;另一套表包括det
42、aildays,detailmonths,detailyears。這套表供管理員來使用,用來統(tǒng)計(jì)各服務(wù)器的使用情況,為企業(yè)的決策提供依據(jù),如圖1右半部分所示。這兩套表是系統(tǒng)中資費(fèi)管理模塊,帳單查詢模塊,帳務(wù)查詢模塊賴以運(yùn)行的基礎(chǔ)。</p><p> 圖2:采集與整合數(shù)據(jù)流程</p><p><b> 2.5 數(shù)據(jù)庫設(shè)計(jì)</b></p><p&g
43、t; 數(shù)據(jù)庫設(shè)計(jì)是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及應(yīng)用系統(tǒng),使之能夠有效地儲(chǔ)存數(shù)據(jù),滿足各種用戶的應(yīng)用需求.</p><p> 由于整個(gè)電信運(yùn)營支撐系統(tǒng)的功能很復(fù)雜,并且要存取大量的數(shù)據(jù),因此簡(jiǎn)單的使用文件來存儲(chǔ)和管理數(shù)據(jù)顯然是不明智的。因此,本系統(tǒng)采用Mysql數(shù)據(jù)庫來存儲(chǔ)和管理數(shù)據(jù)。根據(jù)系統(tǒng)需求分析需要?jiǎng)?chuàng)建以下的數(shù)據(jù)表來存儲(chǔ)數(shù)據(jù)。</p><p> 基
44、于SSH的電信系統(tǒng)的后臺(tái)數(shù)據(jù)的采集與整合模塊涉及到的數(shù)據(jù)庫設(shè)計(jì):</p><p> 1、details_x表用于保存從采集系統(tǒng)傳過來的數(shù)據(jù),由中央處理系統(tǒng)負(fù)責(zé)插入到數(shù)據(jù)庫中。31張表</p><p> 2、detaildays_x表是用來統(tǒng)計(jì)用戶計(jì)費(fèi)數(shù)據(jù)日表,31張表</p><p> 3、detailmoths_x表是用來統(tǒng)計(jì)用戶計(jì)費(fèi)數(shù)據(jù)月表,12張表<
45、;/p><p> 4、detailyears_x表是用來統(tǒng)計(jì)用戶計(jì)費(fèi)數(shù)據(jù)年表,2005-2014年10張表</p><p> 5、detaildays是用來存儲(chǔ)服務(wù)器一天之內(nèi)的被使用量,該表只能由管理員使用</p><p> 6、detailsmoths是用來存儲(chǔ)服務(wù)器一月之內(nèi)的被使用量,該表只能由管理員使用</p><p> 7、det
46、ailyears是用來存儲(chǔ)服務(wù)器一年之內(nèi)的被使用量,該表只能由管理員使用</p><p><b> 第3章 技術(shù)準(zhǔn)備</b></p><p> 3.1 Java平臺(tái)標(biāo)準(zhǔn)版(Java 2 Platform,Enterprise Edition) </p><p> Java SE 以前稱為 J2SE。它允許開發(fā)和部署在桌面、服務(wù)器、嵌入式環(huán)
47、境和實(shí)時(shí)環(huán)境中使用的 Java 應(yīng)用程序。Java SE 包含了支持 Java Web 服務(wù)開發(fā)的類,并為 Java Platform,Enterprise Edition(Java EE)提供基礎(chǔ)。</p><p> 3.2 Java平臺(tái)企業(yè)版(Java 2 Platform,Enterprise Edition) </p><p> JavaEE是一種用來開發(fā)分布式企業(yè)軟件應(yīng)用系統(tǒng)
48、的平臺(tái)。Java語言從創(chuàng)生之日起,就獲得廣泛接納,經(jīng)歷了巨大的發(fā)展。越來越多的技術(shù)都成了Java平臺(tái)的一部分,為了適應(yīng)不同的需要也開發(fā)出了很多全新的API和標(biāo)準(zhǔn)。最終,Sun公司聯(lián)合了多家業(yè)界巨頭,在開放的Java社區(qū)組織名義下,把所有與企業(yè)開發(fā)相關(guān)的標(biāo)準(zhǔn)整合起來,構(gòu)成了JavaEE平臺(tái)。</p><p> 對(duì)于企業(yè),JavaEE平臺(tái)有很多優(yōu)勢(shì):</p><p> JavaEE為企業(yè)級(jí)
49、運(yùn)算的許多領(lǐng)域(比如數(shù)據(jù)庫連接、企業(yè)業(yè)務(wù)組件、面向消息的中間件(MOM)、Web相關(guān)組件、通信協(xié)議以及互操作性)設(shè)立了標(biāo)準(zhǔn)。</p><p> JavaEE促進(jìn)人們基于開放的標(biāo)準(zhǔn)來開發(fā)軟件;如此構(gòu)建的系統(tǒng)實(shí)現(xiàn),出自名門、安全穩(wěn)固,因此JavaEE構(gòu)成了一種可靠的技術(shù)投資。</p><p> JavaEE是一種標(biāo)準(zhǔn)的開放平臺(tái),基于此開發(fā)的軟件組建能夠在不同廠商的產(chǎn)品中相互移植,從而避免了
50、被一家廠商鎖定。</p><p> 在軟件開發(fā)過程中采用JavaEE能夠縮短開發(fā)周期,使產(chǎn)品盡快投放市場(chǎng)——這是因?yàn)?,系統(tǒng)地很多底層架構(gòu)和基礎(chǔ)部分都已經(jīng)有產(chǎn)品廠商按照J(rèn)avaEE規(guī)范標(biāo)準(zhǔn)實(shí)現(xiàn)出來了,因此大多數(shù)IT企業(yè)可以不再開發(fā)中間件,集中盡力構(gòu)建符合自己商業(yè)需要的應(yīng)用。</p><p> JavaEE提高了程序員的生產(chǎn)力,因?yàn)閷?duì)于一個(gè)會(huì)Java語言的程序員來說很容易就能學(xué)會(huì)基于Jav
51、a語言的JavaEE技術(shù)。所有企業(yè)軟件開發(fā)能夠在JavaEE平臺(tái)上、利用Java語言完成。</p><p> JavaEE增進(jìn)了現(xiàn)存各種異構(gòu)系統(tǒng)之間的互操作性。</p><p> 3.3 Java swing圖形界面</p><p> Swing是一個(gè)用于開發(fā)Java應(yīng)用程序用戶界面的開發(fā)工具包。它以抽象窗口工具包(AWT)為基礎(chǔ)使跨平臺(tái)應(yīng)用程序可以使用任何可
52、插拔的外觀風(fēng)格。Swing開發(fā)人員只用很少的代碼就可以利用Swing豐富、靈活的功能和模塊化組件來創(chuàng)建優(yōu)雅的用戶界面。 </p><p> 圖形用戶接口( GUI )庫最初的設(shè)計(jì)目的是讓程序員構(gòu)建一個(gè)通用的 GUI ,使其在所有的平臺(tái)上都能夠正常的顯示。但是比較遺憾的是 AWT 產(chǎn)生的是在各系統(tǒng)看來都同樣欠佳的圖形用戶接口, JAVA1.2 為老的 java1.0 AWT 添加了 java 基礎(chǔ)類( JFC )
53、,這是一個(gè)被稱為 “Swing” 的 GUI 的一部分。 Swing 是第二代 GUI 開發(fā)工具集, AWT 采用了與特定平臺(tái)相關(guān)的實(shí)現(xiàn),而絕大部分 Swing 組件卻不是。 Swing 是構(gòu)筑在 AWT 上層的一組 GUI 組件的集合,為了保證可移植性,它完全用 Java 語言編寫,與 AWT 相比, Swing 提供了更完整的組件,引入了許多新的特性和能力。 Swing 提供了更多的組件庫,如: JTable , JTree , J
54、combox 。 Swing 也增強(qiáng)了 AWT 中組件的功能。正是因?yàn)?Swing 具備了如此多的優(yōu)勢(shì)所以我們以后在開發(fā)中都使用 Swing 。 JComponent 類是 Swing 組件的基類,而 JComponent 繼承自 Container 類,因此,所有的 Swing 組件</p><p> 設(shè)計(jì)模式: 當(dāng)你解決一個(gè)問題時(shí)你不需要從頭做起,取而代之的是,你應(yīng)該參考過去的經(jīng)驗(yàn),或者向?qū)<易稍円庖姡O(shè)計(jì)
55、模式是一種方法,該方法以一種結(jié)構(gòu)化的形式提供專家意見。設(shè)計(jì)模式的靈感來自于建筑學(xué)設(shè)計(jì)模式。設(shè)計(jì)模式已經(jīng)成為文化的一部分,當(dāng)你談?wù)?MVC 或 “ 觀察者模式時(shí) ” 全世界的程序員都明白你的意思,因而,模式已經(jīng)成為討論設(shè)計(jì)問題的有效方法。 Swing 采用了 mvc 模式, awt 事件模型采用了 “ 觀察者 ” 模式 。</p><p> MVC -【模型-視圖-控制器】模式: 該模式同其他許多設(shè)計(jì)模式一樣,都
56、遵循面向?qū)ο蟮脑O(shè)計(jì)中的一個(gè)基本原則:不讓對(duì)象具有太多的功能,如對(duì)于按鈕來說不要讓一個(gè)按鈕類完成所有的事情,替代的方法就是讓一個(gè)對(duì)象負(fù)責(zé)組件的觀感,而另一個(gè)對(duì)象負(fù)責(zé)存儲(chǔ)內(nèi)容, mvc 模式實(shí)現(xiàn)三個(gè)獨(dú)立的類: </p><p> 模型-存儲(chǔ)內(nèi)容; 視圖-顯示內(nèi)容; 控制器-處理用戶輸入 </p><p> mvc 模式明確規(guī)定了三個(gè)對(duì)象如何進(jìn)行交互。模型存儲(chǔ)內(nèi)容,它沒有任何用戶界面。對(duì)于一
57、個(gè)按鈕來說,內(nèi)容非常簡(jiǎn)單,它只是一組標(biāo)志,用來說明按鈕是否按下,是否啟用等。對(duì)于一個(gè)文本框來說內(nèi)容稍稍復(fù)雜,它是容納當(dāng)前文本的一個(gè)字符串對(duì)象。這個(gè)內(nèi)容和視圖的內(nèi)容并不一致--如果內(nèi)容長(zhǎng)度大于文本框的顯示長(zhǎng)度,那么用戶只能看到的就是只有文本框顯示的那一部分。 </p><p> mvc 模式總結(jié):模型存儲(chǔ)完整內(nèi)容,視圖給出了內(nèi)容的可視化表示【完整或者不完整】,控制器負(fù)責(zé)處理用戶輸入事件,如鼠標(biāo)點(diǎn)擊和鍵盤事件等,然
58、后它決定是否把這些事件轉(zhuǎn)化成對(duì)模型或視圖的改變。控制器作用舉例:如果用戶在一個(gè)文本框中按下了一個(gè)字符鍵,那么控制器就會(huì)調(diào)用模型中的 “ 插入字符 ” 命令,然后模型告訴視圖進(jìn)行更新,而視圖永遠(yuǎn)不會(huì)知道文本為什么改變了,但是如果用戶按下了一個(gè)光標(biāo)鍵,那么控制器會(huì)通知視圖進(jìn)行卷屏滾動(dòng)。卷動(dòng)視圖對(duì)實(shí)際文本不會(huì)有任何的影響,因此模型永遠(yuǎn)不會(huì)知道該事件的發(fā)生。 Mvc 模式的一個(gè)優(yōu)點(diǎn)是 : 一個(gè)模型可以有多個(gè)視圖,其中每個(gè)視圖可以顯示完整內(nèi)容的不
59、同部分或不同方面。如果作為程序員來使用 Swing ,則不需要考慮 mvc 的體系結(jié)構(gòu),每個(gè)用戶界面元素都有一個(gè)包裝類(如 Jbutton 和 JTextField ),來保存模型和視圖。 </p><p> 3.3 JDBC技術(shù)介紹</p><p> JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API,可以
60、為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。JDBC為工具/數(shù)據(jù)庫開發(fā)人員提供了一個(gè)標(biāo)準(zhǔn)的API,據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠用純 Java API 編寫數(shù)據(jù)庫應(yīng)用程序,同時(shí),JDBC也是個(gè)商標(biāo)名。 </p><p> 有了JDBC,向各種關(guān)系數(shù)據(jù)發(fā)送SQL語句就是一件很容易的事。換言之,有了JDBC API,就不必為訪問Sybase數(shù)據(jù)庫專門寫一個(gè)程序,為訪
61、問Oracle數(shù)據(jù)庫又專門寫一個(gè)程序,或?yàn)樵L問Informix數(shù)據(jù)庫又編寫另一個(gè)程序等等,程序員只需用JDBC API寫一個(gè)程序就夠了,它可向相應(yīng)數(shù)據(jù)庫發(fā)送SQL調(diào)用。同時(shí),將Java語言和JDBC結(jié)合起來使程序員不必為不同的平臺(tái)編寫不同的應(yīng)用程序,只須寫一遍程序就可以讓它在任何平臺(tái)上運(yùn)行,這也是Java語言“編寫一次,處處運(yùn)行”的優(yōu)勢(shì)。 </p><p> Java數(shù)據(jù)庫連接體系結(jié)構(gòu)是用于Java應(yīng)用程序連接
62、數(shù)據(jù)庫的標(biāo)準(zhǔn)方法。JDBC對(duì)Java程序員而言是API,對(duì)實(shí)現(xiàn)與數(shù)據(jù)庫連接的服務(wù)提供商而言是接口模型。作為API,JDBC為程序開發(fā)提供標(biāo)準(zhǔn)的接口,并為數(shù)據(jù)庫廠商及第三方中間件廠商實(shí)現(xiàn)與數(shù)據(jù)庫的連接提供了標(biāo)準(zhǔn)方法。JDBC使用已有的SQL標(biāo)準(zhǔn)并支持與其它數(shù)據(jù)庫連接標(biāo)準(zhǔn),如ODBC之間的橋接。JDBC實(shí)現(xiàn)了所有這些面向標(biāo)準(zhǔn)的目標(biāo)并且具有簡(jiǎn)單、嚴(yán)格類型定義且高性能實(shí)現(xiàn)的接口。 </p><p> Java 具有堅(jiān)固
63、、安全、易于使用、易于理解和可從網(wǎng)絡(luò)上自動(dòng)下載等特性,是編寫數(shù)據(jù)庫應(yīng)用程序的杰出語言。所需要的只是 Java應(yīng)用程序與各種不同數(shù)據(jù)庫之間進(jìn)行對(duì)話的方法。而 JDBC 正是作為此種用途的機(jī)制。 </p><p> JDBC 是個(gè)"低級(jí)"接口,也就是說,它用于直接調(diào)用 SQL 命令。在這方面它的功能極佳,并比其它的數(shù)據(jù)庫連接 API 易于使用,但它同時(shí)也被設(shè)計(jì)為一種基礎(chǔ)接口,在它之上可以建立高級(jí)
64、接口和工具。高級(jí)接口是"對(duì)用戶友好的"接口,它使用的是一種更易理解和更為方便的 API,這種API在幕后被轉(zhuǎn)換為諸如 JDBC 這樣的低級(jí)接口。 </p><p> JDBC API 既支持?jǐn)?shù)據(jù)庫訪問的兩層模型(C/S),同時(shí)也支持三層模型(B/S)。在兩層模型中,Java applet或應(yīng)用程序?qū)⒅苯优c數(shù)據(jù)庫進(jìn)行對(duì)話。這將需要一個(gè)JDBC驅(qū)動(dòng)程序來與所訪問的特定數(shù)據(jù)庫管理系統(tǒng)進(jìn)行 通訊。用
65、戶的SQL語句被送往數(shù)據(jù)庫中,而其結(jié)果將被送回給用戶。數(shù)據(jù)庫可以位于另一臺(tái)計(jì)算機(jī)上,用戶通過網(wǎng)絡(luò)連接到上面。這就叫做客戶機(jī)/服務(wù)器配置,其中用戶的計(jì)算機(jī)為客戶機(jī),提供數(shù)據(jù)庫的計(jì)算機(jī)為服務(wù)器。網(wǎng)絡(luò)可以是 Intranet(它可將公司職員連接起來),也可以是 Internet。 </p><p> 在三層模型中,命令先是被發(fā)送到服務(wù)的"中間層",然后由它將SQL 語句發(fā)送給數(shù)據(jù)庫。數(shù)據(jù)庫對(duì) SQ
66、L 語句進(jìn)行處理并將結(jié)果送回到中間層,中間層再將結(jié)果送回給用戶。MIS 主管們都發(fā)現(xiàn)三層模型很吸引人,因?yàn)榭捎弥虚g層來控制對(duì)公司數(shù)據(jù)的訪問和可作的的更新的種類。中間層的另一個(gè)好處是,用戶可以利用易于使用的高級(jí)API,而中間層將把它轉(zhuǎn)換為相應(yīng)的低級(jí)調(diào)用。最后,許多情況下三層結(jié)構(gòu)可提供一些性能上的好處。 </p><p> 到目前為止,中間層通常都用 C 或 C++ 這類語言來編寫,這些語言執(zhí)行速度較快。然而,隨著
67、最優(yōu)化編譯器(它把 Java 字節(jié)代碼轉(zhuǎn)換為高效的特定于機(jī)器的代碼)的引入,用 Java 來實(shí)現(xiàn)中間層將變得越來越實(shí)際。這將是一個(gè)很大的進(jìn)步,它使人們可以充分利用 Java 的諸多優(yōu)點(diǎn)(如堅(jiān)固、多線程和安全等特征)。JDBC 對(duì)于從Java的中間層來訪問數(shù)據(jù)庫非常重要。</p><p> 用JDBC來實(shí)現(xiàn)訪問數(shù)據(jù)庫記錄可以采用下面的幾個(gè)步驟:1、 通過驅(qū)動(dòng)器管理器獲取連接接口。2、 獲得Statement或
68、它的子類。3、 限制Statement中的參數(shù)。4、 執(zhí)行Statement。5、 查看返回的行數(shù)是否超出范圍。6、 關(guān)閉Statement。7、 處理其它的Statement8、 關(guān)閉連接接口。</p><p> 3.4 I/O數(shù)據(jù)流技術(shù)介紹</p><p> Java中對(duì)文件的操作是以流的方式進(jìn)行的。流是Java內(nèi)存中的一組有序數(shù)據(jù)序列。Java將數(shù)據(jù)從源(文件、內(nèi)存、
69、鍵盤、網(wǎng)絡(luò))讀入到內(nèi)存中,形成了流,然后將這些流還可以寫到另外的目的地(文件、內(nèi)存、控制臺(tái)、網(wǎng)絡(luò)),之所以稱為流,是因?yàn)檫@個(gè)數(shù)據(jù)序列在不同時(shí)刻所操作的是源的不同部分。</p><p> 流的分類,Java的流分類比較豐富,剛接觸的人看了后會(huì)感覺很暈。流分類的方式很多:</p><p> 1、按照輸入的方向分,輸入流和輸出流,輸入輸出的參照對(duì)象是Java程序。</p>&l
70、t;p> 2、按照處理數(shù)據(jù)的單位不同分,字節(jié)流和字符流,字節(jié)流讀取的最小單位是一個(gè)字節(jié)(1byte=8bit),而字符流一次可以讀取一個(gè)字符(1char = 2byte = 16bit)。</p><p> 3、按照功能的不同分,分節(jié)點(diǎn)流和處理流,節(jié)點(diǎn)流是直接從一個(gè)源讀寫數(shù)據(jù)的流(這個(gè)流沒有經(jīng)過包裝和修飾),處理流是在對(duì)節(jié)點(diǎn)流封裝的基礎(chǔ)上的一種流,F(xiàn)ileInputStream是一個(gè)接點(diǎn)流,可以直接從文
71、件讀取數(shù)據(jù),但是BufferedInputStream可以包裝 FileInputStream,使得其有緩沖功能。</p><p> 其實(shí)除了以上三種分類外,還有一些常常聽到的一些分類比如:對(duì)象流、緩沖流、壓縮流、文件流等等。其實(shí)都是節(jié)點(diǎn)流和處理流的子分類。當(dāng)然你也可以創(chuàng)建新的流類型,只要你需要。</p><p> 3.5 socket技術(shù)介紹</p><p>
72、 SOCKET也就是所謂的套接字,簡(jiǎn)單的說它是一個(gè)文件。它是使用標(biāo)準(zhǔn)Unix文件描述符和其它程序通訊的方式,Unix中的一切就是文件,程序在執(zhí)行任何形式的 I/O 的時(shí)候,程序是在讀或者寫一個(gè)文件描述符。一個(gè)文件描述符只是一個(gè)和打開的文件相關(guān)聯(lián)的整數(shù),這個(gè)文件可能是一個(gè)網(wǎng)絡(luò)連接,F(xiàn)IFO,管道,終端,磁盤上的文件或者什么其它的東西。</p><p> 這里的SOCKET就是一個(gè)特定的文件描述符,(稱之為Int
73、ernet 套接字)用于描述IP地址和端口,是一個(gè)通信鏈的句柄。應(yīng)用程序通常通過它向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者應(yīng)答網(wǎng)絡(luò)請(qǐng)求。</p><p> Internet 套接字分為多種形式,常見的有stream sockets流格式和datagram sockets數(shù)據(jù)報(bào)格式等。但經(jīng)常用的就是這兩種數(shù)據(jù)報(bào)套接節(jié)有時(shí)候也叫無連接套接字。</p><p> 由于數(shù)據(jù)采集是一個(gè)分布式的系統(tǒng),需要把各個(gè)出租的實(shí)
74、驗(yàn)室(客戶端)上記錄包含用戶登錄與退出信息的數(shù)據(jù)定期采集并發(fā)送到中央處理系統(tǒng)(服務(wù)器端)進(jìn)行整合,然后插入到數(shù)據(jù)庫中,所以需要用到SOCKET編程,這部分又是一個(gè)典型的C/S結(jié)構(gòu)。</p><p> 3.6 java多線程技術(shù)介紹</p><p> 線程是程序運(yùn)行的基本執(zhí)行單元。當(dāng)操作系統(tǒng)(不包括單線程的操作系統(tǒng),如微軟早期的DOS)在執(zhí)行一個(gè)程序時(shí),會(huì)在系統(tǒng)中建立一個(gè)進(jìn)程,而在這個(gè)進(jìn)
75、程中,必須至少建立一個(gè)線程(這個(gè)線程被稱為主線程)來作為這個(gè)程序運(yùn)行的入口點(diǎn)。因此,在操作系統(tǒng)中運(yùn)行的任何程序都至少有一個(gè)主線程。</p><p> 進(jìn)程和線程是現(xiàn)代操作系統(tǒng)中兩個(gè)必不可少的運(yùn)行模型。在操作系統(tǒng)中可以有多個(gè)進(jìn)程,這些進(jìn)程包括系統(tǒng)進(jìn)程(由操作系統(tǒng)內(nèi)部建立的進(jìn)程)和用戶進(jìn)程(由用戶程序建立的進(jìn)程);一個(gè)進(jìn)程中可以有一個(gè)或多個(gè)線程。進(jìn)程和進(jìn)程之間不共享內(nèi)存,也就是說系統(tǒng)中的進(jìn)程是在各自獨(dú)立的內(nèi)存空間中
76、運(yùn)行的。而一個(gè)進(jìn)程中的線可以共享系統(tǒng)分派給這個(gè)進(jìn)程的內(nèi)存空間。</p><p> 線程不僅可以共享進(jìn)程的內(nèi)存,而且還擁有一個(gè)屬于自己的內(nèi)存空間,這段內(nèi)存空間也叫做線程棧, 是在建立線程時(shí)由系統(tǒng)分配的,主要用來保存線程內(nèi)部所使用的數(shù)據(jù),如線程執(zhí)行函數(shù)中所定義的變量。</p><p> 注意:任何一個(gè)線程在建立時(shí)都會(huì)執(zhí)行一個(gè)函數(shù),這個(gè)函數(shù)叫做線程執(zhí)行函數(shù)。也可以將這個(gè)函數(shù)看做線程的入口點(diǎn)(
77、類似于程序中的main函數(shù))。無論使用什么語言或技術(shù)來建立線程,都必須執(zhí)行這個(gè)函數(shù)(這個(gè)函數(shù)的表現(xiàn)形式可能不一樣,但都會(huì)有一個(gè)這樣的函數(shù))。如在Windows中用于建立線程的API函數(shù)CreateThread的第三個(gè)參數(shù)就是這個(gè)執(zhí)行函數(shù)的指針。</p><p> 在操作系統(tǒng)將進(jìn)程分成多個(gè)線程后,這些線程可以在操作系統(tǒng)的管理下并發(fā)執(zhí)行,從而大大提高了程序的運(yùn)行效率。雖然線程的執(zhí)行從宏觀上看是多個(gè)線程同時(shí)執(zhí)行,但實(shí)
78、際上這只是操作系統(tǒng)的障眼法。由于一塊CPU同時(shí)只能執(zhí)行一條指令,因此,在擁有一塊CPU的計(jì)算機(jī)上不可能同時(shí)執(zhí)行兩個(gè)任務(wù)。而操作系統(tǒng)為了能提高程序的運(yùn)行效率,在一個(gè)線程空閑時(shí)會(huì)撤下這個(gè)線程,并且會(huì)讓其他的線程來執(zhí)行,這種方式叫做線程調(diào)度。我們之所以從表面上看是多個(gè)線程同時(shí)執(zhí)行,是因?yàn)椴煌€程之間切換的時(shí)間非常短,而且在一般情況下切換非常頻繁。假設(shè)我們有線程A和B。在運(yùn)行時(shí),可能是A執(zhí)行了1毫秒后,切換到B后,B又執(zhí)行了1毫秒,然后又切換到
79、了A,A又執(zhí)行1毫秒。由于1毫秒的時(shí)間對(duì)于普通人來說是很難感知的,因此,從表面看上去就象A和B同時(shí)執(zhí)行一樣,但實(shí)際上A和B是交替執(zhí)行的。</p><p> 二、線程給我們帶來的好處</p><p> 如果能合理地使用線程,將會(huì)減少開發(fā)和維護(hù)成本,甚至可以改善復(fù)雜應(yīng)用程序的性能。如在GUI應(yīng)用程序中,還以通過線程的異步特性來更好地處理事件;在應(yīng)用服務(wù)器程序中可以通過建立多個(gè)線程來處理客戶
80、端的請(qǐng)求。線程甚至還可以簡(jiǎn)化虛擬機(jī)的實(shí)現(xiàn),如Java虛擬機(jī)(JVM)的垃圾回收器(garbage collector)通常運(yùn)行在一個(gè)或多個(gè)線程中。因此,使用線程將會(huì)從以下五個(gè)方面來改善我們的應(yīng)用程序:</p><p> 1. 充分利用CPU資源</p><p> 現(xiàn)在世界上大多數(shù)計(jì)算機(jī)只有一塊CPU。因此,充分利用CPU資源顯得尤為重要。當(dāng)執(zhí)行單線程程序時(shí),由于在程序發(fā)生阻塞時(shí)CPU可
81、能會(huì)處于空閑狀態(tài)。這將造成大量的計(jì)算資源的浪費(fèi)。而在程序中使用多線程可以在某一個(gè)線程處于休眠或阻塞時(shí),而CPU又恰好處于空閑狀態(tài)時(shí)來運(yùn)行其他的線程。這樣CPU就很難有空閑的時(shí)候。因此,CPU資源就得到了充分地利用。</p><p><b> 2. 簡(jiǎn)化編程模型</b></p><p> 如果程序只完成一項(xiàng)任務(wù),那只要寫一個(gè)單線程的程序,并且按著執(zhí)行這個(gè)任務(wù)的步驟編
82、寫代碼即可。但要完成多項(xiàng)任務(wù),如果還使用單線程的話,那就得在在程序中判斷每項(xiàng)任務(wù)是否應(yīng)該執(zhí)行以及什么時(shí)候執(zhí)行。如顯示一個(gè)時(shí)鐘的時(shí)、分、秒三個(gè)指針。使用單線程就得在循環(huán)中逐一判斷這三個(gè)指針的轉(zhuǎn)動(dòng)時(shí)間和角度。如果使用三個(gè)線程分另來處理這三個(gè)指針的顯示,那么對(duì)于每個(gè)線程來說就是指行一個(gè)單獨(dú)的任務(wù)。這樣有助于開發(fā)人員對(duì)程序的理解和維護(hù)。</p><p> 3. 簡(jiǎn)化異步事件的處理</p><p>
83、; 當(dāng)一個(gè)服務(wù)器應(yīng)用程序在接收不同的客戶端連接時(shí)最簡(jiǎn)單地處理方法就是為每一個(gè)客戶端連接建立一個(gè)線程。然后監(jiān)聽線程仍然負(fù)責(zé)監(jiān)聽來自客戶端的請(qǐng)求。如果這種應(yīng)用程序采用單線程來處理,當(dāng)監(jiān)聽線程接收到一個(gè)客戶端請(qǐng)求后,開始讀取客戶端發(fā)來的數(shù)據(jù),在讀完數(shù)據(jù)后,read方法處于阻塞狀態(tài),也就是說,這個(gè)線程將無法再監(jiān)聽客戶端請(qǐng)求了。而要想在單線程中處理多個(gè)客戶端請(qǐng)求,就必須使用非阻塞的Socket連接和異步I/O。但使用異步I/O方式比使用同步I/
84、O更難以控制,也更容易出錯(cuò)。因此,使用多線程和同步I/O可以更容易地處理類似于多請(qǐng)求的異步事件。</p><p> 三、在Java中實(shí)現(xiàn)多線程 我們不妨設(shè)想,為了創(chuàng)建一個(gè)新的線程,我們需要做些什么?很顯然,我們必須指明這個(gè)線程所要執(zhí)行的代碼,而這就是在Java中實(shí)現(xiàn)多線程我們所需要做的一切! 真是神奇!Java是如何做到這一點(diǎn)的?通過類!作為一個(gè)完全面向?qū)ο蟮恼Z言,Java提供了類java.lang.T
85、hread來方便多線程編程,這個(gè)類提供了大量的方法來方便我們控制自己的各個(gè)線程,我們以后的討論都將圍繞這個(gè)類進(jìn)行?! ∧敲慈绾翁峁┙o Java 我們要線程執(zhí)行的代碼呢?讓我們來看一看 Thread 類。Thread 類最重要的方法是run(),它為Thread類的方法start()所調(diào)用,提供我們的線程所要執(zhí)行的代碼。為了指定我們自己的代碼,只需要覆蓋它! 方法一:繼承 Thread 類,覆蓋方法 run(),我們?cè)趧?chuàng)建的 Thr
86、ead 類的子類中重寫 run() ,加入線程所要執(zhí)行的代碼即可。下面是一個(gè)例子: public class MyThread extends Thread{ int count= 1, number; public MyThread(int nu</p><p> new MyThread(i+1).start(); } } 這種方法簡(jiǎn)單明了,符合大家的習(xí)慣,但是,它
87、也有一個(gè)很大的缺點(diǎn),那就是如果我們的類已經(jīng)從一個(gè)類繼承(如小程序必須繼承自 Applet 類),則無法再繼承 Thread 類,這時(shí)如果我們又不想建立一個(gè)新的類,應(yīng)該怎么辦呢? 我們不妨來探索一種新的方法:我們不創(chuàng)建Thread類的子類,而是直接使用它,那么我們只能將我們的方法作為參數(shù)傳遞給 Thread 類的實(shí)例,有點(diǎn)類似回調(diào)函數(shù)。但是 Java 沒有指針,我們只能傳遞一個(gè)包含這個(gè)方法的類的實(shí)例?! ∧敲慈绾蜗拗七@個(gè)類必須包含這
88、一方法呢?當(dāng)然是使用接口?。m然抽象類也可滿足,但是需要繼承,而我們之所以要采用這種新方法,不就是為了避免繼承帶來的限制嗎?) Java 提供了接口 java.lang.Runnable 來支持這種方法?! 》椒ǘ簩?shí)現(xiàn) Runnable 接口 Runnable接口只有一個(gè)方法run(),我們聲明自己的類實(shí)現(xiàn)Runnable接口并提供這一方法,將我們的線程代碼寫入其中,就完成了這一部分的任務(wù)。但是Runnable接</p
89、><p> new Thread(new MyThread(i+1)).start(); } } 嚴(yán)格地說,創(chuàng)建Thread子類的實(shí)例也是可行的,但是必須注意的是,該子類必須沒有覆蓋 Thread 類的 run 方法,否則該線程執(zhí)行的將是子類的 run 方法,而不是我們用以實(shí)現(xiàn)Runnable 接口的類的 run 方法,對(duì)此大家不妨試驗(yàn)一下。 使用 Runnable 接口來實(shí)現(xiàn)多線程使得我們能
90、夠在一個(gè)類中包容所有的代碼,有利于封裝,它的缺點(diǎn)在于,我們只能使用一套代碼,若想創(chuàng)建多個(gè)線程并使各個(gè)線程執(zhí)行不同的代碼,則仍必須額外創(chuàng)建類,如果這樣的話,在大多數(shù)情況下也許還不如直接用多個(gè)類分別繼承 Thread 來得緊湊?! ?lt;/p><p> 第4章 功能說明及實(shí)現(xiàn)</p><p> 本項(xiàng)目由本人和姚建波,以及周旭磊同學(xué)共同完成。本人主要負(fù)責(zé)數(shù)據(jù)采集與整合模塊的設(shè)計(jì)和實(shí)現(xiàn)。下面便
91、是本人所有設(shè)計(jì)的模塊的說明和具體實(shí)現(xiàn)。</p><p> 4.1 用戶登錄模塊</p><p> 具體登錄過程:查看登錄的用戶名是否存在;查看密碼是否正確。如圖4-1所示是用戶登錄界面圖。</p><p> 圖4-1用戶登錄界面</p><p> 4.5 數(shù)據(jù)采集客戶端 </p><p> 數(shù)據(jù)采集客戶端負(fù)責(zé)
92、日志解析、數(shù)據(jù)發(fā)送、數(shù)據(jù)備份、配置文件管理;</p><p> 數(shù)據(jù)采集客戶端的活動(dòng)圖,如下圖(圖4-2)</p><p> 圖4-2數(shù)據(jù)采集客戶端活動(dòng)圖</p><p> 如圖4-3所示是數(shù)據(jù)采集客戶端界面圖。</p><p> 圖4-3 數(shù)據(jù)采集客戶端界面</p><p> 4.6 數(shù)據(jù)采集服務(wù)端<
93、/p><p> 數(shù)據(jù)采集服務(wù)端負(fù)責(zé)數(shù)據(jù)接收、原始數(shù)據(jù)入庫、配置文件管理;</p><p> 數(shù)據(jù)采集服務(wù)端的活動(dòng)圖,如下圖(圖4-4)</p><p> 圖4-4數(shù)據(jù)采集服務(wù)端活動(dòng)圖</p><p> 如圖4-5所示是數(shù)據(jù)采集服務(wù)端面圖。</p><p> 圖4-5 數(shù)據(jù)采集服務(wù)端界面</p>&l
94、t;p> 4.7 數(shù)據(jù)整合端 </p><p> 數(shù)據(jù)整合端負(fù)責(zé)按用戶整合、按IP整合、整合數(shù)據(jù)入庫、配置文件管理;</p><p> 數(shù)據(jù)采集服務(wù)端的活動(dòng)圖,如下圖(圖4-6)</p><p> 圖4-6數(shù)據(jù)整合端活動(dòng)圖</p><p> 如圖4-7所示是數(shù)據(jù)整合界面圖。</p><p>
95、 圖4-7數(shù)據(jù)整合界面</p><p><b> 第5章 系統(tǒng)測(cè)試</b></p><p><b> 5.1 測(cè)試目的</b></p><p> 在開發(fā)過程中采用了多種措施保證軟件質(zhì)量,但是實(shí)際開發(fā)過程中還是不可避免地會(huì)產(chǎn)生差錯(cuò),系統(tǒng)中通??赡茈[藏著錯(cuò)誤和缺陷,未經(jīng)周密測(cè)試的系統(tǒng)投入運(yùn)行,將會(huì)造成難以想象的后果,因
96、此系統(tǒng)測(cè)試是為保證軟件質(zhì)量必須進(jìn)行的工作。大量統(tǒng)計(jì)資料表明,系統(tǒng)測(cè)試的工作量往往占開發(fā)總工作量的40%以上。因此,我們必須重視測(cè)試工作。</p><p> 由于程序中隱藏的缺陷只在特定的環(huán)境下才有可能顯露,系統(tǒng)缺陷通常是由于對(duì)某些特定情況考慮不周造成的。因此測(cè)試不是為了表明程序正確;成功的測(cè)試也不是沒有發(fā)現(xiàn)錯(cuò)誤的測(cè)試。有意義的軟件測(cè)試應(yīng)該是從“破壞”軟件系統(tǒng)的角度出發(fā),精心設(shè)計(jì)最有可能暴露程序系統(tǒng)缺陷的測(cè)試方案
97、。因此軟件測(cè)試的目標(biāo)應(yīng)該是以盡可能少的代價(jià)和時(shí)間找出軟件系統(tǒng)中潛在的錯(cuò)誤和缺陷。</p><p> 從產(chǎn)品角度看,測(cè)試計(jì)劃中的測(cè)試項(xiàng)目包括軟件結(jié)構(gòu)中的分系統(tǒng)層、子系統(tǒng)層、功能模塊層、程序模塊層中的各類模塊,從測(cè)試本身看,分為單元測(cè)試,組合測(cè)試,確認(rèn)測(cè)試等。測(cè)試對(duì)象是隨階段而異的,最基本、最初的測(cè)試是單元測(cè)試,后面的組合測(cè)試、確認(rèn)測(cè)試都是以被測(cè)過的模塊作為測(cè)試對(duì)象的。</p><p>&l
98、t;b> 1.單元測(cè)試:</b></p><p> 單元測(cè)試也稱模塊測(cè)試或程序測(cè)試,單元測(cè)試是對(duì)每個(gè)模塊單獨(dú)進(jìn)行的,驗(yàn)證模塊接口與設(shè)計(jì)說明書是否一致,對(duì)模塊的所有主要處理路徑進(jìn)行測(cè)試且與預(yù)期的結(jié)構(gòu)進(jìn)行對(duì)照,還要對(duì)所有錯(cuò)誤處理路徑進(jìn)行測(cè)試。對(duì)源碼進(jìn)行審查,對(duì)照設(shè)計(jì)說明書,表態(tài)地檢查源程序是否符合功能的邏輯要求,是進(jìn)行單元測(cè)試前的重要工作。單元測(cè)試一般是由程序員完成,也稱程序調(diào)試。</p&
99、gt;<p><b> 2.組合測(cè)試</b></p><p> 組合測(cè)試也稱集成測(cè)試或子系統(tǒng)測(cè)試,通常采用自頂向下測(cè)試和自底向上測(cè)試兩種測(cè)試方法。組合測(cè)試的對(duì)象是指已經(jīng)通過單元測(cè)試的模塊,不是對(duì)零散模塊進(jìn)行單個(gè)測(cè)試,而是用系統(tǒng)化的方法裝配和測(cè)試軟件系統(tǒng),是一個(gè)嚴(yán)格的過程,必須認(rèn)真地進(jìn)行,其計(jì)劃的產(chǎn)生和單元模塊測(cè)試的完成日期要協(xié)調(diào)起來,這種測(cè)試應(yīng)在系統(tǒng)目標(biāo)機(jī)上進(jìn)行,造成系統(tǒng)應(yīng)
100、用的環(huán)境條件,除了開發(fā)部分項(xiàng)目負(fù)責(zé)人參加以外,還應(yīng)該有相應(yīng)系統(tǒng)的用戶參加,給評(píng)審員進(jìn)行演示。</p><p><b> 3.確認(rèn)測(cè)試</b></p><p> 確認(rèn)測(cè)試是對(duì)通過組合測(cè)試的軟件進(jìn)行的,這些軟件已經(jīng)存于系統(tǒng)目標(biāo)設(shè)備的介質(zhì)上,確認(rèn)測(cè)試的目的是對(duì)表明軟件是可以工作的,并且符合“軟件需求說明書”中規(guī)定的全部功能和性能要求。確認(rèn)測(cè)試是按照這些要求定出的“確認(rèn)測(cè)
101、試計(jì)劃”進(jìn)行的。測(cè)試工作是由一個(gè)獨(dú)立的組織進(jìn)行,而且測(cè)試要從用戶的角度出發(fā)。</p><p><b> 4.系統(tǒng)測(cè)試</b></p><p> 系統(tǒng)測(cè)試是對(duì)整體性能的測(cè)試,主要解決各子系統(tǒng)之間的數(shù)據(jù)通信和數(shù)據(jù)共享問題以及檢測(cè)系統(tǒng)是否達(dá)到用戶的實(shí)際要求,系統(tǒng)測(cè)試的依據(jù)是系統(tǒng)分析報(bào)告。系統(tǒng)測(cè)試應(yīng)在系統(tǒng)的整個(gè)范圍內(nèi)進(jìn)行,這種測(cè)試不只對(duì)軟件進(jìn)行,而是對(duì)構(gòu)成系統(tǒng)的硬、軟件一
102、起進(jìn)行。系統(tǒng)測(cè)試與建構(gòu)同時(shí)進(jìn)行或略慢。系統(tǒng)測(cè)試需要確認(rèn)從頭到尾的功能正常才算完成,應(yīng)當(dāng)盡量避免系統(tǒng)測(cè)試延到項(xiàng)目末尾進(jìn)行。</p><p><b> 5.用戶驗(yàn)收測(cè)試</b></p><p> 在系統(tǒng)測(cè)試完成后,進(jìn)行用戶的驗(yàn)收測(cè)試,它是用戶在實(shí)際應(yīng)用環(huán)境中所進(jìn)行的真實(shí)數(shù)據(jù)測(cè)試。</p><p> 在具體的測(cè)試中,一般應(yīng)遵循以下原則:由程序設(shè)
103、計(jì)者之外的人進(jìn)行測(cè)試;測(cè)試用例應(yīng)由兩部分組成:輸入數(shù)據(jù)和預(yù)期輸出結(jié)果;應(yīng)選用不合理的輸入數(shù)據(jù)與非法輸入測(cè)試;不僅要檢驗(yàn)程序是否實(shí)現(xiàn)預(yù)期功能,還應(yīng)檢查程序是否做了不應(yīng)該做的工作;集中測(cè)試容易出錯(cuò)的程序模塊;對(duì)程序修改以后,必須重新進(jìn)行測(cè)試。</p><p><b> 5.2 測(cè)試方法</b></p><p> 一般來說,對(duì)程序測(cè)試有兩種測(cè)試方法:如果已經(jīng)知道了軟件系
104、統(tǒng)應(yīng)具有的功能,可通過測(cè)試來檢測(cè)每個(gè)功能是否都能正常使用;如果知道程序的內(nèi)部工作過程,可以通過測(cè)試來檢測(cè)程序內(nèi)部是否按照規(guī)格說明書的規(guī)定正常進(jìn)行。前一種方法稱為黑盒測(cè)試,后一種方法稱為白盒測(cè)試。黑盒測(cè)試又稱為功能測(cè)試,白盒測(cè)試又稱為結(jié)構(gòu)測(cè)試。</p><p> 我們所用的是功能測(cè)試。</p><p><b> 5.3 測(cè)試結(jié)果</b></p><
105、;p> 1.測(cè)試用戶登錄功能:</p><p> 打開DMS數(shù)據(jù)采集與整合系統(tǒng)登錄界面,用戶登錄的用戶名為admin、密碼為admin。填寫完成點(diǎn)擊“登錄”按鈕,將會(huì)出現(xiàn)社區(qū)首頁,即該用戶已經(jīng)登錄成功了。</p><p> 若輸入用戶名不正確,如:“iuihy”,密碼“123456”、不正確或者不填,系統(tǒng)會(huì)自動(dòng)出現(xiàn)警告“用戶名或密碼不存在或輸入不正確,登錄失敗請(qǐng)重新登錄”。&l
106、t;/p><p> 2.測(cè)試數(shù)據(jù)采集服務(wù)端功能:</p><p> 用戶登錄成功進(jìn)入DMS數(shù)據(jù)采集主界面,然后點(diǎn)擊“服務(wù)端”后,進(jìn)入數(shù)據(jù)采集服務(wù)端選項(xiàng),點(diǎn)擊“運(yùn)行服務(wù)端”按鈕,系統(tǒng)成功啟動(dòng)采集服務(wù)線程。</p><p> 3. 測(cè)試數(shù)據(jù)采集服務(wù)端功能:</p><p> 用戶登錄成功進(jìn)入DMS數(shù)據(jù)采集主界面,然后點(diǎn)擊“客戶端”后,進(jìn)入數(shù)據(jù)
107、采集服務(wù)端選項(xiàng),點(diǎn)擊“運(yùn)行客戶端”按鈕,系統(tǒng)成功啟動(dòng)數(shù)據(jù)采集客戶線程。</p><p> 4.測(cè)試數(shù)據(jù)整合端功能:</p><p> 用戶登錄成功進(jìn)入DMS數(shù)據(jù)采集主界面,然后點(diǎn)擊“整合端”后,進(jìn)入數(shù)據(jù)采集服務(wù)端選項(xiàng),點(diǎn)擊“運(yùn)行整合端”按鈕,系統(tǒng)成功啟動(dòng)數(shù)據(jù)整合線程。</p><p> 經(jīng)過以上各項(xiàng)的測(cè)試,證明本系統(tǒng)這些功能能夠正常運(yùn)行,但也有許多不足之處,有
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 用電信息采集系統(tǒng)與數(shù)據(jù)采集技術(shù).pdf
- 基于統(tǒng)一數(shù)據(jù)采集與集中監(jiān)控平臺(tái)的用電信息采集系統(tǒng).pdf
- 電信計(jì)費(fèi)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 電信計(jì)費(fèi)數(shù)據(jù)采集系統(tǒng)的實(shí)現(xiàn)與研究.pdf
- 基于SSH的電信工程物資管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于FPGA的下肢肌電信號(hào)數(shù)據(jù)采集與傳輸研究.pdf
- 基于電信網(wǎng)絡(luò)管理的性能數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于大數(shù)據(jù)的用戶用電信息采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 電信網(wǎng)上的數(shù)據(jù)采集與控制系統(tǒng).pdf
- 基于數(shù)據(jù)挖掘的電信企業(yè)平臺(tái)整合研究及實(shí)踐.pdf
- 基于SSH的電信物資管理系統(tǒng)的研究與開發(fā).pdf
- 基于SSH的電信主動(dòng)營銷系統(tǒng)的開發(fā).pdf
- 基于WiFi傳輸?shù)男碾娦盘?hào)采集與數(shù)據(jù)分析系統(tǒng)設(shè)計(jì).pdf
- 基于ssh框架的電信計(jì)費(fèi)系統(tǒng)——畢業(yè)論文
- 腦電信號(hào)的數(shù)據(jù)采集與分析研究.pdf
- 面向電信數(shù)據(jù)整合的收入歸集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于SSH2應(yīng)用系統(tǒng)的SSIS整合方案研究與設(shè)計(jì).pdf
- 基于PCI總線的心電信號(hào)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì).pdf
- 福州電信業(yè)務(wù)數(shù)據(jù)自助采集平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于ISA數(shù)據(jù)采集與處理.pdf
評(píng)論
0/150
提交評(píng)論