存档

‘C/C++’ 分类的存档

spawn-fcgi 代码介绍

2013年10月3日 没有评论 13002次阅读    

spawn-fcgi是一个小程序,作用是管理fast-cgi进程,功能和php-fpm类似,简单小巧,原先是属于lighttpd的一部分,后来由于使用比较广泛,所以就迁移出来作为独立项目了,本文介绍的是这个版本“spawn-fcgi-1.6.3”。不过从发布新版本到目前已经4年了,代码一直没有变动,需求少,基本满足了。另外php有php-fpm后,码农们再也不担心跑不起FCGI了。

很久之前看的spawn-fcgi的代码,当时因为需要改一下里面的环境变量。今天翻代码看到了就顺手记录一下,就当沉淀.备忘吧。 阅读全文...

Share
分类: C/C++, Nginx, PHP 标签: ,

Redis主体事件循环流程介绍

2013年8月25日 没有评论 8972次阅读    

回顾一下之前看的redis代码,脑子内存比较小,一会就忘了,所以备忘一下。
redis主体流程比较简单,init,listen, accept, read, write,基本就是这几步。下面简单介绍一下,当做备忘。 阅读全文...

Share
分类: C/C++, Redis, TCP/IP 标签: ,

mysql数据热备份工具xtrabackup使用介绍

2013年8月10日 没有评论 7767次阅读    

最近需要用XtraBackup进行mysql数据备份,Gaojie同学推荐的工具,效果还不错,推荐。

详细的介绍请移步上面的链接去官网查看,官网介绍的很清楚了,这里只是就一些容易总结和容易犯的错误等。如果确定数据库的表全部是myisam的表,那就可以简单用“mysql数据热备份脚本-MYISAM表”里的方法做文件备份了,简单的东西总是"更简单可依赖"。

XtraBackup包含2个主要的部分:C程序xtrabackup, perl包装代码innobackupex  , 实际上后者调用了前者,提供一些包装的功能。因为xtrabackup只支持Innodb表,所以innobackupex  额外提供备份myisam表的能力。下面会说一下其原理
阅读全文...

Share

Nginx upstream原理分析【1】-无缓冲模式发送数据

2013年5月18日 没有评论 10331次阅读    

前阵子学习了一下nginx 关于接收upstream的数据,然后发送给客户端的过程,总结一下。

下面的许多注释等是在upstream后面是FCGI协议而介绍的,比如nginx连接后端php-fpm的情况下。nginx接收到客户端的header数据后会调用各个处理过程,也就是ngx_http_core_content_phase,该过程会不断调用各个阶段(phrase)的回调函数,依次进行配置解析,重定向,访问控制,内容处理等过程。

在内容处理的回调ngx_http_core_content_phase()中,会调用ngx_http_fastcgi_handler,请求由后者接管。

nginx中关于upstream经常围绕在ngx_http_upstream_s上面,这上面包括各种缓冲区数据,回调等,所以先看一下ngx_http_upstream_s结构的内容,具体含义注释下面了。

阅读全文...

Share
分类: C/C++, Nginx 标签: , ,

nginx 配置文件解析原理

2013年4月26日 没有评论 5366次阅读    

最近看了nginx配置文件解析的相关代码,用Graphviz花了个草图,够草的图····

先做回标题党,最近事情比较多

阅读全文...

Share
分类: C/C++, Nginx 标签:

由换座便器冲水管想到的软件开发中的接口设计

2012年10月3日 没有评论 4703次阅读    

前段时间家里的座便器按下去后好一阵子才能弹起来,其影响为:
1. 声音很大吵人;
2. 随机出现弹不起来,得再去按一下才行;
3. 浪费水资源;
因此必须换了,之前一直没有时间,正好国庆在家没有出去玩。目测是因为里面的冲谁管弹簧坏了,所以到外面的水暖店里面买了个冲谁管,老板说都是通用的(赞),样子如下图: 阅读全文...

Share

inet_ntoa 是采用静态内存分配的 线程安全 函数

2012年8月12日 2 条评论 13920次阅读    

好吧,其实这是个很简单的问题

1.原因

好久没碰过C代码了,刚看到inet_ntoa(),突然想到这个应该是静态分配的内存,不用释放。但不知道是不是线程安全的,就是说一个线程一份buffer。 阅读全文...

Share
分类: C/C++, UNIX/LINUX 标签:

关于基类构造函数调用虚函数实际调用的不是派生类的问题的原因

2012年7月1日 没有评论 4789次阅读    

关于基类构造函数调用虚函数实际调用的不是派生类的问题的原因

我们知道,类的构造函数里面编译器插入了很多代码,比如异常安全,虚函数表指针的设置,基类构造,等等。

而且,关键是这些代码时在任何用户的代码(非初始化)的地方之前插入的,问题就来了···

如果在基类构造函数里面调用基类的虚函数,那么,实际调用的却不像我们当初认为的多态效果,为什么呢?

下面看看编译怎么实现的就知道了····
阅读全文...

Share
分类: VC++ 标签: , ,

ATL与MFC消息分发机制的对比—由金山开源代码引出的思考(一)

2012年7月1日 没有评论 6274次阅读    

前几天刚看金山开源代码时写了一篇博客分析了一下其消息机制的实现方式。后来发现写的很多都是ATL里面的,最**的是犯了一个严重的错误,把ATL的窗口消息机制里面一个重要技术:实现HWND和对应窗口类this指针之间的映射的Thunk技术给忽略掉了。后来陈坤GG即时的提醒了我,先谢谢他了!
好了,步入正题,今天主要对比一下ATL和MFC是如何将窗口句柄HWND和对应的类的this指针映射的。
阅读全文...

Share
分类: VC++ 标签: ,

C++虚函数多继承的虚函数表指针的测试

2012年7月1日 没有评论 4746次阅读    

C++虚函数多继承的虚函数表指针的测试

看了很多关于虚函数的实现机制,现在来动手验证一下吧··· 阅读全文...

Share
分类: C/C++ 标签:

关于C++虚函数默认参数的问题。Effective C++ 条款38: 决不要重新定义继承而来的缺省参数值

2012年7月1日 没有评论 6080次阅读    

昨晚在chgaowei的博客上关于讨论C++虚函数的默认参数问题,刚翻书找了一下,在Effective C++ 中的38条有说明。
直接上原文吧,最后加几句细点的理解
条款38: 决不要重新定义继承而来的缺省参数值
让我们从一开始就把问题简化。缺省参数只能作为函数的一部分而存在;另外,只有两种函数可以继承:虚函数和非虚函数。因此,重定义缺省参数值的唯一方法是重定义一个继承而来的函数。然而,重定义继承而来的非虚函数是一种错误(参见条款37),所以,我们完全可以把讨论的范围缩小为 "继承一个有缺省参数值的虚函数" 的情况。
阅读全文...

Share
分类: C/C++ 标签: ,

金山卫士开源代码—-消息机制浅析

2012年7月1日 没有评论 5165次阅读    

金山卫士开源代码----消息机制浅析 (上)

代码地址:http://download.csdn.net/source/3301518

今天简化了金山的开源代码,用来学习一下,先谢谢金山的开源精神了,呵呵···直接弄最简单的,窗口见下图,关键代码如下,全部的代码放附件里吧。分析中关于累的继承机制等没有详细的说明了,在函数申明中我会用SON: public BASE ::Func() 的方式指出的.今天主要学习一下其消息机制和路由。因为没有学过ATL,所以理解错了希望大家指教一下哦···
先谢谢了,呵呵··· 阅读全文...

Share
分类: C/C++ 标签:

typedef 在类里面定义一个类型时的问题。

2012年7月1日 没有评论 4395次阅读    

class Test
{
public:
typedef int ( func )( void );//定义一个函数指针类型,
int print(void) { return 0 ;} ;//下面的错误中,
//如果把print函数定义为friend 或者static的,就可以了。但是无法满足我的要求
func p ;//声明一个函数指针
void init() {
p = print ;//在这里给函数指针变量p赋值,赋的是本类的print函数地址。
//但是这句总是出错
}
};
阅读全文...

Share
分类: C/C++ 标签: