问题标签 [file-mapping]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
845 浏览

winapi - 如何取消提交文件映射页面?

我有一个内存映射文件,以及当前提交的视图中的一个页面。我想取消它。MapViewOfFile 告诉我不能在文件映射页面上使用 VirtualFree。还有其他方法吗?

0 投票
1 回答
80 浏览

winapi - 如何改进一般 i/o 以与文件映射相提并论

文件映射很棒,但是对于 32 位系统上相对较大的文件,应该忘记它并使用通用文件 i/o 实现所有内容。对于大型随机读写,系统缓存的效果几乎与文件映射一样好。但是对于围绕小文件区域的小操作,差异是巨大的,文件 i/o 比文件映射文件的等效操作慢十倍。后者主要是因为多次调用 SetFilePointer、ReadFile、WriteFile,甚至是几个小动作。

所以我想实现或使用某种缓存(或者可能是一些技巧),它应该对小型读/写有效,但我不需要一些复杂的缓存,因为对于大型操作,Windows 做得很好。有一些已知的方法吗?

谢谢

最大限度

0 投票
3 回答
26688 浏览

data-structures - 红黑树与 B 树

我有一个项目,我必须在从兆字节到兆字节的数据上实现快速搜索、插入和删除操作。我最近一直在研究数据结构并分析它们。具体来说,我想介绍3个案例并提出问题:

  1. 数据远远超过内存一次可以处理的数据(样本范围为 10-15 TB)。在这种情况下,我会将数据结构存储在磁盘上。

  2. 与系统的内存相比,数据相对较少,因此可以在内存中存储和操作以提高速度。

  3. 数据超过可用内存,并假设它小于页面文件中可能的连续数据块的大小。因此,我将数据结构存储在磁盘上的文件中,并对文件进行内存映射。

我得出的结论是:

对于案例 1,我应该使用 B-Tree 来加快访问速度,因为它可以节省磁盘旋转产生的延迟

对于案例 2,我应该使用红黑树来更快地访问,因为数据在内存中,而不是。如果我使用 B 树,在更糟糕的情况下需要扫描的元素会少于我必须做的一个

对于案例3,我对此表示怀疑,磁盘上的页面文件使用本机OS I/O对文件进行操作,那么B树应该是更好的选择还是红黑树?

我想知道以上三个结论哪里对,哪里不对,以及如何在三个不同的情况下提高性能。

我正在使用 C++ 语言,带有一棵红黑树和一棵 B 树,它们都是我从头开始设计的。我正在使用 Boost 库进行文件映射。

更新 1::在 stackoverflow 中阅读这篇文章。得到了一些真正好的见解,这让我觉得我在案例中所做的比较类型可能是错误的。在投票最多的答案http://idlebox.net/2007/stx-btree/stx-btree-0.8.3/doxygen-html/speedtest.html中发布了一个链接

0 投票
0 回答
140 浏览

c# - UnknownError_Num 8:内存映射文件

我在使用以下代码使用 MemoryMappedFile 时遇到问题。

使用此代码会导致错误 UnknownError_Num 8。如果我将 NoOfChannels 限制为较小的值,则不会出现错误。我的系统中有 32GB,所以分配这些数据应该没有问题。

有没有人经历过这样的行为?

谢谢马丁

0 投票
4 回答
1751 浏览

java - 在 Java 中使用并发在磁盘上创建键值存储

我需要读取一组文件并将其分解为键值对,并将它们保存为磁盘上该键的(键,值列表),就像 map-reduce 范例一样。一切都在一台计算机上。例如,我可以在不同的文件上编写不同的列表并用密钥命名文件。这似乎是一种非常糟糕的做事方式。首先,如果你有十亿个密钥,你最终会得到十亿个文件。所以很明显那是行不通的,我需要某种内存映射。我还必须让不同的线程来完成映射工作,所以如果它们要写入同一个缓冲区,它们之间就必须进行某种同步。如果我有一个键值缓冲区映射,并在缓冲区上同步,那么线程不应该互相踩踏,所以我认为这部分应该可以工作。问题是如何将值映射到光盘。如何在同一个文件中写入对应于不同键的缓冲区?如果有人能指出我正确的方向,将不胜感激。我对这方面的了解非常可悲。再次感谢。

