- 博客(52)
- 资源 (11)
- 收藏
- 关注
转载 Web服务器压力(负载)测试工具
Web服务器压力(负载)测试工具 一 Siege一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。官方:http://www.joedog.org/1. 下载源码请自行google例如:wget http://soft.vpser.net/test/sie
2014-03-06 13:09:47
1232
1
转载 Reactor和Proactor
1、标准定义两种I/O多路复用模式:Reactor和Proactor一般地,I/O多路复用机制都依赖于一个事件多路分离器(Event Demultiplexer)。分离器对象可将来自事件源的I/O事件分离出来,并分发到对应的read/write事件处理器(Event Handler)。开发人员预先注册需要处理的事件及其事件处理器(或回调函数);事件分离器负责将请求事件传递给事件处理
2014-02-20 16:29:42
823
转载 Linux查看文件编码格式及文件编码转换
如果你需要在Linux 中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题。Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8。下面介绍一下,在Linux中如何查看文件的编码及如何进行对文件进行编码转换。查看文件编码在Linux中查看文件编码可以通过以下几种方式:1.在Vim 中可以直接查看文件编码Shell代码
2014-02-18 15:52:53
807
转载 Http协议详解
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of
2013-07-22 18:24:19
1069
原创 sar使用说明
sar这东西,一开始还以为是内部有的,原来是外部的工具,可以到http://pagesperso-orange.fr/sebastien.godard/download.html去下载 1 安装 tar zxvf xxx.tar.gz ./configure make make install 2 使用 pidstat 2 5
2013-06-26 14:22:40
1926
原创 Perl内置特殊变量
一、正则表达式特殊变量:1、$n :包含上次模式匹配的第n个子串2、$& :前一次成功模式匹配的字符串3、$` :前次匹配成功的子串之前的内容4、$’ :前次匹配成功的子串之后的内容5、$+ :前一次使用括号的模式匹配的字符串.二、文件句柄特殊变量:1、$| :如果设置为零,在每次调用函数write或print后,自动调用函数fflush,将所写内容
2013-06-14 16:57:09
1270
原创 Perl 获取cpu使用率
1、先了解/proc/stat文件信息 在Linux/Unix下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间。平时所说的CPU利用率是指:CPU执行非系统空闲进程的时间 / CPU总的执行时间。 此信息都存储在/proc/stat文件中, 在Linux的内核中,有一个全局变量:J
2013-06-13 16:12:27
3577
转载 Nginx安装教程
nginx可以使用各平台的默认包来安装,本文是介绍使用源码编译安装,包括具体的编译参数信息。正式开始前,编译环境gcc g++ 开发库之类的需要提前装好,这里默认你已经装好。ububtu平台编译环境可以使用以下指令apt-getinstallbuild-essentialapt-getinstalllibtool
2013-06-07 17:24:21
1149
转载 inotify -- Linux 2.6 内核中的文件系统变化通知机制
一、 引言众所周知,Linux 桌面系统与 MAC 或 Windows 相比有许多不如人意的地方,为了改善这种状况,开源社区提出用户态需要内核提供一些机制,以便用户态能够及时地得知内核或底层硬件设备发生了什么,从而能够更好地管理设备,给用户提供更好的服务,如 hotplug、udev 和 inotify 就是这种需求催生的。Hotplug 是一种内核向用户态应用通报关于热插拔设备一些事件发
2013-05-21 18:57:14
881
转载 C++智能指针详解
一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::shared
2013-03-15 10:07:22
776
转载 C++堆排序模板
在程序设计相关领域,堆(Heap)的概念主要涉及到两个方面:一种数据结构,逻辑上是一颗完全二叉树,存储上是一个数组对象(二叉堆)。垃圾收集存储区,是软件系统可以编程的内存区域。本文所说的堆,指的是前者。堆排序的时间复杂度是O(nlgN),与快速排序达到相同的时间复杂度。但是在实际应用中,我们往往采用快速排序而不是堆排序。这是因为快速排序的一个好的实现,往往比堆排序具有更好的
2013-03-12 14:29:03
1127
原创 C++归并排序模板
#include using namespace std;template void Merge( T* arr, int low, int mid, int high ){ int i, j, k; i = low; j = mid + 1; k = 0; T* tmp = new T[high - low + 1]; while( i
2013-03-08 17:43:34
4883
原创 C++插入排序模板
#include using namespace std;template void InsertSort( T* arr, int n ) { T x; int i, j; for ( i = 1; i < n; i++ ) { x = *(arr + i); for ( j = i - 1; j >= 0; j-
2013-03-08 15:51:30
1783
1
原创 snoop 抓包
例子:snoop -d hme1 -ta -x 54 192.168.30.150 and port 23520 and tcp 参数简介: [ -a ] # Listen to packets on audio [ -d device ] # settable to le?, ie?, bf?, tr? [ -s snaplen ] # Truncate packets
2013-02-27 11:04:41
1309
原创 Linux 非阻塞connect,错误码:EINPROGRESS
当我们以非阻塞的方式来进行连接的时候,返回的结果如果是 -1,这并不代表这次连接发生了错误,如果它的返回结果是 EINPROGRESS,那么就代表连接还在进行中。 后面可以通过poll或者select来判断socket是否可写,如果可以写,说明连接完成了。
2013-02-26 15:56:08
2179
转载 职责链模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍装饰模式的实现。 职责链模式:使
2013-01-29 15:36:23
643
转载 装饰者模式
想象一下有如下的场景: 有两种主咖啡, 可以搭配任意的饮料,我们的目标是允许类容易扩展,在不修改现有代码的情况下,可以搭配新的行为。这里可以用装饰者模式来实现。1. uml 图 装饰者模式动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 这里吹一下装饰者模式的好处:每个组件都可以单独使用,或
2013-01-28 16:26:53
613
原创 Solaris下使用mdb检查内存泄露
步骤一:UMEM_DEBUG=default UMEM_LOGGING=transaction LD_PRELOAD=libumem.so.1 ./spAgent &步骤二:-bash-3.00$ mdb -p 16546 //上面得到进程IDLoading modules: [ ld.so.1 libumem.so.1 libc.so.1 ]步骤三:-
2013-01-23 16:56:23
1677
原创 观察者模式
观察者模式概念:定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。“Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automat
2012-12-26 14:07:02
1233
原创 同步与异步IO、阻塞与非阻塞IO
很多时候我们常常看到同步与异步,阻塞与非阻塞的出现。有的地方直接将同步与阻塞画上了等号。异步与非阻塞画上了等号。事实上这是不对的。同步不等于阻塞,而异步也不等于非阻塞。下面就来仔细的看看同步与异步、阻塞与非阻塞的概念差别,及他们的组合应用。 同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin, isd
2012-09-04 14:14:14
941
转载 Oracle定时任务
今天总结下oracle的任务队列管理器(job queue ),以后也方便查询. 我们要做定时任务时,有两种办法一种是: 操作系统的定时,win的定时任务,unix的crontab一种是: 数据库级的定时,她的效率更高,再有大量的表级操作时,建议用数据库本身的job queue,这样方便,效率高;如果用系统级定时,会增加很多编程工作,成本增加了,还很容易出错,事情越
2012-08-29 16:25:41
896
转载 plsql 安装和使用
大家都知道,用PL/SQL连接Oracle,是需要安装Oracle客户端软件的,个人认为oracle客户端有点大,比较耗资源。其实oracle为我们提供了轻便的工具:oracle instantclient package. 使用此工具,就无需安装oracle客户端了。 如何使用呢?详细步骤如下: 1、下载oracle instantclient basic package,在oracle官网
2012-08-22 11:40:40
1499
转载 使用strace+pstack利器分析程序性能
引言有时我们需要对程序进行优化、减少程序响应时间。除了一段段地对代码进行时间复杂度分析,我们还有更便捷的方法吗?若能直接找到影响程序运行时间的函数调用,再有针对地对相关函数进行代码分析和优化,那相比漫无目的地看代码,效率就高多了。将strace和pstack工具结合起来使用,就可以达到以上目的。strace跟踪程序使用的底层系统调用,可输出系统调用被执行的时间点以及各个调用
2012-07-27 16:50:57
11361
转载 Netstat命令详解
Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。 如果你的计算机有时候接收到的数据报导致出错数据或故障,你不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么你就应该使用Netstat查一查为什么会出现这些情况了。Ne
2012-07-13 13:50:58
2075
原创 shmget - 共享内存
一. 共享内存介绍系统V共享内存指的是把所有共享数据放在共享内存区域(IPC shared memory region),任何想要访问该数据的进程都必须在本进程的地址空间新增一块内存区域,用来映射存放共享数据的物理内存页面。系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射shm文件系统中的文件实现进程间的共享内存通信。也就是说,每个共享内存区
2012-07-04 16:37:15
22752
1
原创 State模式
意图:允许一个对象在其内部状态改变时改变它的行为;对象看起来似乎修改了它的类;在一个状态即将结束的时候启用下一个状态,可以是一个按需的连锁反应;适用性:1、一个对象的行为取决于它的状态,并且它必须在运行过程中可以根据它的状态改变它的行为;2、一个操作中含有庞大的多分支的条件语句,并且这些分支依赖于该对象的状态;这个状态通常使用一个或多个枚举常量表示;通常,有多个操作包含这一
2012-06-29 15:06:04
864
原创 线程条件变量pthread_cond_t
1.初始化条件变量pthread_cond_init#include int pthread_cond_init(pthread_cond_t *cv, const pthread_condattr_t *cattr);返回值:函数成功返回0;任何其他返回值都表示错误初始化一个条件变量。当参数cattr为空指针时,函数创建的是一个缺省的条件变量。否则条件变量的属性将由cattr中的
2012-06-14 10:20:02
16826
2
转载 LDAP协议介绍
LDAP协议基础概念 1. 从用途上阐述LDAP,它是一个存储静态相关信息的服务,适合“一次记录多次读取”。常用LDAP服务存储的信息: 公司的物理设备信息(如打印机,它的IP地址、存放位置、厂商、购买时间等) 公开的员工信息(地址、电话、电子邮件…) 合同和账号信息(客户信息、产品交付日期、投标信息、项目信息…) 凭证信息(认证凭证、许可证凭证…)2
2012-06-08 14:39:36
20903
1
转载 Linux内核信号处理机制介绍
本文简单介绍下Linux信号处理机制,为介绍二进制翻译下信号处理机制做一个铺垫。本文主要参考书目《Linux内核源代码情景分析》《独辟蹊径品内核:Linux内核源代码导读》首先,先说一下什么是信号。信号本质上是在软件层次上对中断机制的一种模拟,其主要有以下几种来源:程序错误:除零,非法内存访问…外部信号:终端Ctrl-C产生SGINT信号,定时器到期产生SIGALRM…
2012-05-28 11:50:25
1143
转载 epoll使用详解
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且
2012-05-22 17:41:32
904
原创 mmap详解
功能描述: mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。 基于文件的映射,在mmap和munmap执行过程的任何时刻,被映射文件的st_atime可能被更新。如果st_atime字段在前述的情况下没有得到更新,首次对映射区
2012-05-15 16:08:01
779
原创 LinuxC模拟ls程序
#include #include int main(int argc, char* argv[]){ DIR* lpoDir; struct dirent* lpoDirent; if ( 2 != argc) { printf("a single argument (the directory name) is required"
2012-05-13 20:16:29
960
转载 多线程中定时器的使用
不管是在进程还是线程,很多时候我们都会使用一些定时器之类的功能,这里就定时器在多线程的使用说一下。首先在linux编程中定时器函数有alarm()和setitimer(),alarm()可以提供一个基于秒的定时功能,而setitimer可以提供一个基于微妙的定时功能。alarm()原型: #include unsigned int alarm(unsi
2012-04-20 11:07:24
1832
转载 基于Html5 websocket和Python的在线聊天室
一、什么是WebSocket API WebSocket API是下一代客户端-服务器的异步通信方法。该通信取代了单个的TCP套接字,使用ws或wss协议,可用于任意的客户端和服务器程序。WebSocket目前由W3C进行标准化。WebSocket已经受到Firefox 4、Chrome 4、Opera 10.70以及Safari 5等浏览器的支持。 WebSo
2012-03-29 16:04:48
16232
8
转载 Linux C++线程池框架
本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简单。 为什么需要线程池目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等
2012-03-07 16:11:59
931
转载 IMAP4协议简介
IMAP是斯坦福大学在1986年开发的,它是一个开放的标准,被设计成POP的超集,而POP是个地位牢固的开放邮件标准。IMAP标准的最新版是IMAP第4版修订版1(RFC 2060)。IMAP第4版修订版1与IMAP4的实际差别仅仅在于前者提高了拨号链路的性能。有关IMAP4标准的详细信息请参见华盛顿大学的IMAP主页(www.washington.edu/imap/)。尽管在日常使用中,IMAP
2012-03-01 16:39:03
3507
原创 Singleton模式
template class TSingleton{public: static T* Instance( void ) { if (cpoInstance == NULL) { try{ cpoInstance = new T; } catch(...) { cpoInstance = NULL; }
2011-12-26 09:32:01
931
1
原创 函数可变参数例子
#include #include #include int demo ( char*, ...);void main ( void ){ demo("DEMO", "This", "is", "a", "demo!", "");} int demo ( char* asMsg, ... ){ va_list loArgp; int liArgNo =
2011-12-19 10:52:44
564
转载 Vim 练级攻略
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。——————————正文开始——————————你想以最快的速度学习人类史上最好
2011-12-19 09:38:04
660
转载 Http协议详解
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of
2011-12-14 17:23:54
599
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人