国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

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

孫詩軍,段元梅

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

0 引言

隨著當(dāng)今計(jì)算機(jī)技術(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)的主要特點(diǎn)是分布性強(qiáng),維護(hù)、開發(fā)方便,本文所做的網(wǎng)盤系統(tǒng)就是基于B/S 架構(gòu),以實(shí)現(xiàn)一款實(shí)用、可靠、可擴(kuò)展的輕量級網(wǎng)盤為目標(biāo)[1]。

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

1.1 需求分析

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

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

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

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

1.2.1 注冊

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

1.2.2 登錄

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

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

1.3.1 訪問目錄

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

1.3.2 創(chuàng)建目錄

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

1.3.3 目錄重命名

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

1.3.4 刪除目錄

因?yàn)榇瞬僮鞑豢苫謴?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 文件模塊的實(shí)現(xiàn)

1.4.1 上傳文件

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

對于第一個階段,對數(shù)據(jù)量不大的小文件進(jìn)行MD5計(jì)算是比較快的,通常在幾秒內(nèi)就能完成,但對于100 MB 以上的文件,計(jì)算其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 字段。因?yàn)橥粋€FILE 可能被多個用戶所引用,因此通過一個每周一次的輪詢,檢查FILE表中如果有的記錄被USER_FILE 表引用的次數(shù)為0,就刪除這條記錄,并且刪除對應(yīng)的存儲文件,釋放空間。

2 測試

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

3 結(jié)語

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

猜你喜歡
網(wǎng)盤分片前臺
上下分片與詞的時空佈局
詞學(xué)(2022年1期)2022-10-27 08:06:12
分片光滑邊值問題的再生核方法
CDN存量MP4視頻播放優(yōu)化方法
基于模糊二分查找的幀分片算法設(shè)計(jì)與實(shí)現(xiàn)
公路電助力 從幕后走向前臺
中國自行車(2018年6期)2018-07-23 03:17:24
孟晚舟:從前臺打雜到華為副總裁
海峽姐妹(2018年6期)2018-06-26 07:27:15
前臺、后臺精彩花絮停不了
網(wǎng)站前臺設(shè)計(jì)分包合同中應(yīng)注意的問題
網(wǎng)盤資源集中管理
電腦迷(2014年8期)2014-04-29 08:53:03
網(wǎng)盤如何知道你在分享侵權(quán)文件
易门县| 修文县| 孟津县| 靖宇县| 永年县| 和平区| 桂东县| 晋中市| 无棣县| 双鸭山市| 顺义区| 南陵县| 定边县| 辛集市| 商都县| 武平县| 金寨县| 确山县| 兰溪市| 新野县| 德惠市| 黑龙江省| 上蔡县| 大庆市| 萨嘎县| 绵竹市| 鄂托克前旗| 莒南县| 松阳县| 丘北县| 巴彦县| 三穗县| 乐亭县| 邳州市| 清远市| 红原县| 丰宁| 商城县| 马龙县| 新田县| 民县|