木西笔记

个人博客

kafka系列

Kafka 原理分析

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

数据库原理篇(1)

索引的实现原理

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

TCP/IP系列(3)

TCP连接的状态详解

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

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 阶段的...

Java内存模型(1)

JMM是什么

为什么要有内存模型 CPU缓存 我们应该都知道,计算机在执行程序的时候,每条指令都是在CPU中执行的,而执行的时候,又免不了要和数据打交道。而计算机上面的数据,是存放在主存当中的,也就是计算机的物理内存。 当程序在运行过程中,会将运算需要的数据从主存复制一份到CPU的高速缓存当中,那么CPU进行计算时就可以直接从它的高速缓存读取数据和向其中写入数据,当运算结束之后,再将高速缓存中的数据刷新到...

TCP/IP系列(1)

TCP/IP 详解(上)

一、 计算机网络体系结构分层 七层网络模型是一个理想的模型,而TCP/IP 则是从中演变而来 二、 TCP/IP 基础 1.TCP/IP 模型 2. TCP/IP 的具体含义 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TE...