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

在什么情况下,我应该将对象写入二进制文件,而不是写入CSV文件?爪哇[关闭]

龚承嗣
2023-03-14

我正在尝试创建一个银行系统(我不知道服务器数据库rn,我的目标是在不了解SQL和其他知识的情况下创建这个系统),我不知道应该将银行帐户写入二进制文件(因为它们是对象,并且在其中实例化了对象)还是CSV文件。在这两种情况下,我都必须面对一个问题:第一:为每个帐户编写一个文件;第二:将每个帐户都写入一个文件。第一个帐户的优点是所有内容都只包含在一个文件中,但是,如果我只需要更改一个帐户的余额,我就必须重写整个文件。第二个文件的优点是不必重写整个文件来更改一个文件,但我会有大量文件。知道这一点,我应该选择哪种组合?(二进制一个文件),(二进制多个文件),(CSV一个文件)或(CSV多个文件)

共有1个答案

令狐和裕
2023-03-14

当然,像嵌入式Derby或H2数据库这样的数据库实际上是正确的解决方案。

但如果你想自己动手,我建议使用XML。JAXB将带有注释的java对象映射到XML。这真的很简单。你加载所有内容,然后全部写入。你可以用地图作为廉价的索引。

其次最好的是CSV,因为您至少可以轻松地调试所有。

二进制可以提供最佳性能,但需要最大的努力,这看起来不像一个长期的项目(10年)。但是不要使用java对象序列化,而是一些二进制格式。有这样的二进制格式的库,如ASN。否则查看ByteBuffer

我仍然建议使用一个小型数据库,这并不是低估您的编程,而是有两个任务:业务应用程序,以及技术存储、检索和查询机制。使用最少的SQL,您可以节省大量的精力和时间。你不需要编程查询,它们是免费的。SQL是声明性的,所以任何查询都可以工作;不需要结构化列表和子列表。

 类似资料:
  • 问题内容: 我有23位表示为字符串,并且需要将此字符串作为4个字节写入二进制文件。最后一个字节始终为0。以下代码有效(Python 3.3),但感觉不太好(我对Python和编程很陌生)。您有任何改善技巧吗?似乎for循环可能有用,但是如何在循环中进行切片而不出现IndexError?请注意,当我将位提取到一个字节中时,我会反转位顺序。 问题答案: 您可以将其视为int,然后按以下方式创建4个字节

  • 我想以这种形式将短int x=0x4740写入二进制文件:0100 0000 0100 0111,当我在记事本中打开它时,它是@G。它正在工作。当我尝试编写例如短int a=0xf0ff;(二进制:1111 0000 1111 1111)时,记事本显示给我的不是我的数字二进制(➕是1100 1011 1001 1001 1100 0100 1001 0001)。如何在这个文件中编写它并获得1111

  • 我正在编写一个python程序,可以循环reddit提交,提取数据,并将其作为对象存储在列表中。但是,我在将该列表写入csv文件时遇到困难。文件已创建,但它只是为对象提供某种id标记。我应该如何更改csv代码? 代码 CSV文件

  • 在CSV文件中写入时,会自动创建文件夹,然后创建具有神秘名称的csv文件,如何使用任何特定名称创建此CSV,但无需在pyspark而不是熊猫中创建文件夹。

  • 问题内容: 将结构转储到提供的csv文件中的惯用golang方法是什么?我在一个func里面,我的结构作为接口{}传递: 为什么要使用界面{}?-从JSON读取数据,可能会返回一些不同的结构,因此尝试编写足够通用的函数。 我的类型的一个例子: 问题答案: 如果您使用具体类型,将会容易得多。您可能想要使用该软件包,这是一个相关示例;https://golang.org/pkg/encoding/cs

  • 我无法重写从二进制缓冲区获取的文件,我已与原始文件进行了检查,所有字节都相同。 这是从NodeJS创建的文件: 这是最初的一个: 你可以比较这两个文件,每个字节都是一样的,我猜NodeJS的编码不是正确的。 这是一段代码 你可以试着在你的节点上运行它,看看结果是错误的。 我能做些什么来修复它?