如何得到XML文档文件的大小

如何得到XML文档文件的大小,第1张

有的可能只有几行,而有的却有好几兆字节。你也许会怀疑是不是需要了解XML文档的大小。而当性能成为首要问题时,知道XML文档大小就是件必须要作的事情了。 从性能角度讲,有两类处理XML文档的方法。批量处理方式需要较短的时间,解析成组的文档。实时方式就是实时的处理文档。批处理方式的性能可以通过在一定时间内处理多少文档来测量,而实时模式的性能也采用类似的测量方式,不过是以处理一个文档需要多长时间来计算的。 Scenarios场景

想象一下,你有一个实时工作的系统,比如一个Web服务器。这个系统需要实时的接收客户发来的订单,并需要立即对这个订单进行响应。这个系统显然不能用批量处理的方式进行。简单的估计一下,假设这是个很简单的订单,只有十个项目,这样所生成的XML文档就比较小,大概每个文档是4KB。这种情况下,使用DOM来解析收到文档。如果你的订单每小时只有几个,那么系统性能对你来说还不是问题。但是长远考虑,总有一天订单的数量会多到令你意识到系统性能必须提高。现在你开始考虑提高性能来适应增长的负荷。你的订单文档已经很小了,把它们合并成较大的文档也没有什么实际的意义。从纵向考虑,这时候你可以提高现有系统处理能力;从横向考虑,你可以增加更多的系统将负荷分散开。再看看另一个完全不同的领域,你现在要处理的是一个大型的数据仓库。和Web服务器完全不同,你现在用FTP来传输平均大小为300MB的XML文档。如果还是使用DOM来解析XML文档,你很快就会遇到大麻烦。相反,如果你使用SAX就会好的多,它可以直接解析流入的XML文档,而不必把它们事先都装入内存。 改变文档尺寸

有时候你会遇到特殊情况需要改变XML文档大小。想象一下,和刚才一样你有一个实时处理XML文档的Web服务器,而此时所有的文档大小都是400MB而不是4KB,你不能使用DOM方式,因为那太占内存了。可是因为这是个实时系统,性能很重要。你可以使用SAX,不过需要时间允许并要有强大的处理器。在这种情况下,你可以通过改变文档大小来改进系统执行性能。比如你可以将一个400MB的文档分成10个40MB的,或者40个10MB的小文档,这比起处理一个400MB的文档更有效率。这样你就可以使用DOM方式把文件读入内存进行处理,及时响应每个文档的请求了。同时还可以清除掉不相关的文档。在批量处理方式上也有类似情况。想象一下你在通过DOM的批处理方式处理数千个4KB大小的文档。最好的方式是将一千个文件合并成一个4MB的文件。因为每个文档的载入都需要占用系统时间(不论是DOM还是SAX)。通过将一千个文档合并成一个,你只需要载入一个文档,占用的时间只是原来的千分之一。

<!--Thu Aug 15 20:47:13 2013-->

<configuration>

<property>

<name>dfsclusteradministrators</name>

<value> hdfs</value>

<!-- HDFS 超级管理员用户 -->

</property>

<property>

<name>dfsblockaccesstokenenable</name>

<value>true</value>

<!-- 是否开启 token 访问验证 -->

</property>

<property>

<name>dfsdatanodefailedvolumestolerated</name>

<value>0</value>

<!-- 能够导致DN挂掉的坏硬盘最大数,默认0就是只要有1个硬盘坏了,DN就会shutdown -->

</property>

<property>

<name>dfsreplicationmax</name>

<value>50</value>

<!-- 有时dn临时故障恢复后会导致数据超过默认备份数。复制份数的最多数,通常没什么用,可以不用写配置文件里。 -->

</property>

<property>

<name>dfsdatanodedureserved</name>

<value>1073741824</value>

<!-- 每块磁盘所保留的空间大小,需要设置一些,主要是给非hdfs文件使用,默认是不保留,0字节 -->

</property>

<property>

<name>dfsblockreportinitialDelay</name>

<value>120</value>

<!-- 推迟第一个 block报告在几秒钟内 -->

</property>

<property>

<name>dfsdatanodedatadir</name>

<value>file:///data/hadoop/hdfs/dn</value>

<!-- 真正的datanode数据保存路径,可以写多块硬盘,逗号分隔把这些位置分散在每个节点上的所有磁盘上可以实现磁盘 I/O 平衡,因此会显著改进磁盘 I/O 性能。 -->

</property>

<property>

<name>dfsclientreadshortcircuit</name>

<value>true</value>

</property>

<property>

<name>dfsdatanodemaxtransferthreads</name>

<value>4096</value>

<!-- 指定datanode的最大数量的线程用于传输数据。默认 4096 -->

</property>

<property>

<name>dfsnamenode>

XML文件可能只生成一部分链接的原因有很多。以下是一些建议和可能的原因:

检查生成XML文件的工具或程序:确保你使用的工具或程序能够正确生成完整的XML文件。请检查有无使用限制,例如免费版本可能只允许生成一定数量的链接。

