目录
1.网站的硬件环境
2.修改Httpd.conf
3.修改sysctl.conf文件
一、网站环境LAMP硬件环境
[root@www conf]# dmidecode -s processor-version
Intel(R) Xeon(R) CPU E3-1270 V2 @ 3.50GHz
四核八线程
内存32G
[root@www conf]# free -m
total used free shared buffers cached
Mem: 32080 14406 17674 0 189 1905
-/+ buffers/cache: 12310 19769
Swap: 1023 0 1023
硬盘为SSD raid10 大小 256G
继续阅读 »
解决服务器time_wait过高的性能优化过程
Doxygen初学与简单应用
本文环境为Windows 7 x64
一直在使用javadoc,奈何c\c++,python等其他语言注释写的很好,但没有工具自动生成文档。
通过同事反应Doxygen可以针对各种语言生成文档内容。随即查阅了Doxygen的相关内容。
继续阅读 »
使用Doxygen生成libevent document(2.0.15)–CHM格式
libevent自己是不提供在线下载的文档的,用户可以自己去http://libevent.org/在线查看,如最新的文档是2.0.15:http://www.wangafu.net/~nickm/libevent-2.0/doxygen/html/
但是,在线文档毕竟没有离线的看起来舒服和方便,下面我教大家如何制作自己的离线document,以后的每个版本就可以自己制作省的去问google和baidu了:
继续阅读 »
服务器开发之 Daemon 和 Keepalive
由于业务开发需要,需要对数据库代理进行研究,在研究 MySQL Proxy 实现原理的过程中,对一些功能点进行了分析总结。本文主要讲解下 MySQL Proxy的 daemon 和 keepalive 功能实现原理。
继续阅读 »
模板类与类模板、函数模板与模板函数等的区别
在C++中有好几个这样的术语,但是我们很多时候用的并不正确,几乎是互相替换混淆使用。下面我想彻底辨清几个术语,这样就可以避免很多概念上的混淆和使用上的错误。
这几个词是:
函数指针——指针函数
数组指针——指针数组
类模板——模板类
函数模板——模板函数
最终在使用中,我们就可以让它们实至名归,名正言顺。
继续阅读 »
Linux系统调用列表
fork | 创建一个新进程 |
clone | 按指定条件创建子进程 |
execve | 运行可执行文件 |
exit | 中止进程 |
_exit | 立即中止当前进程 |
getdtablesize | 进程所能打开的最大文件数 |
getpgid | 获取指定进程组标识号 |
setpgid | 设置指定进程组标志号 |
getpgrp | 获取当前进程组标识号 |
setpgrp | 设置当前进程组标志号 |
getpid | 获取进程标识号 |
getppid | 获取父进程标识号 |
getpriority | 获取调度优先级 |
setpriority | 设置调度优先级 |
modify_ldt | 读写进程的本地描述表 |
nanosleep | 使进程睡眠指定的时间 |
nice | 改变分时进程的优先级 |
pause | 挂起进程,等待信号 |
personality | 设置进程运行域 |
prctl | 对进程进行特定操作 |
ptrace | 进程跟踪 |
sched_get_priority_max | 取得静态优先级的上限 |
sched_get_priority_min | 取得静态优先级的下限 |
sched_getparam | 取得进程的调度参数 |
sched_getscheduler | 取得指定进程的调度策略 |
sched_rr_get_interval | 取得按RR算法调度的实时进程的时间片长度 |
sched_setparam | 设置进程的调度参数 |
sched_setscheduler | 设置指定进程的调度策略和参数 |
sched_yield | 进程主动让出处理器,并将自己等候调度队列队尾 |
vfork | 创建一个子进程,以供执行新程序,常与execve等同时使用 |
wait | 等待子进程终止 |
wait3 | 参见wait |
waitpid | 等待指定子进程终止 |
wait4 | 参见waitpid |
capget | 获取进程权限 |
capset | 设置进程权限 |
getsid | 获取会晤标识号 |
setsid | 设置会晤标识号 |
C++运算符重载讲解与经典实例
C++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作。例如:
1 2 3 4 5 6 7 8 9 10 |
class complex { public: complex(double r=0.0,double I=0.0){real=r;imag=I;} void display(); private: double real; double imag; }; complex a(10,20),b(5,8); |
“a+b”运算如何实现?这时候我们需要自己编写程序来说明“+”在作用于complex类对象时,该实现什么样的功能,这就是运算符重载。运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据导致不同类型的行为。
运算符重载的实质是函数重载。在实现过程中,首先把指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参,然后根据实参的类型来确定需要调用达标函数,这个过程爱编译过程中完成。
继续阅读 »
近期评论