C/C++
sunnydogzhou
linux,java,c,网络,分布式,NoSql
展开
-
c语言的取模运算
http://blog.csdn.net/yingbinchina/archive/2008/07/26/2715549.aspx 留着以后读 我们对C的%运算知多少呢?当是正整数时,可能大家都知道。例如:5%3等于2, 3%5等于3。当存在负数时呢?先看看例子:例一:int main(){ int x; x = -6%5;转载 2010-04-30 19:40:00 · 1944 阅读 · 1 评论 -
基于libevent2.0的ministored的http框架--client端
协议啥的都在上一篇日志《基于libevent2.0的ministored的http框架--server端》说啦,client短还是废话少说,直接上代码吧!包含了put和get的操作以及部分的测试代码,gcc下编译可以直接通过!#include #include #include #include #include #include #include #include "base64.h"struct request_context{ struct evhttp_ur原创 2011-05-22 18:49:00 · 3605 阅读 · 1 评论 -
基于libevent2.0的ministored的http框架--server端
将Ministored从libevent1.4升级到2.0以后,花了两天额外的时间来做调试这个http的框架。按照开发的设想,这个ministored支持四个基本的操作put、get、delete、status;在经过几个版本的改动以后,协议如下:1)数据通过post的方式提交2)各个基本操作通过一个自定义的Http的头method来区分。而client和server之间的传送的二进制数据通过base64编码以后的字符串发送。数据附加在post操作提交的字符缓冲区中。 2.1 put操作需要的数据k原创 2011-05-22 18:31:00 · 3675 阅读 · 2 评论 -
switch引发的错误 a label can only be part of a statement and a declaration is not a statement
<br />用switch的时候发现一个错误<br />a label can only be part of a statement and a declaration is not a statement<br /> <br />仔细观察以后发现是没有正确的加大括号引起的。<br /> <br />出错的代码如下<br />swtch (a)<br />case 'a':<br /> ... ...<br /> ... ...<br /> break;<br />case 'b':<b原创 2011-05-22 15:52:00 · 7139 阅读 · 0 评论 -
C split函数
<br />前两天写ministored的时候,发现需要用到字符串的分割,花了点时间写了一个,后来发现不需要了,放在这个,留着以后备用。<br /> <br /><br />int count(char * str,const char * delim){<br /> int num = 0;<br /> while( NULL != ( str = strstr(str,delim) ) ){<br /> str ++; <br /> nu原创 2011-05-22 18:00:00 · 9834 阅读 · 0 评论 -
从libevent1.4到libevent2.0碰到的问题,struct evhttp_uri在头文件只有声明
<br />最近做ministored的时候用libevent来搭建基于http的框架,手头的库是去年从官网上下来的1.4 stable的版本,开发完服务器端程序以后,发现libevent 1.4对于客户端程序的支持不尽如人意,于是手动写了一个tcp的客户端来发送http的协议。一切ok!<br /> <br />后来无意中跑去官网上看了看,发现libevent 2.0有stable了,忍不住下了一个下来看看,make install之后开始了我的一天的悲剧之旅。安装完以后,发现Libeve原创 2011-05-21 12:05:00 · 5924 阅读 · 2 评论 -
Finite State Machine library Introduction
<br />Finite State Machine library is a multi-thread pool C++ lib focus on finite state machine.You can use this lib on the scenario where you should deal with many states, each state, you may receive some events, then base on the event you received, the s原创 2010-10-14 22:07:00 · 1216 阅读 · 0 评论 -
基于共享内存的key-value存储
<br /><br /> 1定义<br />MemKeyValue是一个基于共享内存的随机访问存储模型,可供不同的进程同时调用。<br /> 2应用场景及需求<br />MemKeyValue 主要应用在如下场景,有一份数据,只用初始化一次,然后多个进程都会用到这份数据。采用MemKeyValue共享内存的方式,可以多个进程同时共享一份数据,从而能够达到节省内存,减少操作的目的。<br /> <br />根据应用场景,提炼出具体的需求<br /> <br /> a共享内存<br />原创 2010-10-04 11:28:00 · 3658 阅读 · 0 评论 -
c和java中的二进制文件
最近需要写一段程序,完成以下的工作,用java将数据以二进制的形式写入文件中,然后用C读出此二进制文件。开始的时候没有考虑机器的字节序,直接搞出segment fault.想了很久,才明白原来是java和C的字节序是不一样的。java中的字节序是big endian的,它是与机器无关的。而c的字机序是机器相关的,而当前用的机器是x84_64结构,是little endian原创 2010-05-29 15:36:00 · 2388 阅读 · 0 评论 -
memcpy 实现
http://hi.baidu.com/new_christ/blog/item/f4c547433b0007149213c692.html 后面那个变态的没看懂,转过来有时间细读 第一种:最常见的:void* memcpy( void* dest, const void* src, size_t count ){if (count{pr转载 2010-05-07 18:11:00 · 1108 阅读 · 0 评论 -
说说void 和void *
void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 关于void void主要是用在限定函数参数以及返回值上。 值得注意的一点是在c++的code中,如果函数没有参数的话,需要加上void,否则出错提示“fun : function does not take 1 parameters”。 关于void *原创 2010-05-07 17:50:00 · 588 阅读 · 0 评论 -
warning: incompatible implicit declaration of built-in function ***
使用gcc编译程序,若碰到这样的warning:incompatible implicit declaration of built-in function exit,则表明没有include相应的头文件原创 2010-05-07 17:49:00 · 1848 阅读 · 0 评论 -
格式化输出
http://www.chinaunix.net/jh/23/24825.html By 书生;1.前言 在gcc编程中,我们比较经常用到的字符格式化输出函数是printf的,实际上gcc继承了c语言处理字符具有强大功能的风格,它提供了一系列的格式化输出函数,主要存在两个库函数文件stdio.h/ stdarg.h中,具体函数如下:转载 2010-04-30 19:46:00 · 2845 阅读 · 1 评论 -
#pragma 的用法
#pragma pack(1)取消编译器的内存对齐,所有成员变量按照字节对齐。 在某些条件下,内存还是要省着用的。 #pragma pack(n)和#pragma pack() struct sample { char a; double b; }; 当sample结构没有加#pragma pack(n)的时原创 2010-04-30 19:38:00 · 479 阅读 · 0 评论 -
文件读写
一、标准文件的读写 1.文件的打开fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了。当使用打开函数时,必须给出文件名、文件操作方式(读、写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指原创 2010-04-30 19:45:00 · 824 阅读 · 0 评论 -
linux下检查内存泄露的工具--mtrace
最令linux程序员头疼的莫过于内存泄露了,即使你是在优秀的程序员,你也不能保证所以的malloc操作都有对应的free,那必要的工具就是必不可少的了。在一般的linux发行版中,有一个自带的工具可以很方便的替你完成这些事,这个工具就是mtrace。 下面是它的用法#include #include #include #include int main原创 2011-06-08 18:09:00 · 13490 阅读 · 2 评论