Configuration 大多数应用程序如何保存其数据?(不是说网络应用)

Configuration 大多数应用程序如何保存其数据?(不是说网络应用),configuration,datastore,Configuration,Datastore,我是软件开发新手。现在,我正计划设计一个小而有用的软件来帮助人们背诵和复习英语单词 作为一名长期使用linux的用户,我发现面向用户的应用程序以各种方式保存用户配置,如XML、纯文本、SQLite等。当我成为一名开发人员时,我认为最重要的是选择适当的方法 所以我的问题是,大多数应用程序如何保存它们的数据?更具体地说,你能列出一些常用的数据存储方法吗?上面的数据指的是帮助应用程序记住事情并在下次启动时返回到以前的状态的数据(可能这就是配置文件的全部内容)。顺便说一句,我对纯文本样式的配置很好奇,它

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

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

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

属性1=值1

属性2=值2

我想知道程序员是如何实现整个方案的,他们应该使用regex,还是有第三方库可以调用,或者他们只是编写代码来直接解析它

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


提前感谢您的耐心!:)

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

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

你也可以把这个问题当作一个问题来考虑。您可以考虑使用像XDR、ASN1或您自己的格式或库之类的格式。您可能对二进制但可移植的格式感兴趣(例如,该文件在具有其他处理器、endianness和字大小的系统上是可读的)

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

如果您有大量数据需要快速访问和更新,那么二进制格式(类似于RAM中的格式)可能更可取。在这种情况下,可以考虑使用一个转储和恢复工具来生成(和使用)一些文本内容

您还可以考虑使用哪些算法,这些算法与其他算法类似


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

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

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

你也可以把这个问题当作一个问题来考虑。您可以考虑使用像XDR、ASN1或您自己的格式或库之类的格式。您可能对二进制但可移植的格式感兴趣(例如,该文件在具有其他处理器、endianness和字大小的系统上是可读的)

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

如果您有大量数据需要快速访问和更新,那么二进制格式(类似于RAM中的格式)可能更可取。在这种情况下,可以考虑使用一个转储和恢复工具来生成(和使用)一些文本内容

您还可以考虑使用哪些算法,这些算法与其他算法类似


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

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

嗯。与其他方法相比,我认为没有合适的方法。嗯,一些开发人员更喜欢使用custo的纯文本文件