问题标签 [state-saving]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1685 浏览

datatables - jquery datatable - 状态保存第一次不起作用

我们正在为表使用jquery数据表来保存状态。它第一次不工作,但下次工作正常。即使在页面刷新后,我们也需要保留过滤器和分页,但它第一次不起作用。下面是我们用于数据表的代码:

0 投票
1 回答
82 浏览

recovery - 抵抗电源/硬件/操作系统故障的程序

我需要编写一个程序,在可能状态的大空间中执行并行搜索,在此过程中发现新区域(并开始探索),并且由于在其他地方获得的中间结果消除了可能性,因此对某些区域的探索提前终止在他们身上发现新的有用结果。搜索是使用相互密切合作运行的多个线程来执行的,以避免重新计算中间数据。

一个复杂的内部状态(包括几个线程的调用堆栈和它们使用的状态同步原语)必须在整个过程中维护和更新,并且没有明显的方法可以将计算分成可以顺序执行的独立块,每个块都可以节省并将一个小的中间结果传递给下一个。此外,没有办法将计算拆分为不相互通信的独立并行线程,而不会由于重新计算大量中间数据而产生过高的开销。

由于搜索域很大,该程序可能会运行数月才能产生最终结果。因此,在程序执行期间存在电源、硬件或操作系统故障的重大风险,这可能导致目前已完成的所有工作完全丢失。在这种情况下,程序将需要从头开始重新启动其所有计算。

在这种情况下,我需要一种可以防止数据完全丢失的解决方案。我想到了一个执行引擎/平台,它可以不断地将进程的当前状态保存到诸如冗余磁盘阵列或数据库之类的抗故障存储中。但我知道这种方法会显着减慢这个过程,甚至在某种程度上与预期的计算时间相比没有任何好处,包括由于可能的故障而重新启动。

事实上,我并不需要一个持续保存程序状态的理想解决方案,我可以轻松承受数小时甚至数天的工作损失。我想到的一个可能的重量级解决方案是在虚拟机中运行程序,不时保存其快照,并在可能的主机故障后从最近的快照恢复机器。这种方法还有助于在随机或可预防的客户操作系统故障后恢复程序状态。

是否有类似但更轻量级的解决方案仅限于保留单个进程的状态?或者您能建议任何其他可以解决我的问题的方法吗?

0 投票
2 回答
236 浏览

ios - iOS 自动保存的对象

在我的应用程序中,我有 Singleton 对象,它应该通过应用程序启动来保存其状态。所以我需要以某种方式保存它。

我只看到两个选项:1)将其保存在应用程序终止(加上,也许,去后台);2)每次更改任何属性时都保存它。

第一个选项看起来很糟糕,因为应用程序可能会被杀死,例如,由于某些错误、内存限制或设备断电(电池电量不足)。所以我希望状态不会被保存。

第二个选项需要关于每次更改的手动通知,或 KVO + 观察每个属性。

似乎我在这里做错了什么。也许,你可以给我一些建议或者有一些众所周知的模式(我试过谷歌,但没有发现什么特别的)。

更新:

是的,有NSUserDefaults,但是为了提高它的可用性(不仅仅是键值)我会编写包装方法,所以我将以同样的问题结束(手动编码的行)。

更新2:

CoreData对我来说也是一个不好的选择:只存储一个对象+插入那里还需要更多的代码行。

更新3:

这不是关于“如何保存”的问题。这是关于“如何自动调用此保存(或使用更少的编码)”。因此,NSUserDefault我们需要手动将每个属性实现为包装器。还从每个属性NSCoding调用save或发布通知(从一个地方捕捉和保存)。

0 投票
3 回答
2339 浏览

c++ - 将数据结构 c++ 保存到磁盘

我有一个非常复杂的数据结构,其中包含指向内存各个部分的指针。构建需要一段时间,我想将该结构使用的“内存”保存到磁盘。然后,当程序再次启动时,它只会对文件进行内存映射,我可以使用它。有没有办法做到这一点?

0 投票
3 回答
1031 浏览

c# - 在 MVVM 应用程序中保存用户状态

我正在创建一个 MVVM 应用程序,基本系统允许用户注册、登录并将数据添加到数据库。

有多个用户,所以我希望系统能够在用户登录并打开应用程序后维护用户的凭据/状态。

到目前为止,我还没有在网上找到任何好的教程来建议我,所以如果有人知道或知道如何做到这一点,我将非常感谢一些帮助。

