在IO编程中,我们知道CPU的速度远远快于磁盘,网络IO,在一个线程中,CPU执行速度的代码非常快,然而遇到IO操作就需要阻塞 需要等待IO操作完成才能继续下一步的动作。这种情况叫做同步IO 在IO操作的过程中,当前线程被挂起,而其他需要CPU执行的代码就无法被当前线程执行。 因为一个IO阻塞了当前 ...
分类:
编程语言 时间:
2016-06-13 22:07:47
阅读次数:
214
本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解。
1、BIO编程
1.1、传统的BIO编程
网络编程的基本模型是C/S模型,即两个进程间的通信。
服务端提供IP和监听端口,客户端通过连接操作想服务端监听的地址发起连接请求,通过三次握手连接,如果连接成功建立,双方就可以通过套接字进行通信。
传统的同步阻塞模型开发中,ServerSocket负责绑定IP地址,启动监听端口;Socket负责发起连接操作。连接成功后,双方通过输入和输出流进行同步阻塞式通信。...
分类:
编程语言 时间:
2016-05-29 06:26:56
阅读次数:
644
并发IO问题一直是服务器端编程中的技术难题,从最早的同步阻塞直接Fork进程,到Worker进程池/线程池,到现在的异步IO、协程。PHP程序员因为有强大的LAMP框架,对这类底层方面的知识知之甚少,本文目的就是详细介绍PHP进行并发IO编程的各种尝试,最后再介绍Swoole的使用,深入浅出全面解析 ...
分类:
Web程序 时间:
2016-05-28 20:29:02
阅读次数:
169
一.5种I/O模型一个I/O可以分为两个过程:等待和数据搬迁。1.阻塞I/O两个过程都有自己来完成,其他什么事也不做。2.非阻塞I/O在等的过程中可以干一些其他的事,等到数据准备好再进行搬迁3.信号驱动I/O等数据准备好的过程由信号来触发,在这期间自己可以干一些别的事4.I/O复用同时..
分类:
其他好文 时间:
2016-05-27 07:12:30
阅读次数:
221
IO中指Input/Output,即输入和输出;涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口 1、由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,存在速度严重不匹配问题。eg:把100M的数据写入磁盘,CPU输出100M的数据只需要0.01秒,可是磁盘接收100M数据可能需 ...
分类:
Web程序 时间:
2016-05-11 18:02:10
阅读次数:
275
在Linux环境下使用C语言IO编程的时候,创建文件经常还要给文件赋权限.比如我们赋予读写权限0666,可是创建了文件以后权限却是0664,非本用户组的成员没有写权限,或者创建时候赋予的权限是0664,创建文件以后变成了0662.是不是很奇怪! Linux里面有一个umask(用户权限掩码),这个用 ...
分类:
其他好文 时间:
2016-04-16 21:38:21
阅读次数:
292
一、引言 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择。因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程的一个基本能力。本章IO类的使用就从读写文件开始。 文件操作 文件(File)是 最常见的数据源之一,在程序中经常
分类:
编程语言 时间:
2016-03-07 01:08:40
阅读次数:
287
Java高级程序设计——JavaSE应用开发》学习笔记 学习一本书首先应该看看目录,确定学习内容,制定学习目标,达到更好的效果。这是这个学期java的七个板块: 专题一:GUI程序设计 专题二:异常处理 专题三:IO编程 专题四:常用Java类与范型 专题五:JDBC编程 专题六:多线程编程 专题七
分类:
其他好文 时间:
2016-03-06 19:05:37
阅读次数:
170
I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择。因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程的一个基本能力。本章IO类的使用就从读写文件开始。 1 文件操作 文件(File)是 最常见的数据源之一,在程
分类:
编程语言 时间:
2016-02-16 20:34:12
阅读次数:
313
在不需要文件生成的情况下,直接将输出流转换成输入流。可使用下面的三种方法:如果你曾经使用java IO编程,你会很快碰到这种情况,某个类在OutputStream上创建数据而你需要将它发送给某个需要从输入流读取数据的类。 你很快会被问道,“java中如何将OutputStream转换为InputS....
分类:
编程语言 时间:
2015-12-24 17:54:10
阅读次数:
302