- 浏览: 409477 次
最新评论
-
iunknown:
909601686 写道我理解下来,之所以使用奇数应该不仅仅是 ...
以两军问题为背景来演绎Basic Paxos -
909601686:
我理解下来,之所以使用奇数应该不仅仅是为了判断谁赢。而是这样就 ...
以两军问题为背景来演绎Basic Paxos -
feclipse:
you are my hero! 看了你的图示之后,我的理解 ...
以两军问题为背景来演绎Basic Paxos -
lcc0739:
相当好!通俗易懂,看了好几篇paxos只有你这个最深入浅出!
以两军问题为背景来演绎Basic Paxos -
iunknown:
tangfu 写道hi,问一下,博主提供的库与pb兼容么,比如 ...
一个轻量的 wire format 解释器(google protobuf 的二进制格式)
文章列表
在 3 年前因为工作需要,搞过一段时间 jabberd 1.4 ,那时被jabberd 1.4 的代码搞的晕头转向。当时就在想要自己实现一个 jabber 服务器。在逐步实现了 spxml , spserver ,spdict 这 3 个库之后,实现 jabber 的时机终于到了。
http://code.google.com/p/sptalk/
经过几天的编码之后,终于可以成功地用两个客户端互发信息了。目前实现了注册,登录,添加好友,互发信息功能。
由于对 jabber 协议不熟,所以这次的实现在事前没有认真地做系统的架构设计,目前是基于单机,单进程的方式来实现的。这次姑且作为一次快速原型 ...
- 2007-05-25 14:50
- 浏览 3251
- 评论(1)
jabber 的相关规范已经有人做了翻译
XMPP正式RFC标准
做个记录,:)
4.3. 流的安全
在XMPP 1.0中,当XML流开始握手时,TLS应该(SHOULD)按 第五章:TLS的使用 中的规定来使用,SASL必须(MUST)按第六章:SASL的使用中的规定来使用。尽管可能(MAY)存在某种共有的机制能够保证双向安全,但是“初始化流”(比如从初始化实体发给接收实体的流)和“应答流”(比如从接收实体发给初始化实体的流)还是必须(MUST)安全的分开。在流被验证之间,实体不应该(SHOULD NOT)尝试通过流发送XML节(第九章);就算它这样做了,对方的实体也不能(MUST N ...
- 2007-05-22 08:19
- 浏览 2123
- 评论(1)
在这里看到关于 Mina based SMTP handler 的讨论,里面提到 mina 是 SEDA 的一个实现。
mina and SEDA
It uses non-blocking IO and is an implementation of the staged
event driven architecture (SEDA). SEDA makes it possible to have
thousands of concurrent network connections.
看到之后,忽然想到,half-sync/half-async 模式其实也可以看成是 S ...
- 2007-05-20 10:07
- 浏览 4948
- 评论(4)
实现 spcached 的目的:不是与 memcached 进行竞争,只是为了测试。
最初想到要实现 spcached 的时候,是因为想对 spserver 这个框架做一个压力测试。当时想用作个简单的 http 服务器,然后用 apache 的 ab 工具进行测试。后来觉得如果做测试,最好能有一个对比,因此就想起了 memcached 来。并且刚好 memcached 和 spserver 都是基于 libevent 的。
memcached 是公认的高性能服务器,而且里面完全不涉及文件的 IO 操作,适合用来衡量以下几个方面:单线程 event-driven VS. 多线程,内存池 VS. ...
看到这个题目,估计很多人会问:为什么要再实现一个 web 服务器?
这里有几个原因:
1.这是一个 web 服务器框架,不是一个完整的 web 服务器。也就是说 SPWebServer 提供的是一套 API 和类库,可以方便地集成到现有的应用程序中。可以称 SPWebServer 为 embedded web server 。
2.有些时候,我们需要的不是一个功能强大完整的 web 服务器(例如 apache ),我们只是需要一个能提供最基本的 http 功能的服务器框架。比如要用 C/C++ 实现 XML-RPC,JSON-RPC 服务器端,或者为 jabberd 实现一个 http b ...
对着 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
只实现了字典 ...
Page7
如果生活的要义在于追求幸福,那么,除却旅行,很少有别的行为能呈现这一追求过程中的热情和矛盾。
Page119
旅行的一个危险是,我们还没有积累和具备所需要的接受能力就迫不及待地去观光,而造成时机错误。
- 2007-04-24 18:45
- 浏览 1640
- 评论(0)
用 gdb debug c++ 程序,好多次遇到 Error while mapping shared library sections ,之前由于有其他的 debug 手段,因此就避开没有去追究是什么原因。今天遇到的问题没办法避开了,只能花时间来解决这个问题了。
很多时候为了做一些小实验或者尝试学习一套新的库,有关的动态链接库文件不会直接放到系统目录(诸如 /usr/lib)中,而只是在自己的 home 目录里面进行操作。并且通常为了方便,会把动态链接库文件和单元测试程序放到同一个目录中,同时把代表当前目录的 . 设置到 LD_LIBRARY_PATH 中,这样在很多情况下就不用额外设置 L ...
- 2007-04-21 17:49
- 浏览 6842
- 评论(0)
梅里雪山--日照金山全景图
行程表(点击链接可以查看相关的照片,或者查看所有图片)
日期
行程
交通
3.26
广州 -> 丽江
飞机
3.27
丽江 -> 徒步中虎跳 -> 奔子栏
梅里雪山四日团
...
在 《POSA2》 一书中,关于这两个模式有两个很形象的比喻:
半同步/半异步(half-sync/half-async):
许多餐厅使用 半同步/半异步 模式的变体。例如,餐厅常常雇佣一个领班负责迎接顾客,并在餐厅繁忙时留意给顾客安排桌位,为 ...
spserver 是一个实现了半同步/半异步(Half-Sync/Half-Async)和领导者/追随者(Leader/Follower) 模式的服务器框架,能够简化 TCP server 的开发工作。
spserver 使用 c++ 实现,目前实现了以下功能:
1.封装了 TCP server 中接受连接的功能;
2.使用非阻塞型I/O和事件驱动模型,由主线程负责处理所有 TCP 连接上的数据读取和发送,因此连接数不受线程数的限制;
3.主线程读取到的数据放入队列,由一个线程池处理实际的业务。
4.一个 http 服务器框架,即嵌入式 web 服务器(请参考: SPWebServer:一个基于 ...
《unix网络编程》 Page42
每一个 TCP 套接口有一个发送缓冲区,我们可以用 SO_SNDBUF 套接口选项来改变这一缓冲区的大小。当应用进程调用 write 时,内核从应用进程的缓冲区中 copy 所有数据到套接口的发送缓冲区。如果套接口的发送缓冲区容不下应用程序的所有数据(或是应用进程的缓冲区大于套接口发送缓冲区,或是套接口发送缓冲区还有其他数据),应用进程将被挂起(睡眠)。这里假设套接口是阻塞的,这是通常的缺省设置。
Page161
客户可以设置 SO_LINGER 套接口选项,指定一个正的延滞时间。这种情况下,客户的 close 要直到它的数据和 FIN 已被 TCP 服务器 ...
- 2007-03-08 15:23
- 浏览 4938
- 评论(0)
要实现一个并发的网络服务器,一个流行的做法是使用 one thread per connection 。
具体采用的模型可能是
《unix网络编程》 (第二版,中文版) 27.12 TCP预先创建线程服务器程序,主线程统一 accept 。
使用这种模型,有以下的好处:
...
- 2007-03-08 11:25
- 浏览 6169
- 评论(0)
An Architecture for Highly Concurrent Well-Conditioned Internet Services.pdf
SEDA 项目的相关论文
Page26
The use of helper processes in Flash and Harvest underscores the occasional need for an event-driven system to resort to blocking operations, either to reduce complexity or to make use of legacy interfa ...
- 2007-03-07 17:46
- 浏览 2750
- 评论(0)
http://mail.jabber.org/pipermail/standards/2003-August/003950.html
The only way you can truly do reliable messaging is if the client that
receives the message sends back a confirmation that the message has
been received and processed.
it's still limited to server <-> client reliability, not ...
- 2007-03-05 15:53
- 浏览 1690
- 评论(0)