垃圾回收机制

阅读全文

类加载过程

类加载过程

Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢?

阅读全文

MySql优化

MySQL优化是一个程序员的基本素养,每个程序员基本上都具备,但是,越是简单常见的东西,越容易忽视。如何写出一个高质量的SQL语句其实是非常重要的。
在渠道端重构中遇到过一下几个慢SQL场景(线上基本情况:订单量700w+)
1)借款查询:借款查询搜索项特别多,仅搜索项就有20+,需要关联五六张表才能满足业务需求,查询效率不高;【单体系统-服务化后,表已经垂直拆分,记录中心维护一张宽表满足需求】
2)数据权限问题:线上营业部大概有700+,当查询者拥有营业部权限特别多时,查询效率进一步下降;【基础服务冗余一张权限表,权限数据由sso服务统一维护】
3) 大分页跳转问题:选择大分页时,性能极具恶化;【优化sql,使用覆盖索引可以解决这一问题】
4) 业务层次优化:为了减小搜索范围,从业务方面去谈,最终确定所有范围查询都带上订单创建时间(默认半年,可以手动扩大)
整体的核心思想:就是让索引生效,否则在大数据量的场景下,查询效率一定比较低。至于什么样的sql不走索引,这个就太多了。实际中可以用explain去分析。
其他更多mysql优化技巧见后续文章

阅读全文

线程池

参考资料

阅读全文

分布式事务补偿

从单体系统演变成服务化项目后,我们面临的三大难题:服务的拆分、服务故障传播、分布式事务。

  • 服务的拆分:重点在于架构师对于业务场景的分析和理解,拆分成恰当的粒度,以便未来扩展;
  • 服务的故障传播:通过ribbon和hytrix基本上可以解决这一问题;
  • 今天重点想聊得是“分布式事务”问题;

阅读全文