![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术让我快乐
文章平均质量分 91
情深的媛
netease 高级java开发工程师,曾在乐视和美团
展开
-
HashSet源码解读
HashSet概述HashSet是基于hashmap实现的,HashSet的底层是用hashmap来保存所有的元素hashset源码比较简单,但是必须在hashmap的基础上去理解。可以参考我的hash源码解读来理解//可以看到底层使用hashmap来保存hashset中的元素 不序列化private transient HashMap<E,Object> map;//定义一个虚拟的对...原创 2018-04-09 16:59:03 · 164 阅读 · 0 评论 -
INNODB MVCC
在讲解InnoDB的MVCC机制之前,我们应该了解MySQL所支持的事务,以及各个事务级别的区别和每一个事务级别所存在的问题。1. 事务事务必须保证ACID,而ACID表示原子性、一致性、隔离性和持久性1.1 事务的隔离级别事务可以通过start transaction语句开始一个事务,然后要么使用commit提交事务将所修改的数据持久保存,要么使用rollback撤销所有修改1.1.2 READ...转载 2018-05-08 10:53:14 · 590 阅读 · 0 评论 -
INNODB结构分析
后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最新的数据,将已修改的文件刷新到磁盘文件保证数据库发生异常时 InnoDB能够恢复到正常运行的状态 后台线程使用的是多线程模型,其后台有多个不同的线程负责处理不同的任务 1.Master Thread最核心的一个线程,主要负责将换种池中的数据异步刷新到磁盘,保证数据一致性,包括脏页的刷新,合并插入缓冲,UNDO页的回收等...原创 2018-05-08 10:51:08 · 394 阅读 · 0 评论 -
数据库事务如何保证
原子性:在学习事务时,经常有人会告诉你,事务就是一系列的操作,要么全部都执行,要都不执行,这其实就是对事务原子性的刻画;虽然事务具有原子性,但是原子性并不是只与事务有关系,它的身影在很多地方都会出现。 事务其实和一个操作没有什么太大的区别,它是一系列的数据库操作(可以理解为 SQL)的集合,如果事务不具备原子性,那么就没办法保证同一个事务中的所有操作都被执行或者未被执行了,整个数据库系统就既不可...原创 2018-05-08 10:50:24 · 2798 阅读 · 0 评论 -
ThreadLocal源码解读一
简介 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以...原创 2018-05-08 10:43:08 · 1431 阅读 · 2 评论 -
AQS源码解读三 Condition
在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait()、notify()系列方法可以实现等待/通知模式。在Java SE5后,Java提供了Lock接口,相对于Synchronized而言,Lock提供了条件Condition,对线程的等待、唤醒操作更加详细和灵活。下图是Condition与Object的监视器方法的对比(摘自《Java并发编程的艺术》):C...原创 2018-05-13 18:34:41 · 930 阅读 · 0 评论 -
AQS源码解读 二
前面已经讲解了AQS源码的独享模式,今天来讲一下AQS的共享模式 下面以CountDownLatch去讲解AQS的共享模式 首先讲下什么是CountDownLatch,CountDownLatch所描述的是”在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待“。在API中是这么说的:用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以...原创 2018-05-01 17:14:46 · 391 阅读 · 1 评论 -
AQS源码解读一
最近想看JUC包下源码,本来是想看后继续写公众号的,发现了看这些源码前我首先要了解下什么是AQS,懂了他,JUC下的很多问题都不再是问题了,奈何平时工作忙,只能利用加班的时间看看源码,所以自己潜水了一周多,在默默的研究AQS先普及下基础:自旋锁:在访问共享变量时,如果访问资源的线程没有拿到访问权限(未拿到锁),不是让线程释放资源,而是让线程处于无限循环的请求锁,并一直检测自己的状态,只有当请求到锁...原创 2018-04-24 10:44:07 · 1209 阅读 · 0 评论 -
LinkedHashMap源码解读
可能大家都知道,hashmap是不保证插入顺序的,LinkedHashMap是保证插入顺序的,但是如何保证插入顺序的呢咳咳,如下会解答LinkedHashMap还能根据访问顺序排序,mm我之前还真不知道,读完源码后才发现他跟LRU算法的逻辑一样一样哒当然要读懂我写的前提是对hashmap源码也得研究透,我是在hashmap基础上讲的,看不懂的mm 和 gg就看下我之前写的hashmap源码,关注下...原创 2018-04-10 23:01:22 · 162 阅读 · 0 评论 -
HashMap源码解读
hashmap示意图HashMap的源码中,充斥个各种位运算代替常规运算的地方,以提升效率: * 与运算替代模运算。用 hash & (table.length-1) 替代 hash % (table.length) * 用if ((e.hash & oldCap) == 0)判断扩容后,节点e处于低区还是高区。链表的节点数据结构构造函数 1.第一个构造函数:指定table的si...原创 2018-04-09 16:56:31 · 319 阅读 · 1 评论 -
CurrentHashMap jdk 1.7解读
ConcurrentHashMap 的结构分析 那么mm就有点疑问了,ConcurrentHashMap是如何定位到一个元素的?????? ConcurrentHashMap定位一个元素的过程需要进行两次的hash操作,第一次Hash定位Segment,第二次hash定位到元素所在的链表头部这会造成hash的过程要比hashmap要长,但是带来的好处是写操作的时候可以只对元素所在的segment...原创 2018-04-09 17:01:38 · 817 阅读 · 0 评论 -
InheritableThreadLocal
J.U.C之并发工具类:ThreadLocal源码解读 一 这篇文章详细的讲解了threadLocal的原理,今天就来讲讲 InheritableThreadLocal InheritableThreadLocal是什么东东呢,本姑娘今天就来讲解下,还是老的套路 即 是什么 怎么用 为什么,但是读懂的前提还是在读懂ThreadLocal的源码的前提下 什么是InheritableThrea...原创 2018-05-08 15:16:56 · 282 阅读 · 0 评论