关闭

ByteBuffer常用方法详解

缓冲区(Buffer)   缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对输入/输出(I/O)的数据作临时存储,这部分预留的内存空间就叫做缓冲区: 使用缓冲区有这么两个好处: 1、减少实际的物理读写次数 2、缓冲区在创建时就被分配内存,这块内存区域一直被重用,可以减少动态分配和回收内存的次数 举个简单的例子,比如A地有1w块砖要搬到B地 由...
阅读(86) 评论(0)

nio FileChannel中文乱码问题

http://www.voidcn.com/blog/chuyouyinghe/article/p-5979076.html 最近用nio读取文件时,英文正常,读取中文时会出现乱码,经查可以用Charset类来解决: 代码如下: package com.example.demo; import java.io.FileNotFoundException; import ja...
阅读(113) 评论(0)

利用FileChannel完成文件的读、写、复制

内容:通过NIO中的FileChannel完成文件的读、写、复制。 [java] view plain copy public class NioFileCopy {       private RandomAccessFile aFile = null;       private FileChannel inChannel = null;...
阅读(89) 评论(0)

Java NIO 读取文件、写入文件、读取写入混合

前言 Java NIO(new/inputstream outputstream)使用通道、缓冲来操作流,所以要深刻理解这些概念,尤其是,缓冲中的数据结构(当前位置(position)、限制(limit)、容量(capacity)),这些知识点要通过写程序慢慢体会。 NIO vs  传统IO NIO是面向缓冲、通道的;传统IO面向流 通道是双向的既可以写、也可以...
阅读(72) 评论(0)

关于同步,异步,阻塞,非阻塞,IOCP/epoll,select/poll,AIO ,NIO ,BIO的总结

IO基本概念 Linux环境 Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设备的操作都可以看做对文件进行操作。我们对一个文件的读写,都通过调用内核提供的系统调用;内核给我们返回一个file descriptor(fd,文件描述符)。对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符)。描述符就是一个数字(可以理解为一个索...
阅读(279) 评论(0)

Java NIO- Buffer

Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。 下面是NIO Buffer相关的话题列表: Buffer的基本用法Buffer的capacity,position和l...
阅读(140) 评论(0)

Java NIO示例:多人网络聊天室

一个多客户端聊天室,支持多客户端聊天,有如下功能: 功能1: 客户端通过Java NIO连接到服务端,支持多客户端的连接功能2:客户端初次连接时,服务端提示输入昵称,如果昵称已经有人使用,提示重新输入,如果昵称唯一,则登录成功,之后发送消息都需要按照规定格式带着昵称发送消息功能3:客户端登录后,发送已经设置好的欢迎信息和在线人数给客户端,并且通知其他客户端该客户端上线功能4:服务器收到已登录...
阅读(365) 评论(0)

JAVA NIO 服务器与客户端实现示例

以下代码只兼容Java 7及以上版本,对于一些关键地方请看注释说明。 公共类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 package...
阅读(427) 评论(0)

基于Java NIO的Socket通信

Java NIO模式的Socket通信,是一种同步非阻塞IO设计模式,它为Reactor模式实现提供了基础。 下面看看,Java实现的一个服务端和客户端通信的例子。 NIO模式的基本原理描述如下: 服务端打开一个通道(ServerSocketChannel),并向通道中注册一个选择器(Selector),这个选择器是与一些感兴趣的操作的标识(SelectionKey,即通过这个标...
阅读(189) 评论(0)

Java nio 客户端连接Server

在做通信系统的开发过程中,经常需要使用Socket通信。java新的io机制给我提供了一个很好的异步socket通信方式,这段时间用java写了一个客户端用来连接server。发现运行效率还比较让人满意。下面是我实现的部分功能。 连接服务器的socket,多线程启动。如果连接失败就重连。 Java代码   public class CommonSocket exten...
阅读(217) 评论(0)

怎样理解阻塞非阻塞与同步异步的区别?

作者:严肃 链接:https://www.zhihu.com/question/19732473/answer/20851256 来源:知乎 著作权归作者所有,转载请联系作者获得授权。 “阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。 1.同步与异步 同步和异步关注的是消息通信机制 (synchronous communication/...
阅读(621) 评论(0)

同步异步阻塞非阻塞Reactor模式和Proactor模式 (目前JAVA的NIO就属于同步非阻塞IO)

在高性能的 I/O 设计中,有两个比较著名的模式 Reactor 和 Proactor 模式,其中 Reactor 模式用于同步 I/O ,而 Proactor 运用于异步 I/O 操作。        在比较这两个模式之前,我们首先的搞明白几个概念,什么是阻塞和非阻塞,什么是同步和异步 , 同步和异步 是针对应用程序和内核的交互而言的 ,同步指的是用户进程触发 IO 操作并等待或者轮询的去...
阅读(502) 评论(0)

netty学习笔记(一)—结合reactor模式探索netty对网络io的处理机制

Reactor与Proactor简介 reactor、proactor常见的翻译是反应器(堆)、前摄器,这名字听着总让人一头雾水的,抓不着本质。后来看看对应形容词的英文释义,再结合技术角度的描述,总算有了基础的认识: reactive: reacting to events or situations rather than starting or doing new thin...
阅读(286) 评论(0)

Java NIO 教程

Java NIO提供了与标准IO不同的IO工作方式:  Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Asynchronous IO(异步IO):Java NIO可以让你异步的使用IO,例如:当线程从通道读取数据...
阅读(395) 评论(0)

[置顶] IO中同步、异步与阻塞、非阻塞的区别

一、同步与异步 同步/异步, 它们是消息的通知机制 1. 概念解释 A. 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。 按照这个定义,其实绝大多数函数都是同步调用(例如sin isdigit等)。 但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。 最常见的例子就是 SendMessage。 该函数...
阅读(522) 评论(0)
32条 共3页1 2 3 下一页 尾页
    个人资料
    • 访问:7063507次
    • 积分:61846
    • 等级:
    • 排名:第34名
    • 原创:250篇
    • 转载:2619篇
    • 译文:3篇
    • 评论:666条
    文章分类
    最新评论