分布式事务解决方案

分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。
阅读全文

Java中的阻塞队列

阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。
阅读全文

MySQL索引原理

索引(Index)是帮助MySQL高效获取数据的数据结构。索引是对表中一列或多列的值进行排序的一种存储结构。索引也是表的组成部分,建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引项结构。
阅读全文

B树与B+树

B树(B-tree)是一种树状数据结构,它能够存储数据、对其进行排序并允许以O(log n)的时间复杂度运行进行查找、顺序读取、插入和删除的数据结构。B树,概括来说是一个节点可以拥有多于2个子节点的多路搜索树(并不是二叉的)。与自平衡二叉查找树不同,B-树为系统最优化大块数据的读和写操作。B-tree算法减少定位记录时所经历的中间过程,从而加快存取速度。普遍运用在数据库和文件系统。
阅读全文

CopyOnWriteArrayList实现原理及源码分析

CopyOnWriteArrayList是Java并发包中提供的一个并发容器,它是个线程安全且读操作无锁的ArrayList,写操作则通过创建底层数组的新副本来实现,是一种读写分离的并发策略,我们也可以称这种容器为"写时复制器",Java并发包中类似的容器还有CopyOnWriteSet。
阅读全文

HashMap(JDK-1.7及1.8)

HashMap是基于哈希表实现的键值对的集合,继承自AbstractMap并实现了Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键(存放在第一个哈希桶中)。此类不保证映射的顺序,特别是它不保证该顺序恒久不变(扩容)。
阅读全文