- 不能再
FAST_Accpet()
IO - 不能使用C++IO
life's a struggle.
2015-05-21
2015-05-21
yum install net-tools
2015-05-20
启动类
apache2 -k start|restart|graceful|stop|graceful-stop
查看版本信息
apache2ctl -V
2015-05-20
连接数据库
mysql -h <host> -u <username> -p <password>
查看有哪些数据库
show databases;
使用某个数据库
use <database_name>;
查看有哪些表
show tables;
查看系统变量
show variables;
查看表创建语句
show create table <tablename>;
修改root密码
先登录
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
2015-04-17
2015-04-15
要点
hash的键值是字典类型,存储的是字段(field)和字段值的映射,字段值只能是字符串,意味着不能嵌套!
hash适合存储对象
- 使用对象类别和ID构成键名(关系数据库中的表名和ID)
- 使用字段表示对象的属性(关系数据名中的列名)
- 字段值即属性值(关系数据库中的值)
参考
- redis入门指南
2015-04-15
要点
字符串类型是redis中最基本的数据类型,其他数据类型只是组织字符串的方式不同
列表类型是以列表形式组织字符串
集合类型是以集合形式组织字符串
字符串可以透明存储任何形式的字符串,二进制数据,如邮箱地址,json,图片等
操作
| 操作 | 命令 |
|———-+——–|
| 赋值 | set |
| 取值 | get |
| 追加 | append |
| 获取长度 | strlen |
参考
- redis入门指南
2015-04-15
要点
一个redis实例提供了多个用来存储数据的字典
某个数据库对外都是一个从0开始的递增数字命名,默认支持16个,可通过参数
databases
修改客户端与redis连接后,默认选择0号数据库,可通过
SELECT
命令切换不支持自定义数据库名称
不支持账户密码控制(意味着没有权限控制)
数据库之间并未完全隔离,如
FLUSHALL
命令可清空所有数据库内容所以,不同的应用应该使用不同的redis实例,而不是使用同一个redis实例不同数据库。
参考
- redis入门指南
2015-04-14
2015-04-14
IO的过程
等待流数据准备好
从内核向进程复制数据(决定同步还是异步)
对unix来讲:阻塞式I/O(默认),非阻塞式I/O(nonblock),I/O复用(select/poll/epoll)都属于同步I/O,因为它们在数据由内核空间复制回进程缓冲区时都是阻塞的(不能干别的事)。
只有异步I/O模型(AIO)是符合异步I/O操作的含义的,即在1数据准备完成、2由内核空间拷贝回缓冲区后 通知进程,在等待通知的这段时间里可以干别的事
同步,异步,阻塞,非阻塞
同步和异步关注的是消息通信机制。
同步意味着会等待在操作完成后继续执行
异步则是函数调用后,继续执行,进行的操作结果采用其他方式通知或处理(如回调函数,信号,消息等)
阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态。
为什么需要异步IO?
假设一种场景,某任务需要从磁盘文件读取数据,需要时间m。从网络读取数据,需要时间n。
考虑这段代码:1
2getFileFromDisk("file_path");
getFileFromNet("url");
- 若采用同步方式,则需要时间为m+n
- 若采用异步方式,则需要时间为max(m, n)
由此可见,当存在多个类似IO操作时,异步能极大地提高程序效率!