分布式ID生成方案
Linux Zero Copy
I/O 是决定网络服务器性能瓶颈的关键,而传统的 Linux I/O 机制又会导致大量的数据拷贝操作,损耗性能,所以我们亟需一种新的技术来解决数据大量拷贝的问题,这个答案就是零拷贝(Zero-copy)。
JDK ThreadLocal
ThreadLocal 又称线程本地变量,使用其能够将数据封闭在各自的线程中,每一个 ThreadLocal 能够存放一个线程级别的变量且它本身能够被多个线程共享使用,并且又能达到线程安全的目的,且绝对线程安全。本文主要介绍了 ThreadLocal、InheritableThreadLocal、FastThreadLocal、TransmittableThreadLocal 四种 ThreadLocal 的原理和应用方式。
ZooKeeper 典型应用场景
ZooKeeper 是一个高可用的分布式数据管理与协调框架。基于对 ZAB 算法的实现,该框架能够很好地保证分布式环境中数据的一致性。也正是基于这样的特性,使得 ZooKeeper 成为了解决分布式一致性问题的利器。
ZooKeeper API清单及使用方法
主要介绍了 ZooKeeper 的部署、客户端脚本的使用以及开发人员使用的原生客户端 API 以及 Curator 封装的更易用的客户端 API。
Memo Java动态代理
在业务中使用动态代理,一般是为了给需要实现的方法添加预处理或者添加后续操作,但是不干预实现类的正常业务,把一些基本业务和主要的业务逻辑分离。我们一般所熟知的 Spring 的 AOP 原理就是基于动态代理实现的。
JVM 程序编译与代码优化
从计算机程序出现的第一天起,对效率的追求就是程序天生的坚定信仰,这个过程犹如场没有终点、永不停歇的 F1 方程式竞赛,程序员是车手,技术平台则是在赛道上飞驰的赛车。
JVM 内存分配和回收
Java 与 C++ 之间有堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。
JVM 内存模型
并发处理的广泛应用是使得 Amdahl 定律代替摩尔定律成为计算机性能发展源动力的根本原因,也是人类“压榨”计算机运算能力的最有力武器。
为了解决内存和处理器的速度矛盾,增加了高速缓存进行存储交互。为了使得处理器内部的运算单元能尽量被充分利用,处理器可能会对输入代码进行乱序执行(Out-of-Order Execution)优化。与处理器的乱序执行优化类似,Java 虚拟机的即时编译器中也有类似的指令重排序(Instruction Reorder)优化。
JVM 字节码执行引擎
“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式。