Architecture 快照文件系统的体系结构解决方案

Architecture 快照文件系统的体系结构解决方案,architecture,Architecture,请帮我想一个问题。我有一个用C++/Qt编写的应用程序(我们称之为X),它应该存储并定期更新用户系统上安装的所有应用程序的信息。在Linux上,根据FreeDesktop.org建议解析所有.desktop文件需要花费太多时间–在我的计算机上大约需要2-3秒。因此,我决定使用缓存来处理文件 缓存应该如何工作: (注意,应用程序文件是一个包含用户系统上安装的应用程序信息的文件。例如,在Linux上,它可能是.desktop文件,在Windows上可能是.lnk文件等。) 首先,当应用程序文件位于用

请帮我想一个问题。我有一个用C++/Qt编写的应用程序(我们称之为
X
),它应该存储并定期更新用户系统上安装的所有应用程序的信息。在Linux上,根据
FreeDesktop.org
建议解析所有
.desktop
文件需要花费太多时间–在我的计算机上大约需要2-3秒。因此,我决定使用缓存来处理文件

缓存应该如何工作:

(注意,应用程序文件是一个包含用户系统上安装的应用程序信息的文件。例如,在Linux上,它可能是
.desktop
文件,在Windows上可能是
.lnk
文件等。)

  • 首先,当应用程序文件位于用户系统上时,我们有一个目录列表(例如,在Linux上,该列表包括
    /usr/share/application
    目录)
  • X
    启动时,它将遍历该列表中的所有文件夹,并创建所有文件的“快照”。快照应该是包含文件完整路径和上次修改时间的记录列表。然后,
    X
    解析快照中的所有文件,并将必要的信息保存在,
    appsInformation
    列表中
  • 经过一定时间后,
    X
    将在该文件夹中创建文件的新快照。然后,它将新快照与旧快照进行比较,并创建三个更改列表:
    added
    list,其中包含新快照中存在但旧快照中不存在的所有应用程序文件<代码>已修改的列表,其中包含所有应用程序文件的更改时间
    上次修改时间;和
    deleted
    列表,其中包含旧快照中存在但新快照中不存在的所有应用程序文件。之后,它解析
    added
    列表中新文件的信息,并将其推回到
    appsInformation
    列表,根据
    modified
    列表更改
    appsInformation
    列表中已有的记录,并删除
    appsInformation
    列表中与
    deleted
    列表中的文件匹配的现有记录
  • 因此,我需要两个文件系统快照,其中一个以某种方式连接到
    appsInformation
    list


    我的问题是:我应该使用什么方法和工具来最好地构建所有这些体系结构?因此,使用快照应该比解析所有文件至少快两倍。我考虑过一些想法,但它们真的很难看,很难发布。我应该使用两个
    QList
    s对象,每个对象都包含一个文件信息和一个指向
    appsInformation
    记录的指针吗?还是有更好的主意?谢谢你的帮助。

    我一开始不会使用投票。相反,我会使用一些基于回调的文件系统监控库。Windows和Linux都已具备此功能,请参见以下问题的答案:

    使用这些库安装的回调通常不仅会被告知更改了哪个文件,还会被告知有关更改的一些详细信息;i、 e.添加、删除或更改了文件。因此,根据“更改类型”,您可以在
    appsInformationList
    中添加/删除/修改元素