0 投票
2 回答
489 浏览

excel - 如何在 Excel 2007 中添加代表不​​同工作表名称的字符串下拉列表?

我最近因为我的工作被安排在一个报告项目上。我的总体目标是制作一份包含 9 个不同图表的报告,这些图表能够按日期和分组过滤数据。有 22 个不同的组,我需要向下钻取以按月、周和日显示报告。我必须在 excel 2007 中完成这一切。目前,我正在努力按月显示所有不同应用程序组的结果以及所有组的摘要。

我设置的方式是,有一个包含 2 个工作表的工作簿,其中 1 个包含所有 9 个图表,我们称之为 Dashboard_All。这些图表链接到包含每个图表的所有信息的第二张表,我们称之为 Chart_Data。

您可能想知道,这个图表数据是从哪里来的?Chart_Data 引用另一个工作簿中的一些表,其中包含原始数据、数据透视表和矩阵表。我已将其设置为一张工作表,其中包含一张表中的所有原始数据。一个工作表包含所有数据透视表(每个图表 1 个数据透视表),以便筛选原始数据并给我结果。我制作了 23 个具有这些结果的不同工作表,每个组 1 个(我使用每个数据透视表上的组过滤器来执行此操作)和所有组的 1 个作为摘要。我还制作了 23 个不同的工作表,其中我为每个数据透视表结果制作了矩阵表。使用这些表是因为当我为不同的组更改数据透视表时,结果会发生变化,如果没有要读取的数据,有时会省略列或行。所以我制作了引用数据透视表的表格,以便让单元格基本上充当间隔,以防数据透视表中有空白值。这些图表将不同月份的所有可能组合作为行和不同的列。上一个工作簿中的 Chart_data 引用了这些矩阵表。

VLOOKUP在 Chart_Data 中使用了一个链接到下拉列表的函数。例如,请选择月份: 下拉 January February March ... All Months。Vlookup 知道,当我选择一个月份时,只显示该月份的图表的各种数据。所以我的每月目标已经完成。现在对于应用程序组,我需要另一个下拉框来引用我工作簿中不同的矩阵表工作表。如果我从下拉列表中选择一个组,VLOOKUP 将知道使用适当的信息转到相应的工作表。

问题是,我如何让它识别不同的工作表?例如,

如何让“第 1 组”随下拉选择而变化?

我知道这是冗长而令人困惑的,但我不确定如何解释这一点。非常感谢。

0 投票
1 回答
900 浏览

c++ - 如何在windows中创建共享内存池

我想为所有其他进程创建一个共享内存池来共享数据,但是在阅读了 CreateFileMapping API 文档后,我对它需要指定共享内存的大小感到困惑。我实际上希望它是动态分配和免费的,它看起来更像是一项服务。有没有办法使用 createFileMapping 来动态共享内存?

0 投票
3 回答
21790 浏览

c++ - 使用 MapViewOfFile 映射大文件

我有一个非常大的文件,我需要分小块读取它,然后处理每一块。我正在使用 MapViewOfFile 函数在内存中映射一块,但在阅读第一部分后我无法阅读第二部分。当我试图映射它时它会抛出。

0 投票
1 回答
2450 浏览

c++ - OpenFileMapping 问题,找不到文件映射

我目前正在尝试使用文件映射来测试进程间通信。我将调用生产者的第一个程序在以下创建文件映射并写入它的代码上不会出错,如下所示:

但是,我的第二个程序正在模仿第二个进程,我将命名消费者,在尝试使用以下代码重新打开此文件映射时出错:

任何人都可以看到我遗漏的任何明显的东西吗?,因为它直接在我的头上。

0 投票
1 回答
2949 浏览

c++ - 在具有 runas 的不同用户帐户下运行时,CreateFileMapping 上的访问被拒绝

尝试打开以前创建的文件映射时,此代码使我访问被拒绝错误。帮助,帮助,帮助。

  • 操作系统:WinXP SP3,无快速用户切换。
  • 以下代码使用 runas 在 2 个不同的用户帐户上运行。
  • 两个用户都具有管理员权限。

测试代码: