Linux epoll实现原理详解

为什么要 I/O 多路复用 当需要从一个叫 r_fd 的描述符不停地读取数据,并把读到的数据写入一个叫 w_fd 的描述符时,我们可以用循环使用阻塞 I/O : while((n = read(r_fd, buf, BUF_SIZE)) > 0) if(write(w_fd, buf, n) != n) err_sys("write error");…

hello hello 发布于 2024-08-09

RocketMQ 刷盘机制!

这篇文章,我们将详细介绍 RocketMQ 的刷盘机制,包括它写了哪些文件,如何写入磁盘,以及相关的源码分析和示例代码。 本文源码基于 RocketMQ 5.0 RocketMQ 的刷盘流程主要涉及以下几类文件: CommitLog 文件 :存储所有消息,支持顺序写入和随机读取。 ConsumeQueue 文件 :存储消息的逻辑索引,加速消息消费。…

hello hello 发布于 2024-08-09

Java 非阻塞 IO 和异步 IO

上一篇文章介绍了 Java NIO 中 Buffer、Channel 和 Selector 的基本操作,主要是一些接口操作,比较简单。 本文将介绍 非阻塞 IO 和 异步 IO ,也就是大家耳熟能详的 NIO 和 AIO。很多初学者可能分不清楚异步和非阻塞的区别,只是在各种场合能听到 异步非阻塞 这个词。…

hello hello 发布于 2024-08-09

什么是 JVM 字节码?它是如何工作的?

作为 Java程序员都知道 Java是跨平台的语言,编译一次到处运行,这得益于 JVM字节码,这篇文章,我们将一起分析什么是 JVM字节码以及 JVM字节码是如何工作的? Java 源代码经过编译器编译后,就会生成 JVM 字节码,它是一种基于栈的低级、中立于平台的指令架构,每个字节码指令都会在 JVM…

hello hello 发布于 2024-08-09

MySQL索引18连问,谁能顶住

前言 过完这个节,就要进入金银季,准备了 18 道 MySQL 索引题,一定用得上。 1. 索引是什么 索引是一种数据结构,用来帮助提升查询和检索数据速度。可以理解为一本书的目录,帮助定位数据位置。 索引是一个文件,它要占用物理空间。 2. MySQL索引有哪些类型 数据结构维度 B+tree 索引:…

hello hello 发布于 2024-08-09

设计模式学习总结

设计模式 创建型模式 创建型模式 创建型模式的作用就是创建对象,说到创建一个对象,最熟悉的就是 new 一个对象,然后 set 相关属性。但是,在很多场景下,我们需要给客户端提供更加友好的创建对象的方式,尤其是那种我们定义了类,但是需要提供给其他开发者用的时候。 单例…

hello hello 发布于 2024-08-09

JAVA 中原生的 socket 通信机制

当前环境 jdk == 1.8 知识点 socket 的连接处理 IO 输入、输出流的处理 请求数据格式处理 请求模型优化 场景 今天,和大家聊一下 JAVA 中的 socket 通信问题。这里采用最简单的一请求一响应模型为例,假设我们现在需要向 baidu 站点进行通信。我们用 JAVA 原生的 socket 该如何实现。 建立 socket 连接…

hello hello 发布于 2024-08-09

IO模型与Java网络编程模型

基本概念说明 用户空间与内核空间…

hello hello 发布于 2024-08-09

浅析NIO包中的Buffer、Channel 和 Selector

本文将介绍 Java NIO 中三大组件 Buffer、Channel、Selector 的使用。 本来要一起介绍 非阻塞 IO 和 JDK7 的 异步 IO 的,不过因为之前的文章真的太长了,有点影响读者阅读,所以这里将它们放到另一篇文章中进行介绍。 Buffer 一个 Buffer…

hello hello 发布于 2024-08-09

JAVA NIO 一步步构建IO多路复用的请求模型

当前环境 jdk == 1.8 知识点 nio 下 I/O 阻塞与非阻塞实现 SocketChannel 介绍 I/O 多路复用的原理 事件选择器与 SocketChannel 的关系 事件监听类型 字节缓冲 ByteBuffer 数据结构 场景 接着上一篇中的站点访问问题,如果我们需要并发访问10个不同的网站,我们该如何处理? 在上一篇中,我们使用了…

hello hello 发布于 2024-08-09
上一页 下一页