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