Dubbo 之于 SPI 扩展机制的实现分析

Dubbo 之于 SPI 扩展机制的实现分析

SPI (Service Provider Interfaces) 是 jdk1.5 引入的一种服务扩展内置机制,在面向接口编程的范畴下,SPI 能够基于配置的方式声明实际应用的具体扩展接口实现。之前在写接口限流器时曾遇到过这样一个场...

Reactor:事件驱动的高性能响应模式

Reactor:事件驱动的高性能响应模式

Node.js 这几年火的不要不要的,借助 js 天生的事件驱动机制和 V8 高性能引擎,让编写高并发的 web 应用门槛降低了许多,当然这背后还要得益于 Douglas C. Schmidt 在 1995 年提出的基于事件驱动的 R...

接口限流器中的常用算法及其应用场景

接口限流器中的常用算法及其应用场景

帐号作为集团的基础服务,支撑着上层业务的正常运行,当有业务举办活动、遭遇攻击,或者是写土了代码,都会或多或少给帐号服务带来流量上的冲击。我们通常说缓存、降级,以及限流技术是高并发程序设计的三大利器,为保证集团其它业务不受影响,限流往往...

MyBatis 源码解析:SQL 语句的执行机制

MyBatis 源码解析:SQL 语句的执行机制

通过前面两篇文章,我们完成了对 MyBatis 所有配置文件(包括配置文件和映射文件)解析机制的分析。回忆一下我们最开始给出的 MyBatis 小示例(如下),经过前面千山万水的跋涉,我们终于完成了第一行代码的 … 99% …(手动滑...

MyBatis 源码解析:映射文件的加载与解析

MyBatis 源码解析:映射文件的加载与解析

上一篇中我们分析了配置文件的加载和解析过程,本文我们将一起来探究映射文件的加载与解析实现,MyBatis 提供映射文件以配置 SQL 语句、二级缓存,以及结果集映射等,是区别与其它 ORM 框架的主要特色之一。 在前面分析配置文件解析...

MyBatis 源码解析:配置文件的加载与解析

MyBatis 源码解析:配置文件的加载与解析

前面我们曾约定 mybatis-config.xml 为配置文件,SQL 配置文件为映射文件,本文我们将沿用上一篇中的示例程序,一起来探究一下 MyBatis 加载和解析配置文件,即 mybatis-config.xml 的过程。 在...

MyBatis 源码解析:架构初探

MyBatis 源码解析:架构初探

MyBatis 是一个易用、轻量,且强大的半自动化 ORM 框架。记得多年前第一次接触该框架的时候它的名字还叫作 iBatis,那时候刚接触到 java web 开发,倦于徒手写 JDBC 代码的枯燥,于是开始转战 ORM 框架。SS...

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

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

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

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

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

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

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

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

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