我有一个java系统,不同的类存储不同的信息。有一个主类,用户将在其中输入这些类的信息,并使它们相互作用。用户完成后,将退出系统。下次用户重新编译项目时,所有先前输入的数据都应该在那里。用户可以使用相同的数据或添加更多信息。简单来说,如何在关闭时暂停/保存系统,并在再次执行时恢复它?另外,我不能在这里使用数据库。一定是别的东西。
crcmnpdw1#
下次用户重新编译项目时用户不会重新编译项目。他们只是运行你的应用程序。你一直说“不是db”,所以,答案很简单:不可能。根据定义,数据库保存一些数据,因此得名:它是数据的基础。如果那不可能,你就不走运了,你想要的是不可能的。也许你在措辞上也很粗心,你的意思可能是:
好吧,那么,不要。使用进程内数据库,如h2。用户不知道涉及到一个基于sql的数据库系统,他们看到的只是一个文件的出现。不启动额外进程。
好吧,那么,不要。有一些工具可以将整个对象结构转换成一个bag o字节,然后保存到文件中,例如jackson,它可以将一个对象(如果需要,可以包含所有相关的用户数据)转换成json数据,然后保存到文件中,然后再还原。当然,如果有人在编写过程中被电缆绊倒,文件就会损坏。有很多方法可以解决这个问题 .tmp ,然后将它移动到适当的位置,因为这通常是原子的),但是你有点致力于在这里重新发明轮子,因为你坚持你不想要数据库。
.tmp
你不能。不是java的工作方式。
有一个java内置的序列化系统,它很差劲,在如何使用它的问题上有一系列的注意事项,java平台本身的维护人员或多或少都不喜欢它。这不是办法。它仍然不会“保存整个系统状态”,它只保存一个对象,并且在这方面做得比jackson差得多。
1条答案
按热度按时间crcmnpdw1#
下次用户重新编译项目时
用户不会重新编译项目。他们只是运行你的应用程序。
你一直说“不是db”,所以,答案很简单:不可能。
根据定义,数据库保存一些数据,因此得名:它是数据的基础。如果那不可能,你就不走运了,你想要的是不可能的。
也许你在措辞上也很粗心,你的意思可能是:
我不想强迫用户安装数据库
好吧,那么,不要。使用进程内数据库,如h2。用户不知道涉及到一个基于sql的数据库系统,他们看到的只是一个文件的出现。不启动额外进程。
我讨厌sql
好吧,那么,不要。有一些工具可以将整个对象结构转换成一个bag o字节,然后保存到文件中,例如jackson,它可以将一个对象(如果需要,可以包含所有相关的用户数据)转换成json数据,然后保存到文件中,然后再还原。当然,如果有人在编写过程中被电缆绊倒,文件就会损坏。有很多方法可以解决这个问题
.tmp
,然后将它移动到适当的位置,因为这通常是原子的),但是你有点致力于在这里重新发明轮子,因为你坚持你不想要数据库。我只想保存整个系统的状态
你不能。不是java的工作方式。
我不能零依赖吗?
有一个java内置的序列化系统,它很差劲,在如何使用它的问题上有一系列的注意事项,java平台本身的维护人员或多或少都不喜欢它。这不是办法。它仍然不会“保存整个系统状态”,它只保存一个对象,并且在这方面做得比jackson差得多。