Java程序架构:IO缓冲区
Java Program Architecture: IO Buffer
我是 Java 的新手,编写了一个很难更新的程序,因为业务逻辑、模式和回购数据在 class 中组合在一起。从那以后,我研究了许多教程,但我找不到答案来确保我的程序是以最节省资源的方式编写的。
该程序通过 BufferedReader class 导入 1 行 CSV,并创建一个模态对象实例来反映读取的每一列。但是,然后通过 BufferedReader 读取第二个 CSV sheet 以检查第一个 CSV 中的任何数据是否匹配,然后使用此新信息更新模态对象。
然后一旦更新的模态对象被更新,更新的模态对象被添加到一个ArrayList。
版本 1 或版本 2 哪种架构方式更有效,原因:
版本 1
- 读行
- 创建对象实例
- 读行
- 更新对象实例(&运行逻辑)
- 通过 BUFFEREDWRITER 将行(对象)写入新文件
- 重复 3000 次
版本 2
- 读行
- 添加到数组列表 A
- 读行
- 添加到数组列表 B
- 运行 比较数组列表 A 和 B 的逻辑
- 通过 BUFFEREDREADER 将最终数组列表写入新文件
请注意,虽然目前使用的 CSV 数据行数有限(3000 行),但将来 CSV 行将增加到超过 50,000 行数据,因此最好添加到 ArrayLists 和 运行逻辑在完整的ArrayList上,或者先在每个对象上运行逻辑,然后将complated对象添加到ArrayList?
版本 2 更高效,因为您是批处理操作,而不是重复昂贵的任务。一个典型的例子是数据库连接 - 建立数据库连接通常很昂贵,因此打开连接并通过它进行 100 次更新总是比打开连接,进行更新,关闭连接 x 100 更有效(对于调用者)。
该示例的权衡是数据库只能容纳有限数量的连接,因此通过一个连接进行 100 次更新对调用者来说效率更高,但可能会阻止其他调用者访问数据库。
使用缓冲区是另一种“昂贵”的操作,这就是版本 1 慢得多的原因,因为您要将其设置 300 (50,000) 次而不是一次。
我是 Java 的新手,编写了一个很难更新的程序,因为业务逻辑、模式和回购数据在 class 中组合在一起。从那以后,我研究了许多教程,但我找不到答案来确保我的程序是以最节省资源的方式编写的。
该程序通过 BufferedReader class 导入 1 行 CSV,并创建一个模态对象实例来反映读取的每一列。但是,然后通过 BufferedReader 读取第二个 CSV sheet 以检查第一个 CSV 中的任何数据是否匹配,然后使用此新信息更新模态对象。
然后一旦更新的模态对象被更新,更新的模态对象被添加到一个ArrayList。
版本 1 或版本 2 哪种架构方式更有效,原因:
版本 1
- 读行
- 创建对象实例
- 读行
- 更新对象实例(&运行逻辑)
- 通过 BUFFEREDWRITER 将行(对象)写入新文件
- 重复 3000 次
版本 2
- 读行
- 添加到数组列表 A
- 读行
- 添加到数组列表 B
- 运行 比较数组列表 A 和 B 的逻辑
- 通过 BUFFEREDREADER 将最终数组列表写入新文件
请注意,虽然目前使用的 CSV 数据行数有限(3000 行),但将来 CSV 行将增加到超过 50,000 行数据,因此最好添加到 ArrayLists 和 运行逻辑在完整的ArrayList上,或者先在每个对象上运行逻辑,然后将complated对象添加到ArrayList?
版本 2 更高效,因为您是批处理操作,而不是重复昂贵的任务。一个典型的例子是数据库连接 - 建立数据库连接通常很昂贵,因此打开连接并通过它进行 100 次更新总是比打开连接,进行更新,关闭连接 x 100 更有效(对于调用者)。
该示例的权衡是数据库只能容纳有限数量的连接,因此通过一个连接进行 100 次更新对调用者来说效率更高,但可能会阻止其他调用者访问数据库。
使用缓冲区是另一种“昂贵”的操作,这就是版本 1 慢得多的原因,因为您要将其设置 300 (50,000) 次而不是一次。