我在工作中的一些源代码和一些其他代码中看到了一些名为“脏”的变量。这是什么意思?什么是脏标志?
4 回答
通常,脏标志用于指示某些数据已更改并最终需要写入某个外部目的地。它不是立即写入的,因为相邻的数据也可能会发生变化,并且写入大量数据通常比写入单个值更有效。
这里有一个更深层次的问题——而不是“脏是什么意思?” 在代码的上下文中,我认为我们真的应该问 - '脏' 是一个合适的术语来表达通常的意图。
“肮脏”可能会造成混淆和误导。它会向许多新程序员建议损坏或错误的表单数据。工作“脏”意味着有问题,需要清除或删除数据。毕竟,肮脏的东西是不受欢迎的、不干净的和不愉快的。
如果我们的意思是“表单已被触动”或“表单已被修改但更改尚未写入服务器”,那么为什么不使用“触动”或“writePending”而不是“脏”?
我认为,这是编程社区需要解决的问题。
肮脏可能意味着很多事情,您需要提供更多上下文。但在非常一般的意义上,“脏标志”用于指示是否已触摸/修改某些内容。
例如,请参阅页面表 wiki中内存管理上下文中“脏位”的用法
“脏”通常用于缓存的上下文中,从应用程序级缓存到架构缓存。
一般来说,有两种缓存机制:(1)直写;(2) 回写。我们简称 WT 和 WB。
WT意味着对缓存和后备存储的写入是同步完成的。(例如,通过说缓存和后备存储,它们可以分别代表数据库上下文中的主内存和磁盘)。
相反,对于WB,最初,只对缓存进行写入。对后备存储的写入被推迟,直到包含数据的缓存块即将被新内容修改/替换。
数据是脏值。在实现 WB 缓存时,您可以设置脏位来指示缓存块是否包含脏值。