加载中
mybatis源码,从配置到 mappedStatement —— mapper.xml 是如何被解析的?

Ext1:本文源码解析基于 mybatis-spring-boot-starter 2.1.1,即 mybatis 3.5.3 版本。 Ext2:本文主要是对源码的讲解,着重点会是在源码上。 一、从 MybatisAutoConfiguration 说开去,map...

经典分布式算法 —— 浅显易懂的 Raft 算法实现

一、Raft概念 copy一下其他小伙伴写的文章: Raft算法详解 不同于Paxos算法直接从分布式一致性问题出发推导出来,Raft算法则是从多副本状态机的角度提出,用于管理多副本状态机的日志复制。R...

简单说说Kafka中的时间轮算法

零、时间轮定义 简单说说时间轮吧,它是一个高效的延时队列,或者说定时器。实际上现在网上对于时间轮算法的解释很多,定义也很全,这里引用一下朱小厮博客里出现的定义: 参考下图,Kafka中...

分布式事务柔性事务解决方案:可靠消息最终一致性(异步确保型) —— 三、生产者实战

建议简单看看上一篇文章再往下阅读 我们的项目就基于这个模型: 接下来就到了我们的实战时刻~ 项目基于spring cloud编写,没有spring cloud基础看起来可能有一点点费力。 准备阶段:定义可靠...

(下)容器能不能将 volume 挂载直接挂到根目录?—— Snapshotter 是如何工作的?

这件事起源于有小伙伴在某群里问,在 K8s 中,能不能把 volume 挂载直接挂到根目录?我的第一反应是不能。容器会使用 union filesystem 将容器的内容挂到根目录下,这点在正常情况下是无法更...

(中)容器能不能将 volume 挂载直接挂到根目录?—— 浅析 kubelet 到 runc 的调用过程

引子 这件事起源于有小伙伴在某群里问,在 K8s 中,能不能把 volume 挂载直接挂到根目录?我的第一反应是不能。容器会使用 union filesystem 将容器的内容挂到根目录下,这点在正常情况下是无...

(上)容器能不能将 volume 挂载直接挂到根目录?——从 runc 说起

这件事起源于有小伙伴在某群里问,在 K8s 中,能不能把 volume 挂载直接挂到根目录?我的第一反应是不能。容器会使用 union filesystem 将容器的内容挂到根目录下,这点在正常情况下是无法更...

K8s 核心组件 Reflector 源码剖析 (基于 Informer 的实现)

一、什么是 Reflector Reflector watches a specified resource and causes all changes to be reflected in the given store. K8s 对于 Reflector 的描述十分干练:Reflector 是监听某项资源...

spring 详细事务源码解析 —— 事务怎么挂起的?传播等级怎么实现的?保存点、内嵌事务怎么做回滚和提交?

零、引言 spring 事务怎么挂起的?传播等级怎么实现的?保存点、内嵌事务怎么做回滚和提交?如果你对这些感兴趣,或者想要了解它的运行机制,则可以参考此文章 ~ 一、spring 事务大局纵览 上...

从源码角度剖析 Spring 如何管理 mybatis 事务的?

Ext1:本文源码解析基于 mybatis-spring-boot-starter 2.1.1,即 mybatis 3.5.3 版本。 Ext2:本文主要是对源码的讲解,着重点会是在源码上。 Ext3:阅读本文前,最好对 mapperProxy、 sqlS...

简单概括的 mybatis sqlSession 源码分析

零、引言 本文只是博主在看书与阅读源码时的一些小笔记,整理的可能有点乱,后续有更加深入,且更加内聚的文章~ 一、动态代理MapperProxy对象的创建 我们知道,mybatis通过 mapper interfa...

一步步动手实现简单的线程池 —— 生动有趣解析 Java 线程池源码

零、引子 某天小奈与小伙伴肥宅埋的日常技(cai)术(ji)研(hu)讨(zhuo)中聊起了线程池。 自诩十分熟悉并发编程的小奈马上侃侃而谈,“线程池帮助我们管理线程,减少线程频繁创建与销毁资源损耗...

图文深入解析 JAVA 读写锁,为什么读锁套写锁会死锁,反过来却不会?

一、回顾基本的读写锁 我们知道读写锁 #java.util.concurrent.locks.ReentrantReadWriteLock 是一个 “读写互斥,写写互斥,读读共享” 的锁。 读写锁的使用非常简单,那就是: 我们只需要保...

【并发编程】 图文深入解析Java显式锁底层源码 —— 加解锁是如何实现的

一、了解 AbstractQueuedSynchronizer(AQS) 1、AQS 简介 AbstractQueuedSynchronizer 是大师 Doug Lea 编写的一个并发编程类,位于 java.util.concurrent.locks,是 CountdownLatch、Semapho...

TCP基础 —— 流量控制与拥塞控制

一:流量控制 什么是流量控制?流量控制的目的? 如果发送者发送数据过快,接收者来不及接收,那么就会有分组丢失。为了避免分组丢失,控制发送者的发送速度,使得接收者来得及接收,这就是流...

TCP基础 —— 为什么建立连接需要三次握手,而断开连接则需要四次?能不能是三次?

一、TCP包概述 一个 segment 包含 header 和 data 两个部分,对于这篇文章需要理解的就是,Sequence number 和 Acknowledgement number) 这两个字段。TCP 的可靠传输就是基于这两个字段来实...

一步步动手实现高并发的Reactor模型 —— Kafka底层如何充分利用多线程优势去处理网络I/O与业务分发

一、从《Apeche Kafka源码剖析》上搬来的概念和图 Kafka网络采用的是Reactor模式,是一种基于事件驱动的模式。熟悉Java编程的读者应该了解Java NIO提供了Reactor模式的API。常见的单线程Jav...

Kafka源码剖析 —— Kafka的 i/o 操作管理者 NetworkClient

序 之前说过,Kafka 自己实现了一个 Selector 来管理最底层的 i/o 操作,selector 以轮询模式驱动不同事件,来通知网络通道进行读写操作。 而更加高层的 NetworkClient 则 管理多个节点的客户...

没有更多内容

加载失败,请刷新页面

返回顶部
顶部