随笔分类 -  IO编程

摘要:## IO 神器 Okio [官方](https://square.github.io/okio/) 是这么介绍 Okio 的: > Okio is a library that complements java.io and java.nio to make it much easier to a 阅读全文
posted @ 2023-08-26 17:43 JMCui 阅读(187) 评论(0) 推荐(0) 编辑
摘要:一、概念辨析:网络延迟与网络波动 (1) 网络延迟 网络延迟是指各式各样的数据在网络介质中通过网络协议(如TCP/IP)进行传输,如果信息量过大不加以限制,超额的网络流量就会导致设备反应缓慢,造成网络延迟。受限于光速,网络延迟总是有一个下限,是无法超越物理极限的。 (2) 网络波动(丢包率) 网络波 阅读全文
posted @ 2022-11-27 16:33 JMCui 阅读(1827) 评论(0) 推荐(0) 编辑
摘要:前言 两条竖线分别是表示: 主动关闭(active close)的一方 被动关闭(passive close)的一方 网络上类似的图有很多,但是有的细节不够,有的存在误导。有的会把两条线分别标记成 client 和 server。给读者造成困惑。对于断开连接这件事,客户端和服务端都能作为主动方发起, 阅读全文
posted @ 2021-12-10 19:08 JMCui 阅读(1719) 评论(0) 推荐(1) 编辑
摘要:原文链接:DMA 与零拷贝技术 注意事项:除了 Direct I/O,与磁盘相关的文件读写操作都有使用到 page cache 技术。 1. 数据的四次拷贝与四次上下文切换 很多应用程序在面临客户端请求时,可以等价为进行如下的系统调用: File.read(file, buf, len); Sock 阅读全文
posted @ 2021-09-11 21:59 JMCui 阅读(3357) 评论(0) 推荐(1) 编辑
摘要:一、概述 1、程序员基础知识大致可以分为七种基本科学:计算机组成原理、操作系统、计算机网络、算法和数据结构、图形学、编译原理、编辑技巧。 2、ISP:Internet Service Provider,本地网络服务提供商。 通常,局域网网络从 ISP 接入,然后内部再通过路由器、交换机进行连接,构成 阅读全文
posted @ 2021-08-09 20:05 JMCui 阅读(712) 评论(0) 推荐(0) 编辑
摘要:一、socket 和 fd(file descriptor)是什么? Unix/Linux 基本哲学之一就是"一切皆文件",即一切都可以用 "open → read/write → close" 来操作,socket 也可以理解成是一种特殊的文件。 fd(file descriptor):文件描述符 阅读全文
posted @ 2020-12-17 19:49 JMCui 阅读(1532) 评论(0) 推荐(1) 编辑
摘要:一、同步阻塞 IO(BIO) 当用户线程调用了 read 系统调用,内核(kernel)就开始了 IO 的第一个阶段:准备数据。很多时候,数据在一开始还没有到达(比如,还没有收到一个完整的Socket数据包),这个时候 kernel 就要等待足够的数据到来。 当 kernel 一直等到数据准备好了, 阅读全文
posted @ 2020-12-16 16:08 JMCui 阅读(791) 评论(0) 推荐(0) 编辑
摘要:一、基础知识 UDP 协议相较于 TCP 协议的特点: 1、无连接协议,没有持久化连接;2、每个 UDP 数据报都是一个单独的传输单元;3、一定的数据报丢失;4、没有重传机制,也不管数据报是否可达;5、速度比TCP快很多,可用来高效处理大量数据 —— 牺牲了握手以及消息管理机制。6、常用于音频、视频 阅读全文
posted @ 2018-09-13 20:32 JMCui 阅读(12783) 评论(2) 推荐(1) 编辑
摘要:一、前言 之前写过一篇 Spring 集成 WebSocket 协议的文章 —— Spring消息之WebSocket ,所以对于 WebSocket 协议的介绍就不多说了,可以参考这篇文章。这里只做一些补充说明。另外,Netty 对 WebSocket 协议的支持要比 Spring 好太多了,用起 阅读全文
posted @ 2018-09-10 13:21 JMCui 阅读(3391) 评论(7) 推荐(3) 编辑
摘要:一、前言 Netty 为许多通用协议提供了编解码器和处理器,几乎可以开箱即用, 这减少了你在那些相当繁琐的事务上本来会花费的时间与精力。另外,这篇文章中,就不涉及 Netty 对 WebSocket协议 的支持了,因为涉及的篇幅有点大,会在下一篇文章做一个具体的介绍。 二、SSL 协议 SSL 协议 阅读全文
posted @ 2018-09-04 18:46 JMCui 阅读(2752) 评论(0) 推荐(2) 编辑
摘要:一、概念 网络传输的单位是字节,如何将应用程序的数据转换为字节,以及将字节转换为应用程序的数据,就要说到到我们该篇介绍的编码器和解码器。 将应用程序的数据转换为网络格式,以及将网络格式转换为应用程序的数据的组件分别叫作编码器和解码器,同时具有这两种功能的单一组件叫作编解码器。 Netty 提供了一系 阅读全文
posted @ 2018-08-14 09:42 JMCui 阅读(1967) 评论(0) 推荐(0) 编辑
摘要:一、概述和原理 Netty 的单元测试,主要是对业务逻辑的 ChannelHandler 做测试(毕竟对 Bootstrap、EventLoop 这些做测试着实没有多大意义),模拟一次入站数据或者出站数据,查看数据流经 ChannelHandler 变成什么样了,以此达到测试的目的。 Netty 的 阅读全文
posted @ 2018-07-13 18:08 JMCui 阅读(2658) 评论(0) 推荐(0) 编辑
摘要:一、概念 先来整体的介绍一下这篇博文要介绍的几个概念(Channel、ChannelHandler、ChannelPipeline、ChannelHandlerContext、ChannelPromise): Channel:Netty 中传入或传出数据的载体;ChannelHandler:Nett 阅读全文
posted @ 2018-07-08 18:37 JMCui 阅读(1183) 评论(1) 推荐(2) 编辑
摘要:一、概述和原理 网络数据传输的基本单位总是字节,Netty 提供了 ByteBuf 作为它的字节容器,既解决了 JDK API 的局限性,又为网络应用程序提供了更好的 API,ByteBuf 的优点: 1、可以被用户自定义的缓冲区类型扩展2、通过内置的复合缓冲区类型实现了透明的零拷贝3、容量可以按需 阅读全文
posted @ 2018-06-29 09:53 JMCui 阅读(1857) 评论(0) 推荐(0) 编辑
摘要:一、前言 上一篇文章我们提到 Netty 的核心组件是 Channel、回调、Future、ChannelHandler、EventLoop,这篇文章主要是对 Channel (Netty传入和传出数据的载体)做一些详细的讲解,以及介绍下 Netty 内置的传输类型。 二、传输的核心 传输 API 阅读全文
posted @ 2018-06-13 11:31 JMCui 阅读(1204) 评论(1) 推荐(2) 编辑
摘要:一、概念 早期的 Java API 只支持由本地系统套接字库提供所谓的阻塞函数来支持网络编程。由于是阻塞 I/O ,要管理多个并发客户端,需要为每个新的客户端Socket 创建一个 Thread 。这将导致一系列的问题,第一,在任何时候都可能有大量的线程处于休眠状态(不可能每时每刻都有对应的并发数) 阅读全文
posted @ 2018-06-08 20:54 JMCui 阅读(4952) 评论(0) 推荐(1) 编辑
摘要:一、概念 Java 语言从其诞生开始,就和网络紧密联系在一起。在 1995 年的 Sun World 大会上,当时占浏览器市场份额绝对领先的网景公司宣布在浏览器中支持Java,从而引起一系列的公司产品对Java的支持,使得Java很快成为一种流行的语言。 Java 提供的网络功能的相关类主要有三个, 阅读全文
posted @ 2018-06-05 20:28 JMCui 阅读(1345) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示