当前位置: 首页 > 知识库问答 >
问题:

Java程序架构:IO Buffer

陆昕
2023-03-14

我是Java新手,写了一个很难更新的程序,因为业务逻辑、模态和repo数据都组合在类中。我已经研究了很多教程,但我找不到答案来确保我的程序是以最节省资源的方式编写的。

程序通过BufferedReader类导入一行CSV,并创建一个模式对象实例来反映每一列的读取。但是,然后通过BufferedReader读取第二个CSV表,以检查第一个CSV中的任何数据是否匹配,然后使用此新信息更新模态对象。

然后,一旦更新了更新的模态对象,更新的模态对象将添加到ArrayList中。

版本1或版本2哪种架构方式更有效,为什么:

版本1

  1. 读取行
  2. 创建对象实例
  3. 读取行
  4. 更新对象实例(

版本2

  1. 阅读线
  2. 添加到阵列列表A
  3. 阅读线
  4. 添加到阵列列表B
  5. 通过比较阵列列表A和B运行逻辑
  6. 通过BUFFEREDREADER将最终数组列表写入新文件

请注意,虽然目前使用的CSV数据行数有限(3000),但未来CSV行将增加到超过50,000行数据,因此是添加到ArrayList并在完整的ArrayList上运行逻辑更好,还是先在每个对象上运行逻辑,然后将复杂的对象添加到ArrayList?

共有1个答案

包唯
2023-03-14

版本2效率更高,因为您正在批处理操作,并且您不会重复昂贵的任务。一个典型的例子是数据库连接——建立数据库连接通常很昂贵,因此打开连接并通过它进行100次更新总是比打开连接、进行更新、关闭连接x 100更有效(对于调用者)。

该示例的折衷之处是,数据库只能容纳有限数量的连接,因此通过一个连接执行100次更新对调用方更有效,但可能会阻止其他调用方访问数据库

使用缓冲区是另一个“昂贵”的操作,这就是为什么版本1要慢得多的原因,因为您要将其设置300(50000)次而不是一次。

 类似资料:
  • 问题内容: 是否有与之相对应的Java应用程序体系结构指南:http : //www.codeplex.com/AppArchGuide? 问题答案: 以下内容将对您有所帮助 核心J2EE模式 头先设计模式 J2EE蓝图 尽管快速浏览了Codeplex上的文档,但我可以告诉您,其中可能有70-80%的内容也适用于Java。

  • 4.4.2 Python 程序架构 简单程序可以只用一个程序文件实现,但对绝大多数 Python 程序,一般都是由多个源 文件(即模块)组成的,其中每个源文件都是包含 Python 语句的文本文件。 具体来说,Python 程序通常是由一个顶层主文件和多个模块文件组成的。顶层主文件 定义了程序的主控制流,是执行应用程序时的启动文件;模块文件则是“工具”库,用于汇 集顶层文件和其他模块需要用到的函数

  • 问题内容: 请提供有关如何为Java Web应用程序执行“插件”体系结构的建议。 当前,我们在Tomcat servlet容器中使用了非常简单和标准的Spring + Hibernate + Struts 2 。(内置Maven) 我需要像Redmine 这样的东西。可以启用/禁用,更新任何模块的位置Redmine UI 请排除OSGi,Portlet等繁重的选项。 OSGi太重,没有很好地采用W

  • 这里我们提供了一个关于 Tendermint 区块链应用程序推荐架构的简要指南。 下图提供了一个极好的例子: 这里的最终用户应用程序是 Cosmos Voyager,在左下角。 Voyager 与本地轻客户端守护进程公开的 REST API 通信。轻客户端守护进程是一个特定于应用程序的程序,它与 Tendermint 节点通信,并通过 Tendermint Core RPC 验证 Tendermi

  • CodeIgniter应用程序的体系结构如下所示。 如图所示,每当请求到CodeIgniter时,它将首先转到index.php页面。 在第二步中, Routing将决定是将此请求传递到步骤3以进行缓存还是将此请求传递到步骤4以进行安全检查。 如果请求的页面已经在Caching ,则Routing将把请求传递给步骤3,响应将返回给用户。 如果Caching中不存在请求的页面,则Routing会将请

  • 构建用户程序框架 接下来我们要做的工作,和实验准备中为操作系统「去除依赖」的工作十分类似:我们需要为用户程序提供一个类似的没有Rust std标准运行时依赖的极简运行时环境。这里我们会快速梳理一遍我们为用户程序进行的流程。 建立 crate 我们在 os 的旁边建立一个 user crate。此时,我们移除默认的 main.rs,而是在 src 目录下建立 lib 和 bin 子目录, 在 lib