【云備份】熱點管理模塊

目錄

1.熱點管理文件的基本思路?

2.熱點管理類的設計

3.熱點管理類的實現


?

1.熱點管理文件的基本思路?

服務器端的熱點文件管理是對上傳的非熱點文件進行壓縮存儲,節省磁盤空間。

而熱點文件的判斷在于上傳的文件的最后一次訪問時間是否在熱點判斷時間之內。

實現思路也就是遍歷所有文件,檢測文件最后一次訪問時間,與當前時間進行相減得到差值,這個差值如果大于我們設置好的非熱點判斷時間,則可以認為是非熱點文件,此時需要進行壓縮存放到壓縮路徑中,刪除源文件

事實上,我們這里有兩種選擇:

  1. 從數據管理模塊中遍歷所有備份文件信息
  2. 遍歷備份文件夾,獲取所有文件的屬性,然后進行判斷。

我們選擇第2種,每一次都是獲取文件的最新數據然后進行判斷,并且還可以解決數據信息缺漏的問題,

我們需要對上傳的文件每隔一段時間進行熱點檢測,相當于遍歷上傳文件的存儲文件夾,找出所有的文件,然后通過對逐個文件進行時間差的判斷,來逐個進行熱點處理。

基于這個思想,我們需要將上傳的文件存儲位置與壓縮后壓縮文件的存儲位置分開。

這樣在遍歷上傳文件夾的時候不至于將壓縮過的文件又進行非熱點處理了。

總結之后,我們得出幾個關鍵點與步驟:

  1. 上傳文件有自己的上傳存儲位置,非熱點文件的壓縮存儲有自己的存儲位置;
  2. 遍歷備份目錄,獲取所有文件路徑名稱;
  3. 逐個獲取每個文件最后一次訪問時間,進而完成是否熱點文件的判斷;
  4. 對非熱點文件進行壓縮存儲,刪除原來的未壓縮文件修改數據管理模塊對應的信息——壓縮標志位設置為true

2.熱點管理類的設計

熱點管理類中,只要包含兩個成員函數:

  • HotJudge:用于判斷文件是否為非熱點文件;
  • RunModule:主要的運行函數,完成上述熱點管理的全部步驟。
class HotManager
{
public:HotManager();bool RunModule(); // 主邏輯函數
private:bool HotJudge(const std::string &filename); // 判斷是否為非熱點文件
};

3.熱點管理類的實現

hot.hpp

