keep_simple

导航

2013年5月27日 #

位排序

摘要: 数据特性:数据为正整数,比较集中,而且没有重复。代码:#include <stdio.h>#define BITSPERWORD 32#define SHIFT 5#define MASK 0x1F#define N 10000000int a[1 + N/BITSPERWORD];void set(int i) { a[i>>SHIFT] |= (1<<(i & MASK)); }void clr(int i) { a[i>>SHIFT] &= ~(1<<(i & MASK)); }int test(int 阅读全文

posted @ 2013-05-27 14:24 keep_simple 阅读(344) 评论(0) 推荐(0)

2013年5月20日 #

socketpair的使用

摘要: socketpair函数概要如下:#include <sys/types.h>#include <sys/socket.h>int socketpair(int domain, int type, int protocol, int sv[2]);sys/types.h文件需要用来定义一些C宏常量。sys/socket.h文件必须包含进来定义socketpair函数原型。socketpair函数需要四个参数。他们是:套接口的域套接口类型使用的协议指向存储文件描述符的指针类型参数声明了我们希望创建哪种类型的套接口。socketpair函数的选择如下:SOCK_STREAM 阅读全文

posted @ 2013-05-20 11:14 keep_simple 阅读(1869) 评论(0) 推荐(0)

2013年5月14日 #

libevent http client

摘要: #include <errno.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <event2/event.h>#include <event2/buffer.h>#include <event2/http.h>#include <event2/http_struct.h>struct download_context{ struct evhttp_uri *uri; struct event_base *bas 阅读全文

posted @ 2013-05-14 09:34 keep_simple 阅读(3146) 评论(0) 推荐(0)

2013年5月10日 #

Log4cplus使用指南

摘要: Log4cplus使用指南广目 录1 Log4cplus简介 52 安装方法 53 主要类说明 64 基本使用 64.1 基本步骤 64.2 使用示例 74.2.1 例1-标准使用 74.2.2 例2-简洁使用 84.2.3 例3-输出日志到控制台 94.2.4 例4-输出日志到文件 104.2.5 例5-使用loglog输出日志 114.3 日志输出宏 135 输出格式控制 145.1 SimpleLayout 145.2 PatternLayout 155.2.1 转换标识符 155.3 TTCCLayout 176 输出重定向 196.1 重定向到控制台 196.2 重定向到文件 19. 阅读全文

posted @ 2013-05-10 15:38 keep_simple 阅读(22215) 评论(1) 推荐(1)

内存池管理

摘要: http://www.codeproject.com/Articles/15527/C-Memory-Pool 阅读全文

posted @ 2013-05-10 15:04 keep_simple 阅读(225) 评论(0) 推荐(0)

并发和并行的区别

摘要: 并发行和并行性的区别可以用馒头做比喻。前者相当于一个人同时吃三个馒头和三个人同时吃一个馒头。(今天听一个学长说的,感觉挺形象的!) 并发性(Concurrence):指两个或两个以上的事件或活动在同一时间间隔内发生。并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。 并行性(parallelism)指两个或两个以上事件或活动在同一时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。 区别:一个处理器同时处理多个任务和多个处理器或者是多核的处理器同时处理多个不同的任务。 前者是逻辑上的同时. 阅读全文

posted @ 2013-05-10 11:05 keep_simple 阅读(314) 评论(0) 推荐(0)

2013年5月7日 #

空数组(伸缩型数组成员)

摘要: #include <stdio.h>struct ast_var_t { struct ast_var_t *entries; char *value; char name[0];};int main(){ struct ast_var_t test; printf("size is %d\n", sizeof(test));return 0;}执行此程序我们可以看到:size is 8这是个广泛使用的常见技巧,常用来构成缓冲区。比起指针,用空数组有这样的优势: 1.不需要初始化,数组名直接就是所在的偏移 2.不占任何空间,指针需要占用int长度空间,空数组不占 阅读全文

posted @ 2013-05-07 17:01 keep_simple 阅读(512) 评论(0) 推荐(1)

2013年5月6日 #

使用libevent编写高并发HTTP server

摘要: libevent库使得高并发响应HTTP Server的编写变得很容易。整个过程包括如下几部:初始化,创建HTTP Server, 指定callback, 进入事件循环。另外在回调函数中,可以获取客户端请求(request的HTTP Header和参数等),进行响应的处理,再将结果发送给客户端(response的HTTP Header和内容,如html代码)。libevent除了设置generic的callback,还可以对特定的请求路径设置对应的callback(回调/处理函数)。示例代码(方便日后参考编写需要的HTTP server) #include <stdio.h> #. 阅读全文

posted @ 2013-05-06 18:01 keep_simple 阅读(23539) 评论(1) 推荐(0)

evhttp处理POST请求的技巧

摘要: evhttp是libevent提供的一个轻量级的基于消息驱动的HTTP Server,详细的资料可以参考libevent的主页:http://monkey.org/~provos/libevent/ ,本文主要描述如何处理POST请求。美中不足:evhttp不支持POST?evhttp在evhttp_request接口中包含一个请求类型type,用来表示HTTP的操作(EVHTTP_REQ_GET,EVHTTP_REQ_POST),但evhttp接口并没有区分GET和POST操作,我们来看具体的接口实现:evhttp_request_uri: 解析HTTP请求中的ur;evhttp_parse 阅读全文

posted @ 2013-05-06 17:58 keep_simple 阅读(2449) 评论(0) 推荐(0)

2013年4月28日 #

C++ Boost Thread 编程指南

摘要: 标准C++线程即将到来。CUJ预言它将衍生自Boost线程库,现在就由Bill带领我们探索一下Boost线程库。就 在几年前,用多线程执行程序还是一件非比寻常的事。然而今天互联网应用服务程序普遍使用多线程来提高与多客户链接时的效率;为了达到最大的吞吐量,事务服 务器在单独的线程上运行服务程序;GUI应用程序将那些费时,复杂的处理以线程的形式单独运行,以此来保证用户界面能够及时响应用户的操作。这样使用多线 程的例子还有很多。但是C++标准并没有涉及到多线程,这让程序员们开始怀疑是否可能写出多线程的C++程序。尽管不可能 写出符合标准的多线程程序,但是程序员们还是会使用支持多线程的操作系统提供的多 阅读全文

posted @ 2013-04-28 15:17 keep_simple 阅读(524) 评论(0) 推荐(0)