- 博客(5)
- 收藏
- 关注
转载 解Google-ProtoBuf中结构化数据的编码
<br /> <br />本文的主要内容是google protobuf中序列化数据时用到的编码规则,但是,介绍具体的编码规则之前,我觉得有必要先简单介绍一下google protobuf。因此,本文首先会介绍一些google protobuf相关的内容,让读者朋友对google protobuf有一个初步的印象,然后,再开始进入正题—-深入浅出地介绍google protobuf中用到的编码规则。下面言归正传,开始今天的话题。1. Google-ProtoBuf是什么<br />ProtoBuf,全称
2010-06-30 09:41:00 3205 1
原创 采用epoll模型服务器连接管理器实现
<br />【应用场景】<br /> <br /> 在网络服务器中,需要维护所有连接信息,通常是以fd做为key,连接信息结构体做为value。每次有新连接接入时,需求加入一个映射关系;每次有新数据到达时,需要根据对应的fd查询到对应的连接信息结构。<br /> <br /> 通过上面的场景我们可以抽象出来一类数据,数据的特点如下:数据有多条,支持增、删、改数据结构有唯一的索引,且索引号动态分配需要很方便的根据key查询到value(这里是性能的关键)记录数有上限(不是必要的,但通常都需要,比较
2010-06-26 21:19:00 1133
原创 采用共享内存或文件映射的方式保存用户数据
[引言] 互联网应用中,经常会碰到一种比较特殊的用户数据,这类数据的特点是: 每个用户都有的数据 数据长度不变且字节数一般较少 读请求远大于写请求,特别是批量读 比如网站提供给用户8种特权服务,用户可以选择性的开通其中一个或多个,而用户一般的操作行为是查看自己的特权以及查看好友的特权。这类数据的特点是写请求很少,因为用户不会经常性的开通或关闭一个特权,但是读请求很多,因为一般来说用户会比较关注自己的特权,同时产品也会引导用户去查看自己好友开通了那些特权,从而进一步拉扰用户。
2010-06-19 23:51:00 1642
原创 结构体或类定义中对变长成员的处理
<br />对于一个结构体,头部信息固定,成员节点变长的,可以采用下面的定义方式:<br />1. 数组<br />typdef struct _stHeadInfo /*头部*/<br />{<br /> int version;<br /> int magic_num;<br /> int req_count;<br /> int res_count;<br /> char cgiinfo[0];<br />} stHeadInfo __attribute__((__aligned__(4)));<br
2010-06-19 22:54:00 1493
转载 Linux网络编程socket错误分析
<br /><br />socket错误码:<br /> <br />EINTR: 4<br />阻塞的操作被取消阻塞的调用打断。如设置了发送接收超时,就会遇到这种错误。<br />只能针对阻塞模式的socket。读,写阻塞的socket时,-1返回,错误号为INTR。另外,如果出现EINTR即errno为4,错误描述Interrupted system call,操作也应该继续。如果recv的返回值为0,那表明连接已经断开,接收操作也应该结束。<br /> <br />ETIMEOUT:110<br />
2010-06-13 21:35:00 10410 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人