jdk
小创编程
微信公众号:「小创编程」,所有幸运和巧合的事,要么是上天注定,要么是自己偷偷的在努力。
展开
-
关于 IO 和 NIO 的思考
I/O 的实际操作由内核执行,其中一个重要手段是缓冲区。简单来说 I/O 可分为两类:面向磁盘和面向网络,Java 也是针对这两者来抽象设计 API,相关的类主要在 java.io 和 java.nio 包中,简称为 BIO 和 NIO。为什么设计 NIO一个直接原因就是为了更好的利用操作系统特性,改善和扩展原有 API。与 NIO 相关的规范有两个:JSR 51:它是 NIO ...原创 2018-08-05 11:27:49 · 217 阅读 · 0 评论 -
Reactor典型的NIO编程模型
NIO 常用的编程模型是 Reactor,在 Doug Lea 的 Scalable IO in Java 的 PPT 中对其进行了介绍,文末有福利 :) ,Reactor 的特点是 I/O 多路复用和事件驱动,基本处理过程为:处理程序声明感兴趣的 I/O 事件,这些事件表示在特定套接字上准备读取的情况事件通知器等待事件一个事件发生并唤醒通知器,通知器调用适当的处理程序事件处理程序执行...原创 2018-08-05 14:28:18 · 507 阅读 · 0 评论 -
ArrayList 和 LinkedList 源码分析
List 表示的就是线性表,是具有相同特性的数据元素的有限序列。它主要有两种存储结构,顺序存储和链式存储,分别对应着 ArrayList 和 LinkedList 的实现,接下来以 jdk7 代码为例,对这两种实现的核心源码进行分析。1. ArrayList 源码分析ArrayList 是基于数组实现的可变大小的集合,底层是一个 Object[] 数组,可存储包括 null 在内的所有元素,默...原创 2019-05-05 12:29:36 · 302 阅读 · 0 评论 -
深入分析 JDK8 中 HashMap 的原理、实现和优化
HashMap 可以说是使用频率最高的处理键值映射的数据结构,它不保证插入顺序,允许插入 null 的键和值。本文采用 JDK8 中的源码,深入分析 HashMap 的原理、实现和优化。首发于微信公众号顿悟源码.1. 基本结构HashMap 基于散列表实现,使用拉链法处理碰撞,在 JDK8 中,当链表长度大于 8 时转为红黑树存储,基本结构如下:HashMap 有一个 Node<K,...原创 2019-05-25 11:38:30 · 136 阅读 · 0 评论 -
「福利」Java Swing 编写的可视化算法工程,包含树、图和排序
之前在整理《学习排序算法,结合这个方法太容易理解了》这篇文章时,发现了一个用 Java Swing 编写的可视化算法工程,真心不错!包含了常用数据结构和算法的动态演示,先来张图感受下:可以看到既有基本数据结构栈、队列基于数组和链表的元素插入和删除的动态演示,又有二叉查找树、平衡二叉树、B-Tree的构建和查找过程,还有图的广度和深度优先遍历过程。文末有源码领取方式。平衡二叉树构建动图演示...原创 2019-06-12 12:49:54 · 418 阅读 · 0 评论 -
Java 内存模型和 JVM 内存结构真不是一回事
这两个概念估计有不少人会混淆,它们都可以说是 JVM 规范的一部分,但真不是一回事!它们描述和解决的是不同问题,简单来说,Java 内存模型,描述的是多线程允许的行为JVM 内存结构,描述的是线程运行所设计的内存空间JVM 是什么呢?它屏蔽了底层架构的差异性,是 Java 跨平台的依据,也是每个 Java 程序员必须了解的一部分。搜索公众号「顿悟源码」获取更多源码分析和造的轮子。JV...原创 2019-09-15 09:09:10 · 149 阅读 · 0 评论 -
TreeMap 还能排序?分析下源码就明白了
Java 中的 Map 是一种键值对映射,又被称为符号表或字典的数据结构,通常使用哈希表来实现,但也可使用二叉查找树、红黑树实现。HashMap 基于哈希表,但迭代时不是插入顺序LinkedHashMap 扩展了 HashMap,维护了一个贯穿所有元素的双向链表,保证按插入顺序迭代TreeMap 基于红黑树,保证键的有序性,迭代时按键大小的排序顺序这里就来分析下 TreeMap 的实现...原创 2019-09-15 09:14:26 · 222 阅读 · 0 评论 -
LinkedHashMap 的核心就 2 点,搞清楚,也就掌握了
HashMap 有一个不足之处就是在迭代元素时与插入顺序不一致。而大多数人都喜欢按顺序做某些事情,所以,LinkedHashMap 就是针对这一点对 HashMap 进行扩展,主要新增了**「两种迭代方式」**:按插入顺序 - 保证迭代元素的顺序与插入顺序一致按访问顺序 - 一种特殊的迭代顺序,从最近最少访问到最多访问的元素访问顺序,非常适合构建 LRU 缓存LinkedHashMap ...原创 2019-09-15 09:15:23 · 141 阅读 · 0 评论