发布于 2013-10-11 22:06:16
幂等意味着您可以多次应用该操作,但一个调用的结果状态将无法与多个调用的结果状态区分开来。简而言之,多次调用该方法是安全的。实际上,第二次和第三次(以此类推)调用将不会对程序的状态产生明显影响。
所以如果你关闭这个对象一次,它就关闭了,你没有足够的信息来知道它是否是幂等的。然而,如果你关闭它两次,第一次关闭,但第二次抛出异常,它显然不是幂等的。另一方面,如果您关闭它一次,然后关闭它两次,而第二个关闭导致项以相同的方式保持关闭(可能它是一个noop),那么它是幂等的。
制作幂等Closeable
的一种技术可能是:
public class Example implements Closeable {
private boolean closed;
public Example() {
closed = false;
}
public void close() {
if (!isClosed()) {
closed = true;
}
}
public boolean isClosed() {
return closed;
}
}
现在很明显,如果close()
被调用一次或多次,则通过isClosed()
返回的所有状态都将永远返回true。因此,方法close()
将被认为是幂等的。
发布于 2017-01-05 11:01:52
没有代码的概念的解释
对于adopt Einstein's aphorism来说,如果你做同样的事情,得到不同的结果,那么这个方法就不是幂等的。
幂等性的示例
"Please sir, can I have a pay rise?"
"No"
Same result every time。要求加薪是一个幂等操作。
HTTP请求的示例:
get
请求:如果正确实现,则无论您发出此请求多少次,都将得到相同的响应。例如,post
请求-每次执行此操作时,您都会更改要将其发布到的应用程序的状态:每次都会创建一个新资源!发布于 2017-02-22 14:26:55
术语表幂等
如果方法的编写方式使得对同一方法的重复调用不会导致重复更新,则该方法称为“幂等”。
在数学中,幂等元,或简称为幂等元,是指当乘以自身时,作为结果的任何东西。例如,只有0和1这两个实数是幂等的。
在用户界面设计中,如果一个按钮被多次按下,其效果与按一次按钮的效果相同,那么它可以被称为“幂等按钮”。例如,如果“暂停”按钮切换了暂停状态,那么它就不是幂等按钮。另一方面,如果多次按下它会使系统暂停,并且继续按“播放”,那么“暂停”就是幂等的。这在诸如红外遥控器和触摸屏的界面中是有用的,在这些界面中,用户可能不确定已经成功地按下了按钮,并且可能再次按下该按钮。电梯呼叫按钮也是幂等的,尽管许多人认为它们不是。
https://stackoverflow.com/questions/19320115
复制相似问题