B+Tree 的并发优化 BLink-Tree

前言 B+Tree 被数据库普遍使用,作为索引实现的基础。网上的资料也非常多,所以这里也不再详细介绍。但是基于 B+Tree 的并发优化,资料却非常少,所以这篇来讲讲 B+Tree 的一种并发优化,那就是BLink-Tree。为了讲述得更加清……

Postgresql BRIN 索引原理

前言 postgresql 提供了块级索引(简称 BRIN),主要适用于类似时序数据之类的,有着天然的顺序,而且都是添加写的场景。相比于 btree 索引,它的体积小得多,非常适用于大数据量的场景。 原理 postgresql 按照一定的数目(默认 128, 可以……

Postgresql 物理流复制

postgresql 提供了主从复制功能,有基于文件的拷贝和基于 tcp 流的数据传输两种方式。两种方式都是传输 wal 数据,前者是等待生成一个完整的wal文件后,才会触发传输,后者是实时传输的。可以看出来基于文件方式的延迟会比较高,……

Apache Shiro SpringBoot 集成原理

前言 shiro 框架支持多种使用场景,并且都提供了默认配置,本篇文章会介绍 shiro 的配置原理和如何与 springboot 集成的。 默认配置类 shiro 支持运行在 Web 环境下和非 Web 环境下,每种环境都有着不一样的默认配置。 非 Web 环境 AbstractShi……

Apache Shiro Filter 原理

前言 shiro 最常见的使用场景就是在 spring web 里面,本篇文章会讲解 shiro 如何集成 spring web 的原理。shiro 会自定义 Filter 嵌入到 servlet 中,当每次请求到来时,会先经过 shiro filter。shiro filter 会解析请求提取出 cookie,然后根据 cookie……

Apache Shiro Session 管理

前言 shiro 提供了 session 用于保存与用户相关的信息,需要注意到这和 HTTP 的 session 概念是不一样的,它可以运行在没有web环境下。本篇文章会先介绍 Web 环境下的原理,读者有兴趣的话,可以看看在非 Web 环境下的原理。 Session 接口 classDiagram class Session <<interface>> Session class……

Apache Shiro Realm 原理和自定义

前言 在 shiro 框架的文章中,了解到Realm是用作获取用户身份信息和权限信息的。shiro 将这块分离出来,使得我们可以自定义,以适应不同的场景。比如用户的信息可以存储数据库中,也在外面添加了一层缓存,我们可……

Apache Shiro SecurityManager 原理

前言 从前篇 shiro 架构文章中,可以了解到 SecurityManager 是 shrio 框架中最核心的部分,它作连接了认证,权限,session 多个模块。本篇文章会介绍 SecurityManager 的设计思想,和多个模块之间的衔接。 设计模式 SecurityManager 的设计使用了门面模式,如下图所示:……

Apache Shiro Subject 原理

前言 Subject是 我们在 shiro 框架中,第一个介绍的概念。它表示用户,存储了用户身份认证的相关配置信息。除此之外,还支持登录,退出,session 等接口操作。本篇文章会先介绍Subject的种类,然后介绍……

Apache Shiro 框架介绍

前言 Apache Shiro 是 apache 开发的新的用户认证和权限校检框架,相比于 Spring Security 框架更加的简洁易用。这里会先介绍下 shiro 的总体架构和简单示例,读者可以了解到 shiro 的基本概念和框架。为了避免涉及到的知识点过多,这里不涉及 spring web 的集成,后……