问题标签 [defragmentation]
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.
c - 高效的列表压缩
假设您有一个无符号整数列表。假设某些元素等于 0,并且您想将它们推回。目前我使用此代码(列表是指向大小为 n 的无符号整数列表的指针
你能想出一种更有效的方法来执行这项任务吗?
该片段纯属理论,在生产代码中,列表的每个元素都是一个 64 字节的结构
编辑:我会发布我的解决方案。非常感谢乔纳森·莱弗勒。
java - 如何对 docx 文件进行碎片整理以与 Apache POI 3.8 一起使用?
我正在尝试使用 POI 3.8 查找和替换 docx 文件中的文本段落,如此处所述。
如果我在第一次运行时插入标签,那效果很好。但是,一旦我重新打开 docx 文件并进行一些修改,Word 实际上确实会跨越文本运行片段。例如,“hello world”可能是:
<w:r><w:t>Hello wo</w:t></w:r><w:r w:rsidR="00FB0672"><w:t>rld</w:t></w:r>
我认为这种碎片化将是由于更改跟踪、格式和拼写检查等原因造成的。
有没有人知道如何...
a) ... 在 MS Word 中禁用此功能?
b) ... 之后以某种方式对 docx 文件进行碎片整理?
c) ... 任何其他解决方案来摆脱这种碎片化?
我已经尝试将文件保存为 .doc/.odt 并将文件重新保存为 .docx。但这些碎片仍然存在......
任何帮助都非常感谢 - 在此先感谢您的帮助!
windows-xp - Windows XP 上的 FSCTL_MOVE_FILE,系统卷,FAT32
我在对 windows xp、fat32 系统卷上的文件进行碎片整理时遇到问题。我不是在编写碎片整理程序,而是解决方案的一部分需要在磁盘上连续布置一组文件。为了确保这一点,我使用 FSCTL_MOVE_FILE ioctl 将文件扩展区移动到卷上足够大小的单个可用空间扩展区。过程如下:
1)创建一个文件:
2)用零填充文件。
3) 检查文件是否有碎片,如果有,用FSCTL_GET_VOLUME_BITMAP 获取卷位图,找到足够大小的空闲簇链。
4) 使用 FSCTL_MOVE_FILE 将文件碎片整理到找到的范围内,如下所示:
最后一次调用在 NTFS 系统和常规卷上运行良好。XP 上的非系统卷也没有问题。然而,在 XP 上的 FAT32 系统卷上,我几乎总是收到 INVALID_ARGUMENT (87) 错误。文件很大,大约700MB。该卷有大约 10GB 的可用空间。fsctl 失败后,可以看到文件的一部分实际上在错误发生之前被移动了。我尝试了几次,但到目前为止,所有 50 次都失败了。我知道以这种方式移动大文件可能会失败,因为之前空闲的集群被卷上的其他东西占用,特别是如果卷有很多活动(就像系统卷通常有)。但是我不知道如何减轻这种情况,因为我没有内核存在。我做错了什么和/或我怎样才能做得更好?
c# - 抑制 GC 内存优化
我正在编写一个在多个线程中调用多个基于 C 的函数(p/Invoke)的程序。
有时,程序会因访问冲突错误而崩溃。我的第一个想法是 GC 优化了内存并将 C 函数正在处理的内存块移动到不同的位置。
我想做的是让 GC 工作,但禁用它移动(碎片整理)内存的部分。
有没有办法做到这一点?
vb.net - VB.NET 碎片整理完成通知
当 Windows 7 碎片整理完成时,是否有事件或其他方式可以通知 VB.NET 程序(以便程序可以指示 PC 关闭)?
c# - Windows 碎片整理不是内部或外部命令、可运行程序或批处理文件
我正在制作一个技术工具包程序,这个“工具包”中包含一个在本地磁盘上运行碎片整理的按钮。目前我为此制作的批处理文件很简单,它只是运行一个基本的碎片分析:
触发此按钮的 C# 代码是:
这段代码完全符合我的要求,它调用 UAC,然后使用管理权限启动我的批处理文件。尽管运行批处理文件后,我收到命令控制台的输出是:
是什么导致了这个错误,我该如何解决?
ntfs - BY_HANDLE_FILE_INFORMATION 结构
有谁知道 Windows 提供的 BY_HANDLE_FILE_INFORMATION 结构是否受到 NTFS 磁盘碎片整理的影响?
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363788%28v=vs.85%29.aspx
networking - IP分片和重组
我目前正在浏览我的网络幻灯片,想知道是否有人可以帮助我解决碎片和重组的概念。
我了解它是如何工作的,即由于网络链接具有 MTU,数据报如何被分成更小的块。然而,图片中的例子让我感到困惑。
所以前两个部分显示长度为 1500,因为这是 MSU,但这不应该意味着最后一个应该有 1000(总共 4000 个字节)而不是 1040?这些额外的 40 个字节是从哪里来的?我的猜测是,因为前两个片段都有 20 字节的标头,所以这额外的 40 字节数据需要去某个地方,所以它会到达最后一个片段?
Fragflag 本质上意味着还有另一个片段,因此除了最后一个片段为零之外,所有片段的 Fragflag 都将为 1。但是我不明白偏移量是什么或它是如何计算的。为什么第一个偏移量为零?为什么我们将数据字段 (1480) 中的字节除以 8 以获得第二个偏移量?这个 8 是从哪里来的?除此之外,我假设每个片段偏移量只会增加这个值?
例如,第一个片段的偏移量为 0,第二个为 185,第三个为 370,第四个为 555?(370+185)
谢谢你的帮助!
tcp - UDP中的序列号
我被问到一个与数据报有关的有趣问题,以及它们是如何分段的,即用什么来重新组装原始数据报。
- 我知道每个片段中的 ID 号都是相同的,以表明它们都属于一个更大的数据报。
- 我知道将 FragFlag 设置为 1 意味着途中有更多片段,但是 FragFlag 为 0 的片段意味着它是最终片段。
我还缺少一件事,我认为还必须使用序列号,以便片段知道它们必须放回哪个顺序。但是,如果这是真的,那让我有点困惑,因为数据报使用 UDP,这是假定的不可靠,最终可能会在传输过程中丢失数据包或以错误的顺序发送它们。
相比之下,TCP 被认为是可靠的,并且是保证数据包以正确顺序发送的最佳方式。因为我们处理的是数据报而不是数据包,所以这里的工作方式不同吗?或者只是为了使 UDP 更“可靠”而创建的序列号。
谢谢你的帮助。
performance - Firebird 会进行碎片整理吗?如果是这样,像聚集索引?
我已经看到了一些(从字面上看,只有几个)链接,并且在文档中没有任何关于使用 Firebird 进行集群的讨论,这是可以完成的。
然后,我在这个问题上一炮而红 CLUSTER command for Firebird?,但回答者告诉我,Firebird 甚至根本没有聚集索引,所以现在我真的很困惑。
Firebird 是否对数据进行物理排序?如果是这样,它可以通过任何键排序,而不仅仅是主键,并且可以打开和关闭集群/碎片整理,以便它只在停机期间进行?
如果不是,这是否会影响性能,因为磁盘需要更长的时间才能将自然应该彼此相邻的不同行放在一起?
(数据库菜鸟)
MVCC
我发现 Firebird 是基于 MVCC 的,所以旧数据实际上在“扫描”之前不会被覆盖。我非常喜欢那个!
同样,我找不到太多,但数据不会根据密钥进行碎片整理似乎真的很遗憾。
这表示对数据库页面进行了碎片整理,但没有提供进一步的解释。