• 幂等性


    update tablename set version= version+1 where version=#{version}
    

      

    1、什么是幂等性?

    一次请求或多次请求执行的结果是一样的。

    2、如何来实现幂等性

    2.1 前端层面

         在前端实现,按钮一次点击后置灰不可用,禁止用户多次点击;

    2.2 数据库层面

         2.2.1 通过数据库表的唯一索引来实现,当插入重复数据时数据库会抛异常,从而避免了脏数据的插入;

         2.2.2 通过乐观锁来实现,为数据库表增加版本version字段,更新前先去获取version版本号, 

    select version from tablename where xxx

         更新时首先和版本号进行比对,版本号一致则更新,不一致则更新失败。

    update tablename set version = version+1 where version = #{version} 

    2.3 程序层面    

          2.3.1 通过悲观锁来实现,在获取数据时进行加锁,其他线程只能等该线程释放锁之后才能进行操作。

          2.3.2 通过redis或zookeeper分布式锁来实现,在分布式环境下,锁定全局唯一资源,使请求串行化;

          2.3.3 通过token机制来实现, token机制的核心思想是为每一次操作生成一个唯一性的凭证,也就是token。一个token在操作的每一个阶段只有一次执行权,一旦执行成功则保存执行结果。对重复的请求,返回同一个结果。

    原文链接: https://juejin.cn/post/6894624582091669517

        

    你想拥有什么,你就去追求什么!
  • 相关阅读:
    switch语句相关
    大根堆的创建过程
    总结Java中线程的状态及多线程的实现方式
    用直接路径(direct-path)insert提升性能的两种方法
    Oracle的日志记录模式
    针对WebLogic Server 12.1.3版本打补丁
    Oracle Service Bus中的线程
    简化调用Web Service
    网络知识收集
    WebLogic MBean Monitor
  • 原文地址:https://www.cnblogs.com/lchzlp/p/14871516.html
Copyright © 2020-2023  润新知