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

正文內容

基于廣度優(yōu)先算法的多線程網絡爬蟲畢業(yè)設計(編輯修改稿)

2025-07-24 20:18 本頁面
 

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