記錄《java網盤》中清理檔案

2021-09-24 19:07:47 字數 990 閱讀 7427

執行環境 centos7 1g記憶體 40g硬碟(某某雲伺服器,學生價9.5乙個月)

資料表結構

硬碟中檔案存放方式是:

以月為單位建立目錄,同乙個月的檔案放在同乙個目錄中。

檔名格式為:時間戳+源檔名

如:e:\development\upload\20196\1561637254739img.jpeg

資料庫的file表存有檔案的真實路徑,user_file表則是使用者表user與file表多對多的乙個關聯表,user_file表中的 link_id 欄位是乙個與 file 表關聯的外來鍵,當使用者刪除自己儲存的檔案時只是刪除user_file表的記錄,並不會直接刪除file表中的記錄,因為file可能還有其他使用者關聯。

當全部使用者都沒有關聯該file記錄時,該file記錄就應該被刪除,對應的檔案也就應該被刪除。

由於檔案檔案量比較大,資料庫記錄資訊也比較多,所以需要在乙個特定的時間去**,使用spring的task元件,設定乙個定時執行任務,設定在每天的凌晨3點進行檔案**

方式1,單次查詢所有:

**步驟:

這樣子雖然能成功的**檔案,但是在小資料量時沒有問題,在資料量大時就會出現記憶體消耗過大的問題。在一百萬條資料時,wpfilelist集合需要 163 m 記憶體,linkidlist需要 27m記憶體,當三百萬條資料伺服器就吃不消了,方法不可行。

方式2,分批次查詢+臨時檔案儲存:

既然一次過把所有檔案都存入list中會造成記憶體消耗過大問題,那麼能不能分批次進行查詢,每一次只查詢一部分(我暫時一次查100000條),這樣wpfilelist集合只需要 16 m左右的記憶體,linkidlist則只需要 2.7m左右記憶體,這樣即使是資料庫中有一千萬或上億條資料,也沒關係,只要查詢次數增加即可,不會出現瞬間記憶體**的風險。

步驟:

清理c盤下的檔案

電腦c盤滿了怎麼清理 1.開啟 我的電腦 工具 資料夾選項 檢視 在 顯示所有檔案和資料夾 選項前打勾 再按 確定 2.刪除以下資料夾中的內容 c documents and settings 使用者名稱 cookies 下的所有檔案 保留index檔案 c documents and settin...

清理C盤臨時檔案指令碼

echo off echo 正在清除系統垃圾檔案,請稍等.del f s q systemdrive tmp del f s q systemdrive mp del f s q systemdrive log del f s q systemdrive gid del f s q systemdr...

c u盤使用記錄 C 如何讀取U盤中的檔案啊

找到了 當把u盤放插入,然後程式自動將u盤的內容複製到本地硬碟 using system using system.collections.generic using using system.data using system.drawing using system.text using sys...