Java 关于数据结构中的大小可以称为大还是小,有什么约定吗?

Java 关于数据结构中的大小可以称为大还是小,有什么约定吗?,java,xml,parsing,dom,Java,Xml,Parsing,Dom,在Java中,DOM解析器适用于小的XML文件/流,但对于大的XML文件/流不是一个好的选择 它可以指定为小XML或大XML的定义吗?这是否取决于文件的大小,还是取决于文件的结构 当然,我可以通过实现它和测试性能来检查它,但我想这样做需要花费太多的时间。这不是天生的好或坏。只是它在内存中加载文档的所有节点及其内容,SAX允许避免这种情况 当然,如果您的文档大小为100 MBs,并且有一个唯一的根元素,其中包含需要存储在内存中的大量文本,那么使用SAX而不是DOM在内存消耗方面可能不会有太大变化

在Java中,DOM解析器适用于小的XML文件/流,但对于大的XML文件/流不是一个好的选择

它可以指定为小XML或大XML的定义吗?这是否取决于文件的大小,还是取决于文件的结构


当然,我可以通过实现它和测试性能来检查它,但我想这样做需要花费太多的时间。

这不是天生的好或坏。只是它在内存中加载文档的所有节点及其内容,SAX允许避免这种情况

当然,如果您的文档大小为100 MBs,并且有一个唯一的根元素,其中包含需要存储在内存中的大量文本,那么使用SAX而不是DOM在内存消耗方面可能不会有太大变化


但是,如果您有数百万个元素,并且希望逐个处理每个元素,那么使用SAX可以保持非常低的内存使用率,而DOM则不行

这不是天生的好或坏。只是它在内存中加载文档的所有节点及其内容,SAX允许避免这种情况

当然,如果您的文档大小为100 MBs,并且有一个唯一的根元素,其中包含需要存储在内存中的大量文本,那么使用SAX而不是DOM在内存消耗方面可能不会有太大变化


但是,如果您有数百万个元素,并且希望逐个处理每个元素,那么使用SAX可以保持非常低的内存使用率,而DOM则不行

你问这个问题是对的。真正的工程师不谈论“大”和“小”,他们使用数字。你不会问在一条很宽的河流上架桥是否很昂贵,你会问在一条1公里宽的河流上架桥要花多少钱

通常,在内存中,适合主内存的东西和不适合主内存的东西之间存在不连续性。所以,如果可用内存是2Gb,那么2Gb以上的内存可能需要与2Gb以下内存不同的设计方法。因此,一个特定设计(例如DOM)适合“小”文档,但不适合“大”文档的说法可以从这种不连续性的角度来理解


顺便提一下,术语“DOM”有时专门用于W3CDOM,有时作为内存中树表示的通用术语。从org.w3.DOM的角度来看,DOM本身从来都不是最好的技术方法;第三方树模型,如JDOM2和XOM,总是更好。人们使用DOM只是出于对替代方案的无知,或者因为他们认为它有价值,因为它是“标准的”。

你问这个问题是对的。真正的工程师不谈论“大”和“小”,他们使用数字。你不会问在一条很宽的河流上架桥是否很昂贵,你会问在一条1公里宽的河流上架桥要花多少钱

通常,在内存中,适合主内存的东西和不适合主内存的东西之间存在不连续性。所以,如果可用内存是2Gb,那么2Gb以上的内存可能需要与2Gb以下内存不同的设计方法。因此,一个特定设计(例如DOM)适合“小”文档,但不适合“大”文档的说法可以从这种不连续性的角度来理解


顺便提一下,术语“DOM”有时专门用于W3CDOM,有时作为内存中树表示的通用术语。从org.w3.DOM的角度来看,DOM本身从来都不是最好的技术方法;第三方树模型,如JDOM2和XOM,总是更好。人们使用DOM只是出于对替代方案的无知,或者是因为他们认为它有优点,因为它是“标准的”。

“大”=“大到足以让您注意到内存使用情况”。“small”=“小于”不,根据您的实现生成包含结构的XML文件并对其进行解组不会花费“太多时间”。根据其他人的报告进行猜测,他们可能已经在这个或那个系统上用这个或那个文件系统和这个或那个硬件为一些XML结构编写了很好的程序:你真的会继续吗?我的意思是使用DOM实现它的“时间太长”,使测试XML在可能的范围内,运行测试用例,如果我发现它很慢,使用SAX再次实现它,再次运行测试要比首先选择合适的测试花费更多的时间。“small”=“小于”不,根据您的实现生成包含结构的XML文件并对其进行解组不会花费“太多时间”。根据其他人的报告进行猜测,他们可能已经在这个或那个系统上用这个或那个文件系统和这个或那个硬件为一些XML结构编写了很好的程序:你真的会继续吗?我的意思是使用DOM实现它的“时间太长”,使测试XML在可能的范围内,运行测试用例,如果我发现它很慢,使用SAX再次实现它,再次运行测试比首先选择合适的测试要花更多的时间。我不想寻找一个范围(如果存在的话)来定义XML的大小。例如,数据库中有几千条记录的表仍然算是小表(当然它也取决于记录的大小,但对于该表中的这个示例,没有
longtext
和其他大型数据元素),没有范围。在谷歌的背景下,我最大的数据库可能很小。而运行在旧手机上的Android应用程序与运行在具有128GB内存的16核机器上的服务器应用程序没有相同的限制。测量一下,如果它足够快,并且没有破坏你的可用内存,那么它就是好的,我想我明白了重点。所以“小”和“大”主要取决于您的系统。我不想寻找一个范围(如果存在的话)来定义我的XML是大还是小。例如,数据库中有几千条记录的表仍然算是一个小表(当然,它也取决于记录的大小,但对于这个表,e