language-agnostic - 什么是幂等操作?

标签 language-agnostic definition idempotent

什么是幂等操作?

最佳答案

在计算中,幂等操作是指如果使用相同的输入参数多次调用该操作,则不会产生额外效果。例如,从集合中删除项目可以被视为集合上的幂等操作。

在数学中,幂等运算是指f(f(x)) = f(x)。例如,abs() 函数是幂等的,因为对于所有 x 来说,abs(abs(x)) = abs(x)

可以通过考虑数学定义中的x表示对象的状态,而f是可能改变该对象的操作来协调这些略有不同的定义。例如,考虑 Python set及其 discard 方法。 discard 方法从集合中删除一个元素,如果该元素不存在则不执行任何操作。所以:

my_set.discard(x)

与执行两次相同操作具有完全相同的效果:

my_set.discard(x)
my_set.discard(x)

幂等操作经常用于网络协议(protocol)的设计中,其中执行操作的请求保证至少发生一次,但也可能发生多次。如果操作是幂等的,那么执行该操作两次或多次没有什么坏处。

请参阅有关 idempotence 的维基百科文章了解更多信息。

<小时/>

上面的答案之前有一些不正确和误导性的例子。下面的评论是 2014 年 4 月之前写的,涉及较旧的修订版。

关于language-agnostic - 什么是幂等操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1077412/

相关文章:

c - 为什么一个结构允许有 "pointer to its own type"作为成员而不是 "(an array of the) structure type"本身?

c - 如何知道数组中有多少个模式段?

java - 使用 Apache Camel 重复从只读文件系统轮询文件(幂等 = false)?

apache-kafka - Apache kafka exactly once 实现不发送消息

oop - 函数和方法之间的区别很简单?

language-agnostic - 什么时候开始考虑扩展的好时机?

c++ - 递归类型真的是构建非连续任意大小数据结构的唯一方法吗?

Scala平面图签名定义

language-agnostic - 编写一段处理上升和下降的代码的最优雅的方法是什么?

java - 如何使用 junit 测试方法的幂等性?