nio

  • (IO密集型事务)同步,异步与CPU使用率关系
    (IO密集型事务)同步,异步与CPU使用率关系

    对于一台多核物理机,cpu的使用率和线程的数量是有一定关系的 cpu使用率最直接的关系是线程数量,但是,当线程数量达到一定程度时,cpu会因为线程间切换造成大量开销 同步和异步 比较同步和异步对cpu使用率的影响要放在同样多的线程数的前提下,同步方式下,阻塞的线程比例会很高,而阻塞线程是不能使用cpu的,这就造成了cpu使用率低的原因, 而异步的方式则不会有这种阻塞的线程 对于同步和异步的方式,本身是不会对cpu使用率造成差别,传统的一线程一请求模式可以通过增加线程的方式提高cpu的利用率,并且

    nio, 异步, CPU, 高并发April 8

  • Java阻塞IO与非阻塞IO
    Java阻塞IO与非阻塞IO

    IO: IO 是主存和外部设备 ( 硬盘.终端和网络等 ) 拷贝数据的过程. IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成. 阻塞与非阻塞: 一辆从 A 开往 B 的公共汽车上,路上有很多点可能会有人下车.司机不知道哪些点会有哪些人会下车,对于需要下车的人,如何处理更好? 司机过程中定时询问每个乘客是否到达目的地,若有人说到了,那么司机停车,乘客下车. ( 类似阻塞式 ) 每个人告诉售票员自己的目的地,然后睡觉,司机只和售票员交互,到了某个点由售票员通知乘客下车. ( 类似非阻

    nio, 非阻塞IO, 阻塞IOJanuary 7

  • 基于java.nio.channels的编程实践-II

    介绍 为了提供并发处理效率,把用户的请求连接随机分配到线程池的线程进行处理,hbase也是采用同样的方式处理用户请求的 客户端代码可以参考:基于java.nio.channels的编程实践-I 代码 import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.chan

    nio, 编程, 实践, ChannelsDecember 25

  • Netty5入门学习笔记002-TCP粘包/拆包问题的解决之道(上)
    Netty5入门学习笔记002-TCP粘包/拆包问题的解决之道(上)

    TCP网络通信时候会发生粘包/拆包的问题,接下来探讨其解决之道. 什么是粘包/拆包 一般所谓的TCP粘包是在一次接收数据不能完全地体现一个完整的消息数据.TCP通讯为何存在粘包呢?主要原因是TCP是以流的方式来处理数据,再加上网络上MTU的往往小于在应用处理的消息数据,所以就会引发一次接收的数据无法满足消息的需要,导致粘包的存在.处理粘包的唯一方法就是制定应用层的数据通讯协议,通过协议来规范现有接收的数据是否满足消息数据的需要. 情况分析 TCP粘包通常在流传输中出现,UDP则不会出现粘包,因为

    nio, netty, TCP粘包, TCP半包December 17

  • JavaNIO 学习(四)
    JavaNIO 学习(四)

    在上一篇文章中介绍了缓冲区内部对于状态变化的跟踪机制,而对于NIO中缓冲区来说,还有很多的内容值的学习,如缓冲区的分片与数据共享,只读缓冲区等.在本文中我们来看一下缓冲区一些更细节的内容. 缓冲区的分配 在前面的几个例子中,我们已经看过了,在创建一个缓冲区对象时,会调用静态方法allocate()来指定缓冲区的容量,其实调用 allocate()相当于创建了一个指定大小的数组,并把它包装为缓冲区对象.或者我们也可以直接将一个现有的数组,包装为缓冲区对象,如下示例代码所示: public clas

    nio, JavaNovember 22

  • Java NIO原理图文分析及代码实现
    Java NIO原理图文分析及代码实现

    前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.可以参考:http://baike.baidu.com/view/32726.htm )机制时,发现hadoop的RPC机制的实现主要用到了两个技术:动态代理(动态代理可以参考博客: )和java NIO.为了能够正确地分析hadoop的RPC源码,我觉得很有必要先研究一下java NIO的原理和具体

    nioNovember 5

  • nio 实现从写入流复制到输入流

    话就不多说了,直接上代码: package com.yao.nio.channel; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.Channels; import java.nio.channels.ReadableByteChannel; import java.nio.channels.WritableByteChannel; public class ChannelCopy

    nioSeptember 11

  • 蛋疼的笔试题

    每次笔试面试都是检验自己编程能力的时候,而每次都被打击得体无完肤,哑口无言 基础不牢固的原因 PHP中文手册还需要看几遍 JVM调优还得看,垃圾收集器还得细看 NIO的实现和实用场景 我其实没记住几个api,常用的类名可能都记不全 函数名也记得不清楚 请看 1. echo 1+2+"3+4+5"; 输入: ? 参见:PHP的操作符 2. echo 1>>0; echo 2>>1; echo 3<<2; #打印结果: 参见:移位操作符 3. $s =

    jvm, nio, PHP, 移位, 笔试题June 20

  • Java nio实现的PostgrelSql数据快速导入

    1.PostgreSql快速复制的实现 Data.Java public void setTableData(String tableName, InputStream pis, char copyDelimiter) throws Exception { PGConnection copyConn = (PGConnection)this.conn.getConnection(); CopyManager copy = copyConn.getCopyAPI(); copy.copyIn("C

    nio, Java, 数据迁移, PostgrelSqlJune 11

  • 事件驱动模式和reactor模式的区别

    事件驱动模式和reactor模式的区别 http://stackoverflow.com/questions/9138294/what-is-the-difference-between-event-driven-model-and-reactor-pattern 以下部分请自行越狱 http://jeewanthad.blogspot.com/2013/02/reactor-pattern-explained-part-1.html(第1部分) http://jeewanthad.blogsp

    nio, reactor, JavaJune 10

  • java nio, aio比nodejs要快?

    讨论 http://www.reddit.com/r/java/comments/1wxe8n/is_nodejs_really_faster_than_java/ Java Wins 证据一:(推荐) http://blog.paralleluniverse.co/2014/02/04/littles-law/ 证据二: http://www.olympum.com/java/java-aio-vs-nodejs/ Node Wins 证据一(推荐) http://strongloop.com

    nio, aio, Java, nodejsJune 9

  • NIO通信例子

    服务端代码 package net.nio; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels

    nio, JavaMay 26

  • Netty4的实战应用总结 与spring整合

    首先引入netty4 包 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>${netty.version}</version> </dependency> 下面我们开始创建netty的UDP服务器 我使用了 工厂模式 这是为了复用代码 顺便方便与spring整合 /** * * * * @a

    nio, netty, 服务器, 网络框架May 5

  • 对文件格式的日志进行前端显示

    之前,应用系统的数据库会有一张日志表,用于保存系统内部管理员的操作记录,用作日后审计.所以前端使用了jqtable这个jquery插件,用于日志的查询.分页显示.排序显示.由于日志都是记录在数据库表中,那么日志的格式就可以保证一致,而且使用SQL有可以做到对日志的关键字检索.排序和分页,所以后台只需要将数据查询出来封装到对象中,然后以JSON格式返给前端显示即可. 现在,新增了这样一个需求:由外部的一个系统通过syslog将日志文件保存到某一目录下(如:/var/log/iplogs/),当前的

    nio, 日志文件, 日志分析March 16

  • 二 Channel
    二 Channel

    Java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道.但流的读写通常是单向的. 通道可以异步地读写. 通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入. 正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道.如下图所示: Channel的实现 这些是Java NIO中最重要的通道的实现: FileChannel DatagramChannel SocketChannel ServerSocketChannel FileCha

    nio, channelMarch 6

  • Netty那点事(四)Netty与Reactor模式
    Netty那点事(四)Netty与Reactor模式

    一:Netty.NIO.多线程? 时隔很久终于又更新了!之前一直迟迟未动也是因为积累不够,后面比较难下手.过年期间@李林锋hw发布了一个Netty5.0架构剖析和源码解读 http://vdisk.weibo.com/s/C9LV9iVqH13rW/1391437855,看完也是收获不少.前面的文章我们分析了Netty的结构,这次咱们来分析最错综复杂的一部分-Netty中的多线程以及NIO的应用. 理清NIO与Netty的关系之前,我们必须先要来看看Reactor模式.Netty是一个典型的多线

    nio, reactor, netty, 高并发February 8

  • Java NIO Selector
    Java NIO Selector

    A Selector is a Java NIO component which can examine one or more NIO Channel's, and determine which channels are ready for e.g. reading or writing. This way a single thread can manage multiple channels, and thus multiple network connections. Here is

    nio, Java, Selector, serversocketchannel, SocketChannelFebruary 4

  • Java NIO Introduction

    Java NIO (New IO) is an alternative IO API for Java (from Java 1.4), meaning alternative to the standard Java IO API's. Java NIO offers a different way of working with IO than the standard IO API's. Java NIO: Channels and Buffers In the standard IO A

    buffers, nio, asynchronous, selectors, Java, ChannelsFebruary 4

  • JAVA学习笔记--3.Network IO

    引论 人类需要交流,所以才会有语言,文字这些东西. 交流的双方必须使用彼此理解的语言或者文字才能沟通. 在计算机网络世界中,两个计算机需要通信的话,也必须使用计算机之间能够理解的协议.在双方通信时,比如要区分传输协议(TCP,UDP)和数据协议(二进制,文本(JSON,XML等)). 理解计算机网络编程,需要了解TCP/IP协议族.TCP/IP协议族共分为四层,链路层,网络层,传输层和应用层. 链路层主要和网卡驱动打交道,网络层主要指IP协议,传输层指TCP/UDP.应用层则很多,比如HTTP,

    api, nio, socket, 三次握手, 四次握手, 常见SOCKETJanuary 9

  • JAVA学习笔记--2.Disk IO

    IO,Input Output的缩写. IO根据操作数据来源的介质不同,可以分为 Disk IO,Network IO等等. 本文描述的对象主要是Disk IO. 根据JAVA IO的时间演进顺序,分为 OIO和NIO. ===== OIO(Old IO) Inputstream 及其子类主要负责将磁盘数据读入到字节数组中. Outputstream 及其子类主要负责将字节数组写出到磁盘中. Reader和Writer和前两者类似,不过主要负责读写字符. 相同的字节在不同的编码方式下,可以显示为

    nio, filechannel, buffer, OIOJanuary 9

  • 自己仿Mina NIO框架zfast实现核心的 过滤链实现
    自己仿Mina NIO框架zfast实现核心的 过滤链实现

    上一章讲了事件驱动,其实事件驱动很常见,其实反应器模式 也是事件驱动的思想 ,这一章我们开始实现服务器 客服端 首先集成过滤器模式 下面是相关类的编写 package com.zyp.zfast.core; /** * * * * @author zhuyuping * @version 1.0 * @created 2013-11-29 下午1:57:02 * @functions:过滤器的接口 通过session 获取事件 执行 */ public interface ZfastFilter

    nio, zookeeper, mina, 过滤器模式November 29

  • java NIO之ServerSocketChannel的使用
    java NIO之ServerSocketChannel的使用

    在介绍这个类之前假设读者已经有了Buffer和channel的基础.ServerSocketChannel与ServerSocket之间的区别在于,serverSocket的代码在读到accept()方法的时候堵塞直到有新的连接进来才会继续执行,而ServerSocketChannel更像是观察者模式,在selector中注册事件之后,只要有连接进来,selector就会通知大家.所以使用ServerSocketChannel有下面几部: 1)获取一个ServerSocketChannel并且绑

    nio, Java, serversocketchannelNovember 28

  • 自己仿Mina NIO框架zfast实现核心的框架架构实现
    自己仿Mina NIO框架zfast实现核心的框架架构实现

    1.MINA 最终要的事件驱动思想,关于事件驱动 思想无处不在从硬件 传感器 到嵌入式 到软件操作系统 界面UI 从小框架 到消息中间件 网络中间件 网络服务器等等无处没有他的身影,关于他实现类似监听 发布订阅模式 2.mina用到了以下几种关键系统层次设计上的核心设计模式 个人觉得设计模式无非就是依赖关联 引用 聚合 实现 继承 而选择时候 从左到右依次优先级选用,既依赖优遇 聚合 聚合 优于继承 接口无处不在 这是我的个人使用总结 上下文模式 如在mina中Iosession承上启下 拦截过

    nio, 设计模式, 架构, 事件驱动, minaNovember 25

  • jdk7 NIO的读取目录下所有图片(文件)

    public class FileTest { @Test public void test() throws IOException{ long start = System.currentTimeMillis(); String path="G:\\图片"; Path p = Paths.get(path); //放文件对应的Path对象,可以通过toFile方法得到File对象 //这里没有语法错误,是jdk7的新特性 List<Path> result = new

    nio, jdk7November 19

  • Java NIO 使用实例

    在JDK1.4之前,Java OutputStream的write方法.InputStream的Read方法和ServerSocket的accept()方法都是阻塞方法,JDK1.4之前Java引入了新的输入输出系统(New Input/Out,NIO),非阻塞是Java NIO实现的重要功能之一 . 1.Buffer 缓冲区,传输数据使用,本质是一个数组,Channel中读数据和写数据都只能通过Buffer传输. 2.Channel 通道,所有的IO流在NIO中都是从Channel开始的,数据

    nio, JavaOctober 1

  • Netty那点事(二)Netty中的buffer
    Netty那点事(二)Netty中的buffer

    上一篇文章我们概要介绍了Netty的原理及结构,下面几篇文章我们开始对Netty的各个模块进行比较详细的分析.Netty的结构最底层是buffer机制,这部分也相对独立,我们就先从buffer讲起. What: buffer二三事 buffer中文名又叫缓冲区,按照维基百科的解释,是"在数据传输时,在内存里开辟的一块临时保存数据的区域".它其实是一种化同步为异步的机制,可以解决数据传输的速率不对等以及不稳定的问题. 根据这个定义,我们可以知道涉及I/O(特别是I/O写)的地方,基本会有

    nio, netty, JavaSeptember 25

  • Netty那点事(一)概述
    Netty那点事(一)概述

    Netty和Mina是Java世界非常知名的通讯框架.它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户netty.io.关于Mina已有@FrankHui的Mina系列文章,我正好最近也要做一些网络方面的开发,就研究一下Netty的源码,顺便分享出来了. Netty目前有两个分支:4.x和3.x.4.0分支重写了很多东西,并对项目进行了分包,规模比较庞大,入手会困难一些,而3.x版本则已经被广泛使用.本系列文章针对netty 3.

    nio, nettySeptember 21

  • Java NIO学习笔记之二-图解ByteBuffer
    Java NIO学习笔记之二-图解ByteBuffer

    ByteBuffer前前后后看过好几次了,实际使用也用了一些,总觉得条理不够清晰. <程序员的思维修炼>一本书讲过,主动学习,要比单纯看资料效果来的好,所以干脆写个详细点的文章来记录一下. 概述 ByteBuffer是NIO里用得最多的Buffer,它包含两个实现方式:HeapByteBuffer是基于Java堆的实现,而DirectByteBuffer则使用了unsafe的API进行了堆外的实现.这里只说HeapByteBuffer. 使用 ByteBuffer最核心的方法是put(byte

    nio, ByteBufferSeptember 6

  • Java NIO学习笔记之一-资料整理

    最近要用Java写一个socks proxy,本来基于jsocks改了改,但是jsocks的BIO和线程模型到了高并发下简直惨不忍睹.想了一下,最后决定用NIO重写一个socks proxy了,为了方便,可能会忽略掉socks5的认证部分. 说来惭愧,用Java这么久了,对NIO的理解完全停留在IO模型的概念上,一直没有真正写过一个意义上的NIO程序,所以趁机详细学习一下. NIO核心API @左耳朵耗子写过一篇关于NIO Selector的分析http://blog.csdn.net/haoe

    nioSeptember 6

  • 理解Java NIO
    理解Java NIO

    基础概念 缓冲区操作 缓冲区及操作是所有I/O的基础,进程执行I/O操作,归结起来就是向操作系统发出请求,让它要么把缓冲区里的数据排干(写),要么把缓冲区填满(读).如下图 内核空间.用户空间 上图简单描述了数据从磁盘到用户进程的内存区域移动的过程,其间涉及到了内核空间与用户空间.这两个空间有什么区别呢? 用户空间就是常规进程(如JVM)所在区域,用户空间是非特权区域,如不能直接访问硬件设备.内核空间是操作系统所在区域,那肯定是有特权啦,如能与设备控制器通讯,控制用户区域的进程运行状态.进程执行

    nioJune 15

  • 也谈BIO | NIO | AIO (Java版)

    关于BIO | NIO | AIO的讨论一直存在,有时候也很容易让人混淆,就我的理解,给出一个解释: BIO | NIO | AIO,本身的描述都是在Java语言的基础上的.而描述IO,我们需要从两个层面: 编程语言 实现原理 底层基础 从编程语言层面 BIO | NIO | AIO 以Java的角度,理解,linux c里也有AIO的概念(库),这些概念不知道什么原因被炒火起来,这里只从Java角度入手. BIO,同步阻塞式IO,简单理解:一个连接一个线程 NIO,同步非阻塞IO,简单理解:一

    nio, aio, BIOMay 21

  • Java NIO简介

    概述 最近在研究javaNIO发现,这里面的坑不少,而且资料很少,或许有人会说,baidu,google一大篇,可是真的很少,特别是关于Socket多线程读写这块的资料.大部分来源这里Architecture of a Highly Scalable NIO-Based Server.我承认这篇文章比较有官方权威,但对于像我这种入门级别的人来说理解起来还真费劲. 这篇文章的主要目的在抛砖引玉,加上自己的一些理解,希望能完全的详细解析下java NIO的原理及其开发过程中面对的各种坑. java

    nio, Java, socketMay 6

  • 初识 java NIO
    初识 java NIO

    已有的IO操作属于阻塞操作 accept()方法,阻塞式 等待输入,否则无法向下执行 新 IO 操作 1.新 IO 中所有的操作都是以缓冲区进行,性能比已有 IO 高 2. 上述没有boolean类型 重要变量" position limit capacity 这三个变量完全了缓冲区的操作代码 client connect Exception in thread "main" java.net.ConnectException: Connection refused: no

    nio, JavaApril 24

  • 几种NIO程序写法(一)kafka的SocketServer
    几种NIO程序写法(一)kafka的SocketServer

    总结一点常见的NIO程序的写法,虽然没有一个固定的格式,也没有特别大的差别,但是多总结总结各位大师的写法,多见点儿组合还是对自身代码的质量有很大提高的.这一篇我想通过对kafka network包下的源码进行分析,然后抽取第一种比较常见的写法.之前已经写过一篇关于kafka通信源码的解读,可参见http://my.codeweblog.com/ielts0909/blog/102336,最近再改写一些源码,所以还是有必要把更完整的认识更新上来. 当然这不是最常见的写法,最常见,也是大多数人都能接

    nio, kafkaApril 11

  • Hadoop 中 IPC 的源码分析
    Hadoop 中 IPC 的源码分析

    最近开始看 Hadoop 的一些源码,展开 hadoop 的源码包,各个组件分得比较清楚,于是开始看一下 IPC 的一些源码.(版本是 1.0.4 中的 ipc 包,多谢 @上古进程 提醒) IPC模块,也就是 进程间通信模块,如果是在不同的机器上,那就可以理解为 RPC 了,也就是远程调用.事实上, hadoop 中的 IPC 也就是基于 RPC 实现的. 使用 sloccount 统计一下 ipc 包中代码的行数,一共是 2884 行.也就是说,IPC 作为hadoop的基础组件,仅仅用了不

    nio, rpc, hadoop, ipc, 多线程April 1

  • 列出目录下所有的文件夹或者目录(java)

    import java.io.File; public class FileTest { /** * @param args */ public static void main(String[] args) { File my = new File("d:"+File.separator); print(my); } public static void print(File file){ if(file != null){ if(file.isDirectory()){ File

    nio, 列出所有的文件夹和文件March 25

  • CshBBrainPP 上传文件html实例

    有朋友问怎样上传图片到CshBBrainPP服务器上,这里简要介绍下,供需要的朋友参考. 1.首先你要启动CshBBrainPP服务器 2.通过html直接上传就可以了 3.form需要设置enctype ="multipart/form-data",action指向cshbbrainpp的地址,在浏览器里面选择文件上传. 4.如果遇到跨域的问题,将上传页面放到iframe里面即可. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0

    nio, 图片服务器, CshBBrainPPFebruary 28

  • Jetty源码学习5-NIO架构网络服务器
    Jetty源码学习5-NIO架构网络服务器

    引言 一个优秀的框架能从中学到很多东西,撇开代码不说,它所涉及到的技术也是非常通用的,藉此总结下NIO.JMX.HttpClient.Continunation在Jetty中的应用,当然对于Http的解析HttpParser也算是一个. 本文主要是总结网络服务器的架构与NIO在Jetty中的应用,关于NIO的操作系统底层原理并没有深入研究,只总结了我对于NIO的理解. 网络架构对于应用服务器而言还是比较重要的,在服务器中有一些"池"的概念,你立马会想到线程池,Jetty中还有缓存池.H

    jetty, nio, httpclient, 网络服务器February 27

  • CshBBrainPP 安装.配置.运行和测试文档

    CshBBrainPP 安装配置运行和测试 1.项目的安装 从http://code.google.com/p/cshbbrainpp/downloads/list下载源代码包,解压.从Eclipse 导入项目. 在Eclipse编译项目没有错误提示即成功(项目编译要求jdk1.6及以上版本). 2.项目的配置 2.1项目系统参数配置 项目参数文件位置:src/com/jason/config.properties 项目系统参数列表: #the port of the server #服务器所使

    nio, CshBBrainPP, java图片服务器February 5

  • java nio-3

    到目前为止,我们只是使用缓冲区将数据从一个通道转移到另一个通道.然而,程序经常需要直接处理数据.例如,您可能需要将用户数据保存到磁盘.在这种情况下,您必须将这些数据直接放入缓冲区,然后用通道将缓冲区写入磁盘. 或者,您可能想要从磁盘读取用户数据.在这种情况下,您要将数据从通道读到缓冲区中,然后检查缓冲区中的数据. 实际上,每一个基本类型的缓冲区都为我们提供了直接访问缓冲区中数据的方法,我们以ByteBuffer为例,分析如何使用其提供的get()和put()方法直接访问缓冲区中的数据. The

    nioFebruary 2

  • java nio-2
    java nio-2

    状态变量是上一节中提到的"内部计数系统"的关键,随着每次读写操作,状态变量都在发生变化.通过记录和追踪这些变化,buffer有能力在内部管理其自身的一些资源. 当你从channel中读取数据的时候,数据已经在buffer中了.在一些情况下,你可以将这个buffer直接的写到另一个channel中,但是通常,你希望看看这些数据.这可以通过get()方法来优雅的实现,同样的,当你想往buffer中放入数据时,你也可是使用put()方法. 在这一节中,你将学到NIO中一些关于状态变量和存取方

    nioFebruary 2

  • NIO揭秘-1

    本次NIO系列都是基于IBM的Developerworks上的一篇pdf文档,我也就是拾人牙慧,如有值得商榷的地方,欢迎大家拍砖. 本次主要讨论一下Channels和Buffers. Overview: Channels和Buffers是构成NIO的主要部件,他们被广泛的使用在每一个IO操作中.Channels类似于原IO包中的流的概念.所有流动的数据(不管是流进还是流入)都必须经过Channel.而Buffer则在本质上是一个容器,所有被送到channel中的数据首先必须放在buffer中,同

    nioFebruary 2

  • Kafka.network包源码解读
    Kafka.network包源码解读

    最近阅读了kafka network包的源码,主要是想了解下kafka底层通信的一些细节,这部分都是用NIO实现的,并且用的是最基本的NIO实现模板,代码阅读起来也比较简单.抛开zookeeper这部分的通信不看,我们就看最基本的producer和consumer之间的基于NIO的通信模块.在network中主要包含以下类: 我们挑选几个最主要的类说明,先从SocketServer的描述看起: /** * An NIO socket server. The thread model is * 1

    scala, nio, kafkaJanuary 15

  • JAVA NIO non-blocking模式实现高并发服务器

    Java自1.4以后,加入了新IO特性,NIO. 号称new IO. NIO带来了non-blocking特性. 这篇文章主要讲的是如何使用NIO的网络新特性,来构建高性能非阻塞并发服务器. 文章基于个人理解,我也来搞搞NIO.,求指正. 在NIO之前 服务器还是在使用阻塞式的java socket. 以Tomcat最新版本没有开启NIO模式的源码为例, tomcat会accept出来一个socket连接,然后调用processSocket方法来处理socket. while(true) { .

    nio, Java, 非阻塞, 高并发January 10

  • spymemcached源码中Reactor模式分析
    spymemcached源码中Reactor模式分析

    简介 spymemcached 是一个 memcached 的客户端, 使用 NIO 实现.采用Reactor模式实现,单线程,高性能Memcached客户端. spymemcached源码分析:http://my.codeweblog.com/astute/blog/93492 Reactor模式介绍 所谓reactor模式,其实是event-driven pattern在网络服务设计中的应用,以平衡CPU与IO速率,最大化CPU资源与IO资源的利用率: 先来看看经典的服务器设计: 经典网络服

    nio, reactor, spymemcachedJanuary 4

  • WebSocket NIO服务端--连接部分
    WebSocket NIO服务端--连接部分

    年前就写了点儿的东西,今天抽空把连接的部分给补完整了,之前写这个也是为了练练手,敲点儿代码.网上基本上都是C#.PHP或者socket写的版本,当然我也发现有用mina写的.其实用什么语言写都是一样的,只不过是对协议的解析.所以无论是用mina还是socket,代码量都是差不多的.没发现NIO版本的,就写了一些. 最早看见的文章来自IBM<使用 HTML5 WebSocket 构建实时 Web 应用>.这里面讲述的很清楚,什么是web socket.唯一遗憾的是,这篇文章中的协议版本不够新,现

    nio, 服务器, websocketJanuary 2

  • nSocket设计概要version0.1
    nSocket设计概要version0.1

    之前一直在分析mina的源码,mina是一个基于java NIO.1的高性能网络框架,实现了网络传输的异步和非阻塞模式.在mina源码分析的一系列文章中,我主要还是基于mina实现的组织结构和部分细节进行分析.看了那么久的源码,想根据NIO的应用结合对mina的学习也写个类似的代码.我也就不取一个跟我写框架之类的代码了,我也就写着玩儿的,还真没那么高的实力确保能写出来,大家看看就罢了. 本文将介绍nSocket的大致设计思路以及代码结构.nSocket也将应用于网络通信层,基于java NIO.

    nio, Java, mina, nSocketDecember 9

  • DirectByteBuffer更快吗?

    ByteBuffer.allocateDirect vs ByteBuffer.allocate 操作系统的IO机制 操作系统在内存区域上执行IO操作,这些内存区域是连续的字节.毫无疑问只有字节缓冲区才有资格参与IO操作的.同样操作系统会直接访问进程空间,包括JVM进程,传输数据.JVM内部,字节数组可能不是连续的,或者GC任意时刻会移动这些字节.Java内部数组是对象,对象内部数据存储的方式,是跟JVM实现相关的. 引入Direct Buffer 出于这个原因,引入了direct buffer

    nio, 缓冲区, DirectByteBuffer, HeapByteBuffer, allocatedirect​, allocateDecember 4

  • Mina源码阅读笔记(八)-Mina拦截器器的末端IoHandler

    接上篇<拦截器IoFilter> 之前在写service的时候提过IoHandler,当时把它作为一种简单的模式简单扫视了一下,不是很放心,今天还是拿出来单独写点儿,作为这个系列的结束吧.也正好handler就是filter chain的最末端.这个系列还差proxy部分没有写,这部分我没有用过,等以后用到了再补上吧. 我们其实只要看看IoHandler接口中定义的一些方法就能明白它具体是干嘛用的: sessionCreated sessionOpened sessionClosed sess

    nio, 源码解读, minaNovember 28

  • Mina源码阅读笔记(七)-Mina的拦截器FilterChain
    Mina源码阅读笔记(七)-Mina的拦截器FilterChain

    接上一篇<异步IO实现IoFuture> Filter我们很熟悉,在Mina中,filter chain的用法也类似于Servlet的filters,这种拦截器的设计思想能够狠轻松的帮助我们实现对资源的统一处理.我们先大致连接下mina中的filter能给我们带来什么. LoggingFilter logs all events and requests. ProtocolCodecFilter converts an incoming ByteBuffer into message POJO

    nio, 源码解读, minaNovember 27