文件大小限制:有些服务或工具可能对生成的XML文件大小有限制。这可能导致仅生成一部分链接。请查阅文档,了解是否有此类限制。

递归深度限制:某些生成XML文件的程序可能会限制递归深度。这意味着在达到特定深度的嵌套链接之后,程序可能不再继续抓取链接。请检查工具或程序设置,看是否可以调整递归深度。

超时限制:生成XML文件的过程可能会受到时间限制。一旦超过指定时间,程序可能会停止抓取链接。请检查工具或程序设置,看是否可以调整超时限制。

网站结构问题:你的网站可能存在结构问题,导致生成XML文件的工具或程序无法正确抓取所有链接。检查网站的内部链接,确保它们是有效且能够被搜索引擎抓取的。

无法访问的链接:确保所有需要生成链接的页面都是可访问的,没有被robotstxt文件或meta标签中的"noindex"指令阻止。

网站地图分割:如果你的网站包含大量链接,可以考虑将XML文件拆分为多个较小的文件。这样,即使有文件大小限制,也可以确保包含所有链接。

分类: 电脑/网络 >> 互联网

解析:

正象HTML一样,可扩展置标语言XML(eXtensible Markup Language)也是一种置标语言。它同样依赖于描述一定规则的标签和能够读懂这些标签的应用处理工具来发挥它的强大功能。这一点,从XML的命名上也可窥见一斑。

“关于此规范的正确题目,亦即XML的正确全名,应该是Extensible Markup Language, eXtensible Markup Language只不过是一个拼写错误罢了。但是,现在简写XML不仅正确,而且正如它在本规范的标题中一样,是Extensible Markup Language的官方名称。

这个名称和简写是由James Clark最先提出的,其它可供选择的名称还包括小型标准置标语言MGML (Minimal Generalized Markup Language), 标准置标语言的小型结构MAGMA (Minimal Architecture For Generalized Markup Applications), 以及互联网置标结构语言SLIM (Structured Language for Inter Markup)。

——Extensible Markup Language (XML) 10 Specs, The Annotated Version ”

从对XML的最初命名可以看出,XML的核心归根结底还是置标。不过,XML这个置标语言可比HTML的功能要强大的多了。

“人”如其名,XML的强大功能来自于“X”。也就是说,XML不但是置标语言,而且是可扩展的(eXtensible)置标语言。XML并非象HTML那样,提供了一组事先已经定义好了的标签,而是提供了一个标准,利用这个标准,你可以根据实际需要定义自己的新的置标语言,并为你的这个置标语言规定它特有的一套标签。准确的说,XML是一种源置标语言,它允许你根据它所提供的规则,制定各种各样的置标语言。这也正是XML语言制定之初的目标所在。

“XML的制定目标为:

XML应该可以在互联网上直接使用(就象HTML那样好用)。

XML应该支持各种不同的应用方式(不但包括浏览,还包括对内容的分析)。

XML应该与SGML兼容(子承父业嘛,后面我们会讲到,SGML是XML的直接先驱)。

处理XML文件的应用程序应该容易编写(计算机系的研究生花上两周的工夫就该差不多了)。

XML中的可选特性的数量应该减到最小,最好减至没有(可选特性经常造成混淆)。

XML文件应该具有良好的可读性,并且比较清晰(别象HTML那样,如果不借助浏览器,要想读它简直就是对你意志力和耐心的考验)。

用XML设计新的置标语言应该方便快捷(你不必再去经历标准制定的繁琐程序了)。

XML设计的置标语言应该正式、简洁(不然怎么易写易读?)。

XML文件应该容易编制(想想要用“记事本”写个HTML是一件多么可怕的工作)。

XML标记的简洁性并不重要(你不必再去费尽心机减少标记)。

——Extensible Markup Language (XML) 10 Specs, The Annotated Version”

在站点迁移过程中,有时候这些导出的文件大小超过了主机商限定的上传文件的大小。一般有两种方法解决该问题,一种是叫你的WordPress主机用户可以通过创建一些带有相同标头、类和页脚的信息的XML文件来手动拆分较大的XML文件,但明显这么做非常耗时。其实我们可以借助一些简单的工具轻松分解XML文件。Windows *** 作系统用户可以使用WordPress WXR文件分割工具(WordPress WXR File Splitter)。下载并安装运行,出现如下窗口:单击“打开WXR文件”按钮,打开WordPress XML文件。随后软件将读取XML文件并告诉用户一些关于数据的有用的信息。软件将获取标头和页脚等信息,并显示文件中项目的数量。在软件将较大的XML文件拆分之前,用户可以调整拆分后每份小XML文件的大小。或者用户还可以设置将大XML文件拆分成多少份。无论哪种方式,只要将文件拆分得足够小并满足主机商上传文件大小的限制就行了。

以上就是关于如何得到XML文档文件的大小全部的内容,包括:如何得到XML文档文件的大小、如何用命令取hdfs-site.xml的值、XML文件为什么只生成一部分链接等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9548588.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存