本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解。
1、BIO编程
1.1、传统的BIO编程
网络编程的基本模型是C/S模型,即两个进程间的通信。
服务端提供IP和监听端口,客户端通过连接操作想服务端监听的地址发起连接请求,通过三次握手连接,如果连接成功建立,双方就可以通过套接字进行通信。
传统的同步阻塞模型开发中,ServerSocket负责绑定IP地址,启动监听端口;Socket负责发起连接操作。连接成功后,双方通过输入和输出流进行同步阻塞式通信。...
分类:
编程语言 时间:
2016-05-29 06:26:56
阅读次数:
644
同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪 异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知 阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作函数的实现方式,阻塞 ...
分类:
其他好文 时间:
2016-05-25 18:37:47
阅读次数:
147
1、优化内核及TCP连接: 2、修改Tomcat Connector运行模式为apr Tomcat Connector有三种运行模式: bio:阻塞IO bio是三种运行模式中性能最低第一种。 nio:是一个基于缓冲区,并能提供非阻塞I/O操作的JAVA API 因此NIO也成为非阻塞I/O,比bi ...
分类:
其他好文 时间:
2016-05-22 20:11:27
阅读次数:
528
前言一直想把NIO系列的文章更新下去,只不过发现在入职支付宝后工作实在是忙,所以一直拖到现在。直接从一个学生过狗成为一名加班狗,好吧,这就是互联网公司的现状吧,但是每天都是充实的,而且发现其他的员工也基本非常乐意加班,难道这就是阿里的文化熏陶?!废话不多说,还是进入今天的正题,在前面的文章中,我们已经对Java的NIO有了一个粗浅的认识——主要之为了支持非阻塞I/O的操作,之前的BIO则是阻塞的。因...
分类:
编程语言 时间:
2016-05-22 12:19:19
阅读次数:
262
tomcat中间件的启动运行模式有分为3种,可以在启动运行控制台和启动日志中看出.默认模式bio(阻塞IO)缺点:能非常低下,没有经过任何优化处理和支持,并发量高时,线程数较多,浪费资源.nio(异步IO)利用Java的异步IO处理,可以通过少量的线程处理大量的请求.apr(系统解决IO阻塞)从操作..
分类:
其他好文 时间:
2016-05-13 17:26:58
阅读次数:
252
描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson。现 在,刚刚放学回家的 Hankson 正在思考一个有趣的问题。 今天在课堂上,老师讲解了如何求两个正整数 c1和 c2 的最大公约数和最小公倍数。现 在 Hankson 认为自己已经熟练地 ...
分类:
其他好文 时间:
2016-05-13 14:09:42
阅读次数:
243
通过Source Insight查看openssl的源代码,可发现SSL建立的来龙去脉。
1. 先看SSL_NEW.
static int ssl_new(BIO *bi)
{
BIO_SSL *bs;
bs = (BIO_SSL *)OPENSSL_malloc(sizeof(BIO_SSL));
if (bs == NULL) ...
分类:
其他好文 时间:
2016-05-12 17:28:44
阅读次数:
262
先来个例子理解一下概念,以银行取款为例。
同步与异步:这两个概念与消息的通知机制有关,也就是同步的情况下,是由处理消息者自己去等待消息是否被触发,而异步的情况下是由触发机制来通知处理消息者,.
① 同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写)。
② 异步 : 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读写委托给O...
分类:
编程语言 时间:
2016-05-12 17:28:09
阅读次数:
364
Hankson 的趣味题 Hankson 的趣味题 Hankson 的趣味题 题目描述 Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Hankson。现在,刚刚放学回家的Hankson 正在思考一个有趣的问题。今天在课堂上,老师讲解了如何求两个正整数c1 和c2 ...
分类:
其他好文 时间:
2016-05-09 21:54:44
阅读次数:
205