Spring 如何解决循环依赖的问题 kinglyjn 2018-12-20 Spring 解决循环依赖的思路循环依赖之所以能解决,核心在于:实例化(Create) 与 初始化(Populate) 是两个分开的阶段。Spring 的做法是:只要 new 出了对象,就先不管属性有没有填好,直接把这个 “半成品” 的引用(或者获取引用的工厂)暴露出去。这样,当 B 需要 A 时,拿到的虽然是空壳,但地址是正确的。为了在不同阶段管理这些 Bean,Spring 准备了三个 Map:
storm容错性和消息可靠性保证机制 kinglyjn 2018-12-19 storm的容错性机制Worker进程死亡当一个工作进程死亡,supervisor会尝试重启它,如果启动连续失败了一定的次数,无法发送心跳信息到 nimbus,则nimbus会在另一台主机上重新分配 Worker。
Spring IoC 和 DI 的简单实现 kinglyjn 2018-12-19 源码跟踪在这篇文章中,我将着重详细介绍 springframework(这里使用的版本是 6.2.15)的控制反转(IoC)和 依赖注入(DI)的具体实现,并带你真正手搓一个简化的 spring 容器出来。注解形式的 IoC 容器在元数据解析的实现上与 xml 形式有差异,但在容器运行整体流程上二者基本相同,这里仅以 xml 的视角为例进行说明。
Spring 的本地事务 kinglyjn 2018-12-18 什么是事务?事务的定义:事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位,由一个或多个数据库操作(通常是 SQL 语句)序列组成。这些操作要么全部执行成功,要么全部撤销(回滚),它使数据库从一种一致性状态变更为另一种一致性状态。事务有四个最基本的特性,即所谓的 ACID,以最经典的转账业务为例:
storm分组策略 kinglyjn 2018-12-17 内置分组策略storm 内置了 8 种流分组的方式,通过实现 CustomStreamGrouping 接口可以实现自定义的流分组。InputDeclarer 接口定义了不同的流分组方式,每当TopologyBuilder#setBolt 方法被调用就返回该对象,用于声明一个bolt的输入流以及这些流应当如何分组。该接口定义的所有分组方法如下: