木西笔记

个人博客

数据库原理篇(3)

InnoDB中的锁

InnoDB 介绍InnoDB 中的锁你可能听过各种各样的 InnoDB 的数据库锁,Gap 锁,共享锁,排它锁,读锁,写锁等等。但是 InnoDB 的标准实现的锁只有 2 类,一种是行级锁,一种是意向锁。 InnoDB的行级锁: 共享锁(读锁 S Lock),允许事务读一行数据。 排它锁(写锁 X Lock),允许事务删除一行数据或者更新一行数据。行级锁中,除了 S 和 S 兼容,其他都不...

数据库原理篇(2)

InnoDB 的数据存储方式

InnoBD 的数据结构InnoBD 中的数据结构概览先来看一下 InnoDB 中的整体存贮逻辑 MySQL 使用 InnoDB 存储表时,会将表的定义和数据索引等信息分开存储,其中前者存储在 .frm 文件中,后者存储在 .ibd 文件中,这一节就会对这两种不同的文件分别进行介绍。 .frm 文件无论在 MySQL 中选择了哪个存储引擎,所有的 MySQL 表都会在硬盘上创建一个 .frm...

kafka系列

Kafka 原理分析

Kafka概述Kafka 定义Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于 大数据实时处理领域。 消息队列好处可以参考我的另一篇博文MQ可以解决哪些实际问题 优缺点 优点: 可扩展。Kafka集群可以透明的扩展,增加新的服务器进集群。 高性能。Kafka性能远超过传统的ActiveMQ、RabbitMQ等,Kafka支持Batch操作。 ...

数据库原理篇(1)

索引的实现原理

索引概诉 索引详解常见的索引算法 平衡二叉树索引二叉树的查找的时间复杂度是O(log2N),其查找效率与深度有关,而普通的二叉树可能由于内部节点排列问题退化成链表,这样查找效率就会很低。因此平衡二叉树是更好的选择,因为它保持平衡,即通过旋转调整结构保持最小的深度。其查找的时间复杂度也是O(log2N)。 但实际上,数据库中索引的结构也并非AVL树或更优秀的红黑树,尽管它的查询的时间复杂度很低...

TCP/IP系列(3)

TCP连接的状态详解

TCP 状态一个TCP连接在它的生命周期内会有不同的状态。 TCP状态图 状态 描述 LISTEN 等待来自远程TCP应用程序的请求 SYN_SENT ...

JAVA多线程之深入分析synchronized原理和锁膨胀过程

synchronized概述synchronized 是锁同步的一个关键字,这里主要讲解这个关键的概念性的东西,不做扫盲。 特性 可见性 有序性 可见性 原子性 synchronized 优化历史锁膨胀详解前言上一篇文章介绍了多线程的概念及synchronized的使用方法《synchronized的使用(一)》,但是仅仅会用还是不够的,只有了解其底层实现才能在开发过程中运筹帷幄,所以本篇...

JAVA多线程之AQS分析(2)

CountDownLatch的分析来解读AQS的共享功能。

AQS 共享功能的实现CountDownLatch 的用法CountDownLatch,CountDownLatch 为 java.util.concurrent包下的计数器工具类,常被用在多线程环境下,它在初始时需要指定一个计数器的大小,然后可被多个线程并发的实现减 1 操作,并在计数器为 0 后调用 await 方法的线程被唤醒,从而实现多线程间的协作。它在多线程环境下的基本使用方式为:...

JAVA多线程篇之锁的介绍

概述这篇文章介绍各种锁的分类。介绍的内容如下: 公平锁 / 非公平锁 可重入锁 / 不可重入锁 独享锁 / 共享锁 互斥锁 / 读写锁 乐观锁 / 悲观锁 分段锁 偏向锁 / 轻量级锁 / 重量级锁 自旋锁 上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。 锁的种类详解公平锁 / 非公平锁 公平锁 公平锁是...

操作系统之 高性能IO浅析

IO模型分类 (1)同步阻塞IO(Blocking IO):即传统的IO模型。 (2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。 (3)IO多路复用(IO Multiplexing):即经典的Reactor设计模式,有时也称为异步阻塞IO,...

操作系统之Epoll原理

Epoll 很重要,但是 Epoll 与 Select 的区别是什么呢?Epoll 高效的原因是什么? 从网卡接收数据说起网卡接收数据的过程 下边是一个典型的计算机结构图,计算机由 CPU、存储器(内存)与网络接口等部件组成,了解 Epoll 本质的第一步,要从硬件的角度看计算机怎样接收网络数据。 下图展示了网卡接收数据的过程: 在 1 阶段,网卡收到网线传来的数据。 经过 2 阶段...