Spring 中 Transactional 注解原理

利用 Spring 框架可以很容易的使用注解的方式来使用事务,为我们的开发带来了巨大的便利,这种便利的实现是通过 Spring 本身的一系列机制来实现的,主要包含动态代理和 Spring Bean 的加载过程。本文将深入源码,揭开层层面纱…

阅读全文〉

幂等设计

我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如

  1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果;
  2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱;
  3. 发送消息,也应该只发一次
  4. 创建业务订单,一次业务请求只能创建一个,创建多个就会出大问题等等很多重要的情况都需要幂等的特性来支持。
阅读全文〉

MySQL 中的锁

什么是事务?什么是隔离级别?
数据库中使用了多少种锁?这些锁之间有什么关系?
数据库如何在并发度和各种并发问题中平衡?

阅读全文〉

JVM 探究(三):垃圾回收算法和垃圾回收器

通过介绍当前的垃圾回收器和垃圾回收算法的对比和不同的优势,来帮助读者选择适合自己的垃圾回收器。主要涉及对象存活的判断、三种垃圾回收算法以及新生代和老年代的几种传统的收集器,最后会介绍一下比较火热的Garbage First(G1)收集器

阅读全文〉

JVM-探究(二):JVM实验和 GC 日志解读

本文用于记录在学习 JVM 过程中的实验,在完成《深入理解Java虚拟机》第二版第三章中的实验的基础上,同时保证在JDK1.8上实验的可重复性,并且针对不同的垃圾收集器做实验扩充。在对不能在JDK8上重现的实验代码做了修正,在实验结果中分析了JVM的部分特性, 介绍了GC日志的解读等。

阅读全文〉