赞
踩
最近在看spring cloud重试机制的时候,看见了幂等性这个概念,所以去查了一些具体的意思。查完之后感觉其实跟那个struts2控制表单重复提交时一样的意思,那个也是幂等性。幂等性的源头是数学上的定义:f(f(x)) = f(x)。x被函数f作用一次和作用无限次的结果是一样的。幂等性应用在软件系统中,我把它简单定义为:某个函数或者某个接口使用相同参数调用一次或者无限次,其造成的后果是一样的
- public class Main {
- private int i = 0;
-
- //这个方法不具有幂等性,每调用一次,它就会改变Main的状态(即改变了i)
- public void idempotent() {
- i++;
- }
-
- //幂等性,无论这个方法调用多少次,它都不会改变Main类的状态。
- public void simple() {
- System.out.println(i);
- }
- }
看完这些,你似乎对幂等性有了更深的了解。那么幂等性问题会出现在哪些场景呢?
幂等表示:请求服务器一次或是多次,返回的结果均是一样的【select 】一般是GET请求
非幂等表示:请求服务器不同的次数,返回的结果将是不一样的[update delete] 一般是POST请求
重要方法 | 安全 | 幂等 |
GET | 是 | 是 |
POST | 否 | 否 |
PUT | 否 | 是 |
DELETE | 否 | 是 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。