• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Java 的網(wǎng)盤系統(tǒng)的設(shè)計與實現(xiàn)

      2022-11-17 00:22:35孫詩軍段元梅
      無線互聯(lián)科技 2022年1期
      關(guān)鍵詞:網(wǎng)盤分片前臺

      孫詩軍,段元梅

      (湖南科技學(xué)院 信息工程學(xué)院,湖南 永州 425199)

      0 引言

      隨著當(dāng)今計算機技術(shù)與互聯(lián)網(wǎng)技術(shù)的高速發(fā)展,現(xiàn)代社會正以不可想象的速度產(chǎn)生各種各樣的數(shù)據(jù),根據(jù)IDC 預(yù)測,全球數(shù)據(jù)量將由2016 年的16.1ZB 增長至2025 年的163.0ZB。在這種情況下,云端存儲逐漸地體現(xiàn)出了其優(yōu)越性。云盤的數(shù)據(jù)是存放在云端的服務(wù)器上的,用戶要使用到云盤的數(shù)據(jù)服務(wù)就必須以互聯(lián)網(wǎng)為入口,訪問互聯(lián)網(wǎng)的最簡單的方式就是通過Web 瀏覽器。B/S 架構(gòu)的主要特點是分布性強,維護(hù)、開發(fā)方便,本文所做的網(wǎng)盤系統(tǒng)就是基于B/S 架構(gòu),以實現(xiàn)一款實用、可靠、可擴展的輕量級網(wǎng)盤為目標(biāo)[1]。

      1 網(wǎng)盤的設(shè)計與實現(xiàn)

      1.1 需求分析

      用戶模塊主要是對自己的賬號擁有注冊、登錄、修改密碼的功能,新用戶的密碼要加密存儲在后臺。在用戶注冊完成時網(wǎng)盤系統(tǒng)要為新的用戶分配兩塊權(quán)限不同的文件空間,加以私有/公開的權(quán)限控制,私有空間中的文件和目錄只有自己能查看修改,公有空間中的文件和目錄可以分享給他人查看并下載。用戶的賬號要有存儲空間的限制,不能無限制地向網(wǎng)盤上傳文件[2]。

      在文件模塊,最重要的功能是上傳文件。要保證用戶的使用體驗,就要具備上傳速度快的特性,上傳中的文件需要有暫停的功能,并且由于網(wǎng)絡(luò)的不穩(wěn)定性,很有可能發(fā)生文件上傳到一半就失敗的情況,因此要能夠支持?jǐn)帱c續(xù)傳功能。對于硬件設(shè)備來說,重復(fù)的文件會降低空間利用率,上傳的文件必須能夠去重,相同的文件保證在服務(wù)器端只存儲一份[3]。

      目錄模塊,是用戶對于自己網(wǎng)盤中的文件以及目錄,需要有創(chuàng)建、刪除、移動、重命名功能。用戶訪問目錄要能像在電腦上訪問文件夾一樣,頁面以列表的方式顯示出目錄下的子目錄、文件,能對列表中的目錄和文件進(jìn)行操作,還要有一條能夠進(jìn)行目錄導(dǎo)航的路徑,點擊路徑上的目錄進(jìn)行目錄跳轉(zhuǎn)[4]。

      1.2 用戶模塊的實現(xiàn)

      1.2.1 注冊

      前臺需要傳入用戶名、密碼、郵箱字段。初始化用戶的屬性,為用戶分配初始的私有空間根目錄和公有空間根目錄。設(shè)置密碼方面,為了保證用戶的密碼以密文形式存儲,需要進(jìn)行加鹽加密,使用當(dāng)前時間戳作為鹽值,為用戶的密碼進(jìn)行加密。如果前臺傳入的用戶名或郵箱在數(shù)據(jù)庫中有重復(fù),前臺需要有相應(yīng)的提示。注冊成功后,頁面跳轉(zhuǎn)到登錄頁面。

      1.2.2 登錄

      前臺需要傳入用戶名、密碼字段。后臺需要進(jìn)行兩次校驗,分別是校驗用戶的賬號是否存在,賬號密碼是否匹配。驗證密碼時,需要從數(shù)據(jù)庫中取出該用戶注冊時使用的鹽值,對前臺傳進(jìn)來的明文密碼進(jìn)行加密,然后再與數(shù)據(jù)庫中的密文比對。登錄失敗時,前臺要有相應(yīng)的提示,登錄成功后,頁面跳轉(zhuǎn)道網(wǎng)站的首頁。

      1.3 目錄模塊的實現(xiàn)

      1.3.1 訪問目錄

      前臺需要傳入一個目錄的ID,后臺需要返回給前臺當(dāng)前目錄的路徑信息,以及當(dāng)前目錄下的所有文件和目錄。后臺拿到前臺傳過來的目錄ID 后,去數(shù)據(jù)庫中的DIR 表找到該ID 對應(yīng)的記錄,如果找不到需要報錯。如果能找到,使用pDirId 字段遞歸查找到根目錄,得到該目錄的路徑。在DIR 表和USER_FILE 表中使用目錄id 以及當(dāng)前用戶ID 找出當(dāng)前目錄下所有目錄和文件。

      1.3.2 創(chuàng)建目錄

      前臺需要傳入當(dāng)前目錄的ID,新目錄的目錄名,在當(dāng)前目錄下創(chuàng)建一個新的目錄。后臺首先對目錄名進(jìn)行格式校驗,如果有非法字符則創(chuàng)建失敗并返回錯誤信息給前臺。若目錄名沒有問題,將當(dāng)前目錄的ID 作為新目錄的pDirId,記錄創(chuàng)建用戶的ID,存入數(shù)據(jù)庫。新目錄的權(quán)限跟隨父目錄及當(dāng)前目錄的權(quán)限。

      1.3.3 目錄重命名

      目錄重命名功能在點擊重命名按鈕后,打開Bootstrap 提供的Modal 窗口,綁定目錄ID 參數(shù)為一個表單參數(shù),輸入新的目錄名后,點擊確認(rèn)按鈕,提交目錄ID 和新目錄名到后臺。與創(chuàng)建目錄一樣,后臺對新的目錄名也進(jìn)行格式校驗。校驗通過后,拿到目錄的ID,找到數(shù)據(jù)庫中對應(yīng)的記錄,更改DIR_NAME 字段即可。

      1.3.4 刪除目錄

      因為此操作不可恢復(fù),刪除目錄后會連帶目錄下的所有文件一起刪除,因此在調(diào)用后臺接口前,需要彈出二次確認(rèn)的提示。調(diào)用接口后,前臺向后臺傳入刪除的目錄的ID。后臺要在DIR 表中遞歸刪除該目錄下所有的子目錄,并且在刪除子目錄的過程中要刪除掉USER_FILE 表中子目錄下的文件。后臺執(zhí)行完后,前臺跳轉(zhuǎn)到之前所在目錄。刪除的文件,只在數(shù)據(jù)庫里取消與用戶的關(guān)聯(lián),并不在硬盤上將文件真的刪掉。通過每周一次的輪詢,將硬盤上與用戶關(guān)聯(lián)數(shù)為零的文件刪除。

      1.4 文件模塊的實現(xiàn)

      1.4.1 上傳文件

      這個功能是本項目中需要研究的一個重點。首先將上傳文件的關(guān)鍵點和可能遇到的一些問題列出來:如何提高上傳的速度,怎樣判斷上傳的文件數(shù)據(jù)中心是否已存在,傳輸?shù)揭话刖W(wǎng)絡(luò)異常要如何解決。第一,解決提高文件上傳的速度問題。文件的上傳分為兩個步驟,第一個階段是在前端對文件進(jìn)行MD5 序列化,獲取文件的MD5 值,這個在后面的文件判重時需要用到。第二個階段是將文件上傳至服務(wù)器。對于文件上傳速度的優(yōu)化,就可以從這兩個階段入手。

      對于第一個階段,對數(shù)據(jù)量不大的小文件進(jìn)行MD5計算是比較快的,通常在幾秒內(nèi)就能完成,但對于100 MB 以上的文件,計算其MD5 值就很慢了。通過測試一個300 MB 的文件,發(fā)現(xiàn)對其進(jìn)行MD5 加密的總用時超過了2 分鐘,如果文件再大一些,用時還會更長。

      對于第二階段來說,要優(yōu)化上傳的速度,可以采取提高上傳并發(fā)量這一策略,這一策略主要可以加快大文件的上傳速度。在前端使用JavaScript 腳本,對即將上傳的文件進(jìn)行分片,上傳的過程中可以通過并發(fā)的方式,同時上傳多個分片,并且每個分片都要加上當(dāng)前是第幾塊分片這一參數(shù),服務(wù)器在接收到這些分片后,對其進(jìn)行組裝,還原成上傳的文件。

      1.4.2 刪除文件

      前端向后臺傳遞一個文件ID 參數(shù),后臺在USER_FILE 表中對對應(yīng)的記錄進(jìn)行刪除,同時更新USER 表中的SIZE_USED 字段。因為同一個FILE 可能被多個用戶所引用,因此通過一個每周一次的輪詢,檢查FILE表中如果有的記錄被USER_FILE 表引用的次數(shù)為0,就刪除這條記錄,并且刪除對應(yīng)的存儲文件,釋放空間。

      2 測試

      通過對每個功能模塊、前端的顯示、邊界數(shù)據(jù)的檢測、數(shù)據(jù)庫的數(shù)據(jù)正確性進(jìn)行測試,測試結(jié)果表明該項目所完成的功能均能正常運行。

      3 結(jié)語

      本文完成了基于Java 的網(wǎng)盤系統(tǒng)設(shè)的設(shè)計與實現(xiàn)。針對上傳這一功能不夠完善的缺點,設(shè)計了一個方便實用的網(wǎng)盤系統(tǒng)。該網(wǎng)盤前端使用Bootstrap、WebUploader 兩款插件,通過Bootstrap 的柵格系統(tǒng)、內(nèi)置樣式進(jìn)行頁面的布局以及美化,通過WebUploader 配置了文件分片上傳,完成文件上傳的暫停、續(xù)傳、秒傳功能在前端的實現(xiàn)。后臺使用SpringBoot 進(jìn)行快速搭建,以Mysql 作為數(shù)據(jù)庫,通過Mybatis 框架將Java 中的實體類與數(shù)據(jù)庫的表進(jìn)行映射,最終實現(xiàn)了所設(shè)計的網(wǎng)盤系統(tǒng)。

      猜你喜歡
      網(wǎng)盤分片前臺
      上下分片與詞的時空佈局
      詞學(xué)(2022年1期)2022-10-27 08:06:12
      分片光滑邊值問題的再生核方法
      CDN存量MP4視頻播放優(yōu)化方法
      基于模糊二分查找的幀分片算法設(shè)計與實現(xiàn)
      公路電助力 從幕后走向前臺
      中國自行車(2018年6期)2018-07-23 03:17:24
      孟晚舟:從前臺打雜到華為副總裁
      海峽姐妹(2018年6期)2018-06-26 07:27:15
      前臺、后臺精彩花絮停不了
      網(wǎng)站前臺設(shè)計分包合同中應(yīng)注意的問題
      網(wǎng)盤資源集中管理
      電腦迷(2014年8期)2014-04-29 08:53:03
      網(wǎng)盤如何知道你在分享侵權(quán)文件
      桂阳县| 辽宁省| 大安市| 武城县| 濮阳县| 翁源县| 甘泉县| 敦化市| 竹溪县| 广州市| 鄂伦春自治旗| 龙川县| 屯留县| 靖安县| 泸溪县| 务川| 南部县| 林周县| 洛川县| 迭部县| 琼结县| 布尔津县| 襄垣县| 马尔康县| 聂荣县| 连城县| 山阳县| 隆子县| 崇州市| 平山县| 察隅县| 旬邑县| 建始县| 桓台县| 微博| 黑水县| 泰安市| 绥滨县| 宜宾市| 象山县| 凌云县|