摘要:
一、springBoot生命周期伴随的事件 springBoot的启动过程就是通过事件机制驱动的,可以通过监听这些事件做一些定制化的功能。因为springBoot已经成为众多中间件和框架的基础,所以了解其整个生命周期是很必要的,接下来就从源码的角度去分析它的整个启动流程。 二、源码分析 1、实例化S 阅读全文
摘要:
这一篇看一下Prometheus对http请求的指标收集,先来看两个指标定义: (1)使用的指标类型: 这三种指标类型的特性在之前推荐的一篇关于Prometheus介绍的文章里有详细说明,这里简单回顾一下,gauge可以进行加减操作,反映指标的当前状态;counter只能增不能减,反映指标的计数,如 阅读全文
摘要:
因为Prometheus是通过http接口的形式来采集数据的,所以需要向Prometheus server暴露端点。spring boot2.x版本在Actuator中集成了Prometheus,此外也可以手动向其暴露端点。接下来就说第二种。 @Spi public interface MeterR 阅读全文
摘要:
这是一篇非常好的关于Prometheus的介绍文章,包括其架构、工作模式、数据模型等。 https://www.ipyker.com/2019/01/12/prometheus.html 阅读全文
摘要:
java也有自己的SPI实现,但是有很多小毛病,比如:会一次性加载所有扩展实现,不能支持一些复杂的元数据表达,据说多了类加载器同时加载会有并发问题(没有考证过)。所以很多框架都提供了SPI机制供使用者自己扩展,例如Dubbo,使用SPI还可以实现按需加载扩展点。之前看过Dubbo的SPI实现,其实它 阅读全文
摘要:
Motan是新浪微博研发并开源的一个RPC框架,与Dubbo相比,他更轻量级一些,代码也更少一些,但也五脏俱全。 Motan在GitHub上的项目地址:https://github.com/weibocom/motan 关于Motan的使用,可以看官方Wiki:https://github.com/ 阅读全文
摘要:
业务需求:为了防止业务中关键接口被刷(对于网赚类业务,提现和收益类接口属于关键接口),客户端和服务端采用非对称加密进行安全校验。 思路:1、为不影响产品使用体验,仅对关键接口(关键接口一般非频繁操作)进行加密 2、将时间戳作为加密项之一,防止同一个签名可以使用多次 3、服务端对定义的关键接口请求做校 阅读全文
摘要:
场景:前端在request body中传了多个参数,为了方便使用@RequestBody映射成相应的参数对象。 @PostMapping(value = "/game/sync") public WebMessage gameMsgReport(UserInfo userInfo,@RequestB 阅读全文
摘要:
1、ThreadLocal的使用场景 ThreadLocal主要用来存储线程的本地数据,做到线程数据的隔离。常用的方法有:set()、get()、remove()分别对应存储、获取和删除。下面看几个使用场景: 场景1:在拦截器中的使用 //将其封装在工具类中 public class Context 阅读全文
摘要:
BeanDefinition与Bean的关系, 就好比类与对象的关系. 类在spring的数据结构就是BeanDefinition.根据BeanDefinition得到的对象就是我们需要的Bean. 我认为理解Bean与BeanDefinition是理解spring的整个架构的基础与关键。我将从Be 阅读全文