首页 > 其他分享 >数据结构 幂等性是什么?

数据结构 幂等性是什么?

时间:2023-05-10 21:13:52浏览次数:42  
标签:浏览器 请求 重复 什么 表单 token 提交 数据结构

https://blog.csdn.net/qq_34801169/article/details/114374827

一、幂等性:

幂等性,是分布式环境下的一个常见问题,一般是指我们在进行多次操作时,所得到的结果是一样的,即多次运算结果是一致的。
也就是说,用户对于同一操作,无论是发起一次请求还是多次请求,最终的执行结果是一致的,不会因为多次点击而产生副作用。

二、什么情况下会产生重复提交(非幂等性)
以下几种情况会导致非幂等性的结果出现:

连续点击提交两次按钮;
点击刷新按钮;
使用浏览器后退按钮重复之前的操作,导致重复提交表单;
使用浏览器历史记录重复提交表单;
浏览器重复地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是否相等,如果不相等即重复提交。

标签:浏览器,请求,重复,什么,表单,token,提交,数据结构
From: https://www.cnblogs.com/beatleC/p/17389344.html

相关文章

  • 关于数据结构
    1月15日,TSOI2022迎来了曾获NOI铜牌的Vergil学长!而Vergil线下课的第一个板块就是——数据结构。本文会梳理Vergil所讲的所有数据结构,我们进入正题。2023.2.14感谢大佬L3067545513帮忙修改LCA~2023.2.19ST表被批评了QAQ线段树引入线段树,顾名思义,我们......
  • mapper接口开发--条件,为什么是接口、参数
    三个必要条件_mapper.java和_mapper.xml需要在同一个目录这就是为什么看到resources有同样的包xml中的namespace为mapper.java的全限定路径mapper.xml的id和mapper.java的方法名字、参数类型、返回值一致最后通过sqlSession.getMapper(*mapper.class)得到接口,这样就可以......
  • ArcGIS软件是干什么的?地理信息分析软件ArcGIS下载安装功能使用
    ArcGIS是一个强大的地理信息系统软件,它可以用于地图制作、数据管理和空间分析等多个领域。而在这些领域中,ArcGIS具有许多独特的功能,可以帮助用户快速准确地进行地理信息数据处理和分析。在本文中,我们将主要介绍ArcGIS的三个独特功能:三维建模、空间插值和数据驱动页面,并通过实际案例......
  • 什么是控制反转
    IOC的目标是解耦、屏蔽对象的实现细节; Spring控制反转的理解:Spring框架管理Bean的创建工作,即由原来的用户管理Bean转变为框架管理Bean,这个过程叫做控制反转(Invertionofcontrol)Spring框架托管创建的Bean放在哪里了?放在了IocContainer中,即所谓的Ioc容器Spring框架......
  • 自建CA和公共CA有什么不同?
    据统计,全球有数百个公共CA,通常它们是按国家地区进行划分的。这类CA受大众的广泛认可和使用,也被称为公共信任的证书颁发机构。但是由于一些大型企业拥有许多站点,为了更轻松高效的管理以及考虑到维护成本,适合企业内部使用的自建CA显然成为了更好的选择。那么自建CA与公共CA究竟有什......
  • text-davinci-003和ChatGPT是什么关系呢?
     先看下GPT的发展时间线InstructGPT(2022年1月)是一系列GPT-3模型(包括text-davinci-001、text-davinci-002和text-davinci-003)统称,于GPT-3相比,它的最大不同是针对人类指令(reinforcementlearningwithhumanfeedback,RLHF)进行了微调;InstructGPT产生的幻觉更少......
  • 2022年考研数据结构_3 栈和队列
    文章目录3.栈和队列3.1栈3.1.1栈的定义3.1.2栈的实现3.1.3栈的应用(1)递归(2)四则运算表达式求解①中缀表达式转后缀表达式②后缀表达式的计算3.2队列3.2.1队列的定义3.2.2队列的实现3.2.2队列的应用3.3应用3.3.1表达式语言表示1--中缀转后缀语言表述2--中缀转后缀优......
  • count(*)、count(1)、count(列名)有什么区别
    转载:https://juejin.cn/post/6854573219089907720https://juejin.cn/post/7152086171244298254......
  • PBR流程的基本原理是什么?
     Hello,大家好,今天给大家带来PBR流程的基本原理与历史发展,我是Secohy。1、什么是PBR?一、基于物理的材质(Material)二、基于物理的光照(Lighting)三、基于物理适配的摄像机(Camera)以上三个部分都去参照物理理论去做引擎设计,理论上就能得到和真实摄像机基本相同的画面。例如基于物......
  • 智能AI可以给我们的生活带来什么
      小凡智能AI是一款开源的人工智能解决方案,它可以帮助像您这样的工作助手更快、更轻松地完成各种各样的任务。无论您是在处理邮件、安排日程、管理任务还是其他工作中,小凡智能AI都能够大幅提升您的工作效率和准确度。小凡智能AI的强大功能源于其优秀的技术架构。其基础算法采用......