问题标签 [idempotent]

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 投票
4 回答
307 浏览

.net - 当类没有实现 IEnumerable 时,GetEnumerator 方法是否仍然是幂等的

这个问题背负了我提出的另一个问题,即通过在迭代对象时修改对象来滥用 IEnumerable 接口。

普遍的共识是任何实现 IEnumerable 的东西都不应该是幂等的。但是 .net 支持使用 foreach 语句进行编译时鸭子类型。任何提供 IEnumerator GetEnumerator() 方法的对象都可以在 foreach 语句中使用。

那么GetEnumerator方法应该是幂等的还是实现IEnumerable的时候呢?

编辑(添加上下文)

为了说明这一点,我建议的是,在遍历队列时,每个项目都会随着它的进行而出队。此外,在调用 GetEnumerator 之后推入队列的任何新对象仍将被迭代。

0 投票
1 回答
699 浏览

wcf - 如何处理服务层的幂等性?

我有一个 SOA 应用程序,我想在服务层上加入一些幂等机制。我正在使用 WCF 进行消息传递。

您如何处理应用程序中的幂等性?你有一些示例代码吗?我的目标是防止多次处理同一消息(例如 CreateOrder)(如果这样配置)。

0 投票
6 回答
9083 浏览

function - 幂等函数和纯函数一样吗?

我阅读了维基百科对幂等性的解释。我知道这意味着一个函数的输出是由它的输入决定的。但我记得我听说过一个非常相似的概念:纯函数。我谷歌他们,但找不到他们的区别......

它们是等价的吗?

0 投票
4 回答
90059 浏览

rest - 第二次使用 HTTP DELETE 删除资源时的状态码

鉴于 HTTP 中的 DELETE 动词是幂等的,当我发出以下请求时,我第二次(或第三次,或第四次等)会发生什么?

第一次,资源被删除,我返回204(成功,无内容)。我应该在后续调用中返回 204 还是返回 404(未找到)?

0 投票
1 回答
477 浏览

python - 任务队列和非幂等任务

我正在开发一个投票应用程序,用户可以在其中上传所有选民的电子邮件地址列表。在进行了一些错误检查后,我Voter为每个选民创建了一个实体。由于可能有大量选民,我在任务队列中创建Voter实体以避免 30 秒的限制,任务如下所示:

然而,这个任务不是幂等的。有没有办法使这个任务幂等?还是有更好的方法来做到这一点?

0 投票
3 回答
670 浏览

http - 取消订阅链接是否需要幂等?

所以我们有一个取消订阅链接——这本质上是一个 HTTP GET。

适当的RFC说这应该是幂等的,但在我看来,用户期望他们单击​​链接以采取行动。

我已经实现了这一点,以便链接将您带到一个页面,该页面有一个大的确认按钮,然后更新您的订阅,确认并显示您帐户的最终状态(我们有不止一种类型的订阅)

但是我想知道如果这个人只是跳过了确认按钮阶段,这会不会是一个更好的用户体验......

“我是不是想多了?”这个问题的答案 肯定是的,但我想知道人们对平衡幂等 GET 的最佳实践与不混淆用户期望的最佳实践的看法是什么……

0 投票
2 回答
3644 浏览

database - 什么样的数据库操作同时是“幂等的和可交换的”?

我正在研究 Scala DB 框架/包装器,并从 Twitter 遇到了 Gizzard。起初我印象深刻,但当我读到限制时,我冷静下来。他们说您所做的所有数据库操作都必须是幂等可交换的。如果我理解正确,这基本上几乎没有留下任何东西。例如,如果我有一个带有整数计数器的实体,并且它必须递增。我可以使用“增量”操作或“设置”操作。但是增量不是幂等的(如果你运行它两次,你会得到不同的结果然后运行一次),并且 set 不会是可交换的(先设置 5 然后设置 2 给出不同的结果,然后设置前两个然后设置 5)。那么除了“insert-if-absent”之外还有什么东西,这对于大多数用例来说不是很有用。分布式数据库框架的意义何在,它是如此受限以至于您基本上无法用它做任何有用的事情?我一定错过了一些重要的事情。

[编辑]除了“insert-if-absent”(和“delete-if-present”)之外,我认为“compare-timestamp-and-set”将是幂等和可交换的,如果更改排队而不是被丢弃,当仍然缺少“以前的更改”时。但我不知道是否有任何数据库实现了这一点。

0 投票
1 回答
1839 浏览

java - Hibernate 幂等更新

我试图在网上搜索这个但徒劳无功。有没有办法使用休眠来执行幂等更新。

一个用例是使用 HTTP PUT 通过 REST API 更新数据库中的特定字段。因此,例如,如果我有一个包含以下列的数据库:Id、Name、Phone、UpdateDate并且我用相同的值多次更新Phone字段(特定Id的)只有我的第一个操作必须更新电话(并且还更改我的更新日期)。后续更新必须对记录(和UpdateDate)没有影响。

虽然这可以通过在执行更新之前首先获取记录并将其与我的输入值进行比较来在应用程序中实现。我想知道 Hibernate 是否有任何内置功能?

0 投票
2 回答
1208 浏览

azure - 天蓝色幂等操作的模式?

有人知道将幂等操作设计为天蓝色操作的模式,特别是表存储吗?更常见的方法是生成一个 id 操作并将其缓存以验证新的执行,但是,如果我有十几个工人处理操作,这种方法会更加复杂。:-))

谢谢

0 投票
1 回答
664 浏览

ruby-on-rails - 对幂等性、PUT、GET、POST 等感到困惑

大多数关于这些主题的讨论都是关于如何形成 URL 或如何请求资源。让我描述一下我在做什么,看看社区是否可以帮助我用更专业的网页设计语言重申我的问题:-)

我正在构建一个硬件,我想你会称之为“网络设备”。类似于在线气象站,它将位于家庭 LAN 上并将消息发送到远程服务器。假设每 5 分钟它会发送一条记录:

收集这些数据的“空中网页”是一个 Ruby-on-Rails 应用程序,其中包含设备 ID 和样本表。

我希望网络设备能够通过编写类似于以下内容的 URL 将新样本直接发布到“样本”数据表:

http://kevinswebsite.com/samples/new?timestamp=2011_Oct_01_1440&unit_id=75&temp=75.5

以上应创建一个记录,即 2011 年 10 月 1 日下午 2:40,Unit #75 报告的温度为 75.5 度。

这样的事情可能吗?

谢谢,

凯文