algorithm - wordweb英语词典是如何实现的?

标签 algorithm string data-structures dictionary tree

我们需要在内存中保留一些数据结构来将英语单词词典保存在内存中。 当计算机/wordweb 启动时,我们需要将字典从磁盘读取到内存中的数据结构中。

这个问题问我们如何在典型的现实世界词典(例如 wordweb)中将数据结构从磁盘填充到内存中?

理想情况下,我们希望以这种方式将字典保存在磁盘中,我们需要它在内存中,这样我们就不必花时间在内存中构建数据结构,我们只需从磁盘中读取它即可。但是对于链表、指针等,我们如何在磁盘中存储相同的图像。一些相对地址等在这里会有帮助吗?

通常,是整个字典被读取并存储在内存中。或者在搜索特定词时仅完成部分/处理程序和叶页 IO。

如果有人想帮助了解内存中的数据结构通常是什么,请继续。

谢谢,

最佳答案

您提到了指针,所以我假设您使用的是 C++;如果是这种情况并且您想直接从磁盘读取到内存中而不必“重建”您的数据结构,那么您可能需要研究序列化:How do you serialize an object in C++?

但是,您通常不希望加载整个字典,尤其是当它是用户应用程序时。如果用户正在查找字典单词,那么从磁盘读取的速度会非常快,以至于用户永远不会注意到“延迟”。如果您正在处理数百或数千个请求,那么将字典缓存到内存中可能是有意义的。

那么你有多少用户?
您希望应用程序承受什么样的负载?

关于algorithm - wordweb英语词典是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6278154/

相关文章:

arrays - Codility PermCheck 为什么我的解决方案不起作用

algorithm - 从二叉堆中删除叶子的时间复杂度

python - 用于两端排序列表的最佳数据结构

java - 除了使用Java语言的getString(R.string.idString)之外,还有其他方法可以获取Android字符串资源的值吗?

java - 在算法的复杂性中取什么作为n

algorithm - Redis 类似 Twitter 的关注/取消关注设计模式

r - 将带逗号的字符串公式传递到R数据表

algorithm - 无序二叉树的用例是什么?

c - C中的二叉树插入排序

c - 'C' 使用 strstr() 并减去两个指针从大缓冲区中获取子字符串的长度