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

正文內(nèi)容

基于廣度優(yōu)先算法的多線(xiàn)程網(wǎng)絡(luò)爬蟲(chóng)畢業(yè)設(shè)計(jì)(文件)

 

【正文】 (Running) 當(dāng)線(xiàn)程獲得 CPU 時(shí)間后,它才進(jìn)入運(yùn)行狀態(tài),真正開(kāi)始執(zhí)行 run()方法,這里 run()方法中是一個(gè)循環(huán) ,循環(huán)條件是 true。所謂阻塞狀態(tài)是正在運(yùn)行的線(xiàn)程沒(méi)有運(yùn)行結(jié)束,暫時(shí)讓出 CPU, 這時(shí)其它處于就緒狀態(tài)的線(xiàn)程就可以獲得 CPU 時(shí)間,進(jìn)入運(yùn)行狀態(tài)。即當(dāng)用戶(hù)離開(kāi)含有該小應(yīng)用程序的頁(yè)面時(shí),瀏覽器調(diào)用 stop()方法,將 clockThread 賦值為 null,這樣在 run()的 while 循環(huán)時(shí)條件就為 false,這樣線(xiàn)程運(yùn)行 就結(jié)束了。線(xiàn)程必須通過(guò) run()方法的自然結(jié)束而結(jié)束。 (i = + i )。當(dāng)線(xiàn)程的 run 方法運(yùn)行完畢,線(xiàn)程將被拋棄,進(jìn)入死亡狀 態(tài)。多數(shù) JAVA同步是以對(duì)象鎖定為中心的。這樣使它在共享的線(xiàn)程之 間可以相互協(xié)調(diào)。 JAVA 網(wǎng) 絡(luò)編 程 網(wǎng)絡(luò)編程就是兩個(gè)或多個(gè)設(shè)備之間的數(shù)據(jù)交換,其實(shí)更具體的說(shuō),網(wǎng)絡(luò)編程就是兩個(gè)或多個(gè)程序之間的數(shù)據(jù)交換,和普通的單機(jī)程序相比,網(wǎng)絡(luò)程序最大的不同就是需要交換數(shù)據(jù)的程序運(yùn)行在不同的計(jì)算機(jī) 上,這樣就造成了數(shù)據(jù)交換的復(fù)雜。在 TCP/IP 協(xié)議 中 IP 層 主要 負(fù)責(zé) 網(wǎng) 絡(luò) 主機(jī)的定位, 數(shù) 據(jù) 傳輸 的路由,由 IP 地址可以唯一地確定 Inter 上的一臺(tái)主機(jī)???戶(hù)則 在需要服 務(wù)時(shí) 向服 務(wù) 器提出申 請(qǐng) 。 本課題將采用 IPv4 協(xié)議作為開(kāi)發(fā)基礎(chǔ)。 IPv4 給 TCP、 UDP、 SCTP、 ICMP 和 IGMP 提供分組遞送服務(wù)。 TCP 套接字是一種流套接字( stream socket)。 TCP 協(xié)議真是通過(guò)“三次握手 ”的方式保證了傳輸?shù)目煽?性。所以,下面介紹網(wǎng)絡(luò)編程的步驟時(shí),均以 C/S 結(jié)構(gòu)為基礎(chǔ)進(jìn)行介紹。建 立完成后,會(huì)形成一條虛擬的連接,后續(xù)的操作就可以通過(guò)該連接實(shí)現(xiàn)數(shù)據(jù)的交換了。 沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文 18 關(guān)閉網(wǎng)絡(luò)連接 在數(shù)據(jù)交換完成以后,關(guān)閉網(wǎng)絡(luò)連接,釋放程序占用的系統(tǒng)資源 TCP 服務(wù)器端的編程步驟 : 監(jiān)聽(tīng)埠 服務(wù)器端屬于被動(dòng)等待連接,所以服務(wù)器端啟動(dòng)以后,只需要監(jiān)聽(tīng)本地計(jì)算機(jī)的 某個(gè)固定端口即可。 交換數(shù)據(jù) 服務(wù)器端通過(guò)獲得的連接進(jìn)行數(shù)據(jù)交換。 關(guān)閉連接 當(dāng)需要停止網(wǎng)絡(luò)通信是,就需要關(guān)閉服務(wù)器端,通過(guò)關(guān)閉服務(wù)器端使得服務(wù)器監(jiān)聽(tīng)的端口以及占用的內(nèi)存等系統(tǒng)資源可以釋放出來(lái)。在本章中,將只介紹基礎(chǔ)的網(wǎng)絡(luò)編程類(lèi)。這樣方式在 實(shí)際的網(wǎng)絡(luò)編程中,由于傳輸可靠,類(lèi)似于打電話(huà),如果甲給乙打電話(huà),乙說(shuō)沒(méi)有聽(tīng)清楚讓甲重復(fù)一遍,直到聽(tīng)清楚為止,實(shí)際的網(wǎng)絡(luò)傳輸也是這樣,如果發(fā)送的一方發(fā)送的數(shù)據(jù)接收方覺(jué)得有問(wèn)題,則網(wǎng)絡(luò)底層會(huì)自動(dòng)要求發(fā)送方重發(fā),直到接收方收到為止。但是由于 Java 語(yǔ)言的網(wǎng)絡(luò)編程比較簡(jiǎn)單,所以還是獲得了廣泛的使用。 上面的代碼中, socket1 實(shí)現(xiàn)的是連接到 IP 地址是 的計(jì)算機(jī)的 10000號(hào)端口,而 socket2 實(shí)現(xiàn)的是連接到域名是 的計(jì)算機(jī)的 80 號(hào)端口,至于底層網(wǎng)絡(luò)如何實(shí)現(xiàn)建立連接,對(duì)于程序員來(lái)說(shuō)是完全透明的。 //獲得輸出流 沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文 20 InputStream is = ()。 沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文 21 3 系 統(tǒng)軟 件 設(shè)計(jì) 系 統(tǒng)軟 件概述 軟件主要功能是為,為需要保密的一些工作,提供一個(gè)在不需要上網(wǎng)機(jī)的情況下,可以通過(guò)訪(fǎng)問(wèn)一個(gè)雙 網(wǎng)卡的服務(wù)器(一個(gè)連接局域網(wǎng),一個(gè)鏈接萬(wàn)維網(wǎng))實(shí)現(xiàn)從網(wǎng)上下載資料,訪(fǎng)問(wèn)百度查詢(xún)資料,提高單位信息的保密性,和限制員工上網(wǎng)的情況 Eclipse 軟 件介 紹 Eclipse Eclipse 是一個(gè)開(kāi)放源代碼的、基于 Java 的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò) 插件 組件構(gòu)建開(kāi)發(fā)環(huán)境。由于 Eclipse 中的每樣?xùn)|西都是插件,對(duì)于給 Eclipse 提供插件,以及給用戶(hù)提供一致和統(tǒng)一的集成開(kāi)發(fā)環(huán)境而言,所有工具開(kāi)發(fā)人員都具有同等的發(fā)揮場(chǎng)所。 基于 Eclipse 的應(yīng)用程序的一個(gè)突出例子是 IBM Rational Software Architect,它構(gòu)成了 IBM Java 開(kāi)發(fā)工具系列的基礎(chǔ)。許多軟件開(kāi)發(fā)商以 Eclipse 為框架開(kāi)發(fā)自己的 IDE。 Eclipse是一個(gè)開(kāi)發(fā)源碼項(xiàng)目,它其實(shí)是 Visual Age for Java 的替代品,其接口跟先前的 Visual Age for Java 差不多,但由于其開(kāi)放源碼,任何人都可以免費(fèi)得到,并可以 在此基礎(chǔ)上開(kāi)發(fā)各自的插件,因此越來(lái)越受人們關(guān)注。 FileReader 類(lèi)型 :用來(lái)讀取字符文件的便捷類(lèi)。 Bufferedreader 類(lèi) 型 :從 字符 輸 入流中 讀 取文本, 緩沖 各 個(gè) 字符, 從 而提供字符、 數(shù)組 和行的高效 讀 取。因此,建 議 用 BufferedReader 包 裝 所有其 read() 操作可能 開(kāi)銷(xiāo) 很高的 Reader(如 FileReader 和 InputStreamReader)。 可以 對(duì) 使用 DataInputStream 進(jìn) 行按原文 輸 入的程序 進(jìn) 行本地化,方法是用合適的 BufferedReader 替 換 每 個(gè) DataInputStream。 如下代碼: String strTemp While( (strTemp = ()) != null); 可以獲得一行文本內(nèi)容,讀取之后自動(dòng)跳到下一行。 URL 有三部分組成 : 協(xié)議, 域名 , 所在目錄的超級(jí)鏈接。 每次調(diào)用此 URL 的協(xié)議處理程序的 openConnection 方法都打開(kāi)一個(gè)新的連接。 調(diào)用 HttpURL。 InputStream此抽象類(lèi)是表示字節(jié)輸入流的所有類(lèi)的超類(lèi)。 代碼: Connection = (HttpURLConnection) ()。 獲得 URL后,調(diào)用函數(shù) strHtml = (strUrl, 60 * 1000, utf8, null, proxy)。 初始化一 個(gè) Bufferedreader 類(lèi) 型的 變 量 reader 首先 將 文文件存 儲(chǔ) 地址(字符串) 轉(zhuǎn)換 成文件路 徑 ,使文件 內(nèi) 容可 讀 ,如果文件路 徑違 法(不是常 規(guī) 檔 類(lèi) 型或者 檔 不存在) 會(huì)拋出異常。 將緩沖 指定 檔 的 輸 入。大多 數(shù) 情 況 下,默認(rèn) 值就足 夠 大了。要自己指定這些值,可以先在 FileInputStream 上構(gòu)造一個(gè) InputStreamReader。 服 務(wù) 器端 設(shè)計(jì) 網(wǎng)本 頁(yè) 解析部分 從文本文 檔 中直接讀取 URL: 首先 ,讀取從客戶(hù)端傳來(lái)的 TXT 文 檔 ,每次讀一行,每行的內(nèi)容為一個(gè)完 整的 URL。IBM 提供了最初的 Eclipse 代碼基礎(chǔ),包括 Platform、 JDT 和 PDE。最初主要用來(lái) Java 語(yǔ)言 開(kāi)沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文 22 發(fā),但是目前亦有人通過(guò)插件使其作為其它計(jì)算機(jī)語(yǔ)言比如 C++和 Python 的開(kāi)發(fā)工具。盡管 Eclipse 是使用 Java 語(yǔ)言開(kāi)發(fā)的,但它的用途并不限于 Java 語(yǔ)言;例如,支持諸如 C/C++、 COBOL、 PHP 等編程語(yǔ)言的插件已經(jīng)可用,或預(yù)計(jì)將會(huì)推出。 雖然大多數(shù)用戶(hù)很樂(lè)于將 Eclipse 當(dāng)作 Java 集成開(kāi)發(fā)環(huán)境( IDE)來(lái)使用,但 Eclipse 的目標(biāo)卻不僅限于此。幸運(yùn)的是, Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 Java 開(kāi)發(fā)工具( Java Development Kit, JDK)。這里獲得的只是最基本的輸出流和輸入流對(duì)象,還可以根據(jù)前面學(xué)習(xí)到的 IO 知識(shí),使用流的嵌套將這些獲得到的基本流對(duì)象轉(zhuǎn)換成需要的裝飾流對(duì)象,從而方便數(shù)據(jù)的操作。 連接一旦建立,則完成了客戶(hù)端編程的第一步,緊接著的步驟就是按照“請(qǐng)求 響應(yīng)”模型進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)交換,在 Java 語(yǔ)言中,數(shù)據(jù)傳輸功能由 Java IO 實(shí)現(xiàn),也就是說(shuō)只需要從連接中獲得輸入流和輸出流即可,然后將需要發(fā)送的數(shù)據(jù)寫(xiě)入連接對(duì)象的輸出流中,在發(fā)送完成以后從輸入流中讀取數(shù)據(jù)即可。 在客戶(hù)端網(wǎng)絡(luò)編程中,首先需要建立連 接,在 Java API 中以 類(lèi)的對(duì)象代表網(wǎng)絡(luò)連接,所以建立客戶(hù)端網(wǎng)絡(luò)連接,也就是創(chuàng)建 Socket 類(lèi)型的對(duì)象,該對(duì)象代表網(wǎng)絡(luò)連接,示例如下: Socket socket1 = new Socket(“”,10000)。在進(jìn)行網(wǎng)絡(luò)編程時(shí),底層網(wǎng)絡(luò)通訊的細(xì)節(jié)已經(jīng)實(shí)現(xiàn)了比較高的封裝,所以在程序員實(shí)際編程時(shí),只需要指定 IP 地址和端口號(hào)碼就可以建立連接了。該類(lèi)的功能是代表一個(gè) IP 地址,并且將 IP 地址和域名相關(guān)的操作方法包含在該類(lèi)的內(nèi)部。 和網(wǎng)絡(luò)編程有關(guān)的基 本 API 位于 包中,該包中包含了基本的網(wǎng)絡(luò)編程實(shí)現(xiàn),該包是網(wǎng)絡(luò)編程的基礎(chǔ)。簡(jiǎn)單說(shuō),就是先接收再發(fā)送,和客戶(hù)端的數(shù)據(jù)交換順序有所不同。 獲得連接 當(dāng)客戶(hù)端連接到服務(wù)器是,服務(wù)器端就可以獲得一個(gè)連接,這個(gè)連接包含客戶(hù)端的信息,例如客戶(hù)端 IP 地址等,服務(wù)器端和客戶(hù)端也通過(guò)該連接進(jìn)行數(shù)據(jù)交換。交換數(shù)據(jù)一般會(huì)按照“請(qǐng)求 響應(yīng)”模式進(jìn)行,即有客戶(hù)端發(fā)送一個(gè)請(qǐng)求數(shù)據(jù)到服務(wù)器,服務(wù)器回饋一個(gè)響應(yīng)數(shù)據(jù)給客戶(hù)端,如果客戶(hù)端不發(fā)送請(qǐng)求則服務(wù)器就不主動(dòng)響應(yīng)。 網(wǎng)絡(luò)編程的基本步奏: 建立網(wǎng)絡(luò)連接: 客戶(hù)端網(wǎng)絡(luò)編程的第一步都是建立網(wǎng)絡(luò)連接。 網(wǎng) 絡(luò)編 程的步奏 無(wú)論使用 TCP 方式還是 UDP 方式進(jìn)行網(wǎng)絡(luò)通訊,網(wǎng)絡(luò)編程都是由客戶(hù)端和服務(wù)器端組成。大多數(shù)因特網(wǎng)應(yīng)用程序使用 TCP。 TCP 傳輸控制協(xié)議( Transmission Control Protocol)。IPv4(通常稱(chēng)之 IP)自 20 世紀(jì) 80 年代早期以來(lái)一直是網(wǎng)際協(xié)議族 的主力協(xié)議。通 過(guò) TCP 協(xié)議傳輸 ,得 到的是一 個(gè)順 序的 無(wú) 差 錯(cuò) 的 數(shù) 據(jù)流。 目前 較為 流行的網(wǎng) 絡(luò)編 程模型是客 戶(hù) 機(jī) /服 務(wù) 器( C/S) 結(jié) 構(gòu)。 TCP/IP 協(xié)議 網(wǎng) 羅編 程的目的就是指直接或 間 接地通 過(guò) 網(wǎng) 絡(luò)協(xié)議 與其它 計(jì) 算機(jī) 進(jìn) 行通 訊 。 JAVA 使用synchronized 關(guān)鍵詞來(lái)定義程序中要求線(xiàn)程同步的部分。由于 JAVA 中的每個(gè)對(duì)象都是從 Object 繼承來(lái)的。 當(dāng)同時(shí)運(yùn)行的相互獨(dú)立的線(xiàn)程需要共享數(shù)據(jù)并且需要考慮其它線(xiàn)程的狀態(tài)時(shí),就需要使用一套機(jī)制使得這些線(xiàn)程同步,避免在爭(zhēng)用資源時(shí)發(fā)生沖突,甚至發(fā)生死鎖。注意一個(gè)處于死亡狀態(tài)的線(xiàn)程不能再調(diào)用該線(xiàn)程的任何方法。 例如, 下面一段代碼是一個(gè)循環(huán): public void run(){ int i = 0。 public void stop() { clockThread = null。 沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文 15 5. 死亡狀態(tài) (Dead) 線(xiàn)程的正常結(jié)束,即 run()方法返回,線(xiàn)程運(yùn)行就結(jié)束了,此時(shí)線(xiàn)程就處于死亡狀態(tài)。 try { (1000)。因此此時(shí)可能有多個(gè)線(xiàn)程處于就緒狀態(tài)。 start()方法創(chuàng)建線(xiàn)程運(yùn)行的系統(tǒng)資源,并調(diào)度線(xiàn)程運(yùn)行 run()方法。 注意 cp 作為線(xiàn)程構(gòu)造方法的第一個(gè)參數(shù),該參數(shù)必須是實(shí)現(xiàn)了 Runnable 接口的對(duì)象并提供線(xiàn)程運(yùn)行的 run()方法,第二個(gè)參數(shù)是線(xiàn)程名。 ()。 JAVA 的線(xiàn)程從產(chǎn)生到消失 ,可分為 5 種狀態(tài):新建( New),可運(yùn)行( Runnable),運(yùn)行( Running),阻塞( Blocked)以及死亡( Dead)。調(diào)用 start()方法并不一定馬上會(huì)執(zhí)行這個(gè)線(xiàn)程,正如上面所說(shuō),它只是進(jìn)入 Runnble而不是 Running。 public boolean isAlive() 返回指定線(xiàn)程是否處于活動(dòng)狀態(tài)。 public boolean isDaemon() 返回線(xiàn)程是否為 Daemon 線(xiàn)程。該方法拋出 InterruptedException 異常,必須捕獲。 public void setName(String name) 設(shè)置線(xiàn)程名。 Runnable 對(duì)象稱(chēng)為可運(yùn)行對(duì)象,一個(gè)線(xiàn)程的運(yùn)行就是執(zhí)行該對(duì)象的 run()方法。它由 JVM 創(chuàng)建并調(diào)用 JAVA 應(yīng)用程序的 main 方法。在 JAVA 語(yǔ)言中,多線(xiàn)程的機(jī)制是通過(guò)虛擬 CPU 來(lái)實(shí)現(xiàn)的。 “ Bug”,因此要小心使用。在這種情況下可以釋放一些珍貴的資源如內(nèi)存占用等等。 優(yōu) 點(diǎn) 一個(gè)線(xiàn)程 兩個(gè)線(xiàn)程 沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文 11 使用線(xiàn)程可以把占據(jù)時(shí)間長(zhǎng)的程序中的任務(wù)放到后臺(tái)去處理。 上面的代碼段中,在只支持單線(xiàn)程的語(yǔ)言中,前一個(gè)循環(huán)不執(zhí)行完不可能執(zhí)行第二個(gè)循環(huán)。 i++) (Runner A = + i)。 多線(xiàn)程( multithread)是指在單個(gè)的程序內(nèi)可以同時(shí)運(yùn)行多個(gè)不同的線(xiàn)程完成不同的任務(wù),圖 說(shuō)明了一個(gè)程序中同時(shí)有兩個(gè)線(xiàn)程運(yùn)行。 所有的程序員都熟悉順序程序的編寫(xiě),如我們編寫(xiě)的名稱(chēng)排序和求素?cái)?shù)的
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1