聊聊接口和抽象类

1.什么是抽象类和接口?区别在哪里? 不同的编程语言对接口和抽象类的定义方式可能有些差别,但差别不会很大。Java这种编程语言,既支持抽象类,也支持接口,所以,为了让你对这两个语法概念有比较直观的认识,我们拿Java这种编程语言来举例讲解。 ...

July 28, 2024

分布式事务及其实现方案

分布式系统-分布式事务及实现方案 1 什么是分布式事务 1 如何理解分布式事务 1 3.1 从分布式的理论角度看 1 分布式理论的CP->刚性事务 遵循ACID,对数据要求强一致性 分布式理论的AP+BASE->柔性事务 遵循BASE,允许一定时间内不同节点的数据不一致,但要求最终一致。 3.2 从分布式事务的体系看 刚性事务: 分布式理论的CP,遵循ACID,对数据要求强一致性。 XA协议是一个基于数据库层面的分布式事务协议,其分为两部分:事务管理器和本地资源管理器。事务管理器作为一个全局的调度者,负责对各个本地资源管理器统一号令提交或者回滚。主流的诸如Oracle、Mysql等数据库均已实现了XA接口。 二阶段提交协议(2PC):根据XA协议衍生出来而来;引入一个作为协调者的组件来统一掌控所有参与者的操作结果并最终指示这些节点是否要把操作结果进行真正的提交;参与者将操作成败通知协调者,再由协调者根据所有的参与者反馈情报决定各参与者是否要提交操作还是中止操作。所谓的两个阶段是指:第一阶段:准备阶段(投票阶段)和第二阶段: 提交阶段(执行阶段) ...

June 25, 2024

Reentrantlock源码解析

ReentrantLock源码分析 类的继承关系 ReentrantLock实现了Lock接口,Lock接口定义了lock与unlock相关操作,并且还存在newCondition方法,表示生成一个条件。 ...

May 26, 2024

AQS源码阅读分析

AbstractQueuedSynchronizer简介 AQS是一个用来构建和同步器的框架,使用AQS能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的RenntrantLock,Semaphore,其他的诸如ReentrantReadWriteLock,SynchronousQueue,FutureTask等等皆是基于AQS的。当然,我们自己也能利用AQS非常轻松的构造出符合我们自己需求的同步器。 ...

May 19, 2024

零拷贝实现

Linux中的零拷贝 1. 数据拷贝基础过程 在Linux系统内部缓存和内存容量都是有限的,更多的数据都是存储在磁盘中。对于Web服务器来说,经常需要从磁盘中读取数据的内存,然后通过网卡传输给用户 ...

April 23, 2024

NIO详解

Standard IO是对字节流的读写,在进行IO之前,首先创建一个流对象,流对象进行读写操作都是按字节,一个字节一个字节的来读或写。而NIO把IO抽象成块,类似磁盘的读写,每次IO操作的单位都是一个块,块被读入内存之后就是一个byte[], NIO一次可以读或写多个字节。 ...

April 20, 2024

阅读Spring源码

Spring 什么是Spring框架 Spring是一种轻量级框架,旨在提高开发人员的开发效率和系统的可维护性。 我们一般说的Spring框架就是SPring Framework,他是很多模块的集合,使用这些模块可以很方便的协助我们进行开发。这些模块是核心容器、数据访问/集成、web、aop、工具、消息和测试模块。比如Core Container中的Core组件是Spring所有组件的核心,Beans组件和Context组件是实现IOC和DI的基础,AOP组件用来实现面向切面编程。 Spring官网列出来的Spring的6个特征: ...

April 12, 2024

20240304力扣周赛

这周有点拉跨啊,就搞出来2题。 记录一下吧: 每个字符最多出现两次的最长子字符串 给你一个字符串 s ,请找出满足每个字符最多出现两次的最长子字符串,并返回该子字符串的最大长度。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 最高频率的 ID 你需要在一个集合里动态记录 ID 的出现频率。给你两个长度都为 n 的整数数组 nums 和 freq ,nums 中每一个元素表示一个 ID ,对应的 freq 中的元素表示这个 ID 在集合中此次操作后需要增加或者减少的数目。 ...

March 25, 2024

关于MVCC的一些理解

Mysql MVCC机制我的一些理解 什么是MVCC? MVCC 全称是 Multi-Version Concurrency Control, 即多版本并发控制。MVCC 在Mysql的 InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读. ...

March 25, 2024

DDIA

第一章:可靠性,可扩展性,可维护性 1.1 关于数据系统的思考 单个工具已经不能满足应用系统的需求,总体工作被拆分成一系列能被单个工具高效完成的任务,并通过应用代码将它们缝合起来。比如一个缓存、索引、数据库协作的例子: ...

March 8, 2024