首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
大力敲代码
掘友等级
java工程师
|
阿里巴巴
先点赞后关注再细品
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
8
文章 8
沸点 0
赞
8
返回
|
搜索文章
最新
热门
事务隔离级别以及锁的实现
我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了事务隔离机制、锁机制、MVCC多版本并发控制隔离机…
MySQL事务原理之MVCC与SQL执行流程
MySQL在实现读已提交和可重复读隔离级别的时候通过MVCC来实现。 例如上一篇介绍事务隔离级别的中可重复读。对一行数据的读和写两个操作默认是不会通过加锁互斥来保证隔离性,避免了频繁加锁互斥,而在串行化隔离级别为了保证较高的隔离性是通过将所有操作加锁互斥来实现的。 主要核心原理…
AQS中可重入锁ReentrantLock源码一加锁过程
众所周知(没吃过猪肉,肯定看过猪),ReentrantLock是基于AQS(Abstract Queued Synchronizer)来实现的。通过看ReentrantLock的类结构其实也是通过组合了一个Sync类属性。所以核心的功能全部都是由Sync类来完成的。
性能实战之MySQL索引优化
使用explain关键字,可以模拟优化器执行sql语句。并将优化器执行的优化结果反馈出来。通过这些结果我们可以找到我们的sql或者表的瓶颈。注意explain不是真的帮我们执行了sql只是做了分析。 explain extended:会在 explain 的基础上额外提供一些查…
ReentrantLock初认知
上面启动了10个线程分别去打印两句话,两句话中间线程会睡眠100ms。通过ReentrantLock的lock和unlock方法来加锁和释放锁。 每个线程都保证了 lock与nulock之间的方法块的互斥性。 1、直接通过synchronized关键字肯定可以实现,但是我们肯定…
MySQL索引实现原理
一句话索引是排好序的一种数据结构。 因为排好序MYSQL就可以快速的查找。对于有序的数据查找是非常快的。 每个节点下可以挂两个节点,左边比自己小右边比自己大。 缺点: 有可能数据都比34大,或者都比34小的情况下,就变成了链表。 缺点: 随着数据量的增加例如1000w条数据。这…
AQS中可重入锁ReentrantLock源码一释放锁过程
调用tryRelease方法进行去操作state变量。每次-1。如果减为0了标识锁被释放 如果锁被释放就去调用unparkSuccessor方法去唤醒下一个未被取消的线程,并且顺带的剔除掉已取消的线程。 同时在整个加锁和释放锁的过程中有很多 waitStatus和线程中断逻辑。…
AQS中那些waitStatus(一)
从上面的注释介绍可以明白,只有上一个节点是SIGNAL,当前节点才有可能被上一个节点唤醒。 在释放锁的时候如果头节点的状态为不为0,会先将其设置为0。然后唤醒下一个节点 头节点一定表示当前获取锁的线程节点。 由于超时或中断,此节点被取消。节点一旦被取消了就不会再改变状态。特别是…
个人成就
文章被点赞
17
文章被阅读
4,190
掘力值
200
关注了
7
关注者
4
收藏集
0
关注标签
10
加入于
2018-10-25