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

正文內(nèi)容

基于http協(xié)議的斷點(diǎn)續(xù)傳應(yīng)用系統(tǒng)開(kāi)發(fā)畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文)-資料下載頁(yè)

2025-07-01 20:17本頁(yè)面

【導(dǎo)讀】指導(dǎo)下進(jìn)行的研究工作及取得的成果。盡我所知,除文中特別加以標(biāo)注。和致謝的地方外,不包含其他人或組織已經(jīng)發(fā)表或公布過(guò)的研究成果,對(duì)本研究提供過(guò)幫助和做出過(guò)貢獻(xiàn)的個(gè)人或集體,均已在文中作。了明確的說(shuō)明并表示了謝意。的規(guī)定,即:按照學(xué)校要求提交畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版本;閱覽服務(wù);學(xué)??梢圆捎糜坝 ⒖s印、數(shù)字化或其它復(fù)制手段保存論文;在不以贏利為目的前提下,學(xué)??梢怨颊撐牡牟糠只蛉?jī)?nèi)容。文件的上傳下載是計(jì)算機(jī)網(wǎng)絡(luò)核心應(yīng)用之一。計(jì)算網(wǎng)絡(luò)的發(fā)展圍繞。在怎樣使得文件上傳下載更快、更好、更安全。穩(wěn)定,為了獲得可靠、高效的數(shù)據(jù)傳輸,斷點(diǎn)續(xù)傳技術(shù)應(yīng)運(yùn)而生。些功能的實(shí)現(xiàn)大大減少資源的浪費(fèi),節(jié)省用戶下載的時(shí)間。發(fā)用到了多線程技術(shù)、網(wǎng)絡(luò)編程、I/O流技術(shù)和Swing用戶界面編程,又詳細(xì)介紹本系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。

  

