- 博客(20)
- 资源 (5)
- 收藏
- 关注
原创 JDK8之AbstractQueuedSynchronizer解读
这里分析了AQS中对独占模式、Condition的实现原理。(相信读完这两块,共享模式也不在话下)阅读时请把下面所有代码复制到IDEA中的一个新文件中阅读(代码高亮),并且和ReentrantLock等源码一起阅读。(ReentrantLock中的Sync是AQS的子类,AQS有些钩子方法在子类中实现,比如acquire)
2018-03-14 15:14:48 446
原创 JDK8之HashMap源码解读
本文适用于想要阅读HashMap源码的技术人员,如果只是想要简单了解一下HashMap内部结构的话,该文不适用。本文的是在JDK7的HashMap的基础上写的注释,所以不懂的请先看JDK7的HashMap。JDK8的HashMap主要难点在于红黑树,相比JDK7主要多了一个链表转树(树转链表)和红黑树平衡的逻辑。(建议阅读源码时手头有一份《算法导论》,我的下载资源里有完整高清的pdf)写的比较急,...
2018-03-02 14:57:47 1078
原创 mysql之semi-consistent read知悉
semi-consistent read是什么简单来说,semi-consistent read是read committed与consistent read两者的结合。一个update语句(semi-consistent read只针对update),如果读到一行已经加锁的记录,此时InnoDB返回记录最近提交的版本,由MySQL上层判断此版本是否满足update的where条件。若满足(需要...
2019-06-25 04:08:27 2962 1
原创 关于SerialVersionUID
在实现Serializable的类中,有经验的开发都会实现serialVersionUID。这是因为如果没有serialVersionUID的话,如果该类中的字段发生变更(新增或删减),那么反序列化将失败,导致取出的对象为null。比如memcached中,会在反序列化方法中创建XmcObjectInputStream()时抛出异常,导致返回的对象为null。源码中即:测试实例伪代码如下:clas...
2018-03-19 11:51:07 295
原创 JDK8之ReentrantLock解读
阅读时请把下面所有代码复制到IDEA中的一个新文件中阅读(代码高亮)。分析了公平锁与不公平锁,但是主要原理在AQS中,所以大家阅读的时候两者放在一起阅读。
2018-03-14 15:19:29 761
原创 JDK8之ConcurrentHashMap源码解读
本文默认读者阅读过JDK8的HashMap源码,不再对源码中的红黑树操作进行分析。本文主要对put()、transfer()、addCount()进行分析(replaceNode()源码近似于put就不再多言)如果大家对其有异议,请留言。共同进步(2018-03-02)package java.util.concurrent;import java.io.ObjectStreamField...
2018-03-02 15:03:47 1279
原创 JVM基础之类加载器
对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在JVM中的唯一性。 所以,即便该类class文件相同,如果加载它的类加载器不同,那这两个类就必定不相等。 (这里的相等包括equals()、isAssignableFrom()、isInstance()等方法的返回结果,也包括instanceof关键字做所属关系判断等)类加载器分类Bootstrap ClassLoader -启动类
2017-11-04 20:17:34 338
原创 Odps(MaxCompute)使用时一些问题
odps官方文档之给出了jdbc最原始的查询。我们当然不会直接用jdbc,不然工作量太大。 因为查询出来的都是列,需要自己封装成对象。 因此考虑到odps本身也是数据库,那么我们依旧可以使用mybatis来查询odps。 唯一需要更改的就是DataSource。 odps需要jar包: odps_datasource.xml:(这里使用的DruidDataSource,换成C3P0也行)
2017-11-04 09:48:25 2952
原创 ReentrantLock和ReentrantReadWriteLock使用介绍
ReentrantLock、ReentrantReadWrietLock
2017-05-22 10:15:09 524
转载 redis分布式锁安全性的探讨
本文转载、整理自上篇:http://mp.weixin.qq.com/s/JTsJCDuasgIJ0j95K8Ay8w 与下篇:http://mp.weixin.qq.com/s/4CUe7OpM6y1kQRK8TOC_qQ两篇博文 其中省略了Martin提出的fencing token有关的讨论(上篇)、网友与Redis作者的讨论(下篇)以及Chubby的介绍(下篇)。 想详细看这三方面的
2017-05-04 00:32:20 1932
原创 【RocketMQ】搭建RocketMQ
本版本搭建的RocketMQ为v3.5.8版 操作系统为Windows步骤一、下载RocketMQ源码 下载地址:https://github.com/alibaba/RocketMQ/releases 随后解压源码,导入到IDEA中(Java开发环境之类的就不讲了)步骤二、执行install.bat 在maven等加载完毕后,在terminal(cmd)下执行install.bat文件
2017-04-25 14:34:59 1584
原创 重入锁
Java提供了一种内置的锁机制来支持原子性:同步代码块 同步代码块包括两部分: 1、锁的对象引用 2、锁保护的代码块 而每个Java对象都可以用作一个实现同步的锁,这种锁叫内置锁(又叫监视器锁): 线程在进入同步代码块之前会自动获得锁,并且在退出同步代码块时自动释放锁(无论是正常退出还是通过抛出异常退出) 另外:内置锁是一种互斥锁,即防止多个线程同一时刻访问相同的共享资源。 内置锁也是
2017-02-16 10:17:36 410
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人