2008-01-13

SPNetKit:http/smtp/pop3/memcached 的客户端库

关键字: socket memcached client c++ http smtp pop3
SPNetKit 主要是一个常见应用层协议的客户端库,使用 C++ 实现,目前实现了 http,smtp,pop3,memcached 。 对于每个客户端都带有一个命令行的示范例子。 http/smtp/pop3 除了 TCP 实现之外,也能支持 SSL (基于 openssl)。 memcached client 支持了最新的 memcached 1.2.4 中新增加的 'append', 'prepend', 'gets', and 'cas' 命令。 除了这些客户端实现之外,还包括一个读取 ini 配置文件的类,base64 编码和解码类。 主页:http://code.googl ...
2007-12-09

SPProcPool: Unix/Linux 上的进程池服务器框架

关键字: process pool 进程池
SPProcPool 是一个 linux/unix 平台上的进程池服务器框架,使用 c++ 实现。主要包含了几种不同类型的进程池的实现: 一个基于 Leader/Follower 模式的服务器端进程池(类似 apache 的 prefork 模型); 一个组合了 Prefork 和线程池的服务器端框架(类似 apache 的 worker 模型); 一个基于文件句柄传递的服务器端进程池; 一个用于非服务器端的,能够在多线程或事件驱动环境下使用的进程池。 主页:http://code.google.com/p/spprocpool/ 下载:spprocpool 关于进程池服务器框架,在《un ...
2007-05-25

sptalk:基于 spserver/spxml/spdict 实现的 jabber 服务器

关键字: libevent jabber IM 即时聊天服务器
在 3 年前因为工作需要,搞过一段时间 jabberd 1.4 ,那时被jabberd 1.4 的代码搞的晕头转向。当时就在想要自己实现一个 jabber 服务器。在逐步实现了 spxml , spserver ,spdict 这 3 个库之后,实现 jabber 的时机终于到了。 http://code.google.com/p/sptalk/ 经过几天的编码之后,终于可以成功地用两个客户端互发信息了。目前实现了注册,登录,添加好友,互发信息功能。 由于对 jabber 协议不熟,所以这次的实现在事前没有认真地做系统的架构设计,目前是基于单机,单进程的方式来实现的。这次姑且作为一次快速原 ...
2007-05-15

spcached : memcached 的多线程实现

关键字: libevent memcached 内存池 平衡树 性能测试
实现 spcached 的目的:不是与 memcached 进行竞争,只是为了测试。 最初想到要实现 spcached 的时候,是因为想对 spserver 这个框架做一个压力测试。当时想用作个简单的 http 服务器,然后用 apache 的 ab 工具进行测试。后来觉得如果做测试,最好能有一个对比,因此就想起了 memcached 来。并且刚好 memcached 和 spserver 都是基于 libevent 的。 memcached 是公认的高性能服务器,而且里面完全不涉及文件的 IO 操作,适合用来衡量以下几个方面:单线程 event-driven VS. 多线程,内存池 VS ...
2007-05-10

SPWebServer:一个基于 SPServer 的 web 服务器框架

关键字: libevent spserver http embedded web 服务器
看到这个题目,估计很多人会问:为什么要再实现一个 web 服务器? 这里有几个原因: 1.这是一个 web 服务器框架,不是一个完整的 web 服务器。也就是说 SPWebServer 提供的是一套 API 和类库,可以方便地集成到现有的应用程序中。可以称 SPWebServer 为 embedded web server 。 2.有些时候,我们需要的不是一个功能强大完整的 web 服务器(例如 apache ),我们只是需要一个能提供最基本的 http 功能的服务器框架。比如要用 C/C++ 实现 XML-RPC,JSON-RPC 服务器端,或者为 jabberd 实现一个 http ...
对着 MIT 的 《Introduction to Algorithms, Second Edition 》 看了一段时间,对里面的提到的几种字典数据结构算法很感兴趣,因此照着书上的描述做了一些实现。使用 C++ 实现了:BinarySearchTree, RedBlackTree, BalancedTree, SkipList, SortedArray 。 源代码下载: http://spdict.googlecode.com/files/spdict-0.2.src.tar.gz http://code.google.com/p/spdict/downloads/list 只实现了字 ...
2007-03-14

SPServer : 一个基于线程池(包括HAHS和LF)的高并发 server 框架

关键字: c++ libevent half-sync/half-async leader/follower 并发服务器
spserver 是一个实现了半同步/半异步(Half-Sync/Half-Async)和领导者/追随者(Leader/Follower) 模式的服务器框架,能够简化 TCP server 的开发工作。 spserver 使用 c++ 实现,目前实现了以下功能: 1.封装了 TCP server 中接受连接的功能; 2.使用非阻塞型I/O和事件驱动模型,由主线程负责处理所有 TCP 连接上的数据读取和发送,因此连接数不受线程数的限制; 3.主线程读取到的数据放入队列,由一个线程池处理实际的业务。 4.一个 http 服务器框架,即嵌入式 web 服务器(请参考: SPWebServer:一个基 ...
2007-01-17

spxml:使用 state pattern 实现 xml pull/dom parser

关键字: xml pull dom parser state pattern
spxml 是一个实现了 pull 和 dom 两种解释模型的 xml 解释器。 spxml 使用 c++ 实现,除系统库之外,不依赖第三方库,目前实现了以下功能: 1.实现了 xml pull parser 的功能; 2.基于 xml pull parser 构造一个 dom tree; 3.能够对 dom tree 进行修改; 4.能把 dom tree 重新序列化为一个字符流; 5.处于底层的 xml pull parser 是一个面向流的解释器,用户不需要一次把一个完整的 xml 字符流传递给 spxml ,极端情况下,可以每次只传入一个字符。解释到一个文档结束时,自动生成 EndD ...
2006-12-11

Build a thread pool in C

关键字: 线程池 threadpool c++
想找个轻便的 thread pool 实现,结果发现网上能找到的都是一些很重量级的,如 boost,ACE 里面的。唯有自己照着下面的需求实现了一个 http://paul.rutgers.edu/~csgates/CS416/proj2/index.html 源代码下载: http://code.google.com/p/spserver/downloads/list http://spserver.googlecode.com/files/threadpool-0.1.src.tar.gz 从 0.2 版开始,移植到了 windows 平台,直接使用 windows 的 thread ...
iunknown
搜索本博客
我的相册
562c81ee-a4d4-351b-aa82-57a3972c22c6-thumb
vim
共 2 张
最近加入圈子
存档
最新评论