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

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

2019/12/25 15:57
1.6W
经典分布式算法 —— 浅显易懂的 Raft 算法实现

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

2019/04/11 20:30
3.1K
简单说说Kafka中的时间轮算法

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

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

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

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

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

01/10 09:19
1.1K
从源码角度剖析 Spring 如何管理 mybatis 事务的?

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

01/06 14:19
1.4W
简单概括的 mybatis sqlSession 源码分析

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

2019/11/26 10:22
467
一步步动手实现简单的线程池 —— 生动有趣解析 Java 线程池源码

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

2019/07/17 16:58
962
图文深入解析 JAVA 读写锁,为什么读锁套写锁会死锁,反过来却不会?

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

2019/06/13 18:58
653
【并发编程】 图文深入解析Java显式锁底层源码 —— condition 实现线程调度

一、回顾 AQS 资源的锁定与释放 上篇文章(文章中有详细的源码解读) 说到,AQS 在 tryRelease 失败后,资源的锁定与释放,正向流程大体可以分为以下6个阶段。 1-2:当其他线程占据了锁定的资...

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

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

2019/06/01 19:19
2.1K
TCP基础 —— 流量控制与拥塞控制

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

2019/04/30 15:29
389
TCP基础 —— 为什么建立连接需要三次握手,而断开连接则需要四次?能不能是三次?

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

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

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

2018/12/13 18:29
1.4W
Kafka源码剖析 —— Kafka的 i/o 操作管理者 NetworkClient

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

2018/09/17 17:59
411
Kafka源码剖析 —— 生产者消息发送流水线上的大体流程

一、唤醒Selector 上篇文章说到,消息是怎么被生产出来,简单来说,就是消息被追加到了RecordAccumulator中,以ByteBuffer的形式存了下来。 那么在消息添加到ByteBuffer中后,后续的步骤又是...

2018/09/14 09:38
435
Kafka源码剖析 —— 生产者消息追加中的优秀设计与大体流程

消息发送流程: 消息发送组件: 其中消息的追加包含以下几个组件。我们在KafkaProducer中调用send方法发送一个消息,在消息追加步骤,最终是将消息添加到了ByteBuffer中。 消息追加器流程: ...

2018/09/14 09:38
557
仿照Kafka,实现一个简单的监听器 + 适配器吧!

前言 不同于Spring中复杂的实现,在Kafka中,对于Listener和对应的Adaptor,都十分的简单与简洁。下面我们就以Kafka的实现作为参考,简单说说如何去实现一个监听器与适配器。 一、监听器 1....

2018/09/14 09:38
495
Kafka源码剖析 —— 网络I/O篇 —— 浅析KafkaChannel

一、SocketChannel和KafkaChannel有什么区别? 上篇文章说道KafkaSelector在创建一个连接的时候和普通的nioSelector并没有什么不同,它是基于nioSelector的封装。我们知道创建连接的一系列操...

2018/09/14 09:37
3.4K
Kafka源码剖析 —— 网络I/O篇 —— 浅析KafkaSelector

##NioSelector和KafkaSelector有什么区别? 先说结论,KafkaSelector(org.apache.kafka.common.network.selector)是对NioSelector(java.nio.channels.Selector)的进一步封装。回想一下NioSe...

2018/09/14 09:36
545

没有更多内容

加载失败,请刷新页面

返回顶部
顶部