精华内容
下载资源
问答
  • 【总结】高并发-幂等实现方案

    千次阅读 2018-09-28 14:30:38
    更复杂的操作幂等保证是利用唯一交易号(流水号)实现.   我的理解:幂等就是一个操作,不论执行多少次,产生的效果和返回的结果都是一样的   三、技术方案   1. 查询操作   查询一次和查询多次,在数据不变的...

    一、背景 
    我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 


    例如: 
    1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。 
    2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱; 
    3. 发送消息,也应该只发一次,同样的短信发给用户,用户会哭的; 
    4. 创建业务订单,一次业务请求只能创建一个,创建多个就会出大问题。 

    等等很多重要的情况,这些逻辑都需要幂等的特性来支持。 

    二、幂等性概念 
    幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。 

    在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“getUsername()和setTrue()”函数就是一个幂等函数. 

    更复杂的操作幂等保证是利用唯一交易号(流水号)实现. 

    我的理解:幂等就是一个操作,不论执行多少次,产生的效果和返回的结果都是一样的 

    三、技术方案 
    1. 查询操作 
    查询一次和查询多次,在数据不变的情况下,查询结果是一样的。select是天然的幂等操作 

    2. 删除操作 
    删除操作也是幂等的,删除一次和多次删除都是把数据删除。(注意可能返回结果不一样,删除的数据不存在,返回0,删除的数据多条,返回结果多个) 

    3.唯一索引,防止新增脏数据 
    比如:支付宝的资金账户,支付宝也有用户账户,每个用户只能有一个资金账户,怎么防止给用户创建资金账户多个,那么给资金账户表中的用户ID加唯一索引,所以一个用户新增成功一个资金账户记录 

    要点: 
    唯一索引或唯一组合索引来防止新增数据存在脏数据 
    (当表存在唯一索引,并发时新增报错时,再查询一次就可以了,数据应该已经存在了,返回结果即可)
     

    4. token机制,防止页面重复提交 
    业务要求: 
    页面的数据只能被点击提交一次 
    发生原因: 
    由于重复点击或者网络重发,或者nginx重发等情况会导致数据被重复提交 
    解决办法: 
    集群环境:采用token加redis(redis单线程的,处理需要排队) 
    单JVM环境:采用token加redis或token加jvm内存 
    处理流程: 
    1. 数据提交前要向服务的申请token,token放到redis或jvm内存,token有效时间 
    2. 提交后后台校验token,同时删除token,生成新的token返回 
    token特点: 
    要申请,一次有效性,可以限流 

    注意:redis要用删除操作来判断token,删除成功代表token校验通过,如果用select+delete来校验token,存在并发问题,不建议使用 

    5. 悲观锁 
    获取数据的时候加锁获取 
    select * from table_xxx where id='xxx' for update; 
    注意:id字段一定是主键或者唯一索引,不然是锁表,会死人的 
    悲观锁使用时一般伴随事务一起使用,数据锁定时间可能会很长,根据实际情况选用
     

    6. 乐观锁 
    乐观锁只是在更新数据那一刻锁表,其他时间不锁表,所以相对于悲观锁,效率更高。 

    乐观锁的实现方式多种多样可以通过version或者其他状态条件: 
    1. 通过版本号实现 
    update table_xxx set name=#name#,version=version+1 where version=#version# 
    如下图(来自网上): 

     

    2. 通过条件限制 
    update table_xxx set avai_amount=avai_amount-#subAmount# where avai_amount-#subAmount# >= 0 
    要求:quality-#subQuality# >= ,这个情景适合不用版本号,只更新是做数据安全校验,适合库存模型,扣份额和回滚份额,性能更高 

    注意:乐观锁的更新操作,最好用主键或者唯一索引来更新,这样是行锁,否则更新时会锁表,上面两个sql改成下面的两个更好 
    update table_xxx set name=#name#,version=version+1 where id=#id# and version=#version# 
    update table_xxx set avai_amount=avai_amount-#subAmount# where id=#id# and avai_amount-#subAmount# >= 0
     

    7. 分布式锁 
    还是拿插入数据的例子,如果是分布是系统,构建全局唯一索引比较困难,例如唯一性的字段没法确定,这时候可以引入分布式锁,通过第三方的系统(redis或zookeeper),在业务系统插入数据或者更新数据,获取分布式锁,然后做操作,之后释放锁,这样其实是把多线程并发的锁的思路,引入多多个系统,也就是分布式系统中得解决思路。 

    要点:某个长流程处理过程要求不能并发执行,可以在流程执行之前根据某个标志(用户ID+后缀等)获取分布式锁,其他流程执行时获取锁就会失败,也就是同一时间该流程只能有一个能执行成功,执行完成后,释放分布式锁(分布式锁要第三方系统提供) 

    8. select + insert 
    并发不高的后台系统,或者一些任务JOB,为了支持幂等,支持重复执行,简单的处理方法是,先查询下一些关键数据,判断是否已经执行过,在进行业务处理,就可以了 
    注意:核心高并发流程不要用这种方法 

    9. 状态机幂等 
    在设计单据相关的业务,或者是任务相关的业务,肯定会涉及到状态机(状态变更图),就是业务单据上面有个状态,状态在不同的情况下会发生变更,一般情况下存在有限状态机,这时候,如果状态机已经处于下一个状态,这时候来了一个上一个状态的变更,理论上是不能够变更的,这样的话,保证了有限状态机的幂等。 

    注意:订单等单据类业务,存在很长的状态流转,一定要深刻理解状态机,对业务系统设计能力提高有很大帮助 

    10. 对外提供接口的api如何保证幂等 
    如银联提供的付款接口:需要接入商户提交付款请求时附带:source来源,seq序列号 
    source+seq在数据库里面做唯一索引,防止多次付款,(并发时,只能处理一个请求) 

    重点: 
    对外提供接口为了支持幂等调用,接口有两个字段必须传,一个是来源source,一个是来源方序列号seq,这个两个字段在提供方系统里面做联合唯一索引,这样当第三方调用时,先在本方系统里面查询一下,是否已经处理过,返回相应处理结果;没有处理过,进行相应处理,返回结果。注意,为了幂等友好,一定要先查询一下,是否处理过该笔业务,不查询直接插入业务系统,会报错,但实际已经处理了。
     


    总结: 
    幂等性应该是合格程序员的一个基因,在设计系统时,是首要考虑的问题,尤其是在像支付宝,银行,互联网金融公司等涉及的都是钱的系统,既要高效,数据也要准确,所以不能出现多扣款,多打款等问题,这样会很难处理,用户体验也不好。

    转发地址:https://blog.csdn.net/rdhj5566/article/details/50646599

     

    其他可参考资源:

    1. 幂等策略实现

     

    -----------------------------------------------------

    ------------------------------------------------------

    我的个人域名

     

    期望和大家一起学习,共同进步,共勉,O(∩_∩)O谢谢

    欢迎交流问题,可加个人QQ 469580884

    或者,加我的群号 751925591,一起探讨交流问题

    不讲虚的,只做实干家

    Talk is cheap,show me the code

     

    展开全文
  • 接口幂等实现方案

    千次阅读 2019-01-19 11:03:05
    什么是幂等 数学角度  f(n) = 1^n 。无论n等于多少,f(n)永远值等于1 编程角度  程序无论执行多少次,其产生的结果均与一次执行相同,不会因为重复执行会对系统造成改变 为什么要做幂等      之所以...

    什么是幂等


    • 数学角度

           f(n) = 1^n 。无论n等于多少,f(n)永远值等于1

    • 编程角度
    •       程序无论执行多少次,其产生的结果均与一次执行相同,不会因为重复执行会对系统造成改变

    为什么要做幂等


     

     

               之所以强调幂等,原因在于接口不幂等时,在某些场景下会引发严重的问题:支付、退款、结算等场景时,由于重复点击/操作后,进行了二次处理,导致重复扣款,重复退款,错误结算问题。这时候凡事碰到此问题的用户恐怕心情瞬间崩溃了:   

                                                             

     

    幂等问题引发的常见原因


              引发的原因都有一个共性:短时间内,重复操作。以下场景下可能会发生支付异常导致重复支付:
    1. 网络延迟。请求到后端服务后,后端处理后返回结果的时候网络抖动/延迟。这时前端超时等待结束后再发起请求会导致重复操作行为。
    2. 服务异常。后端因各种异常原因导致服务处理缓

    展开全文
  • 幂等的多种实现方式

    千次阅读 2019-08-10 14:43:55
    文章目录Spring Boot —— 接口幂等设计前言实现方式查询操作删除操作唯一索引token机制悲观锁乐观锁分布式锁select + insert状态机幂等对外提供接口的api如何保证幂等 Spring Boot —— 接口幂等设计 前言 当相同的...

    幂等的多种实现方式

    前言

    当相同的接口相同参数被请求,我们希望只处理一次相同请求。

    实现方式

    查询操作

    查询数据时,无论是查询单条数据,还是查询多条数据,数据返回结果都不会变,select是天然的幂等操作。

    删除操作

    删除操作也是幂等的,无论删除一条,还是删除多条数据,目的是将数据删除,当被删除当数据再次执行,结果也是一样的。

    唯一索引

    防止新增脏数据
    当设置要新增的字段为唯一索引,或这个字段与另外的字段是组合索引时,当请求参数,新增字段一致时,数据库会通过索引机制视为失效。

    token机制

    相同请求只允许提交一次。

    实现思路

    • 集群环境
      采用token加Redis(redis单线程,处理需要排队)。
    • 单JVM进程
      采用token加redis或token加jvm内存。

    实现流程

    主要使用RedisLock —— redis.setnx函数,所以我们要让请求生成统一的redisKey来存储,在这里,我们认为token即是redisKey。

    1. 首次请求服务器时,服务器根据请求参数生成唯一的token(redisKey
    2. 将这个唯一的key保存在redis或者jvm内存中(在使用JVM内存情况下),并设置key有效时间(根据业务设计)
    3. 服务器再次接收请求时,生成规则不变(根据请求参数生成唯一的redisKey),然后先根据redisKey删除redis中的对象,如果删除成功代表请求内容相同。

    上面的例子适用两次请求,当发生3次并发,删除会失败,然后又创建一个相同的线程进行数据持久化处理。
    并发环境下,可以使用Token令牌+分布式锁方式(待更新)

    悲观锁

    SQL - for update
    示例:

    select column_1,column_2....column_N from table where id = 'xxx' for update;
    

    注意:id一定要是主键或者唯一索引,否则锁表会发生错误!!!!
    注意:id一定要是主键或者唯一索引,否则锁表会发生错误!!!!
    注意:id一定要是主键或者唯一索引,否则锁表会发生错误!!!!


    悲观锁使用时一般伴随事务一起使用,数据锁定时间可能会很长,实际根据业务设定

    乐观锁

    乐观锁相对于悲观锁效率更高,因为乐观锁只有在更新表的时候会锁表,其他时候不会锁表,所以效率更高。

    乐观锁实现方式

    • 通过version
    UPDATE TABLE_NAME SET NAME=#name#, VERSION=VERSION+1 WHERE VERSION =#version#
    
    • 通过条件限制
    UPDATE TABLE_NAME SET AVAI_AMOUNT=AVAI_AMOUNT-#SUBAMOUNT# WHERE AVAI_AMOUNT-#SUBAMOUNT# >= 0
    
    标题描述
    要求条件AVAI_AMOUNT-#SUBAMOUNT# >= 0 ,这个情景,适用于不用版本号,只更新做数据安全校验,适合校验库存模型(因为库存不会小于等于0)、扣分额、回滚份额等,这个效率更高。
    注意乐观锁更新操作,最好用主键或者唯一索引来更新,这样是行锁,否则更新时会锁表

    根据“注意”中的提示,上面的两条sql,可优化成下面的样子

    -- 添加where id=
    UPDATE TABLE_NAME SET NAME=#name#, VERSION=VERSION+1 WHERE ID=#id# AND VERSION =#version#
    -- 添加where id=
    UPDATE TABLE_NAME SET AVAI_AMOUNT=AVAI_AMOUNT-#subAmount# WHERE ID=#id# AND  AVAI_AMOUNT-#subAmount# >= 0
    

    分布式锁

    可参考分布式事务所的实现和设计思想,这里不作为详细解释,分布式锁在分布式多进程环境下时,会生成一个唯一“key”(redis和zookeeper都可实现),后续相同操作这个锁是不一致的,在比较长业务扭转中(处理业务较多的场景时),分布式锁可以锁住一整套业务对数据的更新操作,然后提交,失败回滚。
    分布式锁的实现方式很多,也有不同的设计思想,请参照另外的博客:分布式事务(#待更新)

    select + insert

    并发不高的后台系统,或一些任务调度系统(job),可以先查询,在更新操作,以此完成业务操作。
    注意:高并发场景这种方式并不适用。

    状态机幂等

    什么是状态机图

    • 状态机图(State Machine Diagram)用来显示状态机的图,包括简单的状态、转换和嵌套的复合状态等,一个典型的状态机图如下:
      在这里插入图片描述
    • 状态机图的基本元素包括:状态、转移、事件、伪状态和复合状态;
      在这里插入图片描述

    理解状态机幂等,可以理解为我们本身有一整套流程,假定流程有多个状态,只能顺序或按照规定扭转状态(例如Activity),当当前执行状态不是这一步应该执行的,是不允许的,我是这么理解状态机幂等的。例如:状态需要按照 1->3->4->5 的顺序执行,当我执行完1直接到4,是不允许的,保证了有限的状态机幂等。

    注意:在业务扭转流程过长时,要深入理解状态机,并构建状态机图,对业务实现和归根溯源更有帮助!!!

    API如何保证接口幂等

    举例说明

    • 同步数据的时候
      数据来源方调用API进行同步数据,必须传递sourceId(来源)、seq(来源序列号),API提供方,在接收数据之后用这两个字段作为联合索引插入到数据库,每次调用API的时候,先用这两个字段进行校验,保证不重复,这里来源序列号的生成方式可参考雪花算法或者其它唯一主键生成算法。
    • Spring Cloud 接口幂等实现
      Spring Cloud —— 接口幂等实现(#待更新)
    展开全文
  • 幂等技术及实现方式

    千次阅读 2019-07-21 21:36:18
    一、什么是幂等 幂等(idempotent)是一个数学与计算机的概念,常见于抽象代数。...二、幂等实现方案 幂等处理的是多次执行的问题,这并不仅仅出现在并发场景中,无论是顺序执行还是并发执行,都需要做好幂等...

    一、什么是幂等

    幂等(idempotent)是一个数学与计算机的概念,常见于抽象代数。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同,也不同担心重复执行会对系统造成改变,例如,setTrue()函数就是一个幂等函数,无论执行多少次,其结果都是一样的。

    二、幂等的实现方案

    幂等处理的是多次执行的问题,这并不仅仅出现在并发场景中,无论是顺序执行还是并发执行,都需要做好幂等,而幂等的核心是确保唯一性。实现幂等的方式有很多,比如建立数据库唯一索引、创建唯一数据和状态机约束、乐观锁等。

    • 2.1 建立数据库唯一索引

    在数据库中创建唯一索引,用作幂等记录,可以防止插入重复数据。以一个插入业务数据的场景为例,可通过业务维度定义唯一索引作为幂等记录,在插入数据方法中,首先查询该幂等记录是否存在,如果存在则直接返回第一次执行的结果,如果不存在则继续执行,并发场景中可能存在多个线程同时插入幂等记录的情况,这种情况下唯一索引可确保只有一个线程可以插入幂等记录成功,其余线程抛异常。插入幂等记录成功的线程可以继续执行后续操作,抛异常的线程执行事务回滚操作。

    • 2.2 唯一数据

    创建唯一数据的方式有很多种,比如基于tair或redis实现的分布式锁都属于创建唯一数据来实现幂等,以基于tair实现的分布式锁为例:

    
    public boolean tryLock(String lockKey, int expireTime, boolean reentrant) {
    ...
    	ResultCode code = tairManager.put(NAMESPACE, lockKey, getLockValue(), DEFAULT_VERSION, expireTime);
    ...
    }
    
    private String getLockValue() {
        return NetUtils.getLocalIp() + "_" + Thread.currentThread().getName();
    }
    

    将唯一标识作为key通过tryLock方法,如果返回true,说明当前是第一次调用,继续执行幂等方法,如果返回false,则说明key已经被锁定,这是可选择重试、自旋等待、抛异常等不同策略。

    • 2.3 状态机约束

    通过状态机的约束可以实现幂等,如果状态机已处于下一个状态,这时候不能往回跳转到上一个状态,通过状态机的跳转约束,可以做到有线状态机的跳转约束,比如基于状态机实现的乐观锁:

    update table set status=next_status where id=#{id} and status=#{status}
    

    当前状态第一次被修改后,状态被修改为下一种状态,同一记录针对当前状态的其他修改会失败,程序跑出异常,这常见于并发场景的修改。

    • 2.4 基于版本控制的乐观锁

    基于版本控制的乐观锁有多种实现方式,比如基于数据库的版本控制乐观锁实现、基于redis的版本控制乐观锁实现等,以数据库的版本控制乐观锁为例:

    update table set version=version+1 where id=#{id} and version=#{version}
    

    与基于状态机的乐观锁类似,当前版本第一次本修改后,版本加1,同一记录针对当前版本的其他修改会失败而抛出异常,这常见于并发场景。

    参考

    展开全文
  • 幂等实现方式整理

    2020-03-24 14:06:59
    参考 实现幂等性的几种方式
  • 幂等实现思路和细节

    千次阅读 2017-07-25 19:55:12
    向需要使用幂等的方法,添加注解 @MethodCache,编译器,AJC编译器切入该方法,截取方法的执行流,并使用@MethodCache中配置的键供应商、过期时间配置,决定使用缓存的方法返回值还是调用该方法。   哪些...
  • redis实现接口幂等

    2020-11-02 20:03:20
    redis实现接口幂等性 1. 说明 幂等性的概念:任意多次执行所产生得影响均与一次执行的影响相同,对数据库的影响只能是一次性的,不能重复处理。在实际项目中,在客户端没限制幂等性,重复调用接口,导致接口数据重复...
  • go在分布式的环境下,如何实现某个操作的幂等 func Once(conn redis.Conn, key string, seconds int) bool { if seconds == -2 { seconds = int(TomorrowZero().Sub(time.Now()).Seconds()) } rs, e := redis....
  • 本篇文章给大家介绍了使用springboot和拦截器、redis来优雅的实现接口幂等,对于幂等在实际的开发过程中是十分重要的,因为一个接口可能会被无数的客户端调用,如何保证其不影响后台的业务处理,如何保证其只影响...
  • spring boot 实现幂等

    千次阅读 2019-08-09 12:17:47
    spring boot 实现幂等性 背景 在分布式服务中,业务在高并发的情况下会消费者出现多次请求的情况.这个时候如果执行插入的业务操作,则数据库中出现多条数据.造成脏数据的产生.而且也是对资源的浪费. 此时我们需要做的...
  • 数据库方式实现接口幂等

    千次阅读 2020-02-08 23:47:36
    幂等性:对于同一笔业务操作,不管调用多少次,得到的结果都是一样的。 以对接支付宝充值为例,如果我们系统对接支付宝充值功能,需要给支付宝提供一个回调接口,支付宝回调信息中会携带(out_trade_no【商户订单号...
  • 【Kafka】幂等实现

    2021-11-20 15:35:44
      幂等性是指,对于Producer生产的同一条消息,至多会被Kafka持久化一次,避免因网络重试情况导致消息重复,例如用户下单,幂等性可以保证用户不会重复下单。   但是Kafka的幂等性只针对单会话,当一个...
  • 主要介绍了Java接口幂等性设计原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 如何实现幂等性,通常实现手段有以下几点: 数据库建立唯一索引,可以保证插入数据库的只有一条数据; Token机制,每次接口请求前先获取一个token,然后再下次请求的时候在header体中加上这个token,然后进行后天...
  • 使用token机制实现接口幂等性校验

    千次阅读 2020-02-22 09:57:39
    接口的幂等性原则 1、接口调用存在的问题 现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者...
  • 幂等操作的实现方案

    千次阅读 2017-08-09 17:49:56
    高并发的核心技术-幂等实现方案  一、背景  我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。  例如:  1. 前端重复提交选中的数据,应该后台只产生对应这个数据的...
  • 什么叫幂等?如何实现幂等性?

    千次阅读 2020-12-18 12:55:16
    如何实现幂等性? 非商业转载,如有侵权,可联系本人删除 什么叫幂等?如何实现幂等性? 什么是幂等性? 幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的...
  • pass 转载于:https://www.cnblogs.com/taomin/p/10464169.html
  • 用索引来实现幂等

    千次阅读 2016-06-17 11:25:37
    随着大数据的到来,分布式处理变... 我们了解了索引之后就能实现幂等了,从而可以避免重复插入。这在电商或者其他的项目中,处理重复的订单就简单多了。当然,这只是其中的一种方法,其他的方法以后遇到再与大家分享。
  • 并发和幂等

    2018-01-04 22:28:37
    高并发和幂等性、高并发和幂等性问题解决场景和方案,觉得好用!
  • 幂等实现方案

    千次阅读 2019-04-28 09:09:58
    我之前有写过关于HTTP的幂等性:《(HTTP的)幂等性Idempotence》 但是其实幂等不仅仅只是用于HTTP的设计中,很多重要的情况,这些逻辑都需要幂等的特性来支持。...幂等函数,或幂等方法,是指可以使...
  • 如果是,并且有兴趣同我一起学习,那请接着看本文,通过本文能够学习到分布式锁的基本原理、如何实现分布式锁以及使用分布式锁解决接口幂等问题。 二、基础知识 本文是通过使用 Redis 实现分布式锁,当然也可用使用...
  • Hi ! 我是小小,今天是本周的第四篇,第四篇主要内容是 Spring Boot + Redis 实现接口幂等性介绍幂等性的概念是,任意多次执行所产生的影响都与一次执行产生的影响相同,按...
  • 接口幂等性详解

    千次阅读 2020-08-02 01:36:48
    1.什么是接口幂等 接口幂等性就是用户对同一操作发起了一次或多次请求的对数据的影响是一致不变的,不会因为多次的请求而产生副作用。 副作用:可以认为多次请求操作,每一次对数据状态都会产生影响 。 注意这里并...
  • 微信搜索《Java鱼仔》,每天一个知识点不错过 每天一个知识点 什么是接口的幂等性,如何实现接口幂等性? (一)幂等性概念 幂等性原本是数学上的概念,用在接口上就可以理解为:同一个接口,多次发出同一个请求,...
  • Java接口的幂等

    千次阅读 2020-03-17 11:16:54
    更复杂的操作幂等保证是利用唯一交易号(流水号)实现. 我的理解:幂等就是一个操作,不论执行多少次,产生的效果和返回的结果都是一样的。 三、技术方案 1. 查询操作 查询一次和查询多次,在数据不变的情况下,查询...
  • 有些接口可以天然的实现幂等性,比如查询接口,对于查询来说,你查询一次和两次,对于系统来说,没有任何影响,查出的结果也是一样。 除了查询功能具有天然的幂等性之外,增加、更新、删除都要保证幂等性。那么如何...
  • Redis实现接口幂等

    千次阅读 2019-08-29 10:57:24
    最近自己在做一套spring开发脚手架,期间做了一个幂等...实现接口幂等。 不多说了,直接上代码,现阶段还不是很完善。后续如果整个项目完善了,到时候再发上来吧。 先看一下注解: /** * 幂等注解 * 用于c...
  • 如何实现幂等

    千次阅读 2019-11-14 17:09:47
    什么是幂等 幂等本来是数学上的概念,它的定义是这样的: 如果一个函数 f(x) 满足:f(f(x)) = f(x),则函数 f(x) ...方法一:利用数据库的唯一约束实现幂等 我们在数据库中建一张转账流水表,这个表有三个字段:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 150,602
精华内容 60,240
关键字:

幂等实现