摘要: 1.简介 本文是 "上一篇文章" 实践篇,在上一篇文章中,我分析了选择器 Selector 的原理。本篇文章,我们来说说 Selector 的应用,如标题所示,这里我基于 Java NIO 实现了一个简单的 HTTP 服务器。在接下来的章节中,我会详细讲解 HTTP 服务器实现的过程。另外,本文所对 阅读全文
posted @ 2018-04-08 12:05 田小波⊰ 阅读(692) 评论(1) 推荐(3) 编辑
摘要: 1.简介 前面的文章说了缓冲区,说了通道,本文就来说说 NIO 中另一个重要的实现,即选择器 Selector。在更早的 "文章" 中,我简述了几种 IO 模型。如果大家看过之前的文章,并动手写过代码的话。再看 Java 的选择器大概就会知道它是什么了,以及怎么用了。选择器是 Java 多路复用模型 阅读全文
posted @ 2018-04-08 07:59 田小波⊰ 阅读(869) 评论(1) 推荐(1) 编辑
摘要: 1.简介 前面一篇文章讲了文件通道,本文继续来说说另一种类型的通道 套接字通道。在展开说明之前,咱们先来聊聊套接字的由来。套接字即 socket,最早由伯克利大学的研究人员开发,所以经常被称为 。UNIX 4.2BSD 内核版本中加入了 socket 的实现,此后,很多操作系统都提供了自己的 soc 阅读全文
posted @ 2018-03-27 08:48 田小波⊰ 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 1.简介 通道是 Java NIO 的核心内容之一,在使用上,通道需和缓存类(ByteBuffer)配合完成读写等操作。与传统的流式 IO 中数据单向流动不同,通道中的数据可以双向流动。通道既可以读,也可以写。这里我们举个例子说明一下,我们可以把通道看做水管,把缓存看做水塔,把文件看做水库,把水看做 阅读全文
posted @ 2018-03-26 08:48 田小波⊰ 阅读(397) 评论(0) 推荐(0) 编辑
摘要: 1.简介 Java NIO 相关类在 JDK 1.4 中被引入,用于提高 I/O 的效率。Java NIO 包含了很多东西,但核心的东西不外乎 Buffer、Channel 和 Selector。本文中,我们先来聊聊的 Buffer 的实现。Channel 和 Selector 将在随后的文章中讲到 阅读全文
posted @ 2018-03-05 08:16 田小波⊰ 阅读(408) 评论(0) 推荐(4) 编辑
摘要: 1. 简介 epoll 是 Linux 平台下特有的一种 I/O 复用模型实现,于 2002 年在 Linux kernel 2.5.44 中被引入。在 epoll 之前,Unix/Linux 平台下的 I/O 复用模型包含 select 和 poll 两个系统调用。随着因特网的发展,因特网的用户量 阅读全文
posted @ 2018-03-02 14:00 田小波⊰ 阅读(660) 评论(0) 推荐(1) 编辑
摘要: 1. 前言 最近在学习 Java NIO 方面的知识,为了加深理解。特地去看了 Unix/Linux I/O 方面的知识,并写了一些代码进行验证。在本文接下来的一章中,我将通过举例的方式向大家介绍五种 I/O 模型。如果大家是第一次了解 I/O 模型方面的知识,理解起来会有一定的难度。所以在看文章的 阅读全文
posted @ 2018-02-09 10:07 田小波⊰ 阅读(648) 评论(5) 推荐(6) 编辑
摘要: 1.概述 LinkedList 是 Java 集合框架中一个重要的实现,其底层采用的双向链表结构。和 ArrayList 一样,LinkedList 也支持空值和重复值。由于 LinkedList 基于链表实现,存储元素过程中,无需像 ArrayList 那样进行扩容。但有得必有失,LinkedLi 阅读全文
posted @ 2018-01-31 09:42 田小波⊰ 阅读(642) 评论(8) 推荐(3) 编辑
摘要: 1.概述 是一种变长的集合类,基于定长数组实现。ArrayList 允许空值和重复元素,当往 ArrayList 中添加的元素数量大于其底层数组容量时,其会通过扩容机制重新生成一个更大的数组。另外,由于 ArrayList 底层基于数组实现,所以其可以保证在 复杂度下完成随机查找操作。其他方面,Ar 阅读全文
posted @ 2018-01-29 09:55 田小波⊰ 阅读(833) 评论(0) 推荐(2) 编辑
摘要: 1. 背景 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。相对于另一种数据交换格式 XML,JSON 有着诸多优点。比如易读性更好,占用空间更少等。在 web 应用开发领域内,得益于 JavaScript 对 JSON 提供的良好支持,JSON 要比 阅读全文
posted @ 2018-01-26 09:44 田小波⊰ 阅读(4473) 评论(1) 推荐(5) 编辑