问题标签 [filemap]

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 回答
393 浏览

mercurial - 似乎无法使用带有 Mercurial 的文件映射在转换扩展中获得排除

我正在尝试使用 Mercurial 中的转换扩展从当前位于我们“主”存储库中的文件夹创建存储库。我正在使用文件映射将此新存储库移动(重命名)到新位置,但它会不断复制所有文件。我知道在文件映射中我们可以排除,但它似乎不起作用。

我正在做的示例:

根据 ConvertExtension 上的文档,这应该可以工作:

有人可以就这个问题提供一些见解吗?

谢谢,

0 投票
2 回答
1679 浏览

mercurial - Mercurial 文件映射排除包含...它不符合文档所说的吗?

从 subversion 转换,我借此机会清理了 repo,并将其拆分为三个大部分独立的项目。但是......我有一个文件映射,上面写着

其中应该包括除“bot”子目录之外的所有内容,但仍包括该目录中的“aobiosbot.py”文件。问题是,转换后的仓库是空的(我用“hg clone”测试)。如果我添加一个“包含”。作为第 1 行,我得到了除“bot”目录之外的所有内容......包括“bot/aobiosbot.py”。但我告诉它包含该文件。

(真的,filemap 的文档很糟糕。必须准确指定排除/包含选项。我发现我倾向于同意 Joel 的规范……至少在这里。谁会笨拙……)

0 投票
5 回答
9274 浏览

linux - 64位机器的最大文件映射大小是多少

我是 64 位架构的新手。你能告诉我 64 位 linux 机器中文件映射支持的最大文件大小是多少。我想通过文件映射打开超过20GB的文件,可以吗?

我写了一个示例代码。但是当我在 GBSIZE 偏移量中获取指针的值时,它会导致总线错误:

顺便说一句,printf("%c",*pBegin );工作正常。和我的地址大小:38 位物理,48 位虚拟

这是完整的代码:

0 投票
1 回答
948 浏览

linux - Linux内核如何交换文件映射页?

我使用文件映射来读取 20 GB 的文件。而当主存耗尽时,内核如何将文件映射页面交换到磁盘?

我猜一种可能的方法是将页面条目设置为NULL。然后下次如果访问该页面,do_no_page()将再次调用该函数以将文件映射到内存。这样对吗?

另一个问题是内核用来交换内存页的优先级是什么?普通页面还是文件映射页面?

0 投票
6 回答
2989 浏览

mercurial - Mercurial 将文件映射转换为单独的子文件夹会创建空存储库

我有一个从 svn 存储库转换而来的大型 Hg 存储库(2+GB)。它有许多网站,我们希望将它们分离到单独的 Hg 存储库中。存储库位于 Windows 2008 Server 上,我们使用的是 TortoiseHg 附带的 hg。

我们一直在尝试使用带有文件映射的 convert 方法从转换后的存储库创建一个新的存储库。

问题是该命令会遍历源存储库中的所有变更集,但新创建的存储库是空的。

这是命令行的样子:

文件映射如下所示:

任何帮助将不胜感激。

我们还尝试在 svn 存储库中的子文件夹上运行 hg convert,但这实际上会引发异常并退出。


我们放弃了这个,只是将子文件夹分成单独的 Hg 存储库,并且丢失了所有版本历史记录。

0 投票
3 回答
1495 浏览

regex - 如何在较大的文本文件中使用 File::Map 进行正则表达式搜索/替换以避免“内存不足”-错误?

更新 2:已解决。见下文。

我正在将一个大的 txt 文件从一个旧的基于 DOS 的库程序转换为更可用的格式。我刚开始使用 Perl,并设法编写了一个脚本,例如:

它非常快,但一段时间后我总是收到“内存不足”-由于缺少 RAM/交换空间而导致的错误(我在 Win XP 上使用 2GB 内存和 1.5GB 交换文件)。在环顾了一下如何处理大文件之后,File::Map在我看来这是避免这个问题的好方法。不过,我在实施它时遇到了麻烦。这就是我现在所拥有的:

但是我收到以下错误:Modification of a read-only value attempted at gott.pl line 8.

另外,我在帮助页面上读到File::Map,在非 Unix 系统上我需要使用binmode. 我怎么做?

基本上,我想做的是通过 File::Map “加载”文件,然后运行如下代码:

我希望我没有忽略一些太明显的东西,但是File::Map帮助页面上给出的示例仅显示了如何从映射文件中读取,对吗?

