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

正文內(nèi)容

基于廣度優(yōu)先算法的多線程網(wǎng)絡(luò)爬蟲畢業(yè)設(shè)計(jì)(編輯修改稿)

2025-07-24 20:18 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 詢與資源相關(guān)的選項(xiàng)和需求。PUT 請(qǐng)求服務(wù)器存儲(chǔ)一個(gè)資源,并用 RequestURI 作為其標(biāo)識(shí)。DELETE 請(qǐng)求服務(wù)器刪除由 RequestURI 所標(biāo)識(shí)的資源。TRACE 請(qǐng)求服務(wù)器回送收到的請(qǐng)求信息,主要用語(yǔ)測(cè)試或診斷。URI 完整地指定了要訪問的網(wǎng)絡(luò)資源,通常只要給出相對(duì)于服務(wù)器的根目錄的相對(duì)目錄即可,因此總是以“/”開頭,最后,協(xié)議版本聲明了通信過程中使用 HTTP 的版本。 一個(gè) URL 地址用于描述一個(gè)網(wǎng)絡(luò)上的資源,而 HTTP 中的 GET, POST, PUT, DELETE 就對(duì)應(yīng)著對(duì)這個(gè)資源的查,改,增,刪 4 個(gè)操作。 其中最常見的就是 GET和 POST 了。GET 一般用于獲取 /查詢資源信息;而 POST 一般用于更新資源信息。以下是二者的區(qū)別:1. GET 提交的數(shù)據(jù)會(huì)放在 URL 之后,以? 分割 URL 和傳輸數(shù)據(jù),參數(shù)之間以amp。相連,如 ?name=test1amp。id=123456; POST 方法是把提交的數(shù)據(jù)放在 HTTP 包的 Body 中;2. GET 提交的數(shù)據(jù)大小有限制(因?yàn)闉g覽器對(duì) URL 的長(zhǎng)度有限制??也有人說依服務(wù)器的處理能力而定);而 POST 方法提交的數(shù)據(jù)沒有限制;3. GET 方式需要使用 來取得變量的值;而 POST 方式通過 來獲取變數(shù)的值;4. GET 方式提交數(shù)據(jù),會(huì)帶來安全問題,比如一個(gè)登錄頁(yè)面,通過 GET 方式提交數(shù)據(jù)時(shí),用戶名和密碼將出現(xiàn)在 URL 上,如果頁(yè)面可以被緩存或者其它人可以訪問這臺(tái)機(jī)器,就可以從歷史記錄獲得該用戶的賬號(hào)和密碼; HTTP 狀態(tài)代碼沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文9狀態(tài)代碼由 3 位數(shù)字組成,表示請(qǐng)求是否被理解或被滿足。狀態(tài)描述:狀態(tài)描述給出了關(guān)于狀態(tài)代碼的簡(jiǎn)短的文字描述。狀態(tài)代碼的第一個(gè)數(shù)字定義了響應(yīng)的類別,后面兩位沒有具體的分類。第一個(gè)數(shù)字有五種可能的取值: 1xx: 指示信息—表示請(qǐng)求已接收,繼續(xù)處理。 2xx: 成功—表示請(qǐng)求已經(jīng)被成功接收、理解、接受。 3xx: 復(fù)位向—要完成請(qǐng)求必須進(jìn)行更進(jìn)一步的操作。 4xx: 客戶端錯(cuò)誤—請(qǐng)求有語(yǔ)法錯(cuò)誤或請(qǐng)求無法實(shí)現(xiàn)。 5xx: 服務(wù)器端錯(cuò)誤—服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求。狀態(tài)代碼狀態(tài)描述說明 200 OK 客戶端請(qǐng)求成功 400 Bad Request 由于客戶端請(qǐng)求有語(yǔ)法錯(cuò)誤,不能被服務(wù)器所理解。 401 Unauthonzed 請(qǐng)求未經(jīng)授權(quán)。這個(gè)狀態(tài)代碼必須和 WWWAuthenticate 報(bào)頭域一起使用 403 Forbidden 服務(wù)器收到請(qǐng)求,但是拒絕提供服務(wù)。服務(wù)器通常會(huì)在回應(yīng)正文中給出不提供服務(wù)的原因 404 Not Found 請(qǐng)求的資源不存在,例如,輸入了錯(cuò)誤的 URL。 500 Internal Server Error 服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤,導(dǎo)致無法完成客戶端的請(qǐng)求。 503 Service Unavailable 服務(wù)器當(dāng)前不能夠處理客戶端的請(qǐng)求,在一段時(shí)間之后,服務(wù)器可能會(huì)恢復(fù)正常。 JAVA 多線程在一個(gè)程序中,一些獨(dú)立運(yùn)行的程序片斷叫做“線程” (Thread) ,利用它編程的概念就叫作“多線程處理” 。 (摘自百度百科 [5]) 定義沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文10線程的概念來源于計(jì)算機(jī)的操作系統(tǒng)的進(jìn)程的概念。進(jìn)程是一個(gè)程序關(guān)于某個(gè)數(shù)據(jù)集的一次運(yùn)行。也就是說,進(jìn)程是運(yùn)行中的程序,是程序的一次運(yùn)行活動(dòng)。線程和進(jìn)程的相似之處在于,線程和運(yùn)行的程序都是單個(gè)順序控制流。有些教材將線程稱為輕量級(jí)進(jìn)程(light weight process)。線程被看作是輕量級(jí)進(jìn)程是因?yàn)樗\(yùn)行在一個(gè)程序的上下文內(nèi),并利用分配給程序的資源和環(huán)境。作為單個(gè)順序控制流,線程必須在運(yùn)行的程序中得到自己運(yùn)行的資源,如必須有自己的執(zhí)行棧和程序計(jì)數(shù)器。線程內(nèi)運(yùn)行的代碼只能在該上下文內(nèi)。因此還有些教程將執(zhí)行上下文(execution context)作為線程的同義詞。所有的程序員都熟悉順序程序的編寫,如我們編寫的名稱排序和求素?cái)?shù)的程序就是順序程序。順序程序都有開始、執(zhí)行序列和結(jié)束,在程序執(zhí)行的任何時(shí)刻,只有一個(gè)執(zhí)行點(diǎn)。線程(thread)則是進(jìn)程中的一個(gè)單個(gè)的順序控制流。單線程的概念很簡(jiǎn)單,如圖所示。多線程(multithread )是指在單個(gè)的程序內(nèi)可以同時(shí)運(yùn)行多個(gè)不同的線程完成不同的任務(wù),圖 說明了一個(gè)程序中同時(shí)有兩個(gè)線程運(yùn)行。圖 單線程程序示意圖 圖 多線程程序示意圖有些程序中需要多個(gè)控制流并行執(zhí)行。例如,for(int i = 0。 i 100。 i++) (Runner A = + i)。for(int j = 0。 j 100。 j++ ) (Runner B = +j)。上面的代碼段中,在只支持單線程的語(yǔ)言中,前一個(gè)循環(huán)不執(zhí)行完不可能執(zhí)行第二個(gè)循環(huán)。要使兩個(gè)循環(huán)同時(shí)執(zhí)行,需要編寫多線程的程序。一個(gè)線程 兩個(gè)線程沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文11很多應(yīng)用程序是用多線程實(shí)現(xiàn)的,如 Hot Java Web 瀏覽器就是多線程應(yīng)用的例子。在 Hot Java 瀏覽器中,你可以一邊滾動(dòng)屏幕,一邊下載 Applet 或圖像,可以同時(shí)播放動(dòng)畫和聲音等。 優(yōu)點(diǎn)使用線程可以把占據(jù)時(shí)間長(zhǎng)的程序中的任務(wù)放到后臺(tái)去處理。用戶接口可以更加吸引人,這樣比如用戶點(diǎn)擊了一個(gè)按鈕去觸發(fā)某些事件的處理,可以彈出一個(gè)進(jìn)度條來顯示處理的進(jìn)度。程序的運(yùn)行速度可能加快。在一些等待的任務(wù)實(shí)現(xiàn)上如用戶輸入、文件讀寫和網(wǎng)絡(luò)收發(fā)數(shù)據(jù)等,線程就比較有用了。在這種情況下可以釋放一些珍貴的資源如內(nèi)存占用等等。還有其它很多使用多線程的好處,這里就不在累述。 不足,會(huì)影響性能,因?yàn)椴僮飨到y(tǒng)需要在它們之間切換?!癇ug” ,因此要小心使用。,需要防止線程死鎖情況的發(fā)生。 JAVA 多線程編程計(jì)算機(jī)程序得以執(zhí)行的三個(gè)要素是:CPU,程序代碼,可存取的數(shù)據(jù)。在 JAVA語(yǔ)言中,多線程的機(jī)制是通過虛擬 CPU 來實(shí)現(xiàn)的??梢孕蜗蟮睦斫鉃?在一個(gè) JAVA 程序內(nèi)部虛擬了多臺(tái)計(jì)算機(jī),每臺(tái)計(jì)算機(jī)對(duì)應(yīng)一個(gè)線程,有自己的 CPU,可以獲取所需的代碼和數(shù)據(jù),因此能獨(dú)立執(zhí)行任務(wù),相互間還可以共享代碼和數(shù)據(jù)。JAVA 的線程是通過 類來實(shí)現(xiàn)的,它內(nèi)部實(shí)現(xiàn)了虛擬 CPU 的功能,能夠接收和處理傳遞給它的代碼和資料,并提供了獨(dú)立的運(yùn)行控制功能。每個(gè) JAVA 應(yīng)用程序都至少有一個(gè)線程,這就是所謂的主線程。它由 JVM 創(chuàng)建并調(diào)用 JAVA 應(yīng)用程序的 main 方法。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文12Java 語(yǔ)言實(shí)現(xiàn)多線程編程的類和接口。在 包中定義了 Runnable 接口和Thread 類。Runnable 界面中只定義了一個(gè)方法,它的格式為:public abstract void run() 這個(gè)方法要由實(shí)現(xiàn)了 Runnable 接口的類實(shí)現(xiàn)。Runnable 對(duì)象稱為可運(yùn)行對(duì)象,一個(gè)線程的運(yùn)行就是執(zhí)行該對(duì)象的 run()方法。Thread 類實(shí)現(xiàn)了 Runnable 接口,因此 Thread 對(duì)象也是可運(yùn)行對(duì)象。同時(shí) Thread 類也是線程類,該類的構(gòu)造方法如下:public Thread() public Thread(Runnable target)public Thread(String name)public Thread(Runnable target, String name)public Thread(ThreadGroup group, Runnable target)public Thread(ThreadGroup group, String name)public Thread(ThreadGroup group, Runnable target, String name)target 為線程運(yùn)行的目標(biāo)對(duì)象,即線程調(diào)用 start()方法啟動(dòng)后運(yùn)行那個(gè)對(duì)象的 run()方法,該對(duì)象的類型為 Runnable,若沒有指定目標(biāo)對(duì)象,則以當(dāng)前類對(duì)象為目標(biāo)對(duì)象;name 為線程名,group 指定線程屬于哪個(gè)線程組。Thread 類的常用方法有:public static Thread currentThread() 返回當(dāng)前正在執(zhí)行的線程對(duì)象的引用。public void setName(String name) 設(shè)置線程名。public String getName() 返回線程名。public static void sleep(long millis) throws InterruptedExceptionpublic static void sleep(long millis, int nanos) throws InterruptedException使當(dāng)前正在執(zhí)行的線程暫時(shí)停止執(zhí)行指定的毫秒時(shí)間。指定時(shí)間過后,線程繼續(xù)執(zhí)行。該方法拋出 InterruptedException 異常,必須捕獲。public void run() 線程的線程體。public void start() 由 JVM 調(diào)用線程的 run()方法,啟動(dòng)線程開始執(zhí)行。public void setDaemon(boolean on) 設(shè)置線程為 Daemon 線程。public boolean isDaemon() 返回線程是否為 Daemon 線程。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文13public static void yield() 使當(dāng)前執(zhí)行的線程暫停執(zhí)行,允許其它線程執(zhí)行。public ThreadGroup getThreadGroup() 返回該線程所屬的線程組對(duì)象。public void interrupt() 中斷當(dāng)前線程。public boolean isAlive() 返回指定線程是否處于活動(dòng)狀態(tài)。通常,我們可以將一個(gè)類繼承 Thread,然后,覆蓋 Thread 中的 run()方法,這樣讓這個(gè)類本身也就成了線程。每個(gè)線程都是通過某個(gè)特定 Thread 對(duì)象所對(duì)應(yīng)的方法 run()來完成其操作的,方法run()稱為線程體。使用 start()方法,線程進(jìn)入 Runnable 狀態(tài),它將線程調(diào)度器注冊(cè)這個(gè)線程。調(diào)用start()方法并不一定馬上會(huì)執(zhí)行這個(gè)線程,正如上面所說,它只是進(jìn)入 Runnble 而不是Running。我們也可以通過實(shí)現(xiàn) Runnable 接口并實(shí)現(xiàn)接口中定義的唯一方法 run(),可以創(chuàng)建一個(gè)線程。在使用 Runnable 接口時(shí),不能直接創(chuàng)建所需類的對(duì)象并運(yùn)行它,而是必須從Thread 類的一個(gè)實(shí)例內(nèi)部運(yùn)行它。從上面兩種創(chuàng)建線程的方法可以看出,如果繼承 Thread 類,則這個(gè)類本身可以調(diào)用 start 方法,也就是說將這個(gè)繼承了 Thread 的類當(dāng)作目標(biāo)對(duì)象;而如果實(shí)現(xiàn) Runnable接口,則這個(gè)類必須被當(dāng)作其它線程的目標(biāo)對(duì)象。JAVA 的線程從產(chǎn)生到消失,可分為 5 種狀態(tài):新建(New) ,可運(yùn)行(Runnable ) ,運(yùn)行(Running ) ,阻塞(Blocked)以及死亡(Dead) 。其中,Running 狀態(tài)并非屬于JAVA 規(guī)范中定義的線程狀態(tài),也就是說,在 JAVA 規(guī)范中,并沒有將運(yùn)行(Running)狀態(tài)真正的設(shè)置為一個(gè)狀態(tài),它屬于可運(yùn)行狀態(tài)的一種。線程的狀態(tài)如圖 所示:圖 線程的五種狀態(tài)下面以前面的 Java 小程序?yàn)槔f明線程的狀態(tài):1. 新建狀態(tài)(New Thread)當(dāng) Applet 啟動(dòng)時(shí)調(diào)用 Applet 的 start()方法,此時(shí)小應(yīng)用程序就創(chuàng)建一個(gè) Thread 對(duì)新建狀態(tài) 就緒狀態(tài)阻塞狀態(tài) 運(yùn)行狀態(tài) 死亡狀態(tài)沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文14象 clockThread。 public void start() { if (clockThread == null) { clockThread = new Thread(cp, Clock)。 ()。 } }當(dāng)該語(yǔ)句執(zhí)行后 clockThread 就處于新建狀態(tài)。處于該狀態(tài)的線程僅僅是空的線程對(duì)象,并沒有為其分配系統(tǒng)資源。當(dāng)線程處于該狀態(tài),你僅能啟動(dòng)線程,調(diào)用任何其它方法是無意義的且會(huì)引發(fā) IllegalThreadStateException 異常(實(shí)際上,當(dāng)調(diào)用線程的狀態(tài)所不允許的任何方法時(shí),運(yùn)行時(shí)系統(tǒng)都會(huì)引發(fā)IllegalThreadStateException 異常)。注意 cp 作為線程構(gòu)造方法的第一個(gè)參數(shù),該參數(shù)必須是實(shí)現(xiàn)了 Runnable 接口的對(duì)象并提供線程運(yùn)行的 run()方法,第二個(gè)參數(shù)是線程名。2. 就緒狀態(tài)(Runnable)一個(gè)新創(chuàng)建的線程并不自動(dòng)開始運(yùn)行,要執(zhí)行線程,必須調(diào)用線程的 start()方法。當(dāng)線程對(duì)象調(diào)用 start()方法即啟動(dòng)了線程,如 ()。 語(yǔ)句就是啟動(dòng)clockThread 線程。start()方法創(chuàng)建線程運(yùn)行的系統(tǒng)資源,并調(diào)度線程運(yùn)行 run()方法。當(dāng)start()方法返回后,線程就處于就緒狀態(tài)。處于就緒狀態(tài)的線程并不一定立即運(yùn)行 run()方法,線程還必須同其它線程競(jìng)爭(zhēng)CPU 時(shí)間,只有獲得 CPU 時(shí)間才可以運(yùn)行線程。因?yàn)樵趩?CPU 的計(jì)算機(jī)系統(tǒng)中,不可能同時(shí)運(yùn)行多個(gè)線程,一個(gè)時(shí)刻僅有一個(gè)線程處于運(yùn)行狀態(tài)。因此此時(shí)可能有多個(gè)線程處于就緒狀態(tài)。對(duì)多個(gè)處于就緒狀態(tài)的線程是由 Java 運(yùn)行時(shí)系統(tǒng)的線程調(diào)度程序(
點(diǎn)擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1