06 2011 档案

摘要:1.什么是消息队列 消息队列以队列形式(消息链表)的数据结构存放在系统内核中的,它可用于客户进程与服务进程之间的双向数据流。但是它跟信号量、共享内存一样,都只在系统范围内通信,且其在系统里没有名字,其内容不会自动删除,没有文件描述符。这些缺点导致现代进程通信基本不用它了。尽管如此,但是今天我还是需要了解它。2.消息的数据类型 首先,在头文件<sys/msg.h>中,定义了我们可用传给消息队列的数据类型:struct msgbuf{ long mtype; char mtext[1];}mtype是指该消息的类型,区分出不同的消息,我们就可以辨别出消息的来源,比如我们把客户进程的mt 阅读全文
posted @ 2011-06-16 16:00 winxp_520 阅读(3127) 评论(3) 推荐(2) 编辑
摘要:1.什么是无缓冲I/O 我们首先要知道Linux操作系统提供给我们的用户程序调用的接口,除了使用库函数,还可以直接使用系统调用。而今天我要介绍的相关函数就是直接调用了内核的系统调用,所以说它是无缓冲的,它跟标准的I/O函数相对应。2.打开或者创建文件的函数:open() 要操作相关文件,就必须获得该文件的句柄,专业点叫文件描述符。它是进程在打开一个文件或者创建一个文件时,内核返回给该进程的一个唯一的非负的整数,且一定是当前可以的描述符中最小的一个数。进程获得这个文件描述符后,就可以根据它来告诉read()或者write相关函数具体来操作哪个文件了。 Tips:通常系统对一个进程可打开的文件描述 阅读全文
posted @ 2011-06-12 20:37 winxp_520 阅读(2821) 评论(1) 推荐(2) 编辑
摘要:我们都知道,进程就是正在执行的程序。而在Linux中,可以使用一个进程来创建另外一个进程。这样的话,Linux的进程的组织结构其实有点像Linux目录树,是个层次结构的,可以使用pstree命令来查看。在最上面是init程序的执行进程。它是所有进程的老祖宗。Linux提供了两个函数来创建进程。1.fork() fork()提供了创建进程的基本操作,可以说它是Linux系统多任务的基础。该函数在unistd.h库中声明。 #include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(){ pr 阅读全文
posted @ 2011-06-06 13:39 winxp_520 阅读(4098) 评论(2) 推荐(1) 编辑
摘要:在大中型项目中,在数据库设计的时候,考虑到数据库最大承受数据量,通常会把数据库或者数据表水平切分,以降低单个库,单个表的压力。我这里介绍两个我们项目中常用的数据表切分方法。当然这些方法都是在程序中使用一定的技巧来路由到具体的表的。首先我们要确认根据什么来水平切分?在我们的系统(SNS)中,用户的UID贯穿系统,唯一自增长,根据这个字段分表,再好不过。方法一:使用MD5哈希 做法是对UID进行md5加密,然后取前几位(我们这里取前两位),然后就可以将不同的UID哈希到不同的用户表(user_xx)中了。function getTable( $uid ){ $ext = substr ( md. 阅读全文
posted @ 2011-06-02 17:47 winxp_520 阅读(6630) 评论(33) 推荐(10) 编辑

点击右上角即可分享
微信分享提示