一、前言 分布式锁一般有三种实现方式: 1. 数据库乐观锁; 2. 基于Redis的分布式锁; 3. 基于ZooKeeper的分布式锁。 本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本 ...
分类:
其他好文 时间:
2019-08-09 13:31:15
阅读次数:
96
参考: https://www.nowcoder.com/discuss/215891?type=2&order=0&pos=10&page=1 1.会啥框架、不会。 2.锁的实现。悲观锁、乐观锁。 3.sychronized 和 reentrantlock 实现原理 4.volatile原理 5. ...
分类:
编程语言 时间:
2019-08-09 01:02:57
阅读次数:
140
众所周知,JDK提供了AtomicInteger保证对数字的操作是线程安全的,线程安全我首先想到了synchronized和Lock,但是这种方式又有一个名字,叫做互斥锁,一次只能有一个持有锁的线程进入,再加上还有不同线程争夺锁这个机制,效率比较低,所以又称“悲观锁”。 但是相应的有了乐观锁的概念, ...
分类:
编程语言 时间:
2019-08-08 21:39:27
阅读次数:
165
原文: http://106.13.73.98/__/175/ 乐观锁 总是认为不会产生并发问题,每次去取数据时总认为不会有其它线程对数据进行修改,因此不会上锁。 但是在更新时会判断其它线程在这之前有没有对数据进行修改,一般会使用版本号机制会CAS操作实现。 __版本号方式__ &nbs ...
分类:
数据库 时间:
2019-08-08 20:53:17
阅读次数:
95
sql注入问题 防止sql注入,对特殊字符进行过滤、转义或者使用预编译的sql语句绑定变量 当sql语句运行报错时,不要把数据库返回的错误信息全部显示给用户,以防止泄露服务器和数据库相关信息 如果sql语句在拼接的情况下,使得查询永远成立,如拼接上 or '1'='1',会发生不安全问题 解决办法: ...
分类:
数据库 时间:
2019-08-07 22:48:30
阅读次数:
109
CAS的全称是CompareAndSwap,比较并交换,是Java保证原子性的一种重要方法,也是一种乐观锁的实现方式。 它需要先提前一步获取旧值,然后进入此方法比较当下的值是否与旧值相同,如果相同,则更新数据,否则退出方法,重复一遍刚才的动作。由此可见,CAS方法是非堵塞的。CAS方法需要三个参数, ...
分类:
其他好文 时间:
2019-08-04 10:48:20
阅读次数:
114
一、innodb: mysql默认搜索引擎; 特点: (1)支撑事务,可以在事务上添加锁; (2)锁方式: 1)共享锁(乐观锁):对查询共享,对增删改上锁。//当提交事务时会释放锁。 2)排它锁(排他锁):对增删改查全部上锁。 ps: 1)行锁只有InnoDB有; 2)提交事务就是释放锁; 3)锁需 ...
分类:
数据库 时间:
2019-07-31 23:44:19
阅读次数:
121
1、什么是Redis的事务 可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按照顺序串行化执行而不会被其他命名插入,不许阻塞 2、Redis事务能干什么 一个队列中,一次性、顺序性、排他性的执行一系列命令 3、Redis事务用法 1、开启事务 multi 2、执行事务 e ...
分类:
其他好文 时间:
2019-07-31 21:59:21
阅读次数:
125
简单字符串缓存实战简单队列实战简单发布订阅实战简单计数器实战排行榜实战简单字符串悲观锁实战简单事务的乐观锁实战 简单字符串缓存实战 简单队列缓存实战 参考博客:https://segmentfault.com/a/1190000008475712 ...
分类:
其他好文 时间:
2019-07-26 21:07:14
阅读次数:
121
1.图解剖析Elasticsearch并发冲突问题 2.图解剖析悲观锁与乐观锁两种并发控制方案 3、图解Elasticsearch内部如何基于_version进行乐观锁并发控制 (1)_version元数据 PUT /test_index/test_type/6{ "test_field": "te ...
分类:
其他好文 时间:
2019-07-26 11:58:38
阅读次数:
297