首页IT科技幂等律离散数学(幂等性是什么?)

幂等律离散数学(幂等性是什么?)

时间2025-05-01 09:38:03分类IT科技浏览7500
导读:一. 幂等性: 所谓的幂等性,是分布式环境下的一个常见问题,一般是指我们在进行多次操作时,所得到的结果是一样的,即多次运算结果是一致的。...

一. 幂等性:

所谓的幂等性               ,是分布式环境下的一个常见问题                      ,一般是指我们在进行多次操作时       ,所得到的结果是一样的        ,即多次运算结果是一致的               。

也就是说                      ,用户对于同一操作               ,无论是发起一次请求还是多次请求        ,最终的执行结果是一致的                      ,不会因为多次点击而产生副作用                      。

二. 什么情况下会产生重复提交(非幂等性)

以下几种情况会导致非幂等性的结果出现:

连续点击提交两次按钮;

点击刷新按钮;

使用浏览器后退按钮重复之前的操作               ,导致重复提交表单;

使用浏览器历史记录重复提交表单;

浏览器重复地HTTP请求等       。

而幂等性的核心思想,其实就是保证这个接口的执行结果只影响一次                      ,后续即便再次调用                      ,也不能对数据产生影响,所以基于这样一个需求               ,我们如何解决幂等性问题呢?

三. 解决方法

1.前端js提交禁止按钮可以用一些js组件

2.使用Post/Redirect/Get模式

在提交后执行页面重定向                      ,这就是所谓的Post-Redirect-Get (PRG)模式        。简言之       ,当用户提交了表单后               ,你去执行一个客户端的重定向                      ,转到提交成功信息页面                      。这能避免用户按F5导致的重复提交       ,而其也不会出现浏览器表单重复提交的警告        ,也能消除按浏览器前进和后退按导致的同样问题               。

3.借助数据库操作

insert唯一索引                      ,保证插入的数据只有一条        。另外也可以基于悲观锁或者乐观锁               ,先查询后判断        ,首先通过查询数据库是否存在数据                      ,如果存在证明已经请求过了               ,直接拒绝该请求;如果没有存在,就证明是第一次进来                      ,直接放行                      。

4.session机制(后台服务端)在服务器端                      ,生成一个唯一的标识符,将它存入session               ,同时将它写入表单的隐藏字段中                      ,然后将表单页面发给浏览器       ,用户录入信息后点击提交               。另外在服务器端               ,获取表单中隐藏字段的值                      ,与session中的唯一标识符比较       ,如果相等说明是首次提交        ,就处理本次请求                      ,然后将session中的唯一标识符移除               ,如果不相等即重复提交。

5.Redis token机制

每次接口请求前先获取一个token        ,然后再下次请求的时候在请求的header体中加上这个token                      ,后台进行验证                      。如果验证通过删除token               ,下次请求再次判断token是否相等,如果不相等即重复提交                      。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
wordpress站内搜索(使用WordPress百度SEO插件提升网站搜索排名) ant design pro vue 教程(使用antv/G6在vue项目中开发较复杂样式流程图)