#ifndef __MY_HOT__
#define __MY_HOT__
#include <unistd.h>
#include "data.hpp"extern cloud::DataManager* _data; // 全局數據管理類對象
namespace cloud
{class HotManager{public:HotManager(){Config* config = Config::GetInstance(); // 獲取配置文件讀取類的單例//我們要保證遍歷的目錄是存在的,不存在就創建一個FileUtil fu1(config->GetBackDir());FileUtil fu2(config->GetPackDir());fu1.CreateDirectory();fu2.CreateDirectory();}bool RunModule(){Config* config = Config::GetInstance(); // 獲取配置文件讀取類的單例while(1){// 1.遍歷備份目錄,獲取所有文件名FileUtil fu(config->GetBackDir());std::vector<std::string> array;fu.ScanDirectory(&array);//遍歷目錄,注意目錄不存在的情況,首先需要先創建目錄,這個構造函數為我們解決了// 2.遍歷判斷文件是否是非熱點文件for(auto &a : array)//a就是每個文件的路徑名稱{if(HotJudge(a) == false)//是熱點文件,不用壓縮continue; //是非熱點文件,需要進行壓縮// 3.獲取文件備份信息BackupInfo info;if(_data->GetOneByRealpath(a, &info) == false){// 現在存在一個文件,但是沒有備份信息info.NewBackupInfo(a);//設計所有信息}// 4.對非熱點文件進行壓縮處理  FileUtil tmp(a);tmp.Compress(info.pack_path);// 5.刪除源文件,修改備份信息tmp.Remove();info.pack_flag = true;_data->Updata(info);//更新}usleep(1000);//避免空目錄循環遍歷,消耗CPU功率過高}return true;}private:bool HotJudge(const std::string &filename){Config* config = Config::GetInstance(); // 獲取配置文件讀取類的單例,獲取hottimeFileUtil fu(filename);//獲取當前文件的LastAcctimetime_t last_atime = fu.LastAcctime();time_t cur_time = time(NULL);if(cur_time - last_atime > config->GetHotTime())//判斷非熱點文件的核心{return true;//是非熱點文件}return false;//是熱點文件}};
}
#endif

cloud.cc

#include "util.hpp"
#include "conf.hpp"
#include "data.hpp"
#include"hot.hpp"cloud::DataManager * _data;
void HotTest()
{_data=new cloud::DataManager();cloud::HotManager hot;hot.RunModule();}
int main(int argc, char *argv[])
{HotTest();return 0;
}

這個時候我們換另外一個機器來看

?

我們發現創建好了backdir和packdir?

我們把bundle.h拷貝到這個backdir里面去,靜靜等待30秒(我們配置文件里面設置的非熱點判斷時間)

也是成功了。很好了

我們去cloud.dat里面看到壓縮記錄了。

?

?


我們git一下

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/904073.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/904073.shtml
英文地址,請注明出處:http://en.pswp.cn/news/904073.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LeetCode 560. 和為 K 的子數組 | 前綴和與哈希表的巧妙應用

文章目錄 方法思路&#xff1a;前綴和 哈希表核心思想關鍵步驟 代碼實現復雜度分析示例解析總結 題目描述 給定一個整數數組 nums 和一個整數 k&#xff0c;請統計并返回該數組中和為 k 的子數組的數量。 子數組是數組中連續的非空元素序列。 示例 輸入&#xff1a;nums …

Windows配置grpc

Windows配置grpc 方法一1. 使用git下載grph下載速度慢可以使用國內鏡像1.1 更新子模塊 2. 使用Cmake進行編譯2.1 GUI編譯2.2 命令行直接編譯 3. 使用Visual Studio 生成解決方法 方法二1. 安裝 vcpkg3.配置vckg的環境變量2. 使用 vcpkg 安裝 gRPC3. 安裝 Protobuf4. 配置 CMake…

【算法基礎】快速排序算法 - JAVA

一、算法基礎 1.1 什么是快速排序 快速排序&#xff08;Quick Sort&#xff09;是一種高效的分治排序算法&#xff0c;由英國計算機科學家Tony Hoare于1960年提出。它的核心思想是&#xff1a; 選擇一個基準元素&#xff08;pivot&#xff09;將數組分成兩部分&#xff1a;小…

Linux用戶管理命令和用戶組管理命令

一、用戶管理命令 1.1、adduser 添加新用戶 1、基本語法 adduser 用戶名 &#xff08;功能描述&#xff1a;添加新用戶&#xff09; 應用場景1&#xff1a;企業開發&#xff0c;多人協同&#xff08;也會有多人使用相同的一個低權限用戶&#xff09;。 應用場景2&#x…

記錄兩個免費開源又好用的后臺模版vue3

一.element-plus-admin 一套基于vue3、element-plus、typesScript、vite的后臺集成方案 1.簡介 vue-element-plus-admin 是一個基于 element-plus 免費開源的中后臺模版。使用了最新的 Vue3&#xff0c;Vite&#xff0c;Typescript等主流技術開發&#xff0c;開箱即用的中后…

Flip PDF Plus Corp7.7.22電子書制作軟件

flip pdf plus corporate7.7.22中文版由FlipBuilder官方出品的一款企業級的翻頁電子書制作軟件&#xff0c;擁有豐富的模板&#xff0c;主題和動畫場景&#xff0c;每本書最大頁數1000頁&#xff0c;每本書的最大大小1GB&#xff0c;即可以幫助企業用戶制作好豐富的電子書籍。 …

C語言藍橋杯真題代碼

以下是不同屆藍橋杯C語言真題代碼示例&#xff0c;供參考&#xff1a; 第十三屆藍橋杯省賽 C語言大學B組 真題&#xff1a;卡片 題目&#xff1a;小藍有很多數字卡片&#xff0c;每張卡片上都是數字1-9。他想拼出1到n的數列&#xff0c;每張卡片只能用一次&#xff0c;求最大的…

[Windows] Kazumi番劇采集v1.6.9:支持自定義規則+在線觀看+彈幕,跨平臺下載

[Windows] Kazumi番劇采集 鏈接&#xff1a;https://pan.xunlei.com/s/VOPLMhEQD7qixvAnoy73NUK9A1?pwdtu6i# Kazumi是一款基于框架; 開發的輕量級番劇采集工具&#xff0c;專為ACG愛好者設計。通過;自定義XPath規則; 實現精準內容抓取&#xff0c;支持多平臺&#xff08;An…

探秘數據結構:構建高效算法的靈魂密碼

摘要 數據結構作為計算機科學的基石&#xff0c;其設計與優化直接影響算法效率、資源利用和系統可靠性。本文系統闡述數據結構的基礎理論、分類及其核心操作&#xff0c;涵蓋數組、鏈表、棧、隊列、樹、圖、哈希表與堆等經典類型。深入探討各結構的應用場景與性能對比&#xf…

機器人--架構及設備

機器人的四大組成部分 控制系統 驅控系統 執行系統 電機屬于執行系統的設備。 傳感系統 傳感系統分為內部傳感系統和外部傳感系統。 內部傳感系統(內部傳感器)&#xff1a; 用于獲取機器人內部信息&#xff0c;比如IMU&#xff0c;力傳感器等。 外部傳感系統(外部傳感器):…

人工智能:如何快速篩選出excel中某列存在跳號的單元格位置?

前提&#xff1a; 電腦上必須提前安裝好了【office AI】軟件工具 方法如下&#xff1a; 1、打開要操作的excel表格&#xff0c;點擊上方的【officeAI】&#xff0c;再點擊左邊的【右側面板】按鈕&#xff0c;就會出現如下右側的【OfficeAI助手】 2、在OfficeAI助手的聊天框…

Spring MVC入門

介紹了Spring MVC框架的概念、特征及核心功能&#xff0c;通過案例詳細介紹了Spring MVC開發所需要的開發環境以及基本的開發步驟。 一、Spring MVC框架概述 Spring MVC是Spring框架的一個模塊&#xff0c;是一個基于Java的實現了MVC設計模式的輕量級Web框架。它通過一套注解和…

貪心算法求解邊界最大數

貪心算法求解邊界最大數&#xff08;拼多多2504、排列問題&#xff09; 多多有兩個僅由正整數構成的數列 s1 和 s2&#xff0c;多多可以對 s1 進行任意次操作&#xff0c;每次操作可以置換 s1 中任意兩個數字的位置。多多想讓數列 s1 構成的數字盡可能大&#xff0c;但是不能比…

Ubuntu ZLMediakit的標準配置文件(rtsp->rtmp->hls)

最近在工作中遇到不生成hls資源的問題,后面發現是配置文件有誤,特此記錄正確的config.ini配置文件,方便查閱。 最終解決方案,通過下面這種格式可以訪問到flv視頻,具體為什么不太清楚,rtmp格式:rtmp://39.113.48.113:8089/live/1744168516937396175 記錄最終解決方案:ht…

# LeetCode 1007 行相等的最少多米諾旋轉

LeetCode 1007 行相等的最少多米諾旋轉 原題英文&#xff1a;Minimum Domino Rotations For Equal Row 難度&#xff1a;中等 | 標簽&#xff1a;數組、貪心 1?題目重述 給定兩行長度相同的多米諾骨牌&#xff1a; tops[i] 表示第?i?張骨牌上面的數字&#xff1b;bottoms[…

大數據技術:從趨勢到變革的全景探索

??個人主頁??:一ge科研小菜雞-CSDN博客 ????期待您的關注 ???? 在數字化時代的浪潮下,大數據已經不再是一個陌生的概念。從日常生活中的社交媒體,到企業決策支持系統,再到公共管理的大數據應用,它正在改變著我們的工作和生活方式。隨著技術的進步,傳統的數據…

前端八股Day5——XHS某中廠實習前端一面

沒寫完&#xff0c;睡醒補 CSS盒模型 //出現頻率好高&#xff0c;感覺每次寫面經都遇到 W3C標準盒模型(content-box)&#xff1a;盒子寬高width/heightpaddingbordermargin IE怪異盒模型(border-box)&#xff1a;盒子寬高width/heigth(包括padding和border)margin 默認標準切換…

INP指標

什么是INP&#xff08;Interaction to Next Paint&#xff09; 參考網站&#xff1a;webVital-INP文檔 定義與核心目標 INP 是一項穩定的 Core Web Vitals 指標&#xff0c;通過統計用戶訪問期間所有符合條件的互動約定時間&#xff0c;評估網頁對用戶操作的總體響應能力。最…

剖析擴散模型(Denoising Diffusion Probabilistic Models)

文章目錄 1. 前言2. 前向擴散過程(Forward Diffusion)3. 反向生成過程&#xff08;Reverse Process&#xff09;4. 訓練和推理過程中的偽代碼5. 訓練過程代碼實現&#xff08;Training&#xff09;5.1 時間嵌入模塊——TimeEmbedding5.2 前向擴散過程——GaussianDiffusionTrai…

基于 Spring Boot 瑞吉外賣系統開發(九)

基于 Spring Boot 瑞吉外賣系統開發&#xff08;九&#xff09; 保存菜品 菜品管理頁面提供了一個“新增菜品”按鈕&#xff0c;單擊該按鈕時&#xff0c;會打開新增菜品頁面。 請求路徑/dish&#xff0c;請求方法POST&#xff0c;參數使用DishDto類接收。 DishDto 添加f…