首页 › 月度存档 › 四月 2015

解决服务器time_wait过高的性能优化过程

目录
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
继续阅读 »

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++中有好几个这样的术语,但是我们很多时候用的并不正确,几乎是互相替换混淆使用。下面我想彻底辨清几个术语,这样就可以避免很多概念上的混淆和使用上的错误。
这几个词是:
函数指针——指针函数
数组指针——指针数组
类模板——模板类
函数模板——模板函数
最终在使用中,我们就可以让它们实至名归,名正言顺。
继续阅读 »

模板类的友元重载

模板类的友元重载方法
继续阅读 »

socket的CS连接流程

闲言少叙,直接提出两张图,一目了然。图是从网上找的:)

第一幅:STREAM方式(TCP)连接流程
image007
继续阅读 »

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++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作。例如:

“a+b”运算如何实现?这时候我们需要自己编写程序来说明“+”在作用于complex类对象时,该实现什么样的功能,这就是运算符重载。运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据导致不同类型的行为。
运算符重载的实质是函数重载。在实现过程中,首先把指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参,然后根据实参的类型来确定需要调用达标函数,这个过程爱编译过程中完成。
继续阅读 »