0

我是软件开发的新手。现在,我打算设计一个小而有用的软件来帮助人们背诵和复习英语单词。

作为一个长期使用 linux 的用户,我发现面向用户的应用程序以各种方式保存用户配置,例如 XML、纯文本、SQLite 等。当我成为开发人员时,我认为最重要的是选择一些合适的方法。

所以这是我的问题,大多数应用程序如何保存它们的数据?更具体地说,您能否列出一些常用的数据存储方法?上面的数据是指帮助应用程序记住事物并在下次启动时恢复到先前状态的数据(也许这就是配置文件的全部内容)。顺便说一句,我对纯文本样式配置很好奇,它看起来像这样:

属性 1 = 值 1

属性 2 = 值 2

...

我想知道程序员如何实现整个方案,他们应该使用正则表达式,还是有 3rd-party 库可以调用,或者他们只是编写代码来直接解析它?

至于我的小项目,它有两种持久化数据,一种用于用户友好的配置,另一种用作存储英文单词和相关信息的数据库。

提前感谢您的耐心等待!:)

4

2 回答 2

3

嗯。与其他方法相比,我认为没有一些合适的方法。好吧,一些开发人员更喜欢带有自定义解析例程的纯文本文件,一些使用一些格式,如 YAML 或 XML 与相应的库一起使用,一些使用本地数据库后端,如 sqlite 甚至外部数据库(外部数据库配置主要用于企业集中式环境),一些甚至可以使用 Lua 作为一种数据表示语言(尽管它有缺点和优点)。您可以自由选择更适合您需要或您更熟悉的一种。这里没有灵丹妙药。对于简单的配置,最好使用一些带有普通文件的配置解析器(例如,用于 POSIX 兼容系统的libconfig )

于 2013-01-27T08:24:12.787 回答
0

它实际上取决于数据的形式、数据的大致大小、性能要求、对数据进行预处理或后处理的设施等。

此外,您可能希望(或不希望)以某种文本格式保存数据。文本格式(包括 XML、JSONYAML等)的主要优势在于它是可移植的并且易于开发人员查看。此外,您可以使用源代码工具(例如版本控制系统,如git)对其进行管理。缺点是它占用更多磁盘空间,并且需要更多时间来解析和生成它(但是,XML、JSON、YAML 格式有许多支持它们的库)。而且文本数据很难直接访问:您基本上需要阅读所有内容才能使用它。

您还可以将该问题视为序列化持久性问题。您可以考虑使用 XDR、ASN1 或您自己的格式,或s11n等库。您可能对二进制但可移植的格式感兴趣(例如,该文件将在具有其他处理器、字节顺序和字长的系统上可读)。

如果您将您的数据视为配置数据(将由您的程序读取而不是写入),请将其变为文本并有一种表达注释的方式:系统管理员将非常乐意在配置文件中添加注释,您的程序应该忽略。

如果您有大量数据需要快速访问和更新,那么二进制格式(类似于 RAM 中的格式)可能更可取。在这种情况下,想想一个转储和恢复设施生产(和消费)一些文本的东西。

您还可以考虑使用类似于垃圾收集算法的应用程序检查点

一个问题是您的数据的价值是什么……如果您认为即使在您的应用程序不断发展(新版本、新功能)时它也应该保持不变,请认真考虑这一点。记录好数据的格式。

于 2013-01-27T08:22:40.260 回答