摘要: Channel介绍 Channel? 我们在使用Buffer的时候,需要往Buffer中放数据,再从Buffer中取数据,那么在NIO体系中,与Buffer交互是什么呢,没错,就是Channel。所有的NIO的I/O操作都是从Channel 开始的,读操作的时候将Channel中的数据填充到Buff 阅读全文
posted @ 2023-11-06 08:48 mingshan 阅读(8) 评论(0) 推荐(0) 编辑
摘要: Selector是Java NIO中实现多路复用的关键,用于检查一个或多个NIO Channel 的状态是否处于可连接、可接收、可读、可写状态。单个单线程通过Selector来管理多个Channel,减少线程上下文切花能带来的开销。 Selector是一个抽象类,具体是通过SelectorProvi 阅读全文
posted @ 2023-11-06 08:47 mingshan 阅读(4) 评论(0) 推荐(0) 编辑
摘要: Buffer?我们很容易想到缓冲区的概念,在NIO中,它是直接和Channel打交道的缓冲区,通常场景或是从Buffer写入Channel,或是从Channel读入Buffer。Buffer是一个抽象类,Java提供如下图的实现类,我是直接在Eclipse截出来的_ 其实核心是ByteBuffer, 阅读全文
posted @ 2023-11-06 08:46 mingshan 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 链式队列介绍 链式队列拥有队列的特性,只不过和顺序队列的区别是,顺序队列底层用的是数组存储元素,而链式队列用的是链表结构存储数据,也就是把一个元素和指向下个结点的指针封装成一个结点,这里称为Node,当队列为空,头指针与尾指针均指向头结点,只不过头结点为空结点,下面是链式队列的结构图 一个结点抽象成 阅读全文
posted @ 2023-11-06 08:45 mingshan 阅读(25) 评论(0) 推荐(0) 编辑
摘要: LeetCode有两道合并数据相关的题,分别是: 21.合并两个有序链表 88.合并两个有序数组 617.合并二叉树 这些题数据结构不同,但是算法的目标大致一致,即将给定的两个相同的数据结构,合并为一个数据结构。其中会用到递归等思想,下面先从最简单的合并两个有序数组开始分析吧。 88.合并两个有序数 阅读全文
posted @ 2023-11-06 08:43 mingshan 阅读(9) 评论(0) 推荐(0) 编辑
摘要: LeetCode一道对链表排序的题:148.排序链表,原题如下: 你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 进阶: 你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗? 我们直接整进阶的。 题目分析 如果做这个题之前知道归并排序和合并两个 阅读全文
posted @ 2023-11-06 08:42 mingshan 阅读(7) 评论(0) 推荐(0) 编辑