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

正文內(nèi)容

計算機專業(yè)畢業(yè)論文)基于java的http斷點續(xù)傳的設(shè)計與實現(xiàn)(更新版)

2024-12-28 01:15上一頁面

下一頁面
  

【正文】 tartCore swmap = new HashMapInteger, DownloadStartCore()。并且提供下載任務(wù)的提取和添加方法從而實現(xiàn)下載任務(wù)的管理 ,如下: package 。 (fileSplitters[i].getStartPoint())。 文件指針包括了線程的起始點和結(jié)束點,以及 該任 務(wù)總共所用的 線程數(shù),通過保存這些數(shù)據(jù)便可完成文件的讀取,實現(xiàn)制定下載,實現(xiàn)文件繼續(xù)下載。 !isStop) { if(isStop){ break。 InputStream input = ()。同時向外提供一個接口可以獲取到這個鎖并且修改這個鎖,便可完成線程的控制,那么對于任務(wù)功能也便能實現(xiàn)了。 ()。這兩種機制當(dāng)中,實現(xiàn)接口是最為可取的,如果繼承了類那么這個類本身就是一個線程,而實現(xiàn) Runnable 接口的類則可以充當(dāng)其他的角色,這樣也就可以通過一 個接口啟動多個相同任務(wù)的線程,并且這個類可以無限制的使用,修改而線程類他本身的性質(zhì)是執(zhí)行完 start( )方法后,便不能再 作為一個 線程 類了, 而實現(xiàn) Runable 的類則可以用它來產(chǎn)生線程類,那么如何來管理這一系列實現(xiàn) Runnable的類呢?用到 Java中的數(shù)據(jù)結(jié)構(gòu) Map便可實現(xiàn)這一系列的類的管理,當(dāng)然這些線程類太分散,不方便管理那么就用把一個任務(wù)生成的線程全集中到一個管理類當(dāng)中去,再保存這個類到 Map 集合 中去,這樣就實現(xiàn)了線程的管理。amp。 (RANGE, sProperty)。 } } else{ } } } } 這個方法是重寫 Thread 類的 run()方法, 調(diào)用 ()后就可以啟動線程并運行 run()方法 ,在 run()方法中調(diào)用首先判斷是不是第一次運行任務(wù),如果是就 通過getFileLength()方法 讀取文件長度,并返回;如果連接不上就返回錯誤代碼 2,如果不能獲取文件的長度就返回 1, isErro,isHTTP 兩個布爾變量來確定 是否啟動任務(wù),啟動單線程任務(wù)還是啟動多線程任務(wù) 。 i 1。 if (bFirst) { // 讀取文件長度 fileLength = getFileLength()。 (fileSplitters[i].getEndPoint())。 } catch (Exception e) { ()。 startPoints = new long[nCount]。 endPoints = new long[chunk]。 包含的類如下圖 : 源碼結(jié)構(gòu)圖 為核心類 包 ,實現(xiàn) HTTP 斷點續(xù)傳 ,是本系統(tǒng)的核心部分所在,外界向他傳輸一個變量,那么就可以實現(xiàn)多任務(wù)多線程下載 ; 為軟件記錄數(shù)據(jù)包,包括下載 數(shù)據(jù)和軟件設(shè)置數(shù)據(jù) ,數(shù)據(jù)包主要保存任務(wù)的屬性,比如開始時間,結(jié)束時間,文件長度,名字以及大小 ; 為用戶體驗對話框 的包, 包括 UI 和功能模塊 ,主要包括啟動任務(wù),對任務(wù)名字進行輸入 ,保存地址進行輸入 ; 為用戶體驗主界面的包 ,包括 UI和功能模塊 ,主要包括了一個 Tree 樹 , 一個顯示詳細信息的 JTabPanle,一個任務(wù)進度顯示的 JTable; 為用戶體驗主界面的菜單 欄包,包括 UI和功能模塊, 有新建任務(wù)選項 ,點擊可開啟新建任務(wù) ; 為用戶體驗主界面的表格包,包括 UI 和功能模塊,重新渲染表格的一 列 使其顯示 成 JProgress。 GET / HTTP/ RANGE: bytes=1043070 Accept: text/html, image/gif, image/jpeg, *。而且可以使代碼變得更加的清晰 。 } })。 private final DialogGUIImpl dilogGUI = new DialogGUI()。 視圖是用戶看到并與之交互的界面 。 為了對下載任務(wù)進行掌控,用戶往往具有設(shè)置下載任務(wù)的線程數(shù),文件下載網(wǎng)址,文件下載存儲目錄和在下載過程中對下載任務(wù)的狀態(tài)進行監(jiān)控等功能需求。最恰當(dāng)?shù)谋扔骶褪怯脩魰械?CPU 似乎同時出現(xiàn)在兩個地方,在下載軟件中應(yīng)用多線程技術(shù)可以理解為將一個下載任務(wù)分成若干份來完成,其中的并發(fā)控制將使下載的效率大大提高。如果指定 maxstale 消息的值,那么客戶機可以接收超出超時期指定值之內(nèi)的響應(yīng)消息。各個消息中的指令含義如下: ? Public 指示響應(yīng)可被任何緩存區(qū)緩存。 通常,由 HTTP 客戶端發(fā)起一個請求,建立一個到服務(wù) 器指定端口(默認是 80端口 )的TCP 連接。通過使用 Web 瀏覽器 、 網(wǎng)絡(luò)爬蟲 或者其它的工具,客戶端發(fā)起一個到服務(wù)器上指 定端口(默認 端口 為 80)的 HTTP 請求。 由于同一進程的多個線程共享同一片存儲空間,在帶來方便的同時,也帶來了訪問沖突這個嚴(yán)重的問題。 關(guān)鍵技術(shù) JAVA 多線程機制 下載程序功能模塊的實現(xiàn)主要利用了面向?qū)ο蟮?Java 高級編程語言。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。 ? 分布式 : Java 建立在擴展 TCP/IP 網(wǎng)絡(luò)平臺上。 Java 舍棄了 C++的指針對存儲器地址的直接操作,程序運行時,內(nèi)存由操作系統(tǒng)分配,這樣可以避免病毒通過指針侵入系統(tǒng)。這樣,在 下載時可以把文件分成若干部分,每一部分創(chuàng)建一個下載線程進行下載。斷點續(xù)傳就是用來解決這樣的問題的,它的任務(wù)是在下載任務(wù)停止時,記錄當(dāng)前下載的信息并且利用網(wǎng)絡(luò)協(xié)議中的一些重定向機制繼續(xù)完成下載任務(wù)而不必從頭再來。也可以看出人們在上網(wǎng)時再也不單是打開瀏覽器來瀏覽網(wǎng)頁,越來越多的人們開始使用下載軟件來獲取資源。多線程是指同時存在幾個執(zhí)行體,按幾條不同的執(zhí)行線索共同工作的情況,它使得編程人員可以很方便地開發(fā)出具有多線程功能、能同時處理多個任務(wù)的功能強大的應(yīng)用程序。此下載程序由下載任務(wù)模塊、設(shè)置模塊以及系統(tǒng)幫助模塊組成。多線程程序設(shè)計可以很好的解決程序并發(fā)的問題。還有些特殊情況下,用戶在下載任務(wù)開始后由于種種原因希望放棄資源的下載,這就要求下載工具具有刪除任務(wù)的功能了。 Java特點 [1]有如下: ? 平臺無關(guān)性 : 平臺無關(guān)性是指 Java 能運行于不同的平臺。類的封裝性、繼承性等有關(guān)對象的特性 , 使程序代碼只需一次編譯,然后通過上述特性反復(fù)利用。 ? 鍵壯性 : Java 致力于檢查程序在編譯和運行時的錯誤 , 類型檢查幫助檢查出許多開發(fā)早期出現(xiàn)的錯誤。最初主要用來 Java語言開發(fā),但是目前亦有人通過插件使其 作為其他計算機語言比如 C++和 Python的開發(fā)工具。多線程編程的含義是將程序任務(wù)分成幾個并行的子任務(wù)。 本系統(tǒng)使用 Eclipse 的 Swing 圖形界面技術(shù)進行開發(fā),以 包進行支持,上述兩個軟件或是開發(fā)包均為免費下載,十分方便。(我們稱)這個應(yīng)答服務(wù)器為源服務(wù)器( origin server)。 HTTP 使用 TCP 而不是 UDP 的原因在于(打開一個)一個網(wǎng)頁必須傳送很多數(shù)據(jù),而 TCP協(xié)議提供傳輸控制,按順序組織數(shù)據(jù),和錯誤糾正。 ? nocache 指示請求或響應(yīng)消息不能緩存 ? nostore用于防止重要的信息被無意的發(fā)布。 Date 描述的時間表示世界標(biāo)準(zhǔn)時,換算成本地時間,需要知道用戶所在的時區(qū)。這些原因都會導(dǎo)致下載的中斷,但是當(dāng)用戶重新下載資源時發(fā)現(xiàn)原來下載的數(shù)據(jù)已經(jīng)消失你還是要回頭再來。建立新下載任務(wù)后便可以對任務(wù)進行暫?;蛘呤抢^續(xù)下載。在 MVC的三個部件中,模型擁有最多的處理任務(wù)。 } public void showDialog() { ()。 (new ActionListener() { public void actionPerformed(ActionEvent e) { (impl)。 GET / HTTP/ Accept: image/gif, image/xxbitmap, image/jpeg, image/pjpeg, application/ excel, application/msword, application/, */* AcceptLanguage: zh AcceptEncoding: gzip, deflate UserAgent: Mozilla/ (patible。 服務(wù)器收到這個請求以后,返回的信息如下: 206 ContentLength=106786028 ContentRange=bytes 1043070106786027/106786028 Date=Mon, 30 Apr 2020 11:45:21 GMT ETag=W/02ca57e173c11:95b ContentType=application/octetstream Server=MicrosoftIIS/ LastModified=Mon, 30 Apr 2020 11:45:21 GMT 和前面服務(wù)器返回的信息比較一下,就會發(fā)現(xiàn)增加了一行: ContentRange=bytes 1043070106786027/106786028 , 返回的 代碼也改為 206了,而不再是 200 了 。 5. 系統(tǒng) 設(shè)計與 實現(xiàn) 多線程任務(wù)下載 設(shè)計 任務(wù) 啟動 線程 設(shè)計 在 這個包中有的 SiteFileFetch 類是啟動任務(wù)線程的類,它實現(xiàn)的功能是獲取文件長度,判斷是否能進行 HTTP 斷點續(xù)傳 ,以及讀寫文件 。 } } else { bFirst = false。 i 。 ()。 } catch (Exception e) { ()。 isHTTP = false。 } } if (!erro) { if (isHTTP) { if (startPoints != null) { fileSplitters = new FileSplitter[]。 public void run() { while (nStartPos nEndPos amp。 byte[] b = new byte[1024]。 bDownOver = true。 String filePath = ()。 任務(wù) 暫停功能 設(shè)計 線程暫停 前面提到過斷點續(xù)傳的含義,他是能從文件中指定的位置開始下載,那么就可以在系統(tǒng)設(shè)置暫停功能 。 !isStop amp。 int nRead = 0。 } } catch (IOException e) { ()。 /** * 在 臨時文件中寫入文件指針 */ private void writeFilePoint() { try { DataOutputStream out = new DataOutputStream(new FileOutputStream( tmpFile))。 } catch (IOException e) { ()。 import 。 = columnArray。 } public Class getColumnClass(int modelIndex) { return columnArray[modelIndex].columnClass。 //停止 所有下載活動 ().setStop(true)。 新建任務(wù)圖 下載中的界面 下載中的界面如 圖 ,點擊暫??梢詴和H蝿?wù)下載 。Reilly. Java Threads, Third Edition ,2020 年 9月 附錄 1 部分核心 源 代碼: 啟動下載任務(wù)線程 類: package 。 private JTable downloadTable。 = ()。 setTable()。 } /** * 獲取文件長度 * * return 文件長度 */ private long getFileLength() { int responseCode = 0。 if (null != contentLength || !()) { fileSize = (contentLength)。 } public SiteFileFetch getSiteFileFetch() { return 。 } public void setSpeedThread(SpeedThread speedThread) { = speedThread。 private MyTableModel model
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1