in Source Code

前言MyBatis是一个流行的ORM框架,它简单易用,支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。作为一款优秀的持久层框架,连接池是必不可少的。本文将分析MyBatis内置的数据源是如何实现连接池功能的(源码基于MyBati...

in Handbook

前言很多人的博文里面会提到JVM三种垃圾收集器:串行,并行和并发。这么分类也不能说错,但事实上也没有这么简单。本文简要介绍Hotspot早期的垃圾收集器(Garbage Collector)。名词解释年轻代和老年代:JVM中不同的对象,生命周期是不同的。比如线程中的临时变量,在方法结束之后便会...

in Handbook

RedisRedis是高性能的基于内存的NoSQL数据库。因为内存是比较宝贵的资源,无法无限制使用,所以Redis提供了:键过期策略来防止内存饱和。内存淘汰策略来使得内存饱和之后继续对外提供服务。内存过期策略expire命令Redis提供了expire命令来给一个键(key)设置过期时间:re...

in Troubleshooting

背景接到了线上机器的报警,登上服务器,发现是Java进程挂了,看日志报了OOM:java.lang.OutOfMemoryError: Java heap space问题描述内存溢出,那当然是看dump文件了。这里推荐大家在产线机器上都加上JVM参数-XX:+HeapDumpOnOutOfMe...

in Notebook

背景java.lang.ClassCastException: cn.com.nightfield.Plugin cannot be cast to cn.com.nightfield.Plugin相同的class,竟然不能cast?这是什么鬼?问题描述自定义类加载器(Classloader)...