【正文】 17 ? 線程控制模塊:負(fù)責(zé)協(xié)調(diào)控制多個(gè)線程共同完成下載任務(wù) 。 ? 用戶界面模塊:負(fù)責(zé)定義可視化的用戶界面。 整個(gè)系統(tǒng)的執(zhí)行流程如圖 所示: 否 下載 是 圖 多線程下載工具執(zhí)行流程圖 關(guān)鍵技術(shù)和難點(diǎn) Java 多線程技術(shù) 多線程是這樣一種機(jī)制,它允許在程序中并發(fā)執(zhí)行多個(gè)指令流,每個(gè)指令 流都被稱為一個(gè)線程,線程間互相獨(dú)立。線程又稱為輕量級(jí)進(jìn)程,它和進(jìn)程一樣擁有獨(dú)立的執(zhí)行控制,由操作系統(tǒng)負(fù)責(zé)調(diào)度,區(qū)別在于線程沒(méi)有獨(dú)立存儲(chǔ)空間,而是和所屬進(jìn)程中的其他線程共享一個(gè)存儲(chǔ)空間,這使得線程間的通信遠(yuǎn)較進(jìn)程簡(jiǎn)單 [16]。 多個(gè)線程的執(zhí)行是并發(fā)的,也是在邏輯上“同時(shí)”,而不管是否是物理上的“同時(shí)”。如果系統(tǒng)只有一個(gè) CPU,那么真正的“同時(shí)”是不可能的,但是由于 CPU 的速度非常快,用戶感覺(jué)不到其中的區(qū)別,因此我們只需要設(shè)想各個(gè)線程是同時(shí)執(zhí)行即可。 在 Java 中提供了類 來(lái)進(jìn)行 多線程編程。在基于 Java 的應(yīng)用程序中可以通過(guò)以下兩種方法創(chuàng)建線程對(duì)象。 ( 1) 聲明一個(gè) Thead 類的子類,并覆蓋其 run( )方法。 示例代碼如下: class mythread extends thread { 用戶 調(diào)度多線程下載 全部線程運(yùn)行結(jié)束 結(jié)束 合并臨時(shí)文件 生成下載文件 浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 18 public void run{} { /* 覆蓋方法 */} } ( 2) 聲明一個(gè)實(shí)現(xiàn) Runnable 接口的類,并實(shí)現(xiàn) run( )方法。 示例代碼如下: class mythread implements runnable { public void run{} { /* 實(shí)現(xiàn)該方法 */} } Thread 類中提供了大量的方法來(lái)控制線程的執(zhí)行過(guò)程。要觸發(fā)一個(gè)新線程,需要調(diào)用 start( )方法。 示例代碼如下: mythread t = new mytherad( )。 ( )。 在調(diào)用 start( )方法時(shí),將創(chuàng)建一個(gè)新的控制線程,新線程進(jìn)入可運(yùn)行狀態(tài),它將向線程調(diào)度器注冊(cè)這個(gè)線程。接著它將調(diào)用 run( )方法。 每個(gè)線程都是通過(guò)某個(gè)特定 Thread 對(duì)象所對(duì)應(yīng)的 run( )方法來(lái)完成其操作,因?yàn)?run( )方法中的代碼定義執(zhí)行 線程所需要的功能,所以 run( )方法被稱為線程體。每個(gè)線程都是通過(guò)某個(gè)特定 Thread 對(duì)象所對(duì)應(yīng)的 run( )方法來(lái)完成其操作的,因?yàn)閞un( )方法中的代碼定義執(zhí)行線程所需的功能,所以 run( )方法被稱為線程體 [17]。 Java I/O 流技術(shù) 為了進(jìn)行數(shù)據(jù)的輸入 /輸出操作, Java 中把不同的輸入 /輸出源抽象表述為“流”( stream)。 包中定義了多個(gè)流類型來(lái)實(shí)現(xiàn)輸入 /輸出功能。 按照流的方向劃分,可以分為輸入流和輸出流。 ? 輸入流:只能從中讀取字節(jié)數(shù)據(jù),而不能向其寫(xiě)入數(shù)據(jù)。 ? 輸出流:只能 向其寫(xiě)入字節(jié)數(shù)據(jù),而不能從中讀取數(shù)據(jù)。 按照流所處理的數(shù)據(jù)類型劃分,可以分為字節(jié)流和字符流。 ? 節(jié)點(diǎn)流:可以從(向)一個(gè)特定的 I/O 設(shè)備讀(寫(xiě))數(shù)據(jù)的流,節(jié)點(diǎn)流也被 稱為低級(jí)流。 浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 19 ? 處理流 :用來(lái)實(shí)現(xiàn)對(duì)一個(gè)已存在的流的連接和封裝,是通過(guò)所封裝的流的功能 調(diào)用實(shí)現(xiàn)數(shù)據(jù)讀 /寫(xiě)操作的流,處理流也被稱為高級(jí)流。 包支持兩種類型的流,包括二進(jìn)制數(shù)據(jù)的字節(jié)流和包括字符數(shù)據(jù)的字符流。在讀 /寫(xiě)數(shù)據(jù)時(shí),這兩種流以不同方式工作 [18]。當(dāng)向字節(jié)流寫(xiě)數(shù)據(jù)時(shí),數(shù)據(jù)以字節(jié)序列的形式寫(xiě)入流,與它在內(nèi)存中的形式一樣,數(shù)據(jù)不發(fā)生任 何轉(zhuǎn)換。二進(jìn)制數(shù)值只能被寫(xiě)為字節(jié)序列, 4 個(gè)字節(jié)構(gòu)成一個(gè) int 型值, 8 個(gè)字節(jié)構(gòu)成一個(gè) long 型值等。Java 其內(nèi)部將字節(jié)符存儲(chǔ)為 16 位的 Unicode 碼字符,因此每個(gè) Unicode 碼字符可以寫(xiě)成 2 個(gè)字節(jié)的二進(jìn)制流,先寫(xiě)高 8 位。字符流用于存儲(chǔ)和檢索文本,而且可以使用它讀取由非 Java 程序生成的文本文件。所有二進(jìn)制數(shù)據(jù)在寫(xiě)向字符流之前必須轉(zhuǎn)換為字符流能夠接受的表達(dá)形式。該形式由原始二進(jìn)制數(shù)據(jù) 值轉(zhuǎn)換成的字符組成。因此,從包含文本的字符流中讀取數(shù)據(jù)比直接讀取二進(jìn)制數(shù)據(jù)涉及更多的工作 [19]。 在本系統(tǒng)中,由于下載文件 不一定是只包含字符的文本,因此在實(shí)現(xiàn)過(guò)程中使用的是更加通用的字節(jié)流。在 包中, InputSteam 和 OutputStream 類及它們的子類均表示字節(jié)流,并且提供了讀 /寫(xiě)二進(jìn)制數(shù)據(jù)的方法。 InputStream 類中包含 3個(gè) read( )方法,用來(lái)數(shù)據(jù)流中讀取二進(jìn)制代碼。 ? 輸入流的基本方法如下: read( ),這個(gè)方法在 InputStream 類中是抽象的,因此它必須定義在子類中。此方法以 int 型返回流的下一個(gè)可讀字節(jié)。如果到達(dá)流的末尾,則方法的返回值為 1.如果 I/O 發(fā)生錯(cuò)誤,將拋出 IOException 類型的異常。 read(byte[ ] array),此方法將流中字節(jié)讀到數(shù)組的連續(xù)元素中,讀出的字節(jié)數(shù)量最大為 的值。在讀取完輸入數(shù)據(jù)或是檢測(cè)到流尾時(shí),才從本方法返回。本方法將返回讀取的字節(jié)個(gè)數(shù),或者如果因?yàn)榈竭_(dá)流尾而沒(méi)有讀取任何字節(jié)則返回 I/O 發(fā)生錯(cuò)誤,將拋出 IOEception 類型異常。如果傳給方法的參數(shù)為 null,則拋出 NullPointerException 異常。 read(byte[ ] buffer,int offset,int length),此方法將 數(shù)據(jù)讀入一個(gè)字節(jié)數(shù)組,從數(shù)組的 offset 指定的位置開(kāi)始存放,并用 length 來(lái)指定讀取的最大字節(jié)數(shù)。 ? 輸入流的其他方法如下: void close( ),關(guān)閉流。 int available( ),返回可以從中讀取的字節(jié)數(shù)。 long skip(long n),在輸入流中跳過(guò) n 個(gè)字節(jié),將實(shí)際跳過(guò)的字節(jié)數(shù)返回。 浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 20 boolean markSupported( ),判斷流是否支持標(biāo)記功能。 void mark( int readlimit),在支持標(biāo)記的輸入流的當(dāng)前位置設(shè)置一個(gè)標(biāo)記。 void reset( ),返回到流的上一個(gè)標(biāo)記。注意,流必須支持標(biāo)記功能。 OutputStream 類包含 3 個(gè) write( )方法,用來(lái)向數(shù)據(jù)流寫(xiě)入二進(jìn)制代碼。這些操作與 InputStream 類的 read( )方法相對(duì)應(yīng) [20]。 ? 輸出流的基本方法如下: void write( int c)。 void write(byte [ ] buffer)。 void write(byte[ ] buffer, int offset, int length)。 在本系統(tǒng)的實(shí)現(xiàn)過(guò)程中主要涉及兩部分 Java 流操作,一個(gè)是從打開(kāi)的 URL 連接中獲得網(wǎng)絡(luò)的輸入流,一個(gè)是向文件寫(xiě)入內(nèi)容的輸出流。 本章小結(jié) 本章 對(duì) 項(xiàng)目 本 系統(tǒng) 需求 進(jìn)行了用戶需求 分析 和系統(tǒng)功能需求分析,并描述了系統(tǒng)流程及模塊劃分,而且分析了關(guān)鍵技術(shù)和難點(diǎn) , 明確了系統(tǒng)的使用對(duì)象 、大致功能 結(jié)構(gòu)及 各個(gè)業(yè)務(wù)系統(tǒng) 所需實(shí)現(xiàn)的功能 等問(wèn)題,為 后續(xù)系統(tǒng)設(shè)計(jì)打下了基礎(chǔ)。 浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 21 第四章 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 系統(tǒng) 基本 流程 該系統(tǒng)基本 流程(如圖 所示): 運(yùn)行程序后,可以在主界面上輸入 URL 地址、保存地址也可以在文件菜單中新建一個(gè)任務(wù),然后在 URL 地址欄中輸入 HTTP地址,用戶可以選擇需要下載的線程數(shù),程 序還提供下載彈出窗體保存位置的選擇,而且每當(dāng)新建一個(gè)新的任務(wù)時(shí),程序會(huì)自動(dòng)載入默認(rèn)的存儲(chǔ)位置,不需要用戶反復(fù)的輸入地址。點(diǎn)擊確定時(shí),程序?qū)⒃谥鹘缑骘@示剛剛新建的下載任務(wù), 包括了詳細(xì)的信息。 圖 系統(tǒng)基本 流程圖 新建完任務(wù)后,用戶還可以繼續(xù)添加下載的任務(wù)。選中想要下載的任務(wù),可以多選,點(diǎn)擊“開(kāi)始”按鈕,程序?qū)㈤_(kāi)始任務(wù)的下載,當(dāng)?shù)谝淮芜\(yùn)行程序時(shí),程序?qū)⒄憬I(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 22 在程序的當(dāng)前目錄下自動(dòng)新建一個(gè)配置文件,該文件名為 ,該配置文件將記錄該程序的默認(rèn)下載地址和所有上一次的任務(wù)下載信息。所以每當(dāng) 用戶退出程序時(shí),程序都會(huì)自動(dòng)保存當(dāng)前的所有任務(wù)下載信息,做到“斷點(diǎn)續(xù)傳”的可視化。當(dāng)開(kāi)始一個(gè)新的任務(wù)下載時(shí),該程序也將自動(dòng)創(chuàng)建一個(gè)新的保存任務(wù)下載信息的文件,該文件用戶記錄該文件的下載點(diǎn),也就是實(shí)現(xiàn)“斷點(diǎn)續(xù)傳”的保存信息,文件名以下載的文件名加上 .tmp 命名,當(dāng)該文件下載完成時(shí),程序會(huì)自動(dòng)刪除該記錄文件。用戶單擊“刪除任務(wù)”按鈕可以刪除選中的任務(wù),可以多選。單擊“新建按鈕”,將可以新曾下載的任務(wù)。 系統(tǒng) 功能模塊設(shè)計(jì) 本系統(tǒng) 分為五個(gè)功能模塊,分別為下載任務(wù)實(shí)體類模塊、系統(tǒng)工具類模塊、線程下載類模塊、下載任務(wù)總 控制模塊、用戶界面模塊。 每個(gè)模塊的功能在上一章的系統(tǒng)功能需求分析已經(jīng)詳細(xì)介紹過(guò),這里不再重述。 系統(tǒng) 下載功能的 實(shí)現(xiàn) 按照功能劃分,下載過(guò)程可以分為 兩 部分, 即建立連接 并 讀取待下載文件的信息、下載文件 。 由于論文的篇幅有限,涉及到代碼 只張貼了重點(diǎn)部分。 建立連接 并獲取下載信息 public static TestResult TestURL(String tmp) { TestResult r = new TestResult()。 URL tmp_URL。 try { (正在連接 URL[ + tmp + ])。 tmp_URL = new URL(tmp)。// 建立連接 HttpURLConnection = (HttpURLConnection) tmp_URL .openConnection()。 if (() = 400) { (資源 [ + tmp_URL + ]服務(wù)器響應(yīng)錯(cuò)誤! )。 浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 23 = null。 = 1。 return r。 } else { (資源 [ + tmp_URL + ]連接成功! )。 = tmp_URL。 = 1。// 獲取文件長(zhǎng)度 = ()。 if ( == 1) { (資源 [ + tmp + ]無(wú)法獲知的文件長(zhǎng)度! )。 } else { (資源 [ + tmp + ]文件大小為 ( / 1024 * 100) / + k。 )。 }// 獲取文件名 = getFileName()。 (資源 [ + tmp + ]文件名為 + )。 // 獲取 MIME 列表 = getMIME()。 return r。 } } catch (MalformedURLException e1) { (資源 [ + tmp + ]格式錯(cuò)誤! )。 = null。 = 2。 return r。 } catch (IOException e2) { (資源 [ + tmp + ]連接錯(cuò)誤! )。 = null。 = 3。 浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 24 return r。 } } 它的作用是 從下載 URL 地址中文件名和文件長(zhǎng)度。功能的實(shí)現(xiàn)是通過(guò)HttpURLConnection 類來(lái)完成的。 HttpURLConnection 實(shí)例都可用于生成單個(gè)請(qǐng)求 ,再通過(guò)實(shí)例調(diào)用 getFileName 方法和 getContentLength 方法來(lái)獲取文件名大長(zhǎng)度。請(qǐng)求后在 HttpURLConnection 的 InputStream 或 OutputStream 上調(diào)用 close() 方法可以釋放與此實(shí)例關(guān)聯(lián)的網(wǎng)絡(luò)資源。 下載文件 public DownLoadThread(int id, String urlAddress, String savePosition, long start, long end, int subThreadCount) { (id+id+,start: + start + ,end: + end)。 = id。 = start。 = end。 = subThreadCount。 = savePosition。 oos2 = ()。 downloadInfo2 = new DownLoadInfo()。 (id)。 (end)。 try {
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1