理解分布式一致性算法:paxos

理解分布式一致性算法:paxos

什么?Paxos 号称是最难理解的算法?虽然有些夸张,那也得看一下! 直接入正题,在分布式系统中存在多个主机节点,这些主机之间的通信机制一般分为 共享内存 和 消息传递 两种。这两种方式各有优劣,而 paxos 算法主要用来解决基于消...

探秘线程池 ThreadPoolExecutor 的任务调度过程

探秘线程池 ThreadPoolExecutor 的任务调度过程

线程池是 java 并发包的核心组件之一,为了减少线程创建和销毁所带来的性能开销,在实际项目中都会采用线程池来管理线程的创建、复用,以及消亡等过程。Executors 类提供了多种方法来简化线程池的创建,典型的应用场景如下: 12in...

探秘 ThreadLocal 的实现内幕与小地雷

探秘 ThreadLocal 的实现内幕与小地雷

Java 多线程类库对于共享数据的读写访问主要采用锁机制来保证线程安全,而本文所要探究的 ThreadLocal 则采用了一种完全不同的策略,它不是用来解决共享数据的并发访问问题的,ThreadLocal 让每个线程都将目标数据复制一...

Spring MVC 源码解析:跟踪一次简单的请求处理过程

Spring MVC 源码解析:跟踪一次简单的请求处理过程

上一篇我们分析了 web 环境下容器的初始化过程,探究了在 web 项目启动过程中,Spring MVC 所执行的一系列初始化工作,本篇中我们将一起来跟踪一次 Spring MVC 对于请求的具体处理过程,从整体上对 Spring M...

Spring MVC 源码解析:Web 环境下容器的初始化过程

Spring MVC 源码解析:Web 环境下容器的初始化过程

Spring MVC 是目前最流行的 java web 框架(之一),是对传统 servlet 的高级封装,以提升 servlet 的灵活性和易用性。从广义上来说,Spring MVC 的执行过程可以分为 容器初始化 和 请求响应处理...

Spring IoC 源码解析:循环依赖的探测与处理

Spring IoC 源码解析:循环依赖的探测与处理

Spring 为开发人员提供了极其灵活和强大的配置使用方式,在方便开发的同时也为容器的初始化过程带来了不确定性,本篇所要介绍的循环依赖就是其中之一,尤其在一些大型项目中,循环依赖的配置往往是我们不经意而为之的,幸好 Spring 能够...

Spring IoC 源码解析:高级容器的初始化过程

Spring IoC 源码解析:高级容器的初始化过程

前面我们一直在以 BeanFactory 作为出发点探究容器的初始化和依赖注入过程,不过 Spring 为我们提供了更加高级的接口 ApplicationContext 可供使用,这也是在大众场景中官方推荐的使用方式。Applicat...

Spring IoC 源码解析:bean 实例的创建与初始化

Spring IoC 源码解析:bean 实例的创建与初始化

到上一篇为止,我们完成了对于 bean 配置进行解析和注册过程的探究,经过这一过程我们编写在 XML 中的半结构化配置已经成为一个个的 beanDefinition 实例存在于容器之中,接下来就可以通过 getBean 的方式获取我们...

Spring IoC 源码解析:自定义标签的解析过程

Spring IoC 源码解析:自定义标签的解析过程

Spring 中的标签分为默认标签和自定义标签两类,上一篇我们探究了默认标签的解析过程,当然在阅读源码的过程中我们也看到默认标签的解析过程中嵌套了对自定义标签的解析,这是因为默认标签中可以嵌套使用自定义标签,但是这和本篇所要讨论的自定...

Spring IoC 源码解析:默认标签的解析过程

Spring IoC 源码解析:默认标签的解析过程

上一篇中梳理了 bean 加载的整体过程,但是对于过程中涉及到的具体细节没有进行深入探究,我们顺着调用链一层层往下走,最终找到了位于 DefaultBeanDefinitionDocumentReader 类中真正解析配置的方法:pa...