




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
小世界理論在網(wǎng)絡(luò)中的應(yīng)用與實現(xiàn)計算機XXXX指導(dǎo)老師XXXX
摘要本文首先對小世界理論背景和意義進行了介紹,其次介紹了網(wǎng)絡(luò)、分詞等概念,再次介紹了整個系統(tǒng)開發(fā)流程,系統(tǒng)功能論述,最后對本系統(tǒng)進行了總結(jié)。關(guān)鍵詞:小世界理論,網(wǎng)絡(luò),分詞
Abstract ThispaperfirstintroducestheSixDegreesofSeparationbackgroundandsignificance,secondbytheintroductionofthenetwork,thewordsegmentationconcept,onceagainintroducesthesystemdevelopmentprocess,systemfunctionisdiscussed,andfinallyasummaryofthesystem.Keywords:Android,WeatherForecast,CellPhone,Software
目錄目錄摘要 2Abstract 31.前言: 61.1小世界理論概述 61.2研究現(xiàn)狀 61.3項目研究的目的及意義 72.開發(fā)集成環(huán)境 72.1Eclipse開發(fā)環(huán)境搭建 72.1.1Eclipse整體介紹 72.1.2Eclipse環(huán)境設(shè)置介紹 82.2Struct1框架 92.2.1(Model—View—Controller)模式 92.2.2ApacheStruts框架 102.2.3JAR包 102.3Tomcat5.5與JDK1.5 112.3.1Tomcat5.5下載集成 112.3.2JDK介紹與配置 113.整個程序的實現(xiàn)(按照軟件工程要求逐步寫,配以相關(guān)函數(shù),相關(guān)代碼,界面及后臺文件的截圖): 113.1 程序的可行性分析 123.2 整個程序的整體架構(gòu) 123.3 前臺用戶界面的設(shè)計 153.4 數(shù)據(jù)交互 173.5數(shù)據(jù)傳遞與顯示 183.5 相關(guān)其他功能的實現(xiàn) 204.系統(tǒng)算法與實現(xiàn) 214.1網(wǎng)絡(luò)蜘蛛 214.1.1網(wǎng)絡(luò)蜘蛛搜索策略 214.1.2網(wǎng)頁提取Boilerpipe簡介 214.1.3代碼實現(xiàn) 224.2新聞聚集 234.2.1新聞熱點話題發(fā)掘 234.2.2新聞聚集 244.2.3代碼實現(xiàn) 244.3中文分詞 264.3.1中文分詞 264.3.2TF-IDF 274.3.3代碼實現(xiàn) 274.4RIP協(xié)議路由模擬 324.4.1RIP協(xié)議 324.4.1RIP協(xié)議模擬 334.4.1代碼實現(xiàn) 35結(jié)論: 364.1項目過程與總結(jié) 374.2項目發(fā)展前景 374.3 項目的改進及建議 38致謝 39參考文獻 40
1.前言:1.1小世界理論概述 著名的“小世界”(smallworld)理論或“六度分隔”(sixdegreesofseparation)來自2個非常有意思案例。[20][21]第一個案例發(fā)生在20世紀(jì)60年代,美國著名的社會心理學(xué)家斯坦利?米爾格拉姆(StanleyMilgram)曾經(jīng)做過一個非常有趣的連鎖信件實驗。他在美國波士頓(Boston)和奧馬哈(Omaha)兩個地區(qū)任意挑選出296個人,然后給他們每人一封信,信中放了一個住在波士頓的股票經(jīng)紀(jì)人的名字,這些被挑選出來的人只知道這個股票經(jīng)紀(jì)人的名字、職業(yè)和大概的居住地點。米爾格拉姆在實驗中要求這296人分別將這套信寄給那些自己認為比較接近那個股票經(jīng)紀(jì)人的朋友,朋友收到此信后,也同樣按照這種方式發(fā)給下一個人,如此一環(huán)扣一環(huán),步步傳遞。實驗結(jié)果讓世人大跌眼鏡。296封信件中居然有64封成功到達了目標(biāo)人物—波士頓股票經(jīng)紀(jì)人—的手中;而且,雖然從波士頓本城始發(fā)的信件比奧馬哈始發(fā)的信件傳遞過程要來得長,但平均下來,每封成功到達的信只經(jīng)過了5.2個中轉(zhuǎn)過程(JeffreyTravers&StanleyMilgram,1969)。這個發(fā)現(xiàn)著實出乎大多數(shù)人意料。第二個案例也發(fā)生在德國一家報紙身上。若干年前德國一家報紙接受了一個挑戰(zhàn),要幫助法蘭克福一位土耳其烤肉店的老板找到他與其最喜歡的影星馬龍?白蘭度的關(guān)系。沒幾個月該報社的員工就發(fā)現(xiàn),原來,烤肉店老板是伊拉克的移民,他有個朋友住在美國加利福尼亞州;剛好,這個朋友有一位同事;這個同事的女朋友在女生聯(lián)誼會上有個結(jié)拜的姐妹;這個結(jié)拜姐妹的父親是電影《這個男人有點色》的制作人;而恰好,馬龍?白蘭度就是《這個男人有點色》的主演。因此,事實上,烤肉店的老板只需要經(jīng)過6個人的私交,就可以與白蘭度建立起聯(lián)系了。上面兩個案例反映的實際上是一個含義深刻、頗為典型的自然現(xiàn)象,這種現(xiàn)象在學(xué)術(shù)界概括為小世界理論。這種理論的意涵就是,你和世界上任何一個陌生人(只要不是與世隔絕)所間隔的人不會超過六個(JeffreyTravers&StanleyMilgram,1969);也就是說,最多通過六人的中介,你就可以結(jié)識任何一個人(EricaKlarreich,2003)。當(dāng)然,在這里,六個人并不是絕對的,它表達的是這種意思:在現(xiàn)代全球化的社會中,任意兩個素不相識的人,通過一定的聯(lián)系方式,總是能夠產(chǎn)生聯(lián)系,之間絕對沒有聯(lián)系的人是不存在的。1.2研究現(xiàn)狀目前小世界理論研究正如火如荼的進行中。首先它作為一種交叉性學(xué)科,小世界理論發(fā)展很快,已經(jīng)在許多領(lǐng)域得到研究和應(yīng)用如SARS傳播、互聯(lián)網(wǎng)控制、生物學(xué)蛋白質(zhì)網(wǎng)絡(luò)動力學(xué)研究等。具有小世界效應(yīng)的動態(tài)系統(tǒng)模型能加快信號傳播的速度,提高計算能力和計算同步性。謠言、傳染病在小世界網(wǎng)絡(luò)中傳播比在規(guī)則網(wǎng)絡(luò)中容易。其次在Internet方面的研究也得到了迅速的發(fā)展,學(xué)者在對Internet的小世界網(wǎng)的研究中,提到Internet具有小世界效應(yīng)。網(wǎng)絡(luò)平均距離3是隨網(wǎng)絡(luò)大小4對數(shù)增長的,它明顯具有小世界效應(yīng)。從結(jié)構(gòu)上看,Internet的實際結(jié)構(gòu)介乎于規(guī)則網(wǎng)絡(luò)和隨機網(wǎng)絡(luò),表明其具有小世界效應(yīng)。Internet具有集團化、聚類的特征。有文獻提到P2P系統(tǒng)是Internet節(jié)點合作組,在Internet上構(gòu)成了它們自己特別目的的網(wǎng)絡(luò)。所有與網(wǎng)絡(luò)連接的節(jié)點共享資源(CPU、存儲、信息等)并且與其它節(jié)點合作。有效地尋找和定位這些高端Internet資源,是P2P系統(tǒng)的關(guān)鍵[21]。再次小世界理論研究還在生物學(xué)領(lǐng)域的應(yīng)用、重復(fù)囚徒困境博弈的SWN模型、NPD團隊交流網(wǎng)絡(luò).1.3項目研究的目的及意義將小世界理論結(jié)合到網(wǎng)絡(luò)進行研究的目的是為了驗證在現(xiàn)實小區(qū)域網(wǎng)絡(luò)中是否也能采用六度空間理論進行分割,找到現(xiàn)實網(wǎng)絡(luò)中之間的關(guān)系,建立起適用于現(xiàn)實網(wǎng)絡(luò)中基于小世界理論的概念模型、物理模型和數(shù)據(jù)模型,并在這些模型的基礎(chǔ)上實現(xiàn)全世界網(wǎng)絡(luò)關(guān)聯(lián)關(guān)系的模型和應(yīng)用。進行小世界理論在網(wǎng)絡(luò)中的應(yīng)用與實現(xiàn)的意義在于能夠幫助用戶迅速掌握網(wǎng)絡(luò)信息的真實性,在網(wǎng)絡(luò)中存在信息的實時性、準(zhǔn)確性和相關(guān)性,由此進行網(wǎng)絡(luò)信息的深度開發(fā)與應(yīng)用,同時也可以幫助系統(tǒng)的決策者們抓住機遇、發(fā)現(xiàn)價值機會,為社會的發(fā)展帶來良性循環(huán),為科技發(fā)展提供新的動力。2.開發(fā)集成環(huán)境2.1Eclipse開發(fā)環(huán)境搭建2.1.1Eclipse整體介紹Eclipse是一個開放源代碼的、基于Java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,Eclipse附帶了一個標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(JavaDevelopmentKit,JDK)[1]-[2]。雖然大多數(shù)用戶很樂于將Eclipse當(dāng)作Java集成開發(fā)環(huán)境(IDE)來使用,但Eclipse的目標(biāo)卻不僅限于此。Eclipse還包括插件開發(fā)環(huán)境(Plug-inDevelopmentEnvironment,PDE),這個組件主要針對希望擴展Eclipse的軟件開發(fā)人員,因為它允許他們構(gòu)建與Eclipse環(huán)境無縫集成的工具。由于Eclipse中的每樣?xùn)|西都是插件,對于給Eclipse提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。[1]這種平等和一致性并不僅限于Java開發(fā)工具。盡管Eclipse是使用Java語言開發(fā)的,但它的用途并不限于Java語言;例如,支持諸如C/C++、COBOL、PHP等編程語言的插件已經(jīng)可用,或預(yù)計將會推出。Eclipse框架還可用來作為與軟件開發(fā)無關(guān)的其他應(yīng)用程序類型的基礎(chǔ),比如內(nèi)容管理系統(tǒng)?;贓clipse的應(yīng)用程序的一個突出例子是IBMRationalSoftwareArchitect,它構(gòu)成了IBMJava開發(fā)工具系列的基礎(chǔ)。[2]從2006年起,Eclipse基金會每年都會安排同步發(fā)布(simultaneousrelease)。至今,同步發(fā)布主要在6月進行,并且會在接下來的9月及2月釋放出SR1及SR2版本。圖2-1Eclipse版本發(fā)布規(guī)劃2.1.2Eclipse環(huán)境設(shè)置介紹Eclipse環(huán)境設(shè)置分為Workspace級和Project級。Workspace級的設(shè)置作為全局變量的設(shè)置,在Project級設(shè)置沒有設(shè)置的情況下,Workspace級設(shè)置起作用,所以Workspace級設(shè)置可以看作為是系統(tǒng)默認設(shè)置。Project級設(shè)置是針對具體工程的設(shè)置,project設(shè)置的優(yōu)先級比workspace設(shè)置高,一旦設(shè)置了project,在本project就直接被采用。但是project的設(shè)置只針對特定的project,在本project域中起作用。不能影響到workspace的設(shè)置。所以對于影響全局的設(shè)置是放置在workspace中設(shè)置,具體project的設(shè)置根據(jù)需要在project的屬性中進行設(shè)置。Eclipse環(huán)境Workspace設(shè)置主要以下幾點:字符集設(shè)定在工作臺的window->Preferences->General->Workspace頁面中設(shè)置Textfileencoding欄中點選Other:UTF-8作為工作臺語言設(shè)置Server設(shè)定在工作臺的window->Preferences->Server->RuntimeEnvironmer中設(shè)定服務(wù)容器,在服務(wù)運行時環(huán)境中新增一個服務(wù)器,選擇ApacheTomcatV5。5,JRE選擇jdk1。5配合使用;Java虛擬機編譯設(shè)定在工作臺的window->Preferences->Java->compiler頁面中,在JDKCompliance也簽中的Compilercommliancelevel:選擇1。5;Java虛擬機設(shè)定在工作臺的window->Preferences->Java->InstalledJREs頁面中,新增jdk1。5作為運行環(huán)境中的虛擬機;Eclipse最大最小內(nèi)存使用設(shè)置在Eclipse目錄下eclipse。ini文件修改如下2項設(shè)置,如果默認設(shè)置為-Xms128m,-Xmx256m。本系統(tǒng)內(nèi)存開銷較大,所以修改成如下: -Xms512m -Xmx1024m2.2Struct1框架2.2.1(Model—View—Controller)模式MVC是20世紀(jì)80年代XeroxPARC為Smalltalk-80發(fā)明的一種設(shè)計模式,迄今成為一種成熟的優(yōu)秀的設(shè)計模式[2]。MVC的核心是三個類對象:模型(M)應(yīng)用對象、視圖(V)在屏幕上的表示、控制器(C)定義用戶界面對用戶輸入的響應(yīng)方式。三類對象的關(guān)系如圖1所示。Controller(控制器):控制著模型和視圖之間的交互過程。它決定著向用戶返回怎樣的視圖、檢查通過界面輸入的信息以及選擇輸入信息的模型。Model(模型):模型是真正完成任務(wù)的代碼。對大多數(shù)Web應(yīng)用程序來說,功能比界面感覺更重要。在模型與界面相分離的情況下,代碼可以實現(xiàn)可管理性和可重用性。模型通常也被稱為“業(yè)務(wù)邏輯”。View(視圖):視圖就是使用界面。視圖可以作為客戶向模型提供數(shù)據(jù)界面,并且承擔(dān)向客戶端顯示來自由控制器傳輸過來的信息。ClientBrowserClientBrowserBusinessLogicActionModelApplicationViewJSPStruts-config.xml(1)ControllerServlet(2)(3)(4)(5)(6)(1)Post(2)Dispatch(3)Update(4)Forward(5)Extract(6)Response圖2Struts運作流程圖用戶(User)控制器(Servlet)模型(JavaBean)視圖(JSP)圖1 MVC核心組件關(guān)系2.2.2ApacheStruts框架ApacheStruts框架是一個免費開發(fā)的Web層的應(yīng)用架構(gòu)[3]-[7]。它繼承了MVC的各種特性,并且根據(jù)J2EE的特性作了相應(yīng)的變化和擴展,圖2是Struts實現(xiàn)MVC模式的工作機理(一)Controller(控制器)在Struts框架中使用以。xml為結(jié)尾配置文件(如:struts-config。xml)實現(xiàn)它的控制器功能,在最新的Struts1。1中可以支持多配置文件,以適應(yīng)分布式的企業(yè)級的開發(fā)環(huán)境。它是Struts框架的核心部分。在Struts框架中Controller功能由ActionServlet和ActionMapping對象構(gòu)成。ActionServlet是MVC設(shè)計模式的決策部分,也是Struts框架的核心。它根據(jù)ActionMapping把HTTP消息形式的用戶請求轉(zhuǎn)換成相應(yīng)的應(yīng)用程序的動作。ActionServlet還負責(zé)用相應(yīng)的請求參數(shù)填充ActionForm(通常稱之為FormBean),并傳給動作類(通常稱之為ActionBean)。動作類實現(xiàn)核心商業(yè)邏輯,它可以訪問JavaBean或調(diào)用EJB,最后動作類把控制權(quán)傳給后續(xù)的JSP文件,后者生成視圖。(二)Model(模型)MVC系統(tǒng)中的Model部分從概念上可以分為兩類——系統(tǒng)的內(nèi)部狀態(tài)和改變系統(tǒng)狀態(tài)的動作。Struts為Model部分提供了Action和ActionForm對象。所有的Action處理器對象都是開發(fā)者從org。apache。struts。Action類派生的子類。Action處理器對象封裝了具體的處理邏輯,調(diào)用業(yè)務(wù)邏輯模塊,并且把響應(yīng)提交到合適的View組件以產(chǎn)生響應(yīng)。Struts提供的ActionForm組件對象,可以通過定義屬性描述客戶端表單數(shù)據(jù)。開發(fā)者可以從org。apache。struts。ActionForm類派生子類對象,利用它和Struts提供的自定義標(biāo)記庫結(jié)合可以實現(xiàn)對客戶端的表單數(shù)據(jù)的良好封裝和支持,Action處理器對象可以直接對它進行讀寫,而不再需要和Request、Response對象進行數(shù)據(jù)交互。通過ActionForm組件對象實現(xiàn)了對View和Model之間交互的支持。(三)View(視圖)Struts應(yīng)用中的View部分是通過JSP技術(shù)實現(xiàn)的。Struts提供了自定義的標(biāo)記庫(包括HTML標(biāo)簽、Bean標(biāo)簽、Logic標(biāo)簽、Template標(biāo)簽、Title標(biāo)簽和Nested標(biāo)簽)可以使用,通過這些自定義標(biāo)記可以非常好地和系統(tǒng)的Model部分交互,通過使用這些自定義標(biāo)記創(chuàng)建的JSP表單,可以實現(xiàn)和Model部分中的ActionForm的映射,這有利于分開表現(xiàn)邏輯和程序邏輯,完成對用戶數(shù)據(jù)的封裝,同時這些自定義標(biāo)記還提供了像模板定制等多種顯示功能。2.2.3JAR包Struts運行必須依賴于activation.jar、servlet-api.jar、struts.jar這三個jar包。所以將這3個jar包拷貝到工程目錄下的WebContent\WEB-INF\lib目錄中去。2.3Tomcat5.5與JDKTomcat5.5下載集成Tomcat是Apache
軟件基金會(ApacheSoftwareFoundation)的Jakarta項目中的一個核心項目,由Apache、Sun和其他一些公司及個人共同開發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和JSP規(guī)范總是能在Tomcat中得到體現(xiàn),Tomcat5支持最新的Servlet2.4和JSP2.0規(guī)范。因為Tomcat技術(shù)先進、性能穩(wěn)定,而且免費,因而深受Java愛好者的喜愛并得到了部分軟件開發(fā)商的認可,成為目前比較流行的Web應(yīng)用服務(wù)器。目前最新版本是7。0。 Tomcat官方下載地址:/,國內(nèi)也有很多鏡像網(wǎng)站供下載。2.3.2JDK介紹與配置JDK(JavaDevelopmentKit)是SunMicrosystems針對Java開發(fā)員的產(chǎn)品。自從Java推出以來,JDK已經(jīng)成為使用最廣泛的JavaSDK。JDK是整個Java的核心,包括了Java運行環(huán)境、Java工具和Java基礎(chǔ)類庫。JDK是學(xué)好Java的第一步。而專門運行在x86平臺的Jrocket在服務(wù)端運行效率也要比SunJDK好很多。從SUN的JDK5.0開始,提供了泛型等非常實用的功能,其版本也不斷更新,運行效率得到了非常大的提高。SE(J2SE),standardedition,標(biāo)準(zhǔn)版,是我們通常用的一個版本,從JDK5.0開始,改名為JavaSE。EE(J2EE),enterpriseedition,企業(yè)版,使用這種JDK開發(fā)J2EE應(yīng)用程序,從JDK5.0開始,改名為JavaEE。ME(J2ME),microedition,主要用于移動設(shè)備、嵌入式設(shè)備上的java應(yīng)用程序,從JDK5.0開始,改名為JavaME。JDK官方下載地址:/technetwork/java/javaee/index。htmlJDK配置過程:解壓后放置在C:\jdk1。5目錄下,然后設(shè)置環(huán)境變量。在我的電腦—>屬性->高級->環(huán)境變量->path中增加如下三項:C:\jdk1。5C:\jdk1。5\libC:\jdk1。5\bin3.系統(tǒng)實現(xiàn)系統(tǒng)可行性分析 本系統(tǒng)開的可行性分析主要從如下幾個方面:硬件要求:臺式機或筆記本,CPU不低于Core?2,內(nèi)存2G以上,硬盤50G以上,實際運行需要有公網(wǎng)接入;操作系統(tǒng):XP操作系統(tǒng);經(jīng)濟可行性:本系統(tǒng)除硬件設(shè)備要求和網(wǎng)絡(luò)環(huán)境要求外無需其它經(jīng)濟投入,所采用的所有軟件Eclipse、Struct1、Tomcat5。5、JDK5.0以及引用的jar包都均為網(wǎng)絡(luò)開源版本,無版權(quán)爭議,無需另外付費;技術(shù)可行性:本系統(tǒng)在xp操作系統(tǒng)基礎(chǔ)上,借助Eclipse集成開發(fā)環(huán)境開發(fā),系統(tǒng)框架建立Struct1基礎(chǔ)之上,結(jié)合開源的分詞系統(tǒng)和路由模擬方式進行開始,最終形成本系統(tǒng);搭建環(huán)境:在集成開發(fā)工具Eclipse上進行編碼,建立動態(tài)web工程,服務(wù)其采用tomcat5。5,JDK采用JDK5.0,系統(tǒng)框架采用Struct1進行開發(fā);軟件實現(xiàn):閱讀JavaEE編程規(guī)范和參考書籍之后,掌握基本編碼技術(shù),進行代碼的編寫;技術(shù)處理:前端采用JSP作為與用戶交互UI設(shè)計,所有數(shù)據(jù)采用txt文本進行交互,軟件數(shù)據(jù)獲取與解析,軟件數(shù)據(jù)顯示,其他功能;后期測試:在有公網(wǎng)接入情況下,隨機輸入采集一個公網(wǎng)中實際存在的URL作為輸入?yún)?shù),實現(xiàn)網(wǎng)頁內(nèi)容顯示,生成相關(guān)的聚集、分詞和路由模擬實現(xiàn);系統(tǒng)整體架構(gòu) 本系統(tǒng)采用Struct1作為開發(fā)架構(gòu),前端采用JSP作為用戶輸入和展現(xiàn)的架構(gòu),服務(wù)端通過ActionForm獲取前端參數(shù),Action對獲取的參數(shù)進行處理,并將相關(guān)數(shù)據(jù)寫入到文件中去,最中間相關(guān)結(jié)果反饋給用戶,系統(tǒng)整體架構(gòu)如圖2-1:
圖3-1系統(tǒng)整體架構(gòu)圖 系統(tǒng)主要功能介紹如下:web。xml:本系統(tǒng)基礎(chǔ)配置文件,它將Struct1作為servlet引入到本系統(tǒng)中來;<servlet><servlet-name>action</servlet-name> <servlet-class>org。apache。struts。action。ActionServlet</servlet-class> <init-param> <param-name>application</param-name> <param-value>ApplicationResources</param-value> </init-param> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config。xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>2</param-value> </init-param> <load-on-startup>2</load-on-startup></servlet>struts-config。xml:Strut的核心,它配置了前段頁面后服務(wù)端對應(yīng)關(guān)系已經(jīng)跳轉(zhuǎn)關(guān)系;配置文件如下<struts-config> <form-beans> <form-beanname="fenCiForm"type="zxj。FenCiForm"/> <form-beanname="getContextForm"type="zxj。GetContextForm"/> </form-beans> <global-forwards> <forwardname="error"path="/fenci。jsp"/> </global-forwards> <action-mappings> <!-- <actionpath="/counter"type="zxj。CounterAction"name="counterForm"scope="request"validate="false"input=""> <forwardname="success"path="/susses。jsp"/> <forwardname="error1"path="/error1。jsp"/> <forwardname="error2"path="/error2。jsp"/> </action> --> <actionpath="/fenci"type="zxj。FenCiAction"name="fenCiForm"scope="request"validate="false"input="/fenci。jsp"> <forwardname="success"path="/fenCiSusses。jsp"/> <forwardname="error1"path="/fenCiErr1。jsp"/> <forwardname="error2"path="/fenCiErr2。jsp"/> </action> <actionpath="/getContext"type="zxj。GetContextAction"name="getContextForm"scope="request"validate="false"input="/fenci。jsp"> <forwardname="success"path="/fenci。jsp"/> <forwardname="error1"path="/UrlErr。jsp"/> <forwardname="error2"path="/UrlErr。jsp"/> </action> </action-mappings><message-resourcesparameter="ApplicationResources"/></struts-config>類IFIDF.Program負責(zé)網(wǎng)頁內(nèi)容聚集計算;類zxj.ReadFilesPro負責(zé)聚集內(nèi)容的分詞和權(quán)重分析;類zxj.Relateion負責(zé)模擬路由算法;文件夾E:\FileSys作為系統(tǒng)所有交互數(shù)據(jù)中心;E:\FileSys\Cluster:聚集文件生成中心;E:\FileSys\dir分詞參考文件和目標(biāo)文件;E:\FileSys\fenci分詞結(jié)果文件;E:\FileSys\result分詞權(quán)重計算結(jié)果文件E:\FileSys\RouterList模擬路由目錄文件;E:\FileSys\tiaoshujilu路由模擬生成結(jié)果文件;系統(tǒng)界面的設(shè)計前臺用戶界面采用單頁面跳轉(zhuǎn)形式進行展現(xiàn),用戶在頁面中輸入公網(wǎng)中實際存在的URL后,點擊提交后經(jīng)由ActionForm傳遞數(shù)據(jù)到業(yè)務(wù)后臺。如圖圖3-1用戶交互頁面packagezxj;importjavax。servlet。http。HttpServletRequest;importorg。apache。struts。action。*;publicclassGetContextFormextendsActionForm{publicStringtxtUrl;publicStringcontextDtl;publicStringgetTxtUrl(){ returntxtUrl; } publicvoidsetTxtUrl(StringtxtUrl){ this。txtUrl=txtUrl; } publicStringgetContextDtl(){ returncontextDtl; } publicvoidsetContextDtl(StringcontextDtl){ this。contextDtl=contextDtl; } publicvoidreset(ActionMappingmapping,HttpServletRequestrequest){}publicActionErrorsvalidate(ActionMappingmapping,HttpServletRequestrequest){ActionErrorserrors=newActionErrors();returnerrors;}}系統(tǒng)數(shù)據(jù)交互本系統(tǒng)的數(shù)據(jù)全部存儲在文本文件中,所以本系統(tǒng)中的數(shù)據(jù)交互主要是文本流的讀寫。Java從1。1版本開始就提供了文本處理的相關(guān)類,隨著版本的不斷更替,越來也簡單的文本流操作方法出現(xiàn)了,并在其基礎(chǔ)上封裝出了高效、安全、簡便的封裝。本系統(tǒng)就采用5。0版本提供的輕量級文本讀寫封裝類,代碼如下:(一)讀文本代碼/**輸入?yún)?shù):文件路徑和文件名稱*輸出參數(shù):獲取文件內(nèi)容*/publicstaticStringreadFiles(Stringfile)throwsFileNotFoundException,IOException{StringBuffersb=newStringBuffer();try{InputStreamReaderis=newInputStreamReader(newFileInputStream(file),"utf-8");//只需一行就可以讀入文本文件BufferedReaderbr=newBufferedReader(is);Stringline=br。readLine();while(line!=null){sb。append(line)。append("\r\n");line=br。readLine();}br。close();}catch(Exceptione){}returnsb。toString();}(二)寫文件代碼/* *輸入?yún)?shù):網(wǎng)頁原文存儲 *輸出參數(shù):返回原文存儲路徑 */ privateStringsaveFile(Stringsb){ //保存結(jié)果 Stringret=null; try{ Dated=newDate(); SimpleDateFormatsdf=newSimpleDateFormat("",Locale。SIMPLIFIED_CHINESE); sdf。applyPattern("yyyy年MM月dd日HH時mm分ss秒"); StringtimeStr=sdf。format(newDate()); ret="E:\\FileSys\\res\\txt"+timeStr+"。txt"; Filefile=newFile(ret); if(file。exists()) { file。delete(); } FileWriterresultFile=newFileWriter(file); PrintWritermyFile=newPrintWriter(resultFile);//寫文件 myFile。println(sb。toString()); resultFile。close(); myFile。close(); System。out。println("源文件文件成功生成:"+ret); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e。printStackTrace(); } returnret; }3.5系統(tǒng)數(shù)據(jù)傳遞與顯示 本系統(tǒng)采用的是Struct1作為系統(tǒng)框架,所以數(shù)據(jù)傳遞和顯示采用ActionForm作為數(shù)據(jù)交互傳遞與顯示的媒介。ActionForm既可以作為用戶輸入端輸入數(shù)據(jù),也可以作為服務(wù)端向瀏覽器輸出的媒介,ActionForm定義與傳遞代碼如下:ActionFormpublicclassFenCiFormextendsActionForm{/** *分詞用的表單定義 * */ privatestaticfinallongserialVersionUID=1L; publicStringtxtSource; publicStringresult; publicStringgetTxtSource(){ returntxtSource; } publicvoidsetTxtSource(StringtxtSource)throwsUnsupportedEncodingException{ this。txtSource=txtSource;// } publicStringgetResult(){ returnresult; } publicvoidsetResult(Stringresult){ this。result=result; } publicActionErrorsvalidate(ActionMappingmapping,HttpServletRequestrequest){ActionErrorserrors=newActionErrors();returnerrors;} publicvoidreset(ActionMappingmapping,HttpServletRequestrequest){}}(二)業(yè)務(wù)端獲取ActionFormpublicActionForwardexecute(ActionMappingmapping,ActionFormactionForm,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{ //從form中獲取文章內(nèi)容 try{ request。setCharacterEncoding("gb2312"); f=(FenCiForm)actionForm; Stringresource=newString(f。getTxtSource()。getBytes("iso-8859-1"),"utf-8");}(三)瀏覽器獲取ActionForm<!--初始化,設(shè)置一些屬性--><jsp:useBeanid="fenCiForm"class="zxj。FenCiForm"scope="request"/><% StringresourceFile=fenCiForm。getResult();%>系統(tǒng)相關(guān)其他功能的實現(xiàn) 系統(tǒng)中需要對交互數(shù)據(jù)進行過濾,以實現(xiàn)前后臺編碼一致,過濾器代碼如下:(一)過濾器publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse, FilterChainchain)throwsIOException,ServletException{ request。setCharacterEncoding(encoding); response。setContentType("text/html;charset="+encoding); chain。doFilter(request,response); } publicvoidinit(FilterConfigfilterConfig)throwsServletException{ this。encoding=filterConfig。getInitParameter("encoding"); }
4.系統(tǒng)算法與實現(xiàn)4.1網(wǎng)絡(luò)蜘蛛 網(wǎng)絡(luò)爬蟲源自Spider(或Crawler、robotswanderer)等的意譯。網(wǎng)絡(luò)爬蟲的定義有廣義和狹義之分,狹義的定義為:利用標(biāo)準(zhǔn)的http協(xié)議,根據(jù)超級鏈接和Web文檔檢索的方法遍歷萬維網(wǎng)信息空間的軟件程序。廣義的定義為:所有能利用http協(xié)議檢索Web文檔的軟件都稱之為網(wǎng)絡(luò)爬蟲。網(wǎng)絡(luò)爬蟲是一個功能強大的自動提取網(wǎng)頁的程序,它為搜索引擎從萬維網(wǎng)下載網(wǎng)頁,是搜索引擎的重要組成部分。它可以完全不依賴用戶干預(yù)實現(xiàn)網(wǎng)絡(luò)上的自動“爬行”和搜索 Java語言在此非常適合構(gòu)建一個“蜘蛛”程序,其內(nèi)建了對HTTP協(xié)議的支持,通過它可以傳輸大部分的網(wǎng)頁信息;其還內(nèi)建了一個HTML解析器,正是這兩個原因使Java語言成為本文構(gòu)建“蜘蛛”程序的首選。4.1.1網(wǎng)絡(luò)蜘蛛搜索策略 目前使用比較廣泛的網(wǎng)絡(luò)蜘蛛搜索策略三種: (一)地址搜索策略 先賦予爬蟲一個起始的IP地址,然后根據(jù)IP地址遞增的方式搜索本IP地址段后的每一個WWW地址中的文檔,它完全不考慮各文檔中指向其它Web站點的超級鏈接地址。優(yōu)點是搜索全面,能夠發(fā)現(xiàn)那些沒被其它文檔引用的新文檔的信息源;缺點是不適合大規(guī)模搜索。 (二)深度優(yōu)先搜索策略 在一個HTML文件中,當(dāng)一個超鏈被選擇后,被鏈接的HTML文件將執(zhí)行深度優(yōu)先搜索,即在搜索其余的超鏈結(jié)果之前必須先完整地搜索單獨的一條鏈。深度優(yōu)先搜索沿著HTML文件上的超鏈走到不能再深入為止,然后返回到某一個HTML文件,再繼續(xù)選擇該HTML文件中的其他超鏈。當(dāng)不再有其他超鏈可選擇時,說明搜索已經(jīng)結(jié)束。優(yōu)點是能遍歷一個Web站點或深層嵌套的文檔集合;缺點是因為Web結(jié)構(gòu)相當(dāng)深,,有可能造成一旦進去,再也出不來的情況發(fā)生。 (三)寬度優(yōu)先搜索策略 在寬度優(yōu)先搜索中,先搜索完一個Web頁面中所有的超級鏈接,然后再繼續(xù)搜索下一層,直到底層為止。4.1.2網(wǎng)頁提取Boilerpipe簡介 Boilerpipe是一個正文提取工具,其算法的基本思想是通過訓(xùn)練獲得一個分類器來提取出我們需要的信息(如正文、發(fā)布時間等)。Boilerpipe是一個輕量級的通過Http協(xié)議提取網(wǎng)頁內(nèi)容工具,對于小型系統(tǒng)來說已經(jīng)足夠,對于需要大批量采集網(wǎng)絡(luò)信息時需要采用更為重量級的文本采集工具,其配套的硬件設(shè)備代價也會更大。 所以本系統(tǒng)采用這樣一個輕量級網(wǎng)絡(luò)蜘蛛實現(xiàn)固定URL單頁面信息的爬取,以滿足本系統(tǒng)的需求。圖4-1Boilerpipe整體架構(gòu)圖圖4-2Boilerpipe調(diào)用關(guān)系圖4.1.3代碼實現(xiàn) 在使用必須將下載下來的壓縮包解壓后將boilerpipe-1。2。0。jar以及l(fā)ib文件下的2個jar包引入到nekohtml-1。9。13。jar、xerces-2。9。1。jar項目的lib中去,否則在系統(tǒng)運行過程中將無發(fā)解析網(wǎng)頁中的文件,獲取網(wǎng)頁內(nèi)容一定要進行編碼轉(zhuǎn)換,否則前臺頁面會顯示為亂碼。import。URL;importde。l3s。boilerpipe。extractors。ArticleExtractor;publicclassGetContextActionextendsAction{ privateStringreturnStr="success"; privateGetContextFormf=null; /* *輸入?yún)?shù):Http請求,ActionForm *輸出參數(shù):ActionForm數(shù)據(jù)打包 */ publicActionForwardexecute(ActionMappingmapping,ActionFormactionForm,HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ try{ request。setCharacterEncoding("gb2312"); f=(GetContextForm)actionForm; StringurlStr=f。getTxtUrl(); if(urlStr==null||urlStr==""){ returnStr="error1"; }else{ finalURLurl=newURL(urlStr); Stringstr=ArticleExtractor。INSTANCE。getText(url); f。setContextDtl(str); } }catch(Exceptione){ returnStr="error2"; } return(mapping。findForward(returnStr)); } }4.2新聞聚集4.2.1新聞熱點話題發(fā)掘 新聞內(nèi)容聚集的概念來源于新聞熱點話題的發(fā)掘技術(shù)。熱點話題發(fā)現(xiàn)是話題識別與跟蹤(TopicDetectionandTracking,簡稱為TDT)技術(shù)在實際領(lǐng)域中的應(yīng)用。TDT旨在發(fā)展一系列基于事件的信息組織技術(shù),自從1996年前瞻性的探索以來,通過連續(xù)的大規(guī)模評測,TDT已成為國際上自然語言處理尤其是信息檢索領(lǐng)域的一個研究熱點,大大促進了TDT相關(guān)技術(shù)的發(fā)展。目前主流的話題發(fā)現(xiàn)算法都采用文本聚類技術(shù)來實現(xiàn)。在早期的網(wǎng)絡(luò)話題相關(guān)研究中,為了簡化問題,一般假定所有的話題沒有層次之分,而且一個文檔只能與一個話題相關(guān),因此研究人員基本上都采用傳統(tǒng)的聚類算法。[YYang,T.Pierce,etc,1998]先用增量聚類把新話題中時序相關(guān)的文檔聚在一起,而后再用Single-Pass聚類來找回時間間隔較大的話題相關(guān)文檔。隨著研究的深入,從2003年開始,層次化話題發(fā)現(xiàn)(HierarchicalTopicDetection)作為話題發(fā)現(xiàn)與跟蹤領(lǐng)域一個全新的研究問題被提了出來,它突破了傳統(tǒng)的話題組織忽略話題多粒度現(xiàn)象的不合理之處,采用層次化的結(jié)構(gòu)對話題進行組織。[MargaretConnell,AoFeng,GiridharKumaran,etc,2004]先把文檔分成很多小類,再按報道來源、時間和語種將小類合并;[MuManquan,LuoWeihua,ere,2004]先把文檔按照時序分組,然后采用自底向上的多層聚類把所有的話題組織成為一個有向無環(huán)圖結(jié)構(gòu)。4.2.2新聞聚集 新聞聚集目的是為了用簡短的幾句話找出一條新聞關(guān)鍵語句,并能概括出新聞核心價值。進行新聞內(nèi)容聚集步驟如下: 首先是要做題詞的操作。停詞就是在文本出現(xiàn)重復(fù)率較高的詞匯、標(biāo)點符號等等詞匯,這些詞匯和符號對于新聞的聚集沒有太大影響作用,所以在做新聞內(nèi)容聚集時首先將這些停詞過濾掉; 其次是對新聞內(nèi)容大概分類,找出本新聞內(nèi)容中出現(xiàn)平凡的字、詞、短語、短句; 再次對分類后的內(nèi)容和新聞全文進行計算聚類的向心度,向心度越高的詞語越能成為新聞內(nèi)容的核心字、詞、短語和短句; 最后將向心都較高的字、詞、短語和短句進行整合形成新聞內(nèi)容的核心。 通過以上幾個步驟就能將一篇新聞內(nèi)容聚集成幾個或幾句簡單內(nèi)容。4.2.3代碼實現(xiàn)聚集常量定義finalint_coordCount;//數(shù)據(jù)的數(shù)量finaldouble[][]_coordinates;//原始數(shù)據(jù)finalint_k;//聚類的數(shù)量privateWawaCluster[]_clusters;//聚類WawaCluster[]getClusters(){return_clusters;}finalint[]_clusterAssignments;//定義一個變量用于記錄和跟蹤每個資料點屬于哪個群聚類privatefinalint[]_nearestCluster;//定義一個變量用于記錄和跟蹤每個資料點離聚類最近privatefinaldouble[][]_distanceCache;//定義一個變量,來表示資料點到中心點的距離,privatestaticfinalRandom_rnd=newRandom(1);//用來初始化的隨機種子核心代碼publicvoidStart(){intiter=0;while(true){System.out.println("Iteration"+(iter++)+"...");System.out.println(_clusters.length);//1、重新計算每個聚類的均值for(inti=0;i<_k;i++){_clusters[i].UpdateMean(_coordinates);}//2、計算每個數(shù)據(jù)和每個聚類中心的距離for(inti=0;i<_coordCount;i++){for(intj=0;j<_k;j++){doubledist=getDistance(_coordinates[i],_clusters[j].Mean);_distanceCache[i][j]=dist;}}//3、計算每個數(shù)據(jù)離哪個聚類最近for(inti=0;i<_coordCount;i++){_nearestCluster[i]=nearestCluster(i);}//4、比較每個數(shù)據(jù)最近的聚類是否就是它所屬的聚類//如果全相等表示所有的點已經(jīng)是最佳距離了,直接返回;intk=0;for(inti=0;i<_coordCount;i++){if(_nearestCluster[i]==_clusterAssignments[i])k++;}if(k==_coordCount)break;//5、否則需要重新調(diào)整資料點和群聚類的關(guān)系,調(diào)整完畢后再重新開始循環(huán);//需要修改每個聚類的成員和表示某個數(shù)據(jù)屬于哪個聚類的變量for(intj=0;j<_k;j++){_clusters[j].CurrentMembership.clear();}for(inti=0;i<_coordCount;i++){_clusters[_nearestCluster[i]].CurrentMembership.add(i);_clusterAssignments[i]=_nearestCluster[i];}}}staticdoublegetDistance(double[]coord,double[]center){//計算某數(shù)據(jù)離某聚類中心的距離,也可以用余弦夾角來計算某數(shù)據(jù)離某聚類中心的距離return1-TermVector.ComputeCosineSimilarity(coord,center);}privatevoidInitRandom(){//隨機初始化k個聚類for(inti=0;i<_k;i++){inttemp=_rnd.nextInt(_coordCount);_clusterAssignments[temp]=i;//記錄第temp個資料屬于第i個聚類_clusters[i]=newWawaCluster(temp,_coordinates[temp]);}}4.3中文分詞4.3.1中文分詞 中文自動分詞方面的研究已較為成熟,一些經(jīng)過長期研究具有一定規(guī)模的分詞系統(tǒng)結(jié)合各種領(lǐng)域的詞典,其分詞精度可達到95%以上,并得到廣泛應(yīng)用。現(xiàn)有的分詞算法可分為三大類:機械性分詞方法、統(tǒng)計性分詞方法和理解性分詞方法。前兩類主要是基于詞典、詞庫的匹配和詞的頻度統(tǒng)計,較易于實現(xiàn)。理解性分詞方法的基本思想是在分詞的同時進行句法、語義分析并利用句法信息和語義信息來處理歧義現(xiàn)象。更復(fù)雜的方法可以考慮不同分詞算法之間的結(jié)合策略。本文采用中國科學(xué)院計算技術(shù)研究所自行研制的分詞系統(tǒng)ICTCLAS(InstituteofComputingTechnologyChineseLexicalAnalysisSystem)對語料進行分詞,該系統(tǒng)具有較好的分詞性能和較快的分析速度。4.3.2TF-IDF TF-IDF(termfrequency–inversedocumentfrequency)[23]是一種用于資訊檢索與資訊探勘的常用加權(quán)技術(shù)。TF-IDF是一種統(tǒng)計方法,用以評估一字詞對于一個文件集或一個語料庫中的其中一份文件的重要程度。字詞的重要性隨著它在文件中出現(xiàn)的次數(shù)成正比增加,但同時會隨著它在語料庫中出現(xiàn)的頻率成反比下降。TF-IDF加權(quán)的各種形式常被搜索引擎應(yīng)用,作為文件與用戶查詢之間相關(guān)程度的度量或評級。除了TF-IDF以外,因特網(wǎng)上的搜索引擎還會使用基于鏈接分析的評級方法,以確定文件在搜尋結(jié)果中出現(xiàn)的順序。 TFIDF的主要思想是:如果某個詞或短語在一篇文章中出現(xiàn)的頻率TF高,并且在其他文章中很少出現(xiàn),則認為此詞或者短語具有很好的類別區(qū)分能力,適合用來分類。TFIDF實際上是:TF*IDF,TF詞頻(TermFrequency),IDF反文檔頻率(InverseDocumentFrequency)。TF表示詞條在文檔d中出現(xiàn)的頻率。IDF的主要思想是:如果包含詞條t的文檔越少,也就是n越小,IDF越大,則說明詞條t具有很好的類別區(qū)分能力。如果某一類文檔C中包含詞條t的文檔數(shù)為m,而其它類包含t的文檔總數(shù)為k,顯然所有包含t的文檔數(shù)n=m+k,當(dāng)m大的時候,n也大,按照IDF公式得到的IDF的值會小,就說明該詞條t類別區(qū)分能力不強。但是實際上,如果一個詞條在一個類的文檔中頻繁出現(xiàn),則說明該詞條能夠很好代表這個類的文本的特征,這樣的詞條應(yīng)該給它們賦予較高的權(quán)重,并選來作為該類文本的特征詞以區(qū)別與其它類文檔。這就是IDF的不足之處。4.3.3代碼實現(xiàn)中文分詞核心代碼System.out.println("***************分詞*****************"); Stringpath="E:\\FileSys\\dir"; StringtargName=path+"\\target.txt"; System.out.println("***************分詞*****************"); sb.append("分詞").append("\r\n"); Map<String,HashMap<String,Integer>>normal=ReadFiles.NormalTFOfAll(path); for(Stringfilename:normal.keySet()){ if(targName.equals(filename)){ sb.append(filename).append("\r\n"); sb.append(normal.get(filename).toString()).append("\r\n"); quci(normal.get(filename).toString()); } //System.out.println("fileName"+filename); //System.out.println("TF"+normal.get(filename).toString()); } sb.append("tf值").append("\r\n"); Map<String,HashMap<String,Float>>notNarmal=ReadFiles.tfOfAll(path); for(Stringfilename:notNarmal.keySet()){ if(targName.equals(filename)){ sb.append(filename).append("\r\n"); sb.append(notNarmal.get(filename).toString().toString()).append("\r\n"); } } sb.append("idf值").append("\r\n"); Map<String,Float>idf=ReadFiles.idf(path); for(Stringword:idf.keySet()){ //System.out.println("keyword:"+word+"idf:"+idf.get(word)); //sb.append("keyword:"+word+"idf:"+idf.get(word)).append("\r\n"); } sb.append("tfidf值").append("\r\n"); Map<String,HashMap<String,Float>>tfidf=ReadFiles.tfidf(path); for(Stringfilename:tfidf.keySet()){ //System.out.println("fileName"+filename); //System.out.println(tfidf.get(filename)); if(targName.equals(filename)){ sb.append("fileName"+filename).append("\r\n"); sb.append(tfidf.get(filename)).append("\r\n"); } } publicstaticHashMap<String,Float>tf(String[]cutWordResult){HashMap<String,Float>tf=newHashMap<String,Float>();//正規(guī)化intwordNum=cutWordResult.length;intwordtf=0;for(inti=0;i<wordNum;i++){wordtf=0;for(intj=0;j<wordNum;j++){if(cutWordResult[i]!=""&&i!=j){if(cutWordResult[i].equals(cutWordResult[j])){cutWordResult[j]="";wordtf++;}}}if(cutWordResult[i]!=""){tf.put(cutWordResult[i],(newFloat(++wordtf))/wordNum);cutWordResult[i]="";}}returntf;}/**輸入?yún)?shù):分詞文件數(shù)組列表*輸出參數(shù):非規(guī)化的TF值*/publicstaticHashMap<String,Integer>normalTF(String[]cutWordResult){HashMap<String,Integer>tfNormal=newHashMap<String,Integer>();//沒有正規(guī)化intwordNum=cutWordResult.length;intwordtf=0;for(inti=0;i<wordNum;i++){wordtf=0;if(cutWordResult[i]!=""){for(intj=0;j<wordNum;j++){if(i!=j){if(cutWordResult[i].equals(cutWordResult[j])){cutWordResult[j]="";wordtf++;}}}tfNormal.put(cutWordResult[i],++wordtf);cutWordResult[i]="";}}returntfNormal;}/**輸入?yún)?shù):分詞文件數(shù)組列表*輸出參數(shù):非規(guī)化的TF值*/publicstaticHashMap<String,Integer>normalTF(String[]cutWordResult){HashMap<String,Integer>tfNormal=newHashMap<String,Integer>();//沒有正規(guī)化intwordNum=cutWordResult.length;intwordtf=0;for(inti=0;i<wordNum;i++){wordtf=0;if(cutWordResult[i]!=""){for(intj=0;j<wordNum;j++){if(i!=j){if(cutWordResult[i].equals(cutWordResult[j])){cutWordResult[j]="";wordtf++;}}}tfNormal.put(cutWordResult[i],++wordtf);cutWordResult[i]="";}}returntfNormal;}/**輸入?yún)?shù):分詞文件數(shù)組列表*輸出參數(shù):所有的TF值*/publicstaticMap<String,HashMap<String,Float>>t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供銷保價合同范本
- 農(nóng)村臨時建房承包合同范本
- 書畫采購合同范本
- 出版合同范本填寫
- 書贈與合同范本
- 農(nóng)莊裝修合同范本
- 出資借款合同范本
- 分體機空調(diào)保養(yǎng)合同范本
- 企業(yè)合作運營合同范本
- 產(chǎn)品收款合同范本
- 人教版(PEP)五年級英語下冊第一單元測試卷-Unit 1 My day 含答案
- 打深水井施工方案
- 企業(yè)名稱預(yù)先核準(zhǔn)通知書
- 統(tǒng)籌管理方案
- DB3206T 1083-2024機關(guān)會議服務(wù)人員操作技術(shù)規(guī)范
- 習(xí)作《我的家人 》教案-2024-2025學(xué)年統(tǒng)編版語文四年級上冊
- 眼鏡學(xué)智慧樹知到答案2024年溫州醫(yī)科大學(xué)
- 24年注安-其他安全-必背考點-王培山
- 《積極心理學(xué)(第3版)》 課件 第9章 積極的愛
- 中醫(yī)淋巴排毒
- 第四屆檔案職業(yè)技能競賽理論試題庫資料-上(選擇題)
評論
0/150
提交評論