摘要:
## 分类 题单:[code](#code) 难度:[简单](#Simple) [中等](#middle) [困难](#hard) 类型:[数组](#数组) [链表](#链表) [字符串](#字符串) [二叉树](#二叉树) [排序](#排序) 解法:[递归和迭代](#递归和迭代) [滑动窗口 ]( 阅读全文
摘要:
Future设计模式提供一种异步执行方式。提供这样一个场景,我们进行一个查询调用,该调用耗时时间长,因此当前线程不得不一直阻塞,直到拿到结果。这种情况下,就可以使用异步执行的方式,它会在进行调用时直接返回一个“凭证”,当前线程可以在后续某个时刻通过该“凭证”拿到查询结果。 一、Future设计模式实 阅读全文
摘要:
NIO最大的亮点就是选择器和非阻塞I/O操作的使用,这一点在SelectableChannel上尤为重要(Pipe也可使用选择器),先看一个传统的连接方式: 1 public class TCPServer { 2 public static void main(String[] args) thr 阅读全文
摘要:
在我的理解里,通道是对I/O服务进一步的包装。Channel提供与 I/O 服务的直接连接,并且通过通道,多路复用和非阻塞I/O得以实现。Channel用于在字节缓冲区和位于通道另一侧的实体(通常是一个文件或套接字)之间有效地传输数据。 Channel类提供维持平台独立性所需的抽象过程,不过仍然会模 阅读全文
摘要:
整个java.nio由Buffer、Channels、Selector、字符集和正则表达式组成,本节我们对Buffer进行展开。 一个Buffer对象是固定数量的数据的容器。对于每个非布尔原始数据类型都有一个缓冲区类。尽管缓冲区作用于它们存储的原始数据类型,但缓冲区十分倾向于处理字节。非字节缓冲区可 阅读全文
摘要:
一、 缓冲区 缓冲区,以及缓冲区如何工作,是所有 I/O 的基础。“输入/输出”也就是把数据移进或移出缓冲区。 进程执行I/O操作,归结起来,也就是向操作系统发出请求,让它要么把缓冲区里的数据排干(写),要么用数据把缓冲区填满(读)。进程使用这一机制处理所有数据进出操作。如图1.1描述了数据从外部磁 阅读全文
摘要:
阅读本章前,需要了解: 运输层 可靠数据传输原理 一、TCP连接 TCP被称为是面向连接(connection-oriented),这是因为在一个应用进程可以开始向另一个应用进程发送数据之前,两个进程必须先相互“握手”,即他们必须先相互发送某些预备报文,以建立确保数据传输的参数。连接的双方都将初始化 阅读全文
摘要:
本章将介绍可靠数据传输协议的原理,具体过程为,通过给出越来越复杂的传输服务要求,不断迭代基础的“可靠传输协议”,最终得到真正可用的可靠传输协议。 一、可靠数据传输概述 如图1.1 是可靠数据传输的框架。为上层实体提供到的服务抽象是:数据可以通过一条可靠的信道进行传输。借助于可靠信道,传输数据比特不会 阅读全文
摘要:
一、UDP特性 运输层的最低限度是必须提供一种复用/分解服务,以便在网络层和正确的应用级进程之间传递数据。UDP就是一种非常简单的协议,在[RFC 768]的定义中,UDP除了复用/分解以及少量差错检测之外,几乎没有做别的东西。UDP从应用进程得到数据,附加上用于复用/分解的源和目的端口号字段,以及 阅读全文
摘要:
本章内容主要讨论运输层原理和这些原理在现有协议中是如何实现的,以及计算机网络中最基础的一个问题,两个实体怎样才能在一种会丢失或损坏数据的媒体上可靠地通信。后续内容: 无连接运输:UDP 可靠数据传输原理 面向连接的运输:TCP 一、概述和运输层服务 运输层位于应用层和网络层之间,该层为运行在不同主机 阅读全文