Reids内部封装了一个I/O层,称之为rio。今天我们就来简单介绍一下rio模块的具体实现。本文主要涉及rio.h和rio.c两个文件。...
分类:
其他好文 时间:
2016-05-17 11:42:34
阅读次数:
215
一、Reactor模型 1、单线程模型 Reactor单线程模型,指的是所有的IO操作都在同一个NIO线程上面完成,NIO线程的职责如下: 1)作为NIO服务端,接收客户端的TCP连接; 2)作为NIO客户端,向服务端发起TCP连接; 3)读取通信对端的请求或者应答消息; 4)向通信对端发送消息请求 ...
分类:
编程语言 时间:
2016-05-16 23:15:03
阅读次数:
345
通过一般的方法写的服务端是没法支持多客户端的访问的,而且进行IO操作容易阻塞,从而会影响其对客户端的响应. 我们可以通过一下几种方式进行多客户端的服务端设计: 如果我们要设计高并发的服务端,咱们可以将这三个方法和起来使用,高并发建议使用epoll技术处理,采用事件的方式,占用资源小,速度快.当达到一 ...
分类:
其他好文 时间:
2016-05-13 21:58:58
阅读次数:
247
上篇线程/进程并发服务器中提到,提高服务器性能在IO层需要关注两个地方,一个是文件描述符处理,一个是线程调度。 IO复用是什么?IO即Input/Output,在网络编程中,文件描述符就是一种IO操作。 为什么要IO复用? 1.网络编程中非常多函数是阻塞的,如connect,利用IO复用可以以非阻塞 ...
分类:
其他好文 时间:
2016-05-13 14:18:19
阅读次数:
1016
SLOWLOG subcommand [argument] 什么是 SLOWLOG Slow log 是 Redis 用来记录查询执行时间的日志系统。 查询执行时间指的是不包括像客户端响应(talking)、发送回复等 IO 操作,而单单是执行一个查询命令所耗费的时间。 另外,slow log 保存 ...
分类:
其他好文 时间:
2016-05-13 11:34:48
阅读次数:
147
我们不断在重申FP强调代码无副作用,这样才能实现纯代码。像通过键盘显示器进行交流、读写文件、数据库等这些IO操作都会产生副作用。那么我们是不是为了实现纯代码而放弃IO操作呢?没有IO的程序就是一段烧CPU的代码,没有任何意义,所以任何类型的程序都必须具备IO功能,而在FP模式中对IO操作有特别的控制方式:具体实现是通过把代码中产生副作用的部分抽离出来延后运算(在所有纯代码运算之后)。scalaz的...
分类:
其他好文 时间:
2016-05-12 15:42:13
阅读次数:
182
访问文件的方式访问文件的方式
标准访问文件方式
直接IO方式
同步访问文件方式
异步访问文件方式
内存映射方式 读取和写入文件IO操作都需要调用操作系统提供的接口,读和写分别对应read和write两个系统调用,那么就存在内核空间和用户空间地址切换的问题,因为磁盘设备是由操作系统管理的,为了保护系统运行安全将内核运行的内存空间和用户程序的内存空间进行隔离,那么必然存在数据需要从内核空间向用户空间复...
分类:
其他好文 时间:
2016-05-12 14:06:29
阅读次数:
477
转载自:java.ByteArrayInputStream与ByteArrayOutputStream再次理解 第一次看到ByteArrayOutputStream的时候是在Nutch的部分源码,后来在涉及IO操作时频频发现这两个类的踪迹,觉得确实是很好用,所以把它们的用法总结一下。 ByteArr ...
分类:
编程语言 时间:
2016-05-12 09:20:08
阅读次数:
298
转载: 常用的日志控件有commons-logging、Log4j以及JDK1.4自带的Logging。 日志简介: 早期,Java开发用System.out.println(),输出到屏幕,但是这种输出不可控制,日志的可读性差,而且输出到屏幕需要消耗资源,大量的IO操作会使程序运行变慢。 JKD1 ...
分类:
其他好文 时间:
2016-05-11 15:10:47
阅读次数:
123
同步异步是针对应用程序和内核的交互而言的。举个例子:当进程触发IO操作后, 同步:进程需要自己来确定什么时候IO操作完成,进程自己需要不断的查询来确定任务是否完成。(期间进程可以去做其他事) 异步:进程不需要自己确定什么时候IO操作完成,当任务完成后,内核会通知该进程。 阻塞:进程停止在当前操作,不 ...
分类:
其他好文 时间:
2016-05-11 13:33:09
阅读次数:
238