August 5, 2011
Nginx fastcgi perl (pl、cgi)支持
"1. 安装FCGI模块\n# wget http://search.cpan.org/CPAN/authors/id/B/BO/BOBTFISH/FCGI-0.70.tar.gz # tar zxvf FCGI-0.70.tar.gz # cd FCGI-0.70 # perl Makefile.PL # make # make install\n2. 安装 IO 和 IO::ALL模块\n# wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/IO-1.25.tar.gz # tar zxvf IO-1.25.tar.gz # cd IO-1.25 # perl Makefile.PL # make # make install\n升级MakeMaker版\n#wget http://search.cpan.org/CPAN/authors/id/M/MS/MSCHWERN/ExtUtils-MakeMaker-6.54.tar.gz\n#tar zxvf ExtUtils-MakeMaker-6.54\nperl Makefile.PL …"
August 5, 2011
C语言中用const改善程序的健壮性
"关于C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,现将本人的一些体会总结如下,期望对大家有所帮助:\n一 const基础\n如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况:\nint b = 500; const int* a = \u0026amp;b; [1] int const a = \u0026amp;b; [2] int const a = \u0026amp;b; [3] const int* const a = \u0026amp;b; [4]\n如果你能区分出上述四种情况,那么,恭喜你,你已经迈出了可喜的一步。不知道,也没关系,我们可以参考《Effective c++》Item21上的做法,如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。因此,[1]和[2]的情况相同,都是指针所指向的内容为常量(const放在变量声明符的位置无关),这种情况下不允许对内容进行更改操作,如不能*a = 3 ;[3]为指针本身是常量,而指针所指向的内容不是常 …"
August 5, 2011
const修饰指针和引用释疑(转载)
"const修饰指针和引用的用法,对于初学C++的人直是讳莫如深,不知所云.一旦你了解了其用法,一切便不值一哂了.下面我为读者一一释疑: 大致说来其可分为三种情况: const修饰指针,const修饰引用,const修饰指针的引用. 1.const修饰指针 const修饰指针又可分为三种情况:\nconst修饰指针本身 const修饰指针所指的变量(或对象) const修饰指针本身和指针所指的变量(或对象) (1).const修饰指针本身 这种情形下,指针本身为常量,不可改变,任何修改指针本身的行为都是非法的.例如: const int a = 1; const int b = 2;\nint i = 3; int j = 4; int* const pi = \u0026amp;i; //ok, pi的类型为int* const , \u0026amp;i的类型为int* const int* const pi = \u0026amp;a; //error, pi的类型为int* const, \u0026amp;a的类型为const int* const pi = \u0026amp;j; //error, 指针是常量,不可变 *pi …"
August 5, 2011
C语言中 static 和 const
"static 的两大作用:\n一、控制存储方式:\nstatic被引入以告知编译器,将变量存储在程序的静态存储区而非栈上空间。\n1、引出原因:函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅受此函数控制)。\n2、 解决方案:因此c++ 中引入了static,用它来修饰变量,它能够指示编译器将此变量在程序的静态存储区分配空间保存,这样即实现了目的,又使得此变量的存取范围不变。\n二、控制可见性与连接类型 :\nstatic还有一个作用,它会把变量的可见范围限制在编译单元中,使它成为一个内部连接,这时,它的反义词为”extern”.\nstatic作用分析总结:static总是使得变量或对象的存储形式变成静态存储,连接方式变成内部连接,对于局部变量(已经是内部连接了),它仅改变其存储方式;对于全局变量( …"
August 5, 2011
程序基础C语言常量(const)参数
"函数 – 常量(const)参数 非指针参数(也就是传值参数)不会被修改原始值, const 对它是没有意义的。 const 只用于指针。\n*1. 第一种用法: const 类型 变量:\n这种用法将限制修改指针指向的值。#include\nint fun(const int *p) {\np += 1; / 只有去掉 const 这句才可以执行 */\nreturn *p;\n}int main(void)\n{\nint num = 3;\nprintf(“%dn”, fun(\u0026amp;num));\ngetchar();\nreturn 0;\n}\n不过也有办法绕过这个限制:\n#include\nint fun(const int *p) {\nint p2 = p; / 来个重名指针会绕过 const 的限制 */\n*p2 += 1;\nreturn *p;\n}int main(void)\n{\nint num = 3;"
August 3, 2011
新浪微博、腾讯微博:mysql数据库主表设计猜想
"用户信息表(t_user_info)\n字段名称\n字节数\n类型\n描述\nUser_id\n4\nuint32\n用户编号(主键)\nUser_name\n20\nChar[20]\n名称\nMsg_count\n4\nuint32\n发布消息数量,可以作为t_msg_info水平切分新表的auto_increment\nFans_count\n4\nuint32\n粉丝数量\nFollow_count\n4\nUint32\n关注对象数量\n备注:以User_id取模分表\n用户之间关系表(t_user_relation),必须有关注与被关注的关系\n字段名称\n字节数\n类型\n描述\nUser_id\n4\nuint32\n用户编号(联合主键)\nFollow_id\n4\nuint32\n被关注者编号(联合主键)\nType\n1\nUint8\n关系类型(0,粉丝;1,关注)\n备注:关系是单向的,以User_id取模分表\n用户消息索引表(t_uer_msg_index)\n字段名称\n字节数\n类型\n描述\nUser_id\n4\nuint32\n用户编号(联合主键)\nAuthor_id\n4\nuint32\n消息发布者编号(可能是被关注者,也可能是自己)(联合主键) …"
August 2, 2011
nagios访问apache权限问题解决
"It appears as though you do not have permission to view information for any of the services you requested…\n打开cgi.cfg配置文件,里面有个参数:\nuse_authentication=1\n为了保障系统的安全性,nagios设置了这个参数,默认为1,改为0即可\n1.装了几次,换了几个版本的系统,脑袋都大了,终于解决了\nnrpe在 ./configure时提示\nchecking for SSL… configure: error: Cannot find ssl libraries\n把openssl-devel装上就可以了\n2.nagios web界面提示\nIt appears as though you do not have permission to view information for any of the services you requested…\n打开cgi.cfg配置文件,里面有个参数:\nuse_authentication=1\n为了保障系统的安全 …"
August 1, 2011
理解Linux系统负荷
"一、查看系统负荷\n如果你的电脑很慢,你或许想查看一下,它的工作量是否太大了。\n在Linux系统中,我们一般使用uptime命令查看(w命令和top命令也行)。(另外,它们在苹果公司的Mac电脑上也适用。)\n你在终端窗口键入uptime,系统会返回一行信息。\n这行信息的后半部分,显示”load average”,它的意思是”系统的平均负荷”,里面有三个数字,我们可以从中判断系统负荷是大还是小。\n为什么会有三个数字呢?你从手册中查到,它们的意思分别是1分钟、5分钟、15分钟内系统的平均负荷。\n如果你继续看手册,它还会告诉你,当CPU完全空闲的时候,平均负荷为0;当CPU工作量饱和的时候,平均负荷为1。\n那么很显然,”load average”的值越低,比如等于0.2或0.3,就说明电脑的工作量越小,系统负荷比较轻。\n但是,什么时候能看出系统负荷比较重呢?等于1的时候,还是等于0.5或等于1.5的时候?如果1分钟、5分钟、15分钟三个值不一样,怎么办?\n二、一个类比\n判断系统负荷是否过重,必须理解load average的真正含义。下面,我根据” Understanding Linux …"
July 31, 2011
Apache下实现隐藏服务器名称
"我这里用的是FreeBSD的操作系统的.用curl 命令查看文件头\n为了安全起见,我们需要将FreeBSD字样及其它信息隐藏起来.操作如下:\n在httpd.conf文件里添加以下两行\nServerTokens Prod ServerSignature Off\n重启apache即可.\n如图所示:"