摘要:
使用NIO的一个最大优势就是客户端于服务器自己的不再是阻塞式的,也就意味着服务器无需通过为每个客户端的链接而开启一个线程。而是通过一个叫Selector的轮循器来不断的检测那个Channel有消息处理。当发现有消息要处理时,通过selectedKeys()方法就可以获取所有有消息要处理的Set集合了 阅读全文
摘要:
最近总结JAVA中的IO,遇到了有关阻塞、非阻塞、同步、异步的概念,之前也做个内核有关开发,今天温故而知新。 Linux支持同步IO,也支持异步IO,因此分为同步阻塞、同步非阻塞,异步阻塞,异步非阻塞。 一、同步阻塞 这是早期Linux常用的IO方式,在这个模型中,用户空间的应用程序执行一个系统调用 阅读全文
摘要:
01. java io系列01之 "目录" 02. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream) 03. java io系列03之 ByteArrayOutputStream的简介,源码分析和示例(包括OutputStream 阅读全文
摘要:
NIO框架之源码解析http://blog.csdn.net/column/details/nio-mina-source.htmlMINA框架源码分析(一)http://blog.csdn.net/hzw19920329/article/details/52162923MINA框架源码分析(二)h 阅读全文
摘要:
我们知道java中的IO经历了BIO到NIO再到AIO的发展,具体来讲的话BIO是同步阻塞式IO,NIO是同步非阻塞式IO,而AIO是异步非阻塞式IO,前面我们分析了BIO和NIO的用法,至于AIO目前我还没有研究的想法,先把BIO和NIO研究清楚了再说吧,这篇博客我对前面的内容进行总结,如果你没有 阅读全文
摘要:
前两篇博客我们通过将accept和read设置成非阻塞式的方式实现了同步非阻塞模式,但是缺点在于在服务端需要为每个客户端都要创建一个线程来处理每个客户端的请求,这点相对来说比较耗费服务端资源,比如我们通常用到的Socket长连接用于心跳检测,其实客户端根本就没有数据要发送,只是想要告诉服务端我还活着 阅读全文
摘要:
在上篇文章的最后,我们提到了,使用了多线程只是能够实现对"业务逻辑处理"的多线程,但是对于数据报文的接收还是需要一个一个来的,也就是我们上面见到的accept以及read方法阻塞问题,多线程是根本解决不了的,那么首先我们来看看accept为什么会造成阻塞,accept方法的作用是询问操作系统是否有新 阅读全文
摘要:
这篇是讲解NIO的准备篇; 在JDK1.4 NIO出现之前,我们通常用到的IO都是BIO也叫同步阻塞式IO,他是面向流的,一个输入流产生一个字节的数据,一个输出流消费一个字节的数据,那么这里的阻塞主要体现在什么地方呢?比如我们从一个文件中读取数据的话,调用InputStream.read()方法,这 阅读全文
摘要:
长连接 概念:多用于操作频繁,点对点的通讯,而且连接数不能太多情况。指在一个连接上可以连续发送多个数据包(心跳包,防止NAT超 时,及探测连接是否断开),在连接保持期间,如果没有数据包发送,需要双方发链路检测包。 作用:多用于操作频繁,点对点的通讯,而且连接数不能太多情况。 要求:服务器的开销、稳定 阅读全文
摘要:
如果百度或者Google搜索 “android 推送” 关键字,相当一部分文章都在说到 androidpn。也可以看到有人说用起来了,有人在吐槽说不稳定、功能缺失,维护工作量大。本文尝试对 androidpn 的前世今生做个汇总分析。 访问 androidpn官方网站,我们可以了解到如下的基本信息: 阅读全文