java nio详解

游戏服务端核心是socket服务,而java提供了传统的bio与nio,而要满足服务端的高性能与高并发无疑要选择nio作为开发首选.

什么是nio

nio即non-blocking io,nio是基于事件驱动思想的,实现上通常采用Reactor模式.当程序发起io的读或者写操作时是非阻塞的,当socket有流可读入或者可写入时,操作系统会通知应用程序进行处理,处理完后再将流再写回缓冲区或者操作系统.对于网络io来说,主要是连接建立,流读取与流写入三种事件.需要注意的是,linux 2.6以后的版本采用epoll方式实现nio.

什么是aio

aio即async io,同样aio也是基于事件驱动思想的,但实现上通常采用Proactor模式.当程序发起io的读或者写操作时是异步的,只需要调用相应的read或者write方法.当socket有流可读入时,操作系统会将流传入read方法缓冲区,并通知应用程序,而当流有可写入时,操作系统会将流写入完毕后通知应用程序.相比nio,aio不仅简化了开发,而且省去了遍历Selector的代价.但aio只在java 7中提供,而我们目前还是先研究java 6中的nio.
阅读全文…

Red5基础概念

最近产品提了一个在线音视频直播的需求,技术这边主要是java开发,这让我想起了3年前使用的一款red5的开源流媒体服务器,下面会对开发中使用内容进行说明.

red5介绍

Red5是使用java写的开源的Flash流媒体服务器,它支持以下内容:

  1. 将视频/音频文件转化为播放流(支持FLV和MP3)
  2. 录制客户端播放流(仅支持 FLV)
  3. 共享对象
  4. 现场直播流发布
  5. 远程调用(AMF)

阅读全文…

Unable to locate Spring NamespaceHandler for XML schema namespace

今天在测试程序的时候发现一个诡异的spring异常,此异常在IDE调试中不存在,但在测试环境中打包后即出现,错误日志如下

阅读全文…

Spring RMI 多网卡问题

今天在发布线上版本的时候发现一个rmi的异常,开始一看以为是客户端配置出错,但检查配置后发现配置无异常.

阅读全文…

第 6 页,共 9 页« 最新...45678...最旧 »