




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)挖掘技術(shù)在電信計(jì)費(fèi)系統(tǒng)中的應(yīng)用摘要隨著網(wǎng)絡(luò)的高速發(fā)展,一些大型廠商推出了服務(wù)器出租這項(xiàng)業(yè)務(wù)。為了使得出租商快捷、方便以及高效的統(tǒng)計(jì)出用戶的登錄信息及應(yīng)繳費(fèi)情況,本文開(kāi)發(fā)了一個(gè)電信計(jì)費(fèi)系統(tǒng)。本系統(tǒng)采用C/S架構(gòu),在UNIX環(huán)境下以C+為主要的開(kāi)發(fā)語(yǔ)言開(kāi)發(fā)完成??蛻舳说墓δ馨ǘ〞r(shí)從非結(jié)構(gòu)型服務(wù)器日志文件采集用戶數(shù)據(jù),匹配登入/登出信息,向服務(wù)器發(fā)送數(shù)據(jù);服務(wù)端的功能包括接收客戶端發(fā)送過(guò)來(lái)的數(shù)據(jù),存儲(chǔ)數(shù)據(jù)和整合數(shù)據(jù)等。從海量用戶數(shù)據(jù)中匹配登入/登出信息采用了數(shù)據(jù)挖掘技術(shù),所提取到的有效計(jì)費(fèi)信息存儲(chǔ)在Oracle數(shù)據(jù)庫(kù)中。關(guān)鍵詞:電信計(jì)費(fèi)系統(tǒng);數(shù)據(jù)挖掘;數(shù)據(jù)匹配;數(shù)據(jù)整合 The Applica
2、tion of Data Mining Technology in the Telecom Toll SystemABSTRACTWith the rapid development of the network , some large companies such as China Telecom launched the server rent business. In order to statistic user login information and charge more fastly, conveniently and efficiently, a Telecom toll
3、 system is developed in this paper. This system is programmed by C+ language with C/S architecture in Unix operater system.The functions in client port include reading user information from unstructural log file ,matching data and sending data to a server;The functions in sever port include receivin
4、g data from client, data storage and integrating data. Data mining technology is used in the huge amount of data matching processing and all the resultful data are all stored in Oracle database. Keywords:the Telecom toll system ; Data mining ;Data matching ;Data integration 目錄1 引言11.1課題來(lái)源及意義11.2國(guó)內(nèi)外發(fā)
5、展?fàn)顩r1數(shù)據(jù)挖掘技術(shù)的基本知識(shí)1數(shù)據(jù)挖掘技術(shù)的基本應(yīng)用2數(shù)據(jù)挖掘技術(shù)的發(fā)展21.3 本文的主要工作2設(shè)計(jì)思想和實(shí)現(xiàn)目標(biāo)2論文結(jié)構(gòu)安排32 系統(tǒng)分析32.1可行性研究4 技術(shù)可行性4經(jīng)濟(jì)可行性42.2需求分析4項(xiàng)目業(yè)務(wù)需求4功能模塊5用例描述73概要設(shè)計(jì)133.1業(yè)務(wù)流程13業(yè)務(wù)流程中幾個(gè)存儲(chǔ)文件的命名規(guī)則13業(yè)務(wù)規(guī)則說(shuō)明133.2系統(tǒng)模塊133.3接口設(shè)計(jì)15用戶接口15外部接口15內(nèi)部接口163.4數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)16登入/登出記錄數(shù)據(jù)類173.4.2 匹配的用戶登錄記錄類173.5數(shù)據(jù)庫(kù)設(shè)計(jì)184 詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)204.1 客戶端模塊204.1.1 數(shù)據(jù)讀取模塊設(shè)計(jì)204.1.2 數(shù)據(jù)匹配模塊
6、設(shè)計(jì)234.1.3 數(shù)據(jù)發(fā)送模塊設(shè)計(jì)274.2 服務(wù)端模塊31數(shù)據(jù)接收模塊設(shè)計(jì)33數(shù)據(jù)存儲(chǔ)模塊設(shè)計(jì)36數(shù)據(jù)緩沖池384.3異常設(shè)計(jì)39異常類結(jié)構(gòu)圖39客戶端異常類說(shuō)明394.4數(shù)據(jù)庫(kù)具體實(shí)現(xiàn)405 結(jié)論42參考文獻(xiàn)43致謝441 引言1.1課題來(lái)源及意義隨著計(jì)算機(jī)及互聯(lián)網(wǎng)技術(shù)的高速發(fā)展,一些大的廠家例如電信,推出了服務(wù)器出租這項(xiàng)業(yè)務(wù),選擇這項(xiàng)業(yè)務(wù)的用戶可以通過(guò)遠(yuǎn)程登錄服務(wù)器上進(jìn)行自己的工作。服務(wù)器出租就是指用戶不需要自己購(gòu)買(mǎi)服務(wù)器,只需要根據(jù)自己的業(yè)務(wù)要求,向運(yùn)營(yíng)商申請(qǐng)一個(gè)帳號(hào)通過(guò)遠(yuǎn)程登錄,便可以輕松享用服務(wù)器。由于服務(wù)器的價(jià)格相當(dāng)昂貴,所以更多的用戶更傾向于選擇租用,而不是購(gòu)買(mǎi)。這樣服務(wù)器出
7、租便得到了廣泛的發(fā)展。這時(shí)就需要一款運(yùn)行在服務(wù)器上的計(jì)時(shí)軟件,來(lái)統(tǒng)計(jì)用戶的使用情況來(lái)做出相應(yīng)的收費(fèi)依據(jù)。在此背景下,電信計(jì)費(fèi)系統(tǒng)便應(yīng)運(yùn)而生了,電信計(jì)費(fèi)系統(tǒng)是專門(mén)為服務(wù)器租賃商開(kāi)發(fā)研究的,租賃商只需要在各地區(qū)出租的服務(wù)器上安裝本系統(tǒng),就會(huì)有相應(yīng)的數(shù)據(jù)從客戶端源源不斷發(fā)送到服務(wù)端,這樣便可以輕松的了解各地服務(wù)器的運(yùn)營(yíng)狀況,以及盈虧情況,同時(shí)也可以作為用戶繳納費(fèi)用的依據(jù)。電信計(jì)費(fèi)系統(tǒng)是專門(mén)為電信制作的一款計(jì)費(fèi)程序,可以非常方便、快捷、實(shí)時(shí)查詢出用戶需要繳納的費(fèi)用。方便運(yùn)營(yíng)商在后續(xù)階段進(jìn)行合理的計(jì)劃調(diào)整。通過(guò)對(duì)這一課題的學(xué)習(xí)和研究,可以將電信計(jì)費(fèi)系統(tǒng)的基本原理、實(shí)現(xiàn)流程等展現(xiàn)出來(lái),并可作為新的綜合電信
8、計(jì)費(fèi)系統(tǒng)來(lái)學(xué)習(xí)和研究,也可以順帶了解實(shí)際電信實(shí)時(shí)計(jì)費(fèi)的工作流程,具有一定的現(xiàn)實(shí)意義。1.2國(guó)內(nèi)外發(fā)展?fàn)顩r由于用戶數(shù)量巨大,所有用戶信息交錯(cuò)保存在非結(jié)構(gòu)型日志文件中。如何從海量數(shù)據(jù)中找到某一用戶的計(jì)費(fèi)信息,就需要數(shù)據(jù)挖掘技術(shù)的支持。數(shù)據(jù)挖掘技術(shù)的基本知識(shí)數(shù)據(jù)挖掘(Data Mining,簡(jiǎn)稱DM),又稱為數(shù)據(jù)庫(kù)中知識(shí)發(fā)現(xiàn)(Knowledge Discovery from Database,簡(jiǎn)稱KDD),它是一個(gè)從大量數(shù)據(jù)中抽取挖掘出未知的、有價(jià)值的模式或規(guī)律等知識(shí)的復(fù)雜過(guò)程1。整個(gè)知識(shí)挖掘(KDD)過(guò)程是由若干挖掘步驟組成,而數(shù)據(jù)挖掘僅是其中的一個(gè)主要步驟。盡管數(shù)據(jù)挖掘僅僅是整個(gè)知識(shí)挖掘過(guò)程中的
9、一個(gè)重要步驟,但由于目前工業(yè)界、媒體、數(shù)據(jù)庫(kù)研究領(lǐng)域中,“數(shù)據(jù)挖掘”一詞已被廣泛使用并被普遍接受,因此也可以廣義地使用“數(shù)據(jù)挖掘”一詞來(lái)表示整個(gè)知識(shí)挖掘過(guò)程,即數(shù)據(jù)挖掘就是一個(gè)從數(shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù)或其它信息資源庫(kù)的大量數(shù)據(jù)中發(fā)掘出有趣的知識(shí)。1.2.2數(shù)據(jù)挖掘技術(shù)的基本應(yīng)用實(shí)際上數(shù)據(jù)挖掘技術(shù)從一開(kāi)始就是面向應(yīng)用的。目前,在很多重要的領(lǐng)域,數(shù)據(jù)挖掘都可以發(fā)揮積極促進(jìn)的作用。尤其是在如銀行、電信、保險(xiǎn)、交通、零售(如超級(jí)市場(chǎng))等商業(yè)應(yīng)用領(lǐng)域。數(shù)據(jù)挖掘能夠幫助解決許多典型的商業(yè)問(wèn)題,其中包括:數(shù)據(jù)庫(kù)營(yíng)銷、客戶群體劃分、背景分析、交叉銷售等市場(chǎng)分析行為,以及客戶流失性分析、客戶信用評(píng)分、欺詐發(fā)現(xiàn)等等。1
10、.2.3數(shù)據(jù)挖掘技術(shù)的發(fā)展數(shù)據(jù)挖掘的目的就是為企業(yè)決策提供的正確依據(jù),利用計(jì)算機(jī)及信息技術(shù)輔助完成從分析數(shù)據(jù)、發(fā)現(xiàn)問(wèn)題、作出決策到采取行動(dòng)這一系列操作。因此人們將這種機(jī)構(gòu)行為和手段稱這為“事務(wù)智能”(Business Intelligent,簡(jiǎn)稱BI),BI能極大地改進(jìn)決策的質(zhì)量和及時(shí)性,從而改進(jìn)機(jī)構(gòu)的生產(chǎn)率或發(fā)揮競(jìng)爭(zhēng)優(yōu)勢(shì)。所以近年來(lái),一些大公司將數(shù)據(jù)分析和數(shù)據(jù)挖掘工具及其有關(guān)技術(shù)組合起來(lái)形成所謂BIS(Business Intelligent Softwave)。其中SAS公司的的Enterprise Minter就是將數(shù)據(jù)源、數(shù)據(jù)預(yù)處理、數(shù)據(jù)存貯、數(shù)據(jù)分析與發(fā)掘、信息表示與應(yīng)用等方面技術(shù)有
11、機(jī)形成一個(gè)復(fù)雜數(shù)據(jù)挖掘系統(tǒng)有機(jī)整體。1.3 本文的主要工作1.3.1設(shè)計(jì)思想和實(shí)現(xiàn)目標(biāo)設(shè)計(jì)思想是:任何用戶登錄Unix系統(tǒng),Unix系統(tǒng)都會(huì)記錄用戶的登錄信息,所有用戶登入/登出的信息都保存在Unix的系統(tǒng)日志文件中。數(shù)據(jù)采集系統(tǒng)就是通過(guò)讀取Unix系統(tǒng)日志文件中用戶登入/登出信息,并找出成對(duì)的登入/登出記錄,得到用戶登錄服務(wù)器的登入時(shí)刻、登出時(shí)刻、登錄時(shí)間長(zhǎng)度等電信用戶收費(fèi)需要使用的數(shù)據(jù)。實(shí)現(xiàn)目標(biāo)是: 把匹配處理好的數(shù)據(jù)保存成電信工作人員可以閱讀的文本文件,做為電信收費(fèi)依據(jù)。1.3.2論文結(jié)構(gòu)安排本文的結(jié)構(gòu)安排如下:第一章 引言介紹了課題的概況和相關(guān)技術(shù)的發(fā)展情況,以及課題的設(shè)計(jì)思想和實(shí)現(xiàn)目
12、標(biāo)。第二章 系統(tǒng)分析介紹了項(xiàng)目中涉及到的各種數(shù)據(jù)信息,各個(gè)功能模塊的運(yùn)行流程。第三章 概要設(shè)計(jì)概要設(shè)計(jì)文檔主要描述了數(shù)據(jù)挖掘系統(tǒng)的總體設(shè)計(jì),從上述文檔中明確DMS系統(tǒng)需求的基礎(chǔ),從而劃分出DMS系統(tǒng)的幾大功能,進(jìn)行系統(tǒng)開(kāi)發(fā)分工,明確各模塊之間的接口,為進(jìn)行后面的詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)做好準(zhǔn)備。第四章 詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)本章主要介紹了各個(gè)模塊的具體實(shí)現(xiàn)流程圖和具體實(shí)現(xiàn)代碼第五章 結(jié)論回顧并總結(jié)了課題的研究過(guò)程中所做的工作,也思考了研究過(guò)程中遇到的問(wèn)題并列出了實(shí)踐中的不足之處,最后根據(jù)自己的認(rèn)識(shí)對(duì)相關(guān)技術(shù)的發(fā)展前景進(jìn)行了展望。2 系統(tǒng)分析2.1需求分析電信公司現(xiàn)在具有哪些設(shè)備環(huán)境,能提供哪些原始數(shù)據(jù),需要的最
13、終數(shù)據(jù)形式是什么,數(shù)據(jù)是什么。電信公司為客戶提供Unix服務(wù)器出租的服務(wù),這樣就必須有一個(gè)程序通過(guò)從Unix系統(tǒng)日志文件的海量數(shù)據(jù)中挖掘出用戶登錄、登出的時(shí)間來(lái)計(jì)算用戶登錄時(shí)長(zhǎng),并生成數(shù)據(jù)報(bào)表存儲(chǔ)在公司另外的一個(gè)Oracle數(shù)據(jù)庫(kù)中,以便電信公司計(jì)算費(fèi)用。2.2功能模塊根據(jù)用戶需求分析,電信計(jì)費(fèi)系統(tǒng)主要功能模塊包括:數(shù)據(jù)讀取,數(shù)據(jù)匹配,數(shù)據(jù)發(fā)送,數(shù)據(jù)接收,數(shù)據(jù)存儲(chǔ),數(shù)據(jù)整合。模塊具體活動(dòng)流程如圖2-1:圖2-1系統(tǒng)活動(dòng)圖數(shù)據(jù)讀?。涸撃K的主要功能是讀取UNIX服務(wù)器上的的用戶登錄信息日志文件,備份日志文件,讀取上一次未匹配成功的登錄記錄信息,讀取備份的日志文件。數(shù)據(jù)匹配:該模塊的主要功能是將數(shù)
14、據(jù)讀取模塊讀取到的數(shù)據(jù)按照?qǐng)D一定的關(guān)系匹配成完整的數(shù)據(jù),未完成的匹配的數(shù)據(jù)保存在到文件中。方便下次讀取時(shí)進(jìn)行匹配。數(shù)據(jù)發(fā)送:該模塊的主要功能是建立客戶端socket網(wǎng)絡(luò)連接,將匹配好的用戶登錄記錄發(fā)送到服務(wù),未發(fā)送成功的記錄保存在文件中為下次發(fā)送時(shí)重新讀取。數(shù)據(jù)接收:該模塊的主要功能是建立服務(wù)端的網(wǎng)絡(luò)連接,從客戶端讀取匹配好的用戶登錄信息放入緩沖池中。數(shù)據(jù)存儲(chǔ):該模塊的主要功能是將緩沖池中的數(shù)據(jù)保存到指定的數(shù)據(jù)庫(kù)表中。數(shù)據(jù)整合:該模塊的主要功能是將數(shù)據(jù)庫(kù)中保存的用戶登錄記錄按照日、月、年整合成詳細(xì)的報(bào)表。2.3用例描述根據(jù)用戶需求和功能分析,生成系統(tǒng)用例圖。如圖2-1所示。圖2-2系統(tǒng)用例圖電
15、信計(jì)費(fèi)系統(tǒng)各功能模塊的用例說(shuō)明如下:數(shù)據(jù)讀取用例說(shuō)明: 保存用戶登錄信息的UNIX系統(tǒng)日志文件在/var/adm目錄下,文件名為wtmpx,日志文件以二進(jìn)制方式進(jìn)行存儲(chǔ)的,如果想在UNIX下查看wtmpx,可以使用last命令:last -a -n number | -number -f filename name | ttywtmpx文件中每條記錄都包含有372個(gè)字節(jié),所包含的每條記錄項(xiàng)格式如下表2-1所示(其中灰色背景區(qū)域的數(shù)據(jù)為本系統(tǒng)需要采集的數(shù)據(jù)項(xiàng)): 表2-1用戶登錄記錄數(shù)據(jù)項(xiàng)格式位置范圍字節(jié)長(zhǎng)度含義000-03132 用戶登錄名 032-0354 初始進(jìn)程 id 036-06732
16、 設(shè)備名 068-0714 進(jìn)程ID072-0732 登錄類型7-登入,8-登出 074-0752過(guò)程終止076-0772 退出狀態(tài)2 這是C數(shù)據(jù)類型補(bǔ)齊產(chǎn)生的空位080-0834 登錄時(shí)刻 /單位是秒 084-0874 和微秒 088-0914 會(huì)議編號(hào),用于視窗 092-11120 預(yù)保留112-1132 significant length of ut_host 114-371257/* 登錄IP*/日志文件登錄數(shù)據(jù)項(xiàng)總數(shù)可以使用公式:記錄項(xiàng)總數(shù)=日志文件大小/372。數(shù)據(jù)采集基本流程如表2-2表2-2數(shù)據(jù)采集的基本流程用例名稱數(shù)據(jù)采集功能簡(jiǎn)述DMS管理員運(yùn)行數(shù)據(jù)挖掘系統(tǒng),完成數(shù)據(jù)采集的
17、功能前置條件數(shù)據(jù)挖掘系統(tǒng)在服務(wù)器上已正確安裝基本流1. 管理員啟動(dòng)DMS服務(wù)端系統(tǒng)2. 管理員啟動(dòng)DMS客戶端系統(tǒng)3. 客戶端程序定期將登錄數(shù)據(jù)文件備份,并清空源文件4. 客戶端系統(tǒng)讀取上次未匹配成功的登入信息5. 客戶端讀取備份的數(shù)據(jù)信息,剔除非法登錄的用戶6. 客戶端獲得用戶的登入/登出記錄表7. 客戶端將用戶登入/登出記錄匹配為完整的登錄記錄客戶端程序?qū)⒉荒艹晒ζヅ涞牡侨胗涗泴?xiě)到文件中保存8. 客戶端程序?qū)⑵ヅ浜玫牡卿浻涗洶l(fā)送到服務(wù)端9. 服務(wù)端程序接客戶端發(fā)送的數(shù)據(jù)10. 服務(wù)端程序先將數(shù)據(jù)寫(xiě)到服務(wù)端文件存入緩沖池中11.服務(wù)端程序?qū)⒕彌_池的數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中分支與異常第1步,若服務(wù)端
18、程序啟動(dòng)失敗,則發(fā)送異常報(bào)告。第2步,若客戶端程序啟動(dòng)失敗,則發(fā)送異常報(bào)告。第3步,若清空文件失敗,則發(fā)送異常報(bào)告。第4步,若上次未匹配的登入記錄文件不存在,則跳過(guò)到第5步。第5步,若讀取備份的用戶記錄數(shù)據(jù)文件失敗,則發(fā)送異常報(bào)告。第7步,若指定的保存文件不存在,則創(chuàng)建文件。第7步,若創(chuàng)建目錄或?qū)懳募?,則發(fā)送異常報(bào)告。第8步,若發(fā)送數(shù)據(jù)失敗,則定時(shí)重傳。第10步,若寫(xiě)入文件失敗,則發(fā)送異常報(bào)告。后置條件啟動(dòng)contrab命令,定時(shí)讀取、發(fā)送數(shù)據(jù)備注無(wú)數(shù)據(jù)讀取用例說(shuō)明如表2-3:表2-3數(shù)據(jù)讀取的基本流程用例名稱數(shù)據(jù)讀取功能簡(jiǎn)述客戶端程序讀取系統(tǒng)數(shù)據(jù)文件和上次未匹配的登入記錄,形成用戶登錄記
19、錄項(xiàng)。前置條件DMS客戶端程序啟動(dòng)基本流1) 讀取上次未匹配的登入記錄。2) 將存儲(chǔ)到記錄放入鏈表中。3) 讀取備份的數(shù)據(jù)文件,清空源文件,將文件內(nèi)容解析成可用的記錄。4. 將解析得到的用戶登錄記錄放入對(duì)應(yīng)的鏈表中。5. 返回用戶登錄記錄鏈表。分支與異常第1步,若上次未匹配的登入記錄文件不存在,則跳過(guò)到第3步。第3步,若用戶登錄數(shù)據(jù)文件不存在,則報(bào)告異常。后置條件無(wú)備注無(wú)數(shù)據(jù)匹配用例說(shuō)明如圖2-4:表2-4 數(shù)據(jù)匹配的基本流程用例名稱數(shù)據(jù)匹配功能簡(jiǎn)述DMS客戶端程序讀取用戶的登入/登出記錄鏈表,找到一條匹配的數(shù)據(jù),包裝成匹配記錄,添加到匹配鏈表中,刪除登入/登出記錄,并將本次未匹配的登入記錄保
20、存到指定文件中。前置條件已經(jīng)獲得用戶登入/登出記錄鏈表基本流1. 訪問(wèn)用戶登入/登出記錄鏈表,按照登入/登出的對(duì)應(yīng)關(guān)系匹配數(shù)據(jù),包裝成匹配記錄。2. 把匹配好的記錄添加到匹配鏈表中3. 將未匹配的登入記錄寫(xiě)到指定的文件中。分支與異常后置條件無(wú)備注無(wú)數(shù)據(jù)發(fā)送用例說(shuō)明:表2-5 數(shù)據(jù)發(fā)送的基本流程用例名稱數(shù)據(jù)發(fā)送功能簡(jiǎn)述客戶端將匹配好的數(shù)據(jù)通過(guò)網(wǎng)絡(luò)socket發(fā)送給服務(wù)端。前置條件用戶登錄記錄已經(jīng)匹配成功基本流1.讀取發(fā)送失敗的文件。2.創(chuàng)建網(wǎng)絡(luò)連接,鏈接到服務(wù)端。3.遍歷匹配的用戶登錄記錄集合,將匹配好的用戶登錄數(shù)據(jù)按照指定格式發(fā)送。4.刪除發(fā)送的信息5.循環(huán)直到所有匹配的登錄記錄處理完成。6.
21、保存發(fā)送失敗的記錄到文件中。 7.關(guān)閉網(wǎng)絡(luò)連接。分支與異常第2步,若網(wǎng)絡(luò)連接失敗,則發(fā)送異常報(bào)告。第6步,若寫(xiě)文件失敗,則發(fā)送異常報(bào)告。后置條件無(wú)備注無(wú)數(shù)據(jù)接收用例說(shuō)明:表2-6 數(shù)據(jù)接收的基本流程用例名稱數(shù)據(jù)接收功能簡(jiǎn)述DMS服務(wù)端接收從客戶端傳送過(guò)來(lái)的數(shù)據(jù)。前置條件服務(wù)器程序啟動(dòng),客戶端完成匹配,連接到服務(wù)端,并已發(fā)送數(shù)據(jù)?;玖?. 開(kāi)啟服務(wù)程序。2. 創(chuàng)建socket網(wǎng)絡(luò)連接。3. 開(kāi)啟新的線程為客戶端服務(wù)。4. 循環(huán)從客戶端中接受數(shù)據(jù),保存在數(shù)據(jù)池中。5. 關(guān)閉流對(duì)象,關(guān)閉網(wǎng)絡(luò)連接,終止線程。分支與異常第1步,若開(kāi)啟服務(wù)失敗,則發(fā)送異常報(bào)告。第2步,若獲得網(wǎng)絡(luò)連接失敗,則發(fā)送異常報(bào)告
22、。第4步,若寫(xiě)出數(shù)據(jù)失敗,則發(fā)送異常報(bào)告。后置條件無(wú)備注無(wú)數(shù)據(jù)保存用例說(shuō)明:表2-6 數(shù)據(jù)保存的基本流程用例名稱數(shù)據(jù)保存功能簡(jiǎn)述采集系統(tǒng)服務(wù)器將存放在數(shù)據(jù)池中的的數(shù)據(jù)保存到數(shù)據(jù)庫(kù)。前置條件服務(wù)器已經(jīng)接收到數(shù)據(jù)?;玖?、 建立到數(shù)據(jù)庫(kù)的連接。2、循環(huán)訪問(wèn)數(shù)據(jù)池中的數(shù)據(jù)。3、 將數(shù)據(jù)池中的記錄插入到數(shù)據(jù)庫(kù)相應(yīng)的表格中。4、訪問(wèn)完成后斷開(kāi)與數(shù)據(jù)庫(kù)的鏈接。分支與異常第1步,若建立數(shù)據(jù)庫(kù)連接失敗,則發(fā)送異常報(bào)告。第2步,若插入記錄失敗,則發(fā)送異常報(bào)告。后置條件無(wú)備注無(wú)數(shù)據(jù)整合用例說(shuō)明:表2-7數(shù)據(jù)整合的基本流程用例名稱數(shù)據(jù)整合功能簡(jiǎn)述服務(wù)端將接收到的用戶登錄的數(shù)據(jù)整合成日?qǐng)?bào)表,月報(bào)表和年報(bào)表。前置條件
23、數(shù)據(jù)庫(kù)中存放有用戶登錄信息基本流1. 執(zhí)行SQL語(yǔ)句,將數(shù)據(jù)庫(kù)中存放的前一天的記錄按照用戶名和實(shí)驗(yàn)室ip地址為條件組合,統(tǒng)計(jì)出前一天,用戶登錄某一實(shí)驗(yàn)室機(jī)器的總時(shí)間,整理形成日?qǐng)?bào)表。2. 執(zhí)行SQL語(yǔ)句,根據(jù)日?qǐng)?bào)表數(shù)據(jù)整合出用戶登錄服務(wù)器記錄的月報(bào)表。3. 執(zhí)行SQL語(yǔ)句,根據(jù)用月報(bào)表數(shù)據(jù)整合出用戶登錄服務(wù)器記錄的年報(bào)表。分支與異常后置條件無(wú)備注無(wú)3概要設(shè)計(jì)3.1業(yè)務(wù)流程3.1.1業(yè)務(wù)流程中幾個(gè)存儲(chǔ)文件的命名規(guī)則(1)系統(tǒng)日志文件由外部傳遞給客戶端程序,客戶端需要判定該文件是否存在然后才能采集, 采集的數(shù)據(jù)為該文件的備份文件,備份的文件由當(dāng)前的日期和源文件名共同命名。(2)未匹配成功的登入數(shù)據(jù)
24、項(xiàng)集合保存在文件中,文件名為faillog.dat。(3)發(fā)送失敗的數(shù)據(jù)匹配集合保存在failsend.dat中。3.1.2業(yè)務(wù)規(guī)則說(shuō)明日志登入/登出數(shù)據(jù)項(xiàng)讀取規(guī)則:系統(tǒng)日志文件中的數(shù)據(jù)項(xiàng)有很多類,通過(guò)登錄名和登錄類型可以獲知哪些信息需要采集,哪些信息可以舍棄,只有滿足如下條件的數(shù)據(jù)項(xiàng)才是需要采集的:(1)登錄名若以(.)開(kāi)頭,一般是登錄程序本身的日志數(shù)據(jù)項(xiàng),為非法數(shù)據(jù),不需要采集。(2)登錄類型必須是7(登入)或8(登出),其他類型的可以舍棄。3.2系統(tǒng)模塊圖3-1系統(tǒng)功能模塊圖物理上DMS系統(tǒng)分為客戶端和服務(wù)端兩部分,在客戶端包含數(shù)據(jù)采集模塊,數(shù)據(jù)匹配分析模塊和數(shù)據(jù)發(fā)送模塊;在服務(wù)端端包含
25、數(shù)據(jù)接收模塊,數(shù)據(jù)存儲(chǔ)模塊和數(shù)據(jù)整合模塊,各模塊的主要功能如下所示:數(shù)據(jù)采集模塊:該模塊的主要功能是讀取UNIX服務(wù)器上的用戶登錄記錄日志的備份文件,提取有用的記錄信息,如表3-1所示,保存到鏈表集合中,并傳給數(shù)據(jù)匹配模塊來(lái)進(jìn)行數(shù)據(jù)匹配。表3-1 要讀取的原始記錄數(shù)據(jù)數(shù)據(jù)名數(shù)據(jù)含義是否需要采集備注說(shuō)明logname用戶名是匹配同一次登錄會(huì)話的必需數(shù)據(jù)之一pid登錄進(jìn)程ID匹配同一次登錄會(huì)話的必需數(shù)據(jù)之二type登錄類型7-登入,8-登出type的值在1-8之間,但只對(duì)7與8兩種情況進(jìn)行處logtime登錄時(shí)刻/單位為秒是要采集的數(shù)據(jù),logtime是登入或登出的時(shí)間 登錄的IP地址是要采集的數(shù)
26、據(jù)數(shù)據(jù)匹配模塊:數(shù)據(jù)匹配模塊的主要功能是將采集到的用戶記錄信息按照登入、登出關(guān)系匹配成一條完整的登入、登出記錄,并計(jì)算出用戶的在線時(shí)間,將這些信息推入鏈表中,然后將這些信息發(fā)送給數(shù)據(jù)發(fā)送模塊。該模塊的輸入數(shù)據(jù)是從日志文件中采集到的原始記錄,輸出的是匹配好的登入、登出記錄。表3-2需要匹配登錄記錄數(shù)據(jù)數(shù)據(jù)名數(shù)據(jù)含義logname用戶登錄名logintime登入時(shí)刻logouttime登出時(shí)刻durations登錄時(shí)間長(zhǎng)度logip登錄終端的ip地址數(shù)據(jù)發(fā)送模塊:該模塊的主要功能是建立連接到服務(wù)端,將匹配好的登錄、登出記錄用通過(guò)網(wǎng)絡(luò)TCP/IP協(xié)議發(fā)送到DMS系統(tǒng)服務(wù)端。數(shù)據(jù)接收模塊:該模塊在服務(wù)
27、器端主要功能是從網(wǎng)絡(luò)中接收客戶端發(fā)送來(lái)的登錄/登出數(shù)據(jù)。數(shù)據(jù)存儲(chǔ)模塊:該模塊得主要功能是將從數(shù)據(jù)接收模塊接收到的數(shù)據(jù)按照一定的格式添加到數(shù)據(jù)庫(kù)中,保存為用戶登入/登出記錄明細(xì)表。數(shù)據(jù)整合模塊:將數(shù)據(jù)庫(kù)中保存的用戶登錄/登出記錄明細(xì)表的數(shù)據(jù)整理生成日?qǐng)?bào)表,根據(jù)日?qǐng)?bào)表整合成月報(bào)表,根據(jù)月報(bào)表整合成年報(bào)表。用戶登錄服務(wù)器的信息在客戶端匹配好后發(fā)送給服務(wù)端,服務(wù)端接收到這些數(shù)據(jù),并保存在數(shù)據(jù)庫(kù)中形成用戶登錄記錄明細(xì)表??蛻舳硕ㄆ趶膚tmpx中提取數(shù)據(jù),定期向服務(wù)端發(fā)送信息然后我們的程序需要用plsql定期的整理出日?qǐng)?bào)表,月報(bào)表和年報(bào)表。在數(shù)據(jù)庫(kù)中保存的用戶登錄記錄信息結(jié)構(gòu)如下表所示:表3-3數(shù)據(jù)庫(kù)中保
28、存的登錄記錄數(shù)據(jù)數(shù)據(jù)名數(shù)據(jù)含義Logname用戶名Logintime登入時(shí)間Logouttime退出時(shí)間Durations在線時(shí)間長(zhǎng)度Logip登錄終端的IP地址Labip用戶登錄的實(shí)驗(yàn)室IP3.3接口設(shè)計(jì)3.3.1用戶接口 用戶:執(zhí)行命令,啟動(dòng)DMS服務(wù)端程序。 系統(tǒng):服務(wù)端系統(tǒng)正常運(yùn)行,等待接收數(shù)據(jù)。 用戶:執(zhí)行命令,啟動(dòng)DMS客戶端程序。 系統(tǒng):客戶端系統(tǒng)正常運(yùn)行,采集并發(fā)送數(shù)據(jù)。 外部接口 客戶端系統(tǒng)讀取用戶登錄記錄文件,獲得用戶登錄、登出信息。 客戶端系統(tǒng)讀取上次未匹配成功的登入記錄文件,獲取未匹配的登入記錄數(shù)據(jù)。 服務(wù)端系統(tǒng)將匹配好的數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)表中。 服務(wù)端系統(tǒng)整合出日?qǐng)?bào)表,月
29、報(bào)表和年報(bào)表。 內(nèi)部接口 客戶端讀取模塊與匹配模塊間的接口: 輸入:讀取解析好的用戶登入/登出記錄鏈表 輸出:無(wú) 客戶端匹配模塊與發(fā)送模塊間的接口: 輸入:匹配成功的用戶登錄記錄鏈表 輸出:無(wú) 客戶端數(shù)據(jù)發(fā)送與服務(wù)端數(shù)據(jù)接收間的接口: 輸入:匹配成功的用戶登錄記錄項(xiàng) 輸出:接收成功與否的消息 服務(wù)端數(shù)據(jù)接收模塊與數(shù)據(jù)保存模塊間的接口: 輸入:發(fā)送成功的用戶登錄記錄列表 輸出:無(wú) 服務(wù)端數(shù)據(jù)保存模塊與數(shù)據(jù)庫(kù)間接口: 輸入:發(fā)送成功的用戶登錄記錄列表 輸出:無(wú) 服務(wù)端數(shù)據(jù)整合模塊與數(shù)據(jù)庫(kù)間接口: 輸入:用戶登錄記錄明細(xì)表 輸出:用戶登錄記錄的日?qǐng)?bào)表,月報(bào)表和年報(bào)表3.4數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)根據(jù)系統(tǒng)需求,設(shè)
30、計(jì)出如下數(shù)據(jù)實(shí)體:1、LogRec:登入/登出記錄類,用來(lái)存放一條原始的用戶登入/登出記錄。2、MatchedLogRec:匹配成功的登錄記錄類,用來(lái)表示一條匹配成功的用戶 登錄記錄。登入/登出記錄數(shù)據(jù)類(1)LogRec類圖:圖3-2 LogRec類圖(2)LogRec類成員變量說(shuō)明成員變量定義成員變量說(shuō)明備注char logname32用戶名int pid用戶的進(jìn)程IDshort type登錄類型7=登入;8=登出int logtime用戶登入/登出時(shí)刻(秒)char logip257用戶登錄IP表3-4LoRec類成員變量3.4.2 匹配的用戶登錄記錄類MatchedLogRec類圖:圖
31、3-3MatchedLogRec類圖MatchedLogRec類成員變量說(shuō)明:表3-5MatchedLoRec類成員變量成員變量定義成員變量說(shuō)明備注char logname32用戶登錄名char logip32用戶登錄終端IPint logintime登入時(shí)刻(秒)int logoutTime登出時(shí)刻(秒)int durations用戶在線總時(shí)間(秒)char labip257實(shí)驗(yàn)室IP3.5數(shù)據(jù)庫(kù)設(shè)計(jì)根據(jù)用戶需求,最后生成的數(shù)據(jù)庫(kù)表包括:用戶登錄記錄明細(xì)表、用戶登錄記錄日?qǐng)?bào)表、用戶登錄記錄月報(bào)表和用戶登錄記錄年報(bào)表。數(shù)據(jù)庫(kù)具體表結(jié)構(gòu)如下:表3-6用戶登錄記錄明細(xì)表字段類型長(zhǎng)度約束備注登錄記錄
32、編號(hào)Number15PK系統(tǒng)自動(dòng)生成用戶IDchar32NOT NULL實(shí)驗(yàn)室IPchar20NOT NULL用戶終端IPchar257NOT NULL登入時(shí)間Number20NOT NULL登出時(shí)間Number20NOT NULL登錄時(shí)長(zhǎng)Number12由登出時(shí)間-登入時(shí)間求得表3-7用戶登錄記錄日?qǐng)?bào)表字段類型長(zhǎng)度約束備注用戶IDchar32PK實(shí)驗(yàn)室IPchar20PK日登錄時(shí)長(zhǎng)Number12NOT NULL登出時(shí)間Date表3-8用戶登錄記錄月報(bào)表字段類型長(zhǎng)度約束備注用戶IDchar32PK實(shí)驗(yàn)室IPchar257PK月登錄時(shí)長(zhǎng)Number12NOT NULL登出時(shí)間Date表3-9用
33、戶登錄記錄年報(bào)表字段類型長(zhǎng)度約束備注用戶IDchar32PK實(shí)驗(yàn)室IPchar20PK年登錄時(shí)長(zhǎng)Number12NOT NULL登出時(shí)間Date4 詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)4.1 客戶端模塊Client類封裝數(shù)據(jù)挖掘系統(tǒng)客戶端的所有功能。 圖4-1Client類圖sendLogs方法定義:表4-1sendLogs方法方法原型public void sendLogs()方法功能執(zhí)行數(shù)據(jù)挖掘系統(tǒng)客戶端的完整過(guò)程,其中l(wèi)ogReader 負(fù)責(zé)讀取數(shù)據(jù),logSender負(fù)責(zé)發(fā)送數(shù)據(jù)參數(shù)說(shuō)明無(wú)返回類型void拋出異常調(diào)用類的異常 數(shù)據(jù)讀取模塊設(shè)計(jì) logReader類封裝了讀取日志數(shù)據(jù)的各項(xiàng)功能圖4-2logR
34、eader類圖LogReader成員變量說(shuō)明如表4-2所示:表4-2logReader成員變量成員變量定義成員變量說(shuō)明char logFileName50讀取用戶登錄數(shù)據(jù)的日志文件名char backFileName50備份的日志文件名char failLoginsFileName50未匹配成功的登錄記錄保存文件名logins list保存登入的記錄鏈表logouts list保存退出的記錄鏈表matches list保存匹配成功的記錄鏈表readLogs方法如表4-3所示:表4-3readLogs定義方法方法原型Public : list readlogs()方法功能讀取日志文件總調(diào)度函數(shù)
35、存儲(chǔ)匹配好的數(shù)據(jù)集合參數(shù)說(shuō)明無(wú)返回類型list拋出異常調(diào)用函數(shù)中可能拋出的異常readLogs方法活動(dòng)圖:圖4-3readLogs活動(dòng)圖數(shù)據(jù)讀取模塊具體代碼實(shí)現(xiàn):int fd=open(backFileName,O_RDONLY); struct stat filestate; fstat(fd,&filestate); coutfilesize:filestate.st_sizeendl; for(int i=0;ifilestate.st_size/372;i+) LogRec log; read(fd,&log.logname,32); lseek(fd,36,SEEK_CUR); re
36、ad(fd,&log.pid,4); log.pid=htonl(log.pid); / 大小端轉(zhuǎn)換htons! read(fd,&log.logtype,2); log.logtype=htons(log.logtype); lseek(fd,6,SEEK_CUR); read(fd,&log.logtime,4); log.logtime=htonl(log.logtime); lseek(fd,30,SEEK_CUR); read(fd,&log.logip,257); lseek(fd,1,SEEK_CUR); if(log.logname0!=.) if(log.logtype=7)
37、 logins.push_back(log); if(log.logtype=8) logouts.push_back(log); 數(shù)據(jù)匹配模塊設(shè)計(jì)backup方法如表4-4所示:表4-4backup定義方法方法原型private:void backup()方法功能備份日志文件 并清空原文件參數(shù)說(shuō)明無(wú)返回類型void拋出異常讀取數(shù)據(jù)失敗,拋出BackupExceptionbackup方法活動(dòng)圖: 圖4-4backup活動(dòng)圖readFailLogins方法如表4-5所示:表4-5readFailLogins定義方法方法原型public: void readFailLogins方法功能讀取上一次未
38、匹配成功的登入記錄參數(shù)說(shuō)明無(wú)返回類型void拋出異常讀取數(shù)據(jù)失敗,拋出ReadFailLoginExceptionreadFailLogins方法活動(dòng)圖:圖4-5readFailLogins活動(dòng)圖readBackupFile方法如表4-6所示:表4-6readBackupFile定義方法方法原型public: void readBackupFile方法功能讀取備份的日志文件 把讀取到的數(shù)據(jù)放入對(duì)應(yīng)的屬性中參數(shù)說(shuō)明無(wú)返回類型Void拋出異常讀取數(shù)據(jù)失敗,拋出ReadBackFileExceptionreadBackupFile方法活動(dòng)圖:圖4-6readBackupFile活動(dòng)圖matchLog
39、Rec方法如表4-7所示:表4-7matchLogRec定義方法方法原型Public: void matchLogRec()方法功能將用戶登入/登出記錄按照用戶名和IP匹配為完整的登錄記錄,存入matches參數(shù)說(shuō)明無(wú)返回類型void拋出異常匹配數(shù)據(jù)失敗,拋出MatchLogRecExceptionmatchLogRec方法活動(dòng)圖:圖4-7matchLogRec方法活動(dòng)圖saveFailLogins方法如表4-8:表4-8saveFailLogins定義方法方法原型Public: void saveFailLogins()方法功能將匹配失敗的日志記錄保存到指定的文件中參數(shù)說(shuō)明無(wú)返回類型無(wú)拋出異
40、常匹配數(shù)據(jù)失敗拋出SaveFailLoginsException數(shù)據(jù)匹配模塊具體代碼實(shí)現(xiàn):list:iterator oit=logouts.begin(); list:iterator iit=logins.begin(); for(;oit!=logouts.end();) for(iit=logins.begin();iit!=logins.end() if(!strcmp(oit-logname,iit-logname) & oit-pid=iit-pid& !strcmp(oit-logip,iit-logip) MatchedLogRec mlog; strcpy(mlog.log
41、name,oit-logname); mlog.pid=oit-pid; mlog.logintime=iit-logtime; mlog.logouttime=oit-logtime; mlog.durations=oit-logtime-iit-logtime; strcpy(mlog.logip,oit-logip); matches.push_back(mlog); logins.erase(iit); break; else iit+; logouts.erase(oit); oit=logouts.begin(); 數(shù)據(jù)發(fā)送模塊設(shè)計(jì)LogSender類定義圖4-8LogSender
42、圖 LogSender類成員變量說(shuō)明如表4-8所示:表4-8LogSender類成員定義成員變量定義成員變量說(shuō)明char failSendFileName50保存發(fā)送失敗記錄的文件名int fd采集系統(tǒng)服務(wù)器網(wǎng)絡(luò)描述符unsigned short port鏈接到的服務(wù)器端口char serverIp20要連接的服務(wù)器ipsendMatches方法如表4-9所示:表4-9sendMatches定義方法方法原型public void sendMatches(list*matches)方法功能發(fā)送匹配成功的日志集合到服務(wù)端參數(shù)說(shuō)明matches 為存儲(chǔ)發(fā)送數(shù)據(jù)的集合鏈表返回類型Void拋出異常建立連
43、接失敗,拋出SendDataException異常 sendMatches方法活動(dòng)圖: 圖4-9sendMatches活動(dòng)圖initSocket方法如表4-10所示:表4-10initSocket定義方法方法原型public void initNetWork()方法功能根據(jù)ip和port 以及serverIp連接到服務(wù)端,初始化網(wǎng)絡(luò)參數(shù)說(shuō)明無(wú)返回類型void拋出異常建立連接失敗,拋出SendDataException異常readSendfailed方法如表4-11所示:表4-11readSendfailed定義方法方法原型Public: voidreadSendfailed(list*matc
44、hes)方法功能讀取未發(fā)送成功的數(shù)據(jù)文件參數(shù)說(shuō)明matches: 匹配好的用戶日志記錄鏈表指針?lè)祷仡愋蛌oid拋出異常發(fā)送數(shù)據(jù)失敗,拋出SendDataException異常saveSendfailed方法如表4-12所示:表4-12saveSendfailed定義方法方法原型Public void saveSendfailed (list*matches)方法功能存儲(chǔ)發(fā)送失敗的數(shù)據(jù) 以備下次重新讀取發(fā)送參數(shù)說(shuō)明matches: 匹配好的用戶日志記錄鏈表指針存儲(chǔ)時(shí) 把集合中剩余的數(shù)據(jù)存儲(chǔ)到文件返回類型void拋出異常發(fā)送數(shù)據(jù)失敗,拋出SendDataException異常數(shù)據(jù)發(fā)送模塊具體代碼實(shí)
45、現(xiàn):第一步:讀取上次匹配失敗的數(shù)據(jù) int fd=open(filename,O_RDONLY|O_EXCL);if(fd=-1) return;while(1)MatchedLogRec match;int re=read(fd,&match,sizeof(match);if(repush_back(match); 第二步驟:初始化網(wǎng)絡(luò),建立到服務(wù)器的連接 fd=socket(PF_INET,SOCK_STREAM,0); if(fd=-1) coutnet work init failedendl; struct sockaddr_in addr=0; addr.sin_family=PF
46、_INET; addr.sin_port=htons(port); addr.sin_addr.s_addr=inet_addr(serverIp); int confd=connect(fd,(sockaddr*)&addr,sizeof addr); if(confd=-1) coutnet work conn failedsize()0)list:iterator it=matches-begin();MatchedLogRec match=*it;int re=write(fd,&match,sizeof(MatchedLogRec);matches-erase(it);if(re=-1) break; close(fd);4.2 服務(wù)端模塊Server類封裝了服務(wù)端的所有模塊功能圖4-10Server類圖Server成員變量說(shuō)明如表4-13所示:表4-13Server成員變量說(shuō)明成員變量定義成員變量說(shuō)明char labIp20實(shí)驗(yàn)室ipInt fdsocket描述符DataReciveThread productor接收數(shù)據(jù)的線程DataSaveThread customer存儲(chǔ)數(shù)據(jù)的線程UserData dataPoolProductor和cust
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 利用待定系數(shù)法求解析式的教學(xué)課件
- 外貿(mào)商務(wù)英語(yǔ)課件
- 河南高考英語(yǔ)語(yǔ)法單選題100道及答案
- 《納米技術(shù)應(yīng)用于教學(xué)》課件
- 《優(yōu)化圖像色彩》課件
- 《鐵路信號(hào)系統(tǒng)課件:道岔操作與維護(hù)》
- 2民間文學(xué)與在地文化采風(fēng)
- 外貿(mào)合同培訓(xùn)課件
- 《保險(xiǎn)產(chǎn)品基礎(chǔ)知識(shí)》課件
- 績(jī)效考核提前通知函
- 人工智能訓(xùn)練師理論知識(shí)考核要素細(xì)目表五級(jí)
- 2024年貴州省中考理科綜合試卷(含答案)
- 110kV變電站專項(xiàng)電氣試驗(yàn)及調(diào)試方案
- DL-T901-2017火力發(fā)電廠煙囪(煙道)防腐蝕材料
- 籃球智慧樹(shù)知到期末考試答案章節(jié)答案2024年浙江大學(xué)
- GB/T 3428-2024架空導(dǎo)線用鍍鋅鋼線
- ISO 15609-1 金屬材料焊接工藝規(guī)程及評(píng)定-焊接工藝規(guī)范中文版
- MOOC 英語(yǔ)語(yǔ)法與寫(xiě)作-暨南大學(xué) 中國(guó)大學(xué)慕課答案
- 2024年山東省濟(jì)南市歷下區(qū)中考二模地理試題
- 電子書(shū) -《商業(yè)的底層邏輯》
- 人居環(huán)境科學(xué)市公開(kāi)課一等獎(jiǎng)省賽課微課金獎(jiǎng)?wù)n件
評(píng)論
0/150
提交評(píng)論