gpt4 book ai didi

c++ - 缓存对象应该直接从文件系统读取吗?

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:16 25 4
gpt4 key购买 nike

我正在构建一个实现 tftp 协议(protocol)的服务器。我的作业要求创建最近请求文件的缓存。我想了解的是关于设计的,看例子:

服务器请求文件到缓存缓存没有文件缓存从文件系统读取文件缓存将文件提供给服务器

缓存应该从文件系统读取还是服务器应该从缓存读取,如果文件丢失,从文件系统读取并放入缓存?

最佳答案

从复杂性的角度来看,我肯定会建议缓存从文件系统读取文件。这样您的实现将更加清晰。

深入挖掘:您正在触及 single responsibility principle .理想情况下,您希望系统的组件只做一件事,并且把它做好。您要避免的是 God object这会做所有事情,因为这会阻止您的代码可扩展和可重用。现在让我们看看您提供的两个选项:


选项 1:服务器读取文件系统并保存到缓存。

在这种情况下,服务器是宇宙的中心。缓存只不过是服务器的内存池,没有服务器,它就没有什么用处。服务器必须了解文件系统和缓存的所有信息,增强系统需要更改服务器。

仅此描述就可以清楚地说明为什么它违反了单一职责原则。对系统任何组件的任何更改都需要对服务器进行更改——这很糟糕。


选项 2:缓存读取文件系统。

在此选项中,缓存充当服务器和文件系统之间的完整抽象。服务器不需要知道缓存是如何工作的。就此而言,甚至可以有多个级别的缓存!不管它如何工作,服务器都不必关心。服务器将缓存用于一个用途,即检索文件。

split 也是双向的。缓存不需要知道如何它是如何被使用的,而只是知道它的存在是为了更快地访问文件系统。这允许它在以后用更好的东西切换(如果您决定这样做),并且还可以在您创建的其他项目中重复使用它。

如果您选择选项 2,您的代码将变得更加简单和清晰。

关于c++ - 缓存对象应该直接从文件系统读取吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7098737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com