编辑:

为了更好地说明我目前由于内存不足而无法完成的事情,我将举一个例子:

http://pastebin.com/6Ehnx6xA上是我们导出的图书馆记录之一的样本(txt 格式)。我对+Deskriptoren:从第 46 行开始的部分感兴趣。这些是主题分类器,按树形层次结构组织。

我想要的是用其完整的父节点链扩展每个分类器,但前提是在所讨论的子节点之前或之后没有父节点不存在。这意味着转

进入

当前使用的 Regex 使用 Lookbehind 和 Lookahead 以避免重复重复,因此比s/foo/bar/g;

但它有效!直到 Perl 的内存用完... :/

所以本质上我需要一种方法来对一个大文件(80MB)进行多行操作。处理时间不是问题。这就是我想到 File::Map 的原因。另一种选择可能是分几个步骤处理文件,链接的 perl 脚本相互调用然后终止,但我想尽可能地将它保存在一个地方。

更新 2:

我设法让它与下面的 Schwelm 代码一起工作。我的脚本现在调用以下子例程,该子例程调用两个嵌套子例程。示例代码位于: http: //pastebin.com/SQd2f8ZZ

仍然不太满意,因为我不能File::Map上班。哦,好吧...我想无论如何,线路方法更有效。

感谢大家!

0 投票
5 回答
39782 浏览

windows - 共享 Windows 映射驱动器

我有一个软件归档解决方案,它需要客户端的 Windows 共享,但我想通过 samba 在 Linux 主机上实际存储文件。

此依赖项要求我的 Linux 文件存档具有 Windows 前端。

当我将客户端上的 Linux Samba 共享映射为驱动器时,我无法“共享”它以供服务器查看。

我也尝试过创建快捷方式,但没有共享选项

有没有办法创建一个可以共享的 Windows 文件夹,也可以将文件写入 Samba 网络共享?

0 投票
3 回答
726 浏览

c++ - 如何发送矢量> 通过 MapViewOfFile

我在父进程中有以下代码:

在一个子进程中,我试图接收这个向量>,但我的子进程每次都会终止。

当我尝试使用matrix子进程中的数据时发生错误。小结构如下:

如何在孩子身上正确接收我的载体?

0 投票
1 回答
66 浏览

c++ - boost::file_mapping 对象的创建成本?

我有一个文件解析器,它将文件加载为文件映射对象,然后根据调用者的需求映射区域。这些文件可以在本地访问,也可以通过网络访问。

此文件读取是顺序的。

我有两种方法-

方法一

创建一个 file_mapping 对象,比如 f。

使用“f”创建映射区域,其中一次只有一个 mapped_region 处于活动状态。

方法二

每次要创建 mapped_region 时,创建新的 file_mapping 对象(对于同一个文件)。

方法 2 基于 file_mapping 是为进程间通信而设计的假设,因此为同一个文件创建多个 file_mapping 对象不会成为问题。

当文件在本地访问时,性能基准显示,两种方法的时间相似(对于 3GB 文件)

但是,当通过网络访问文件时,方法 2 的执行速度比方法 1慢约 5 倍。

在这两种方法中,mapped_region 都会在创建新的之前被破坏。

方法 2 的唯一区别是 file_mapping 对象为每个 mapped_region 创建和销毁。

顺序文件读取操作的基准标记程序:
- 文件大小:3GB
-创建的映射区域数:8600 -映射区域
大小:可变,在 9KB - 900KB 范围内变化 -
映射区域访问:所有区域在完成后立即访问创建。
-映射区域创建频率:一个接一个地循环,对从映射区域提取的数据进行一些处理。处理涉及递归结构填充,尽管深度最大为 10。它不是很密集。

我想了解:

为什么时间差这么大?

创建 file_mapping 对象时究竟会发生什么?

当一个 mapped_region 对象被创建时究竟会发生什么?

操作系统是否在创建 file_mapping 或创建 mapped_region 期间搜索大块内存?

文件数据何时实际加载到主存中?

非常感谢。

0 投票
1 回答
85 浏览

arrays - 将 bash 表输出映射到数组

如何将我从列名中获得的值映射到以后可以在我的 bash 脚本中使用的数组中?

我已经尝试了以下方法,但这只会将标题的名称保存在表中:

回声$my_array

在我检索到值之后,我想循环它们以将它们添加到数组中