摘要:
案例说明: 银行两操作员同时操作同一账户。比如A、B操作员同时读取一余额为1000元的账户,A操作员为该账户增加100元,B操作员同时为该账户扣除50元,A先提交,B后提交。最后实际账户余额为1000-50=950元,但本该为1000+100-50=1050。这就是典型的并发问题。 乐观锁机制在一定 阅读全文
摘要:
单例线程池 直接上demo package com.feihe.train.traincommon.util; import com.google.common.util.concurrent.ThreadFactoryBuilder; import java.util.concurrent.*; 阅读全文
摘要:
本文主要分享一下redis的分布式锁; 可直接使用到项目中的,正常使用的; 先讲解一下 redis setIfAbsent的使用 如果为空就set值,并返回1如果存在(不为空)不进行操作,并返回0 很明显,比get和set要好。因为先判断get,再set的用法,有可能会重复set值。 setIfAb 阅读全文
摘要:
原生js已经支持base64加密及解密 加密————》window.btoa("123456789") 解密————》window.atob("MTIzNDU2Nzg5") 对于中文进行解密及加密需要先对中文进行转码 //加密 window.btoa(window.encodeURIComponen 阅读全文
摘要:
代码仅限于将json字符串转格式化; 将json字符串格式化并展示在页面上; 并且将文本框自动适应高低; 效果图就不上传了自行体验 上代码: /*必须引入的js*/ /*jquery也是需要的*/ <script type="text/javascript" src="http://tools.jb 阅读全文
摘要:
个人感觉简单方便 好看 toastr.js插件的特点: toastr.js是一个基于jQuery的非阻塞、简单、漂亮的消息提示插件,使用简单、方便。 toastr.js可以设置四种提示样式:成功(success)、错误(error)、提示(info)、警告(warning)。 可以通过设置参数来设置 阅读全文
摘要:
使用SETNX命令获取分布式锁的步骤: C1和C2线程同时检查时间戳获取锁,执行SETNX命令并都返回0,此时锁仍被C3持有,并且C3已经崩溃 C1 DEL锁 C1 使用SETNX命令获取锁,并且成功 C2 DEL锁 C2 使用SETNX命令获取锁,并且成功 ERROR : 由于竞态条件,C1和C2 阅读全文
摘要:
springboot + redistemplate 实现锁的方案 1、通过set命令设置锁 2、判断返回结果是否是OK 1)Nil,获取失败,结束或重试(自旋锁) 2)OK,获取锁成功 执行业务 释放锁,DEL 删除key即可 3、异常情况,服务宕机。超时时间EX结束,会自动释放锁 代码清晰简洁 阅读全文