问题标签 [consistency]
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.
asp.net - 如何处理 Web 应用程序中 Session 的竞争条件?
我在一个 ASP.NET 应用程序中有大量的 AJAX 请求。
一旦用户登录我们的 Web 应用程序,就会创建一个会话来存储该用户状态的信息。目前,我们保持会话数据一致的解决方案非常简单和残酷:每个请求在被处理之前都需要获取一个独占锁。
这适用于传统的 Web 应用程序。但是,当 Web 应用程序转而支持 AJAX 时,它变得不高效。很有可能多个 AJAX 请求同时发送到服务器而不重新加载网页。如果所有的 AJAX 请求都被排他锁序列化,那么响应就不会那么快了。无论如何,许多不访问相同会话变量的 AJAX 请求也会被阻止。
如果我们没有为每个请求设置独占锁,那么我们需要仔细处理所有竞争条件以避免死锁。恐怕这会使代码变得复杂和错误。
那么,是否有任何最佳实践来保持会话数据一致并保持代码简洁明了?
linux - 嵌入式系统的堆一致性检查
我遇到这样的崩溃:
我想这是一个堆损坏问题。uclibc 没有 mcheck/mprobe。Valgrind 似乎不支持 MIPS 并且我的应用程序(它是多线程的)取决于硬件特定的驱动程序。检查堆的一致性和检测损坏有什么建议吗?
c++ - 放置操作员功能的一致性
我有这样的课:
但是,我也希望能够做一些事情,2 * A
而不是只被允许做A * 2
,所以我需要在课堂之外使用这样的功能:
为了保持一致性,我应该将所有这些运算符放在课堂之外,还是应该一半在里面,一半在外面?
qt - Qt 的 QList:获取列表中项目数的规范形式是什么?
Qt 的 QList 类提供了几种获取列表中项目数量的方法——计数、长度和大小。众所周知,一致性很重要,那么哪一个应该是使用这 3 个的规范/首选方法?
java - 使用触发器确保数据一致性
我有一个存储在表中的层次结构。每个元素都有一个指向其上一个、下一个和一个父元素的指针
我有一个 java 应用程序,它使用 O/R 映射来访问和修改这个表。有时我的目录已损坏,例如它们是没有相同父级的链接元素。我想知道是否可以使用 Oracle 触发器或其他纯 SQL 技术(没有 Java 代码)来确保数据一致性。
这是做事的“正确方式”吗?
如何实现触发器?我可以实现一个存储过程来验证我的表。就像是
应该返回 0。
但是我怎么能在提交时调用它呢?我不想在每次行更新时都调用它,就在提交完成之前,如果我的表无效,则有可能回滚。
.net - 控制多用户 Web 应用程序网格视图中的并发性
伙计们,我有一个大问题。
我正在运行一个后台应用程序,想象一下,我有一个包含可编辑网格视图的表单。
- 100 位用户访问该页面
- 100 用户查看表单页面作为数据库提供的数据
- 100 个用户编辑一些字段
- 在这个例子中如何控制最终数据和一致性?
python - 扭曲的 RPC 是否保证按顺序到达?
我正在使用twisted来实现客户端和服务器。我已经在客户端和服务器之间设置了 RPC。所以在我做的客户端上,这意味着在客户端传输上protocol.REQUEST_UPDATE_STATS(stats)
发送一条消息,该消息是. 当服务器接收到这个消息时,服务器协议上的函数被调用,它解码它,并根据消息调用一个函数,就像在这个例子中一样。transport.write
["update_stats", stats]
dataReceived
CMD_UPDATE_STATS(stats)
如果在客户端上,我执行以下操作:
...我是否保证消息在服务器上的"stats1"
消息之前到达"stats2"
?
更新:为更清晰而编辑。但现在答案似乎很明显——不可能。
c++ - 保持用户界面最新的最佳方式?
这个问题是我的问题的细化观察数据变化的不同方式。
我的 C++ 应用程序中仍然有很多类,它们在复杂的数学例程和复杂的业务逻辑中经常更新(或可能更新)。
如果我采用“观察者”方法,并在每次更改实例值时发送通知,我将面临两大风险:
- 发送通知本身可能会严重降低应用程序的速度
- 如果用户界面元素需要通过更改进行更新,则它们会随着每次更改而更新,从而导致例如屏幕在某些业务逻辑正在执行时被更新数千次
有些问题可以通过添加缓冲机制来解决(当你要开始一个算法,当算法完成时,你会发送通知),但是由于业务逻辑可能在软件的很多地方执行,我们在菜单中选择了每个可能的操作之后,最终几乎在所有地方都添加了缓冲。
除了“观察者”方法,我还可以使用“标记-脏”方法,只标记已更改的实例,并在操作结束时告诉用户界面它应该自我更新。
同样,业务逻辑可以在应用程序中的任何地方执行,因此在实践中,我们可能必须在用户执行几乎每个操作之后添加一个额外的调用(告诉所有窗口它们应该自己更新)。
两种方法似乎都有相似但相反的缺点:
- 使用“观察者”方法,我们有更新用户界面太多次的风险
- 使用“mark-dirty”方法,我们有根本不更新用户界面的风险
这两个缺点都可以通过将每个应用程序操作嵌入到额外的逻辑中来解决(对于观察者:发送开始结束通知,对于标记脏:发送更新自己的通知)。
请注意,在非窗口应用程序中,这可能不是问题。例如,您可以使用 mark-dirty 方法,并且仅当某些计算需要数据时,它可能需要做一些额外的处理以防数据脏(这是一种缓存方法)。
但是,对于窗口应用程序,没有信号表明用户正在“查看您的屏幕”并且应该更新窗口。因此,您必须查看脏数据的真正好时机(尽管您可以对焦点事件做一些技巧)。
解决这个问题的好方法是什么?您是如何在应用程序中解决此类问题的?
请注意,我不想在我的应用程序的计算/数据模型部分引入窗口技术。如果需要窗口技术来解决这个问题,它只能用于我的应用程序的用户界面部分。
任何的想法?
class - 方法/类注释应该一致地应用还是仅在需要的基础上应用?
为了保持一致性,我总是将注释(以 JavaDoc 的形式)应用于所有方法和类,即使它们是简单的 getter 和 setter 方法或非常小的包装类。但我也在努力编写经常使注释变得多余的自记录代码;即只在需要的地方写注释(在这样做之前,试着重写代码,这样你就根本不需要注释了)。因此,这两种方法似乎相互矛盾。
那么描述方法或类的注释应该以一致的方式应用,还是应该仅在定义中含义不完全清楚时才编写此类注释?