深析Pipeline设计模式

目标通过提供初始输入并传递处理后的输出以供下一阶段使用,从而允许在一系列阶段中进行数据处理。解释Pipeline模式为管道模式,也称为流水线模式。通过预先设定好的一系列的阶段来处理输入的数据,每个阶段的输出即是下一个阶段的输入。模型图如下:从图中可以看出,整个流水线内数据流转是从上游到下游,上游的输

caffeine实现原理(源码分析)

前言上篇文章介绍了常用的缓存框架,了解了目前内存缓存框架性能最好的是Caffeine本篇文章将详细从源码级讲解Caffeine内部实现原理,包含以下内容淘汰策略tinyLFUCaffeine内部接口关系loadputinvalidate操作的原子性缓存过期策略解析缓存淘汰算法缓存淘汰算法的作用是在有

MySQL事务隔离级别和实现原理

MySQL事务本文所说的MySQL事务都是指在InnoDB引擎下,MyISAM引擎是不支持事务的。数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,什么都不做,其实不是没做,是可能做了一部分但是只要有一步失败,就要回滚所有操作,有点一不做二不休的意思。假设一个网购付款的操

[转载]一文读懂Java动态代理

事实上,对于很多Java编程人员来说,可能只需要达到从入门到上手的编程水准,就能很好的完成大部分研发工作。除非自己强主动获取,或者工作倒逼你学习,否则我们好像没必要去真正了解Java编程,或者深入研究JDK运行原理、或者在实际工作中某个模块写一套设计模式、或者纠结一个线程安全问题。我觉得完全没必要了

[转载]Mybatis的API

1、Mybatis架构与核心API不出意外的话,在后续源码剖析相关文章中,我们会对Mybatis的源码进行一次大扫荡,一起挖掘每一处值得大家深入理解/记忆的知识点。而在本文中,我们主要先把Mybatis的架构/层次铺开,俯视Mybatis架构的设计全貌,再把几个硬核的API详细消化。我们先简单揭开M

[转载]HashMap剖析

HashMap是一个非常重要的集合,日常使用也非常的频繁,同时也是面试重点。本文并不打算讲解基础的使用api,而是深入HashMap的底层,讲解关于HashMap的重点知识。需要读者对散列表和HashMap有一定的认识。HashMap本质上是一个散列表,那么就离不开散列表的三大问题:散列函数、哈希冲

[转载]二叉树、平衡二叉树、B-Tree、B+Tree

背景一般说MySQL的索引,都清楚其索引主要以B+树为主,此外还有Hash、RTree、FullText。本文简要说明一下MySQL的B+Tree索引,以及和其相关的二叉树、平衡二叉树、B-Tree,相关的知识网上很多,为了方便自己更快、清楚的了解,文本聚合一些内容以及个人的一些理解。说明二叉查找树

[转载]SpringBoot @Value 读取配置

一、前言在日常开发中,经常会遇到需要在配置文件中,存储List或是Map这种类型的数据。Spring原生是支持这种数据类型的,以配置List类型为例,对于.yml文件配置如下:test:list:-aaa-bbb-ccc对于.properties文件配置如下所示:test.list[0]=aaate

[转载]深入理解Java线程池核心技术:ThreadPoolExecutor

线程池介绍在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个线程的话实现起来非常简便,但是存在一个问题:如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率。可能出现服务器在为每个请求