对于我的项目,我需要存储有关协议的信息(发送的数据(很可能是整数)及其发送的顺序)以及可能格式化的信息:
'ID''STRING''附加整数数据'
这个信息将由Java程序读取并存储在内存中进行处理,但我不知道将这些数据存储在哪个最合理的格式中?
编辑:这是一些额外的信息:
1)我将在游戏服务器中使用这些数据
2)由于它是游戏服务器,速度不是主要考虑因素,因为这些数据将在启动期间被主要读取和使用,这不应经常发生。
3)内存消耗我想保持最低限度
4)第二个数据“示例”将用作“字典”,以查找特定游戏内项目的名称,其统计数据和其他整数数据(因此可能会变得非常大,与包含协议信息的第一个数据不同,其中每个文件只会记录小协议,例如登录协议。)
5)是的,我希望数据是“人类可编辑的”。
答案 0 :(得分:3)
有许多因素可能会受到影响 - 这些事情可能会帮助您解决这个问题:
1)速度/内存使用:如果数据需要加载非常快或非常大,您可能需要考虑滚动自己的二进制格式。
2)可移植性/兼容性:对#1进行平衡是您可能希望在其他地方使用数据的考虑因素,而程序不会读取自定义二进制格式。在这种情况下,你的重击手可能是CSV,dBase,XML和我个人最喜欢的JSON。
3)简单:像CSV这样的分隔格式易于手动阅读,编写和编辑。使用正确转义的双引号或选择不会出现在数据中的分隔符。
如果您可以发布有关您的情况的更多信息以及这些因素的重要性,我们可能会为您提供更多指导。
答案 1 :(得分:0)
答案 2 :(得分:0)
我使用XML编写了类似的协议规范。 (可用here。)
我认为这是一个很好的匹配,因为它捕获了指定消息/网络包/字段等的层级性质。字段顺序定义明确等等。
我甚至编写了一个代码生成器,它使用XSLT中每种消息类型的方法生成消息发送/接收类。
我看到的唯一缺点是冗长。如果你有一个非常简单的规范结构,我建议你使用一些简单的自制格式,并使用你选择的解析器生成器为它编写一个解析器。
答案 3 :(得分:0)
除了其他人建议的格式(CSV,XML,JSON等)之外,您可以考虑将信息存储在Java属性文件中。 (请参阅java.util.Properties
类。)代码已经存在,因此您需要弄清楚的是要使用的属性名称(或名称前缀)。
Properties
类还提供以简单XML格式存储/加载属性。