我在一本书中读过这句话:
计算机科学中没有任何问题不能使用另一个间接级别来解决。
有人可以解释一下吗?“间接级别”是什么意思?
据我了解,间接是使用值的指针而不是值本身的一个花哨的名称。请为我澄清这一点。
我在一本书中读过这句话:
计算机科学中没有任何问题不能使用另一个间接级别来解决。
有人可以解释一下吗?“间接级别”是什么意思?
据我了解,间接是使用值的指针而不是值本身的一个花哨的名称。请为我澄清这一点。
从最广泛的意义上说,“间接”是使用使用其他东西的东西。
因此,您的示例使用值的指针而不是值的指针,在一个级别上符合此定义。指针是东西,值是其他东西。
通常这是范围更大的东西:
最后一个例子,也许,解释了这一切的“原因”。
当我们使用某些东西时,我们会掌握它并学习如何将其抽象到更高级别的抽象,因此需要一个新的间接级别,我们可以通过将一些工作卸载到新的 API 来更快地解决更大的问题。
间接的潜在优势之一是减少耦合。这是另一种说法,应该适当地划分事物。从长远来看,这通常对测试、可维护性和灵活性有很大帮助。
例如,如果您的应用程序需要读取一些持久化数据,而不是在整个应用程序中分散在何处(以及如何)读取它的特定知识,您将其隔离(将读取的数据放入一个方法中),然后让应用程序的所有其他部分调用该方法来获取数据,而不是应用程序的每个部分都必须自己处理这些细节。
好问题!level of indirection
我实际上在我的数据库课程中遇到了这个术语。本课程的幻灯片甚至没有提供有关“间接”或如何使用它的任何信息,但它向学生提出了这样一个问题:
... suppose the file is unordered by the non-key field DEPTNUMBER and we want to construct a secondary index on DEPTNUMBER with one level of indirection that stores record pointers.
你提到的理解让我明白了微妙的事情:
From what I understood, indirection is a fancy name for using a pointer of a value instead of the value itself.
这里我在问题中附上一张图片来说明。所谓level of indirection
无非就是一些包含 的内存块,是和pointers
之间的桥梁。因此,在这里,不是为数据文件中的每条记录设置一个索引,而是使用由 组成的附加层,使索引文件和间接级别(记录指针块)之间的索引稀疏。我对此的理解是,它通过为数据文件提供稀疏(非密集)索引和密集索引,在内存使用和查找速度之间提供了良好的折衷。indexes
data
pointers
unordered
不幸的是,当我学校的幻灯片只是垃圾(它甚至没有涵盖它,但他们对它提出问题)时,我无法为该术语在互联网上的level of indirection
数据库实现方面找到一个很好的解释。
如果您有一个好的来源或者我在这里有任何错误,请发表评论。我真的很感激!