23

我在工作中的一些源代码和一些其他代码中看到了一些名为“脏”的变量。这是什么意思?什么是脏标志?

4

4 回答 4

37

通常,脏标志用于指示某些数据已更改并最终需要写入某个外部目的地。它不是立即写入的,因为相邻的数据也可能会发生变化,并且写入大量数据通常比写入单个值更有效。

于 2012-11-21T22:44:51.073 回答
18

这里有一个更深层次的问题——而不是“脏是什么意思?” 在代码的上下文中,我认为我们真的应该问 - '脏' 是一个合适的术语来表达通常的意图。

“肮脏”可能会造成混淆和误导。它会向许多新程序员建议损坏或错误的表单数据。工作“脏”意味着有问题,需要清除或删除数据。毕竟,肮脏的东西是不受欢迎的、不干净的和不愉快的。

如果我们的意思是“表单已被触动”或“表单已被修改但更改尚未写入服务器”,那么为什么不使用“触动”或“writePending”而不是“脏”?

我认为,这是编程社区需要解决的问题。

于 2013-04-10T00:20:16.493 回答
8

肮脏可能意味着很多事情,您需要提供更多上下文。但在非常一般的意义上,“脏标志”用于指示是否已触摸/修改某些内容。

例如,请参阅页面表 wiki中内存管理上下文中“脏位”的用法

于 2012-11-21T22:44:40.253 回答
4

“脏”通常用于缓存的上下文中,从应用程序级缓存到架构缓存。

一般来说,有两种缓存机制:(1)直写;(2) 回写。我们简称 WT 和 WB。

WT意味着对缓存和后备存储的写入是同步完成的。(例如,通过说缓存和后备存储,它们可以分别代表数据库上下文中的主内存和磁盘)。

相反,对于WB,最初,对缓存进行写入。对后备存储的写入被推迟,直到包含数据的缓存块即将被新内容修改/替换。

数据是脏值。在实现 WB 缓存时,您可以设置脏位来指示缓存块是否包含脏值。

于 2012-11-23T02:41:35.223 回答