Data structures 程序终止时数据结构丢失

Data structures 程序终止时数据结构丢失,data-structures,Data Structures,数据结构首先用于存储信息。在CS入门课程中,一个流行的应用程序是员工、学生或俱乐部成员的数据库。在链表实现中,每个节点将包含“姓名”、“id”、“年龄”等,并且将有一个函数“插入”,在程序运行时提示用户逐个输入每个人的信息 这种数据结构通常在堆上动态分配,因此当程序终止时,所有数据都会丢失。那么,员工目录真的是链表数据结构的真正word应用程序吗?如果是这样,我们如何处理程序退出时数据丢失的事实?很简单。通常,数据存储在单独的永久存储区中。数据通常仅在处理数据时作为对象保存在RAM中,否则会卸载

数据结构首先用于存储信息。在CS入门课程中,一个流行的应用程序是员工、学生或俱乐部成员的数据库。在链表实现中,每个节点将包含“姓名”、“id”、“年龄”等,并且将有一个函数“插入”,在程序运行时提示用户逐个输入每个人的信息

这种数据结构通常在堆上动态分配,因此当程序终止时,所有数据都会丢失。那么,员工目录真的是链表数据结构的真正word应用程序吗?如果是这样,我们如何处理程序退出时数据丢失的事实?

很简单。通常,数据存储在单独的永久存储区中。数据通常仅在处理数据时作为对象保存在RAM中,否则会卸载到数据存储中。通常,这是关系数据库管理系统(RDBMS),如Oracle或SQL Server,但也可以是电子表格、文本文件或任何可以表示已保存数据的文件。如果数据存储在文本文件中,可以使用定界语言或系统来提供结构-例如逗号分隔值(CSV)文件和XML。在过去,数据存储为穿孔卡片或穿孔纸带(PPT)


将内存中的数据保存为更易于保存的形式的过程有时称为序列化。反序列化是一个相反的过程-将转换后的数据转换回内存中的原始(或与原始数据等效的)数据,如链表、元组、位图图像、堆栈、数组,等等。

通过链表或任何其他动态分配的数据结构教授员工目录设计的目的是让您了解如何从不同的角度设计实际应用程序。当您使用动态分配的内存时,一旦执行完毕,您将丢失数据,但本主题的重点不是执行后会发生什么,而是执行期间会发生什么。通过这学期的学习,您将了解到在执行过程中会出现现实世界的挑战,如性能相关问题、错误的数据结构选择缺陷、内存限制等,要克服这些问题,您需要善于理解不同的DS如何与内存一起工作。为什么我们在数组或链接列表上使用hashmap,反之亦然


现在回到您的具体问题,不,您不会丢失您的数据,因为真实世界的员工目录是围绕此构建的,所以在您的程序执行完成之前,您的数据将以您的数据库能够理解的某种形式存储。当需要处理时,您存储的数据将从内存中取出,可能再次包括链接列表DS。

您对术语的理解似乎已经不合适了

在CS/IT中,数据库是为数据提供持久性的组件。这就是数据库的全部要点——它确保在某些进程结束或某些计算机关闭时数据不会丢失

问题是:当您开始编程和学习数据类型和数据结构时,当然,链表是您首先听到的事情之一。然后通过构建一个允许用户输入数据的应用程序来应用这些知识;然后做一些事情(比如打印、搜索、创建统计数据)。但出于目的,当你的第一个项目结束时,所有这些都消失了

原因很简单:持久性为您在程序中所做的任何事情增加了大量的复杂性。因此,出于简单的教育目的,您可以从“仅限内存”应用程序开始


然后,当你掌握了这一点;然后再进一步,处理诸如“好的,现在有什么方法可以避免在重新启动我的程序时一次又一次地输入数据?”之类的问题。

程序执行期间使用的临时结构是使用some.method序列化的。结构序列化的确切方式取决于许多因素,因此很难说一个给定的结构在保存到磁盘时“看起来”如何。