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

正文內(nèi)容

java論文java多線程與線程安全實踐-基于http協(xié)議的斷點續(xù)傳(編輯修改稿)

2024-12-22 17:12 本頁面
 

【文章內(nèi)容簡介】 icrosoftIIS/ LastModified=Mon, 30 Apr 2020 12:56:11 GMT 所謂斷點續(xù)傳,也就是要從文件已經(jīng)下載的地方開始繼續(xù)下載。所以在客戶端瀏覽器傳給 Web 服務器的時候要多加一條信息 從哪里開始。 下面是用自己編的一 個 瀏覽器 來傳遞請求信息給 Web 服務器,要求從2020200 字節(jié)開始。 GET / HTTP/ UserAgent: NetFox RANGE: bytes=2020200 Accept: text/html, image/gif, image/jpeg, *。 q=.2, */*。 q=.2 仔細看一下就會發(fā)現(xiàn)多了一行 RANGE: bytes=2020200, 這一行的意思就是告訴服務器 這個文件從 2020200 字節(jié)開始傳,前面的字節(jié)不用傳了 。服務器收到這 個請求以后,返回的信息如下: 206 ContentLength=106786028 ContentRange=bytes 2020200106786027/106786028 Date=Mon, 30 Apr 2020 12:55:20 GMT ETag=W/02ca57e173c11:95b ContentType=application/octetstream Server=MicrosoftIIS/ LastModified=Mon, 30 Apr 2020 12:55:20 GMT 和前面服務器返回的信息比較一下,就會發(fā)現(xiàn)增加了一行 : ContentRange=bytes 2020200106786027/106786028 返回的代碼也改為 206 了,而不再是 200 了。 知道了以上原理,就可以進行斷點續(xù)傳的編程了。 3 需求分析 分析 第 6 頁 共 25 頁 隨著 Inter 的發(fā)展,進入信息時代后 快速獲得網(wǎng)絡共享資源成為很簡單的事情,人們對 互聯(lián)網(wǎng) 也有了很大的依賴性。人們甚至希望只輕松點擊鼠標就可以得到自己想要的東西。比如, 針對一些專業(yè)的論壇提供了很多 相關(guān)資料以方便人們閱讀或了解;還有更多的人希望能過下載到他們喜歡聽得音樂、好看的圖片、喜歡的電影等等。 也可以看出人們在上網(wǎng)時再也不單是打開瀏覽器來瀏覽網(wǎng)頁,越來越多的人們開始使用下載軟件來獲取資源。同時人們也更希望使用更新更快的下載軟件。 由于用戶下載需求的增大,也要求下載軟件能夠迅速完成對資源的下載。多線程程序設(shè)計可以很好的解決程序并發(fā)的問題。最恰當?shù)谋扔骶褪?用戶 會感到CPU 似乎同時出現(xiàn)在兩個地方,在下載軟件中應用多線程技術(shù)可以理解為將一個下載任務分成若干份來完成,其中的并發(fā)控制將使下載的效率大大提高。 由于下載資源是一個過程,當中用到的時間可能會很長。那么在很長的這段時間中很有可能會出現(xiàn)很多的意外情況使下載中斷或是停止,比如電源意外被切斷、網(wǎng)絡中斷、或是操作系統(tǒng)故障導致系統(tǒng)重新啟動。這些原因都會導致下載的中斷,但是當 用戶 重新下載資源時發(fā)現(xiàn)原來下載的數(shù)據(jù)已經(jīng)消失你還是要回頭再來。斷點續(xù)傳就是用來解決這樣的問題的,它的任務是在下載任務停止時,記錄當前下載的信息并且利用網(wǎng)絡協(xié)議中的一些重定向機制繼續(xù)完成下載任務而不必從頭再來。 隨著使用下載工具的時間的增長,用戶下載的資源越來越多,因此在下載列表中的項目也越來越 多,越來越混亂,因此為了便于管理和用戶使用方便,用戶迫切希望下載工具具有下載文件分類的功能。 在下載任務的管理這一塊,用戶不僅希望下載工具具有下載一個一個資源的功能,而且具有批量下載有些相似的或有關(guān)聯(lián)的資源的功能 。還有些特殊情況下,用戶在下載任務開始后由于種種原因希望放棄資源的下載,這就要求下載工具具有刪除任務的功能了。 為了對下載任務進行掌控,用戶往往具有設(shè)置下載任務的線程數(shù),文件下載網(wǎng)址,文件下載存儲目錄和在下載過程中對下載任務的狀態(tài)進行監(jiān)控等功能需求。 鑒于某些軟件使用初學者甚至某些電腦初學者的實際情 況,他們 往往需要系統(tǒng)有一個格外的幫助文檔,使他們能夠更快、更好地學會使用斷點續(xù)傳下載軟件,提高效率。 業(yè)務流分析 多線程斷點續(xù)傳的 業(yè)務流程: 首先由用戶進入軟件系統(tǒng),在新建任務中填寫必要的下載資源的相關(guān)屬性,比如相關(guān)資源下載地址 URL、存儲路徑、以及下 第 7 頁 共 25 頁 載線程數(shù)等。由軟件發(fā)送 HTTP 消息請求,然后服務器根據(jù)請求返回響應消息。確認無誤就可以啟動線程開始下載資源。將緩存中存儲的數(shù)據(jù)最終存儲到目的存儲路徑。 此外, 系統(tǒng) 為 用戶提供了一些對任務的基本操作,比如,停止、繼續(xù)、刪除等。 4. 系統(tǒng)設(shè)計 系統(tǒng)設(shè)計 要點 隨著用戶下載需求的增大,用戶下載的資源越來越大,下載的過程也就越來越久,這就要求下載軟件能夠迅速完成對資源的下載,為了提高下載效率的問題,所以本系統(tǒng)采用多線程的方式來實現(xiàn)下載速率的提高。 多線程的優(yōu)點之一是所有線程都可以訪問相同的全局變量和共享資源,它提供了程序設(shè)計的簡捷性與便利性,提高了對信息處理的并發(fā)度,但也帶來了數(shù)據(jù)的訛誤或線程得不到某一資源而被餓死(即死鎖)的可能性。為了避免這些現(xiàn)象的產(chǎn)生,線程在使用共享資源或?qū)ο笄氨仨毇@得一個約束訪問同步對象的權(quán)力,也就是通過同步的機制來控制這種權(quán)力的使用,這 就是線程的安全問題。 Http 協(xié)議是互聯(lián)網(wǎng)中一個非常重要而且應用十分頻繁的協(xié)議,所以本系統(tǒng)的設(shè)計是基于 Http 協(xié)議的。 長期以來,斷點續(xù)傳始終是困擾網(wǎng)蟲們的一大難題,眼看著已經(jīng)下載到 99%的軟件,卻由于突然掉線而前功盡棄的那種沮喪 恐怕人人都經(jīng)歷過,于是本系統(tǒng)采用斷點續(xù)傳的方式來設(shè)計。 本系統(tǒng)設(shè)計的基本目標就是利用編寫一個時下流行的基于 Http 協(xié)議的 多線程 斷點續(xù)傳的程序 來研究 Java 多線程與線程安全的機制。 系統(tǒng)總體功能結(jié)構(gòu) 通過對多線程斷點續(xù)傳下載軟件的需求分析并結(jié)合實際情況的分析,本系統(tǒng)由下載分類管 理、任務管理、設(shè)置管理、系統(tǒng)幫助四個主模塊構(gòu)成。本系統(tǒng)的功能結(jié)構(gòu)圖如圖示: 其中下載文件的分類模塊主要是通過在新建下載任務時候設(shè)置下載文件的存儲目錄甚至新建一個存儲目錄的方式來實現(xiàn)。 下載任務的管理模塊主要有三個子模塊組成:新建下載任務模塊、批量完成下載任務模塊、刪除任務模塊。 在設(shè)置任務的管理模塊主要有兩個子模塊組成:在新建(批量)下載任務 的時候進行任務的連接方面的配置模塊以及在現(xiàn)在過程中對下載任務的狀態(tài)進行監(jiān)視的模塊。 在系統(tǒng)幫助模塊里主要是包含一些對整個系統(tǒng)的說明,便于用戶理解。 另外系統(tǒng)還支持將資源 下載 URL 地址自動添加到剪貼板中,這樣用戶只需 第 8 頁 共 25 頁 要點擊地址即可開始下載,而不是需要手動粘貼、復制 URL 地址到指定位置。 圖 1 下載 程序 功能結(jié)構(gòu)圖 本下載 程序 提供兩種操作模式:一種是使用命令行參數(shù)對下載軟件進行操作;另一種方式是通過圖形界面對下載軟件進行操作。在此對圖形界面的實現(xiàn)進行詳細介紹。 下載 程序 的主界面設(shè)計使用 Eclipse 開發(fā)主要分成四部分:第一部分是菜單欄,提供功能選項;第二部分是標準按鈕欄;第三部分是信息列表框,其中包括下載軟 件的名稱、大小、下載進度、下載速度、剩余時間等下載任務的屬性;最后一部分是一個文本框用來監(jiān)視下載文件時返回的信息,包括下載文件的 URL地址、下載文件的長度、以及完成任務的所有線程數(shù)和每個線程完成的塊大小。在下載過程中上邊提到的相關(guān)信息都會顯示在列表框和文本框中,用戶可以方便地監(jiān)視到下載文件的狀況。 菜單欄的設(shè)計使用了 包的 action 類, JFace 中引用了action 的概念主要用完成用戶動作的代碼復用。在這里每一個 action 都可以用來響應一個用戶的動作,比如打 印文件、打開文檔或是顯示對話框。 程序 的主界面菜 單欄的設(shè)計就是對 action 的復用。首先創(chuàng)建用戶動作,包括下載 工具 功能 模塊 下 載 文 件 分類 下 載 任 務 設(shè) 置 任 務 系 統(tǒng) 幫 助 新 建 下 載 任務 批量 完成 下載 任務 刪 除 任 務 連 接 配 置 監(jiān) 視 配 置 監(jiān) 視 下 載 信息 自動 添加 剪貼 板功 能 第 9 頁 共 25 頁 新建下載任務動作( newTaskAction)、新建批量下載任務動作( batchTaskAction)、刪除任務動作( deleteTaskAction)、幫助動作( aboutAction)和退出動作( exitAction),這些都是 action。在主界面 GUI 中代碼設(shè)計如下。 添加用戶動作。 添加新建下載任務動作: public class NewTaskAction extends Action { public NewTaskAction() { super(新建任務 @Ctrl+N, (,icons/ ))。 setToolTipText(新建任務 )。 } } 添加新建批量下載任務動作: public class BatchTaskAction extends Action { public BatchTaskAction() { super(新建批量任務 @Ctrl+B,(, icons/ ))。 setToolTipText(新建批量任務 )。 } } 添加刪除任務動作: public class DeleteTaskAction extends Action { public DeleteTaskAction() { super(刪除下載任務 @Delete, (, icons/ ))。 setToolTipText(刪除下載任務 )。 } } 添加退出動作: public class ExitAction extends Action { public ExitAction() { super(退出 @Alt+F4)。 setToolTipText(退出 )。 } } ? 在界面菜單中創(chuàng)造用戶動作的實例,并將這些實例添加到菜單欄的菜單 第 10 頁 共 25 頁 項當中。 public class GUIDownloader extends ApplicationWindow { public static GUIDownloader APP。 newTaskAction = new NewTaskAction()。 batchTaskAction = new BatchTaskAction()。 exitAction = new ExitAction()。 aboutAction = new AboutAction()。 deleteTaskAction = new DeleteTaskAction()。 protected MenuManager createMenuManager() { MenuManager menuManager = new MenuManager()。 MenuManager fileMenu = new MenuManager(文件 (amp。F))。 (fileMenu)。 (newTaskAction)。 (batchTaskAction)。 (deleteTaskAction)。 (new Separator())。 (exitAction)。 }
點擊復制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1