谢谢。

0 投票
3 回答
752 浏览

android - 如何保存游戏设置?

我正在开发带有菜单和 3 个游戏阶段的简单 android 游戏。目前我正在保存游戏状态。在菜单活动中,用户可以更改一些设置,例如音频(开/关)、广告(开/关)等。当用户按下“新游戏”时,因此离开菜单活动为游戏活动:

1)每次用户在游戏中按下返回按钮时,我是否应该完成菜单活动并有意重新启动它?让它们(菜单活动和游戏活动)保持活动状态会导致 OutOfMemory 错误。

2)我应该在哪里保存用户在菜单中更改的设置?

保存游戏状态和android开发对我来说是新的,所以我会很感激详细的回复。

0 投票
0 回答
55 浏览

android - super.onSaveInstanceState() 和 super.onRestoreInstanceState() 的等价物分别用于 onPause() 和 onCreate() 以保存视图数据

super.onSaveInstanceState(outState);super.onRestoreInstanceState(savedInstanceState);自动保存视图,但onSaveInstanceState并不onRestoreInstanceState总是被调用。我需要使用上述两个超级调用的等价物onPause(),以便在我离开活动时保存视图并在“onCreate()”中恢复保存的视图。我怎样才能做到这一点?

0 投票
3 回答
1076 浏览

java - java中哪些数据类型共享状态?

我正在通过java中的原始数据类型。它提到原始值不与其他原始值共享状态。

这对我来说很有意义,但我想知道是否有人可以给我一个示例,其中数据值实际上与 java 中的其他数据值共享状态。我可以想出一个包含静态变量的自定义类。

自然地,该类的实例将共享这些静态变量,从而共享某种状态。但我正在寻找专门显示 JAVA 提供的非原始数据类型中状态共享的示例。

0 投票
1 回答
578 浏览

jsf - 如何强制 JSF 清理其状态管理器?

更具体地说,这是 Richfaces 3.1.HomeMadePatch/JSF1.1 中的 AjaxStateManager。我不对这些技术选择负责,并且我已经阅读了相关问题,例如123,这些问题基本上建议升级版本或切换到无状态 JSF,如果可以的话,我很乐意这样做,但由于应用程序的巨大性恐怕我做不到。

回到正题,我目前正在尝试优化内存堆消耗。由于我的前辈几乎为每个 bean 设置了会话范围,并将服务器超时设置为 6 小时(在浏览器中过期之前刷新了一些 javascript),因此用户的会话非常长,并且不断积累内存。我自己做了一些优化(嗯,这是一种模拟对话范围:当点击某些页面时,我会清理主 bean 中的所有内容)。现在,当用户返回主页时,他们的会话大小约为 300kb,细分如下:

  • AjaxStateManager$SynchronizedStateHolder:280kb
  • 会话中的其他对象:20kb

这些结果是通过使用 Eclipse MAT 进行堆转储和分析内存获得的。如您所见,93% 的内存是 Ajax 维护无用状态。我想强制它释放那些无用的状态。关于如何做到这一点的任何想法?

我考虑过限制它可以保存的视图数量,但在某些页面中有一些非常奇怪的形式重叠,我不确定如果我这样做它不会破坏。

提前致谢..

0 投票
0 回答
334 浏览

jsf-2 - StateHelper 奇怪的 put 和 add 行为差异

我目前正在为复合组件实现支持组件。我在请求期间使用状态助手来保持内部状态,我发现了一个我无法向自己解释的奇怪行为。

复合组件有一个按钮,可将新项目添加到 ArrayList。此列表由我自己创建并添加到状态中。这是代码:

该列表显示在带有数据表的复合组件中。在第一个请求/按钮单击后,我有一个包含一个项目的列表。第二次单击将显示数据表中的两个项目,但似乎没有任何内容存储到状态助手中。因为第三次单击只显示项目#1 和#3,但#2 丢失。每次后续点击将始终只显示项目#1 和#n。

但是当我使用

一切都按预期工作。StateHelper 中的两种方法(实现)几乎相同。请你能解释一下发生了什么吗?

过去我在测试时也有类似的行为。但是此时我没有使用列表,而只是在状态保存中应该更改的项目。我总是得到第一个添加的状态,从来没有改变过的状态。

我在 JBoss 7.1.3 上使用 Mojarra 2.1.28。