个人简介

Echo Blog


江湖无名 安心练剑
  • Java NIO-09-零拷贝之内存共享 buffer share
    缓冲区共享 还有另外一种利用预先映射机制的共享缓冲区的方法也可以在应用程序地址空间和操作系统内核之间快速传输数据。 采用缓冲区共享这种思想的架构最先在 Solaris 上实现,该架构使用了“ fbufs ”这个概念。 这种方法需要修改 API。 应用程序地址空间和操作系统内核地址空间之间的数据传递需要严格按照 fbufs 体系结构来实现,操作系统内核之间的通信也是严格按照 fbufs...
    2018-09-22 04:20:47 | Java
  • Java NIO-09-零拷贝
    业务代码中的拷贝 在业务代码的编写中,我们会遵循分层的思想。 前端页面传递一个 Restful,我们在 controller 变为 vo,然后到 service 变为 bean,在数据库操作变为 dao。 每一次都要进行属性的复制。 如果直接从 vo=>入库,可以认为是一种零拷贝。 Linux 系统 传统拷贝 传统的 Linux 操作系统的标准 I/O 接口是基于数据拷贝...
    2018-09-22 04:20:47 | Java
  • Java NIO-09-17-零拷贝之 java 实现
    Java NIO 零拷贝实现 基本概念 在 Java NIO 中的通道(Channel)就相当于操作系统的内核空间(kernel space)的缓冲区。 而缓冲区(Buffer)对应的相当于操作系统的用户空间(user space)中的用户缓冲区(user buffer): 通道(Channel)是全双工的(双向传输),它既可能是读缓冲区(read buffer),也可能是网络缓冲区...
    2018-09-22 04:20:47 | Java
  • Java NIO-09-16-零拷贝介绍及对比
    零拷贝 零拷贝(Zero-copy)技术指在计算机执行操作时,CPU 不需要先将数据从一个内存区域复制到另一个内存区域,从而可以减少上下文切换以及 CPU 的拷贝时间。 作用 它的作用是在数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现 CPU 的零参与,彻底消除 CPU 在这方面的负载。 实现零拷贝用到的最主要技术是 DMA 数据传输技术和内存区域映...
    2018-09-22 04:20:47 | Java
  • Java NIO-08-理解 nio
    如何学习 nio 第一步,应该弄明白,有哪些IO模型,它们的区别是什么。 第二步,要搞清楚,这些IO模型的缺陷是什么,在高并发的情况下,为什么阻塞式接口 + 多线程会遇到瓶颈: 第三步,解决方案就是IO多路复用,要搞清楚,Java的多路复用不过是操作系统相关调用的封装。比如 select / poll / epoll / kqueued 等等。 第四步,掌握 selector 的用法...
    2018-09-22 04:20:47 | Java
  • Java NIO-07-Pipe
    管道 一个Java NIO的管道是两个线程间单向传输数据的连接。 一个管道(Pipe)有一个source channel和一个sink channel。 我们把数据写到sink channel中,这些数据可以同过source channel再读取出来。 基本使用 创建 打开一个管道通过调用Pipe.open()工厂方法,如下: Pipe pipe = Pipe.open()...
    2018-09-22 04:20:47 | Java
  • Java NIO-06-Selector
    Selector 概念 Selector是Java NIO中的一个组件,用于检查一个或多个NIO Channel的状态是否处于可读、可写。 如此可以实现单线程管理多个channels,也就是可以管理多个网络链接。 作用 用单线程处理多个channels的好处是我需要更少的线程来处理channel。 实际上,你甚至可以用一个线程来处理所有的channels。从操作系统的角度来看,切...
    2018-09-22 04:20:47 | Java
  • Java NIO-05-Buffer
    Buffer 作用 Java NIO Buffers用于和NIO Channel交互。正如你已经知道的,我们从channel中读取数据到buffers里,从buffer把数据写入到channels. buffer 本质上就是一块内存区,可以用来写入数据,并在稍后读取出来。 这块内存被NIO Buffer包裹起来,对外提供一系列的读写方便开发的接口。 用法演示 Basic Buff...
    2018-09-22 04:20:47 | Java