除非你觉得你的时间不是很宝贵,否则不要看这篇流水账式的博文,这只是篇个人的工作的学习一个总结而已,没有包含任何的技术细节
阅读全文 »

0. 背景

一直在用 RPC,但是对非常重要的序列化原理一直模糊不懂,尤其是其中的 serialVersionUID 也模糊不清,虽然 Dubbo 已经帮我们使用了经过优化过的 hession2,但是还是想一探究竟,为什么原生的 JDK 序列化就不行呢?原生 JDK 序列化到底是怎么样的。

主要参考《分布式Java应用》的4.3序列化/反序列化章节

阅读全文 »

除非你觉得你的时间不是很宝贵,否则不要看这篇流水账式的博文,这只是篇个人的工作的学习一个总结而已,没有包含任何的技术细节
阅读全文 »

除非你觉得你的时间不是很宝贵,否则不要看这篇流水账式的博文,这只是篇个人的工作的学习一个总结而已,没有包含任何的技术细节
阅读全文 »

0. 背景

一步一步的复习锁,从 Synchronized 到 AQS,其实还有 volatile,但是它是可见性和原子性的保证,和锁还是有本质区别的,就没有纳入了。

1. Synchronized

对象头:每个对象都有一个对象头,里面存储了锁类型(是否偏向锁、轻量锁、重量锁)、GC 标记、对象分代年龄等。
monitor:ObjectMonitor 对象,也叫监视器,每个对象都有一个对应的监视器,里面包括处于阻塞该对象锁的线程以及处于等待该对象锁的线程(前者是排队获取锁、后者是 wait 方法)。

阅读全文 »

除非你觉得你的时间不是很宝贵,否则不要看这篇流水账式的博文,这只是篇个人的工作的学习一个总结而已,没有包含任何的技术细节
阅读全文 »

0. 背景

好久没动脑子去思考 hashmap 的设计了,这次做个简单分析。

1. hash 优化

1
2
3
4
static final int hash(Object key) {
int h;
return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}
阅读全文 »

除非你觉得你的时间不是很宝贵,否则不要看这篇流水账式的博文,这只是篇个人的工作的学习一个总结而已,没有包含任何的技术细节
阅读全文 »

除非你觉得你的时间不是很宝贵,否则不要看这篇流水账式的博文,这只是篇个人的工作的学习一个总结而已,没有包含任何的技术细节
阅读全文 »