摘要: 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) 编辑
摘要: 最近碰到几道关于i++与++i相关的题,我们从字节码角度来分析执行情况,该文章需要读者有字节码相关基础及了解方法调用机制。 分析 下面是一个题,请问下面代码输出什么? public static void f() { int i = 1; System.out.println(i++ + i++); 阅读全文
posted @ 2023-11-03 09:09 mingshan 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 图(Graph)这个数据结构在平时开发中遇到的比较少,但我认为它是十分重要的,因为从真实的世界中来看,很多东西都可以抽象为图的表示,比如人际关系,地理位置,天马行空的东西都可以抽象为图,所以它比链表等基础数据结构高级一点点,也比较复杂,属于非线性结构。数学中有一个图论的分支也是与其有关。了解图在程序 阅读全文
posted @ 2023-11-03 09:07 mingshan 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 平时接触动态代理比较多,例如Spring等框架如何使用了动态代理经常听到,本文主要介绍JDK动态代理的基本实现原理(JDK8版本),当了解了这些实现细节后,再次使用动态代理就会十分容易和清楚,知其然也知其所以然。 动态代理Demo 先来看一下利用JDK动态代理写的Demo,下面会根据这个Demo进行 阅读全文
posted @ 2023-11-02 10:22 mingshan 阅读(216) 评论(0) 推荐(0) 编辑
摘要: javap命令可以用来查阅字节码文件,可以将指定的字节码文件反编译,反解析出当前类对应基本信息、常量池(Constant pool)、字段区域、 方法区(Code[JVM指令集])、异常表(Exception table)、本地变量表(LocalVariableTable)、行数表(LineNumb 阅读全文
posted @ 2023-11-02 10:21 mingshan 阅读(72) 评论(0) 推荐(0) 编辑