高效继承文件夹/文件系统中的权限

时间:2012-02-25 07:11:42

标签: java algorithm data-structures filesystems

我正在用Java编写一个虚拟文件系统来完成作业。我设计的权限规则非常简单,只包含三个权限:读取,更改,删除。由于文件系统树已扩展,因此用户可以选择任何级别的任何文件/文件夹。当用户更改文件夹的权限时,此文件夹中的所有文件/文件夹也应继承更改并更新自己的权限。但是当树变得非常深或者例如:在更改了儿子节点的权限之后更改父节点的权限时,更新所有节点可能是低效的,那么看起来可能会产生一些冗余的工作。如何才能使其更新,而不仅仅是更新已更改节点的所有分支?

1 个答案:

答案 0 :(得分:0)

在执行权限更新的成本与计算对象的有效权限的成本之间存在权衡。

例如,您可以通过存储权限和权限时间戳来更快地更新权限。然后,通过查看节点及其所有祖先的权限/时间戳对来计算节点的有效权限 - 具有最新时间戳的那个优先。当然,这意味着计算节点的有效权限会更慢。

(然后,您可以使用目录的权限/时间戳对的内存中LRU缓存更快地进行有效权限计算。)