问题标签 [state]

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 回答
2166 浏览

opengl - 在 Cg 中访问 OpenGL 状态变量

我需要在我的 Cg 着色器程序中访问OpenGL 状态变量(例如 MVP 矩阵)。我正在使用诸如cgGLSetStateMatrixParameter()C/C++ 代码中的调用手动将这些值传递给我的 Cg 着色器程序。有没有更简单的方法来做到这一点?

0 投票
15 回答
5185 浏览

algorithm - 状态机适用于哪些类型的问题?

状态机最适合解决什么样的编程问题?

我已经阅读了关于使用状态机实现的解析器,但想了解一些需要作为状态机实现的问题。

0 投票
4 回答
2153 浏览

testing - 如何避免全局状态?

所以,我正在阅读谷歌测试博客,它说全局状态很糟糕,很难编写测试。我相信——我的代码现在很难测试。那么如何避免全局状态呢?

我使用全局状态(据我所知)最重要的事情是管理我们的开发、验收和生产环境之间的关键信息。例如,我有一个名为“Globals”的静态类和一个名为“DBConnectionString”的静态成员。当应用程序加载时,它会确定要加载的连接字符串,并填充 Globals.DBConnectionString。我在 Globals 类中加载文件路径、服务器名称和其他信息。

我的一些函数依赖于全局变量。因此,当我测试我的函数时,我必须记住首先设置某些全局变量,否则测试将失败。我想避免这种情况。

有没有管理状态信息的好方法?(或者我是否错误地理解了全局状态?)

0 投票
8 回答
12317 浏览

state - 维持状态的方式比较

有多种方法可以在 Web 开发中使用来维护用户状态。

我现在能想到的有这些:

  1. 请求参数

  2. 饼干

  3. 表单方法(Get 和 Post)

  4. Viewstate(我猜只有 ASP.NET)

  5. 会话(InProc Web 服务器)

  6. 会话(专用网络服务器)

  7. 会话(数据库)

  8. 本地持久性(Google Gears)(感谢 Steve Moyer)等。

我知道每种方法都有自己的优点和缺点,比如 cookie 不安全,QueryString 有长度限制,而且看起来很丑!;)

但是,在设计 Web 应用程序时,我总是对为什么应用程序使用什么方法或要避免什么方法感到困惑。

我想知道的是您通常使用哪些方法,并且会推荐或更有趣的是您希望在某些情况下避免使用哪些方法,为什么?

0 投票
12 回答
3415 浏览

cookies - Web Dev - 在哪里存储类似购物车的对象的状态?

您正在构建一个 Web 应用程序。您需要在用户会话期间存储类似购物车的对象的状态。

一些注意事项:

  • 这不完全是购物车,而更像是用户正在构建的行程......但我们现在将使用购物车这个词,b/c ppl 与之相关。
  • 您不关心“废弃”的购物车
  • 购物车完成后,我们会将其保存到一些服务器端数据存储中以供以后检索。

你在哪里存储有状态的对象?又如何

  • 服务器(会话、数据库等?)
  • 客户端(cookie key-vals、cookie JSON 对象、隐藏的表单域等?)
  • 其他...

更新:有人建议我列出我们的目标平台——虽然我不确定它是否完全必要……但可以说前端是使用 ASP.NET MVC 构建的。

0 投票
13 回答
3282 浏览

asp.net - 我必须在 ASP.NET 中使用 Viewstate

我正在从经典的 ASP 迁移到 ASP.NET,并且遇到了你们许多人已经知道的“视图状态”。我的假设可能会过激,但它看起来非常麻烦。过去我开发了许多 ASP 表单,并且从未遇到过保持状态的问题。有没有其他方法或者我必须在 ASP.NET 中学习这个 Viewstate 的东西?我使用 Visual Studio 2008、VB.NET 作为语言背后的代码,以及带有 SQL Server 2005 的 Framework v3.5。

0 投票
2 回答
2554 浏览

process - 我将如何拍摄流程快照以保留其状态以供将来调查?这可能吗?

我不知道这是否可能,但它会非常有用!

我有一个定期失败的进程(在 Windows 2000 中运行)。然后我只有一次机会对它做出反应,然后不得不重新启动它并痛苦地等待它再次失败。我没有写这个过程,所以没有调试的源代码。失败似乎是随机的。

通过对过程的快照,我可以反复快速地测试对失败的反应。

我曾想过在虚拟机中运行,但在这种情况下这是不可能的。

编辑:@Jon Cage 问:

当您说快照时,您的意思是捕获即将失败的进程(包括内存,程序状态等)......然后在最后几秒钟反复重播它以查看它对其他组件有什么影响?

这正是我的意思!

0 投票
6 回答
253 浏览

time - 状态和时间穿越逻辑和程序流程?

想知道使用一些参考键索引应用程序的每个可能状态是否有用......

意思是,假设我们有一个启动的程序,只有这么多可能的结果,比如 8。

但是如果每个结果都是通过更多的逻辑状态来获得的,并且在每个分支之间被认为是一个状态并映射到一个键。

在大型程序中可能会占用大量内存,但如果我们可以直接访问密钥(密钥可以基于时间或逻辑深度),那么我们可以立即遍历任何可能的情况,而无需启动整个过程再次使用新数据。

可以把它想象成一棵树,其中没有子节点的节点是最终结果,节点与其父节点或子节点之间的每个分支都是一个“状态”,每个分支都有不同的键控。因此,虽然只有 8 个叶子,或者该过程的最终结果,但可能存在许多“状态”,具体取决于逻辑在没有子节点之前沿着树向下走的深度。

也许用于模拟,但这需要大量内存。

0 投票
2 回答
3349 浏览

java - 使用备忘录模式(和命令)存储复杂对象的状态

我正在开发一个使用 Java 的小型 UML 编辑器项目,这是我几个月前开始的。几周后,我得到了一个 UML 类图编辑器的工作副本。

但是现在,我完全重新设计它以支持其他类型的图表,例如序列、状态、类等。这是通过实现一个图形构建框架来完成的(Cay Horstmann 在该主题上的工作给我很大启发紫罗兰色 UML 编辑器)。

重新设计进展顺利,直到我的一位朋友告诉我,我忘记在项目中添加 Do/Undo 功能,在我看来,这是至关重要的。

想起面向对象的设计课程,我立刻想到了 Memento 和 Command 模式。

这是交易。我有一个抽象类 AbstractDiagram,它包含两个 ArrayList:一个用于存储节点(在我的项目中称为 Elements),另一个用于存储边缘(在我的项目中称为 Links)。该图可能会保留一堆可以撤消/重做的命令。很标准。

如何有效地执行这些命令?比如说,我想移动一个节点(该节点将是一个名为 INode 的接口类型,并且会有从它派生的具体节点(ClassNode、InterfaceNode、NoteNode 等))。

位置信息作为属性保存在节点中,因此通过修改节点本身中的属性,状态会改变。刷新显示时,节点将移动。这是模式的 Memento 部分(我认为),不同之处在于对象是状态本身。

此外,如果我保留原始节点的克隆(在它移动之前),我可以回到它的旧版本。相同的技术适用于节点中包含的信息(类或接口名称、注释节点的文本、属性名称等)。

问题是,在图中,如何在撤消/重做操作时将节点替换为其克隆?如果我克隆图表引用的原始对象(在节点列表中),则克隆不是图表中的引用,唯一指向的是命令本身!我是否应该在图中包含根据 ID 查找节点的机制(例如),以便我可以在图中用其克隆替换节点(反之亦然)?是否由 Memento 和 Command 模式来做到这一点?链接呢?它们也应该是可移动的,但我不想只为链接创建一个命令(一个只为节点创建一个命令),我应该能够根据命令对象的类型修改正确的列表(节点或链接)指的是。

你将如何进行?简而言之,我无法以命令/备忘录模式表示对象的状态,以便可以有效地恢复它并在图表列表中恢复原始对象,具体取决于对象类型(节点或链接)。

非常感谢!

纪尧姆。

PS:如果我不清楚,请告诉我,我会澄清我的信息(一如既往!)。

编辑

这是我在发布此问题之前开始实施的实际解决方案。

首先,我有一个 AbstractCommand 类定义如下:

然后,使用 AbstractCommand 的具体派生来实现每种类型的命令。

所以我有一个移动对象的命令:

我还有一个 MoveRemoveCommand(用于...移动或删除对象/节点)。如果我使用 instanceof 方法的 ID,我不必将图表传递给实际的节点或链接,以便它可以将自己从图表中移除(我认为这是一个坏主意)。

AbstractDiagram 图;可添加对象;AddRemoveType 类型;

最后,我有一个 ModificationCommand,用于修改节点或链接的信息(类名等)。这可能在将来与 MoveCommand 合并。这个类暂时是空的。我可能会使用一种机制来确定修改后的对象是节点还是边(通过 instanceof 或 ID 中的特殊表示)来执行 ID 操作。

这是一个好的解决方案吗?

0 投票
2 回答
2401 浏览

c# - ASP.NET 会话状态服务器 - 保存未序列化的数据

如您所知,在 ASP.NET 中,您可以使用以下三种模式之一存储会话数据:

  • 进程内
  • 会话状态
  • SQL 服务器

对于 InProc 模式,您可以存储任何类型的数据对象,即使它不可序列化。但是,在会话状态和 SQL Server 模式下,您只能存储序列化数据。

在我的项目中,我有一个现成的门户,它使用“InProc”模式来存储其会话。由于一些可扩展性和故障处理问题,我需要使用会话状态。

此门户在会话上下文中内部存储未序列化对象的问题(即存储的对象不实现 ISerializable 接口)。我无法访问他们的代码。是否有任何解决方法,以便我能够将会话对象存储在 State Server 中而无需更改其代码。如果这有任何帮助,我仍然可以访问他们的 web.config 文件。