摘要:
开发中经常会遇到树形结构的场景,比如:导航菜单、组织机构等等,但凡是有这种父子层级结构的都是如此,一级类目、二级类目、三级类目。。。 对于这种树形结构的表要如何设计呢?接下来一起探讨一下 首先,想一个问题,用非关系型数据库存储可不可以? 答案是肯定可以的,比如用mongoDB,直接将整棵树存成jso 阅读全文
摘要:
延迟队列的使用场景还比较多,例如: 1、超时未收到支付回调,主动查询支付状态; 2、规定时间内,订单未支付,自动取消; 。。。 总之,但凡需要在未来的某个确定的时间点执行检查的场景中都可以用延迟队列。 常见的手段主要有:定时任务扫描、RocketMQ延迟队列、Java自动的延迟队列、监听Redis 阅读全文
摘要:
Spring Boot 最大的特点(亮点)就是自动配置 AutoConfiguration 下面,先说一下 @EnableAutoConfiguration ,然后再看源代码,到底自动配置是怎么配置的 1. @EnableAutoConfiguration @SpringBootApplicatio 阅读全文
摘要:
一切从SpringApplication.run()开始,最终返回一个ConfigurableApplicationContext 构造了一个SpringApplication对象,然后调用它的run方法。下面看下构造方法都做了什么 1、推断Web应用类型(WebApplicationType),本 阅读全文
摘要:
如图是一个简化的下单流程,首先是提交订单,然后是支付。支付的话,一般是走支付网关(支付中心),然后支付中心与第三方支付渠道(微信、支付宝、银联)交互,支付成功以后,异步通知支付中心,支付中心更新自身支付订单状态,再通知业务应用,各业务再更新各自订单状态。 这个过程中经常可能遇到的问题是掉单,无论是超 阅读全文
摘要:
1. 自定义指标 为了注册自定义指标,请将MeterRegistry注入到组件中,例如: public class Dictionary { private final List<String> words = new CopyOnWriteArrayList<>(); Dictionary(Met 阅读全文
摘要:
1. Prometheus是什么 Prometheus是一个具有活跃生态系统的开源系统监控和告警工具包。一言以蔽之,它是一套开源监控解决方案。 Prometheus主要特性: 多维数据模型,其中包含由指标名称和键/值对标识的时间序列数据 PromQL,一种灵活的查询语言 不依赖分布式存储; 单服务器 阅读全文
摘要:
SPI(Service Provider Interface)是JDK内置的一种服务提供发现机制。本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。 在Java中SPI是被用来设计给服务提供商做插件使用的。基于策略模式来实现动态 阅读全文
摘要:
锁定读(locking read)、更新(UPDATE)或删除(DELETE)通常会在SQL语句处理过程中扫描的每个索引记录上设置记录锁。语句中是否存在排除行的WHERE条件并不重要。InnoDB不记得确切的WHERE条件,而只知道哪个索引范围被扫描。这些锁通常是next-key锁,它还会阻止在记录 阅读全文
摘要:
1. Shared and Exclusive Locks shared lock (译:共享锁) exclusive lock (译:排它锁、独占锁) InnoDB实现了标准的行级锁,其中有两种类型的锁,共享锁(shared locks)和排他锁(exclusive locks)。 A share 阅读全文