Aria2 GUI最佳实践

目前用的爽的下载工具,通过搭配 Chrome 和 自己写的一些脚本达到不输迅雷的用户体验。

本文在 MacOS 下可以通过所有步骤,其他平台需要自行修改相关步骤

阅读全文〉

Java类加载器的准备和初始化

好久没有更新博客了,昨天在浏览微信公众号的时候看到了一道面试题,给出一个包含 main 方法的类,一些输出语句,让读者判断这些语句的输出顺序,其实也就是考察读者的对于 Java 类的初始化的顺序,看到这道题目的时候,我也就按照自己的理解得出了一个顺序,可是和答案却大相径庭,原因就在于对于 Java 类加载器在加载类时候的两个阶段:准备 初始化 没有足够的理解。今天我们在本文中就来聊聊类加载的这两个阶段

阅读全文〉

Spring 中 Transactional 注解原理

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

阅读全文〉

幂等设计

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

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

MySQL 中的锁

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

阅读全文〉