自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李飞勃的专栏

专注于高性能web服务器

  • 博客(25)
  • 收藏
  • 关注

原创 我的个人博客开通啦!!

<br />我的个人博客开通啦,<br />http://blog.lifeibo.com/<br />以后在这里更新文章,大家关注!!

2010-11-29 13:46:00 5084

原创 执行perl时出现Undefined subroutine

<br /> <br />对perl研究得不是很深,平时只是随便写写,最近一次,执行perl时,出现如下错误<br />Undefined subroutine &main::like called at ./get.t line 78.<br />分析之后,其实就是未定义的函数调用,在这里,like这个函数的调用有问题,like未定义,一般是由于未引入某个库文件。<br />加入use Test::More;之后就ok了!!

2010-11-11 13:55:00 23233 1

原创 Comet:基于 HTTP 长连接的“服务器推”技术

 很多应用譬如监控、即时通信、即时报价系统都需要将后台发生的变化实时传送到客户端而无须客户端不停地刷新、发送请求。本文首先介绍、比较了常用的“服务器推”方案,着重介绍了 Comet - 使用 HTTP 长连接、无须浏览器安装插件的两种“服务器推”方案:基于 AJAX 的长轮询方式;基于 iframe 及 htmlfile 的流方式。最后分析了开发 Comet 应用需要注意的一些问题,以及如何借助开源的 Comet 框架-pushlet 构建自己的“服务器推”应用。请访问 Ajax 技术资源中心,这是有关 A

2010-11-05 00:58:00 7470

原创 http中有关缓存相关的几个字段

Expires、Cache-Control、Last-Modified、 ETag是RFC 2616(HTTP/1.1)协议中和网页缓存相关的几个字段。前两个用来控制缓存的失效日期,后两个用来验证网页的有效性。要注意的是, HTTP/1.0有一个功能比较弱的缓存控制机制:Pragma,使用HTTP/1.0的缓存将忽略Expires和Cache-Control头。我们这里以Apache2.0服务器为例,只讨论HTTP/1.1协议。ExpiresExpires字段声明了一个网页或URL地址不再被浏览器缓存的时间

2010-11-01 14:50:00 11254 1

原创 ServerAlias指令

<br />ServerAlias指令与基于域名的虚拟主机联用,设定主机的候补域名。<br /> <br />如下配置:<br /> <br /><VirtualHost *><br />ServerName server.domain.com<br />ServerAlias server server2.domain.com server2<br />...<br /></VirtualHost><br /> 

2010-11-01 11:42:00 7245

原创 调整linux内核的几个重要参数

 在linux的内核参数调整中,有几个参数是可以调整下的,比如用netstat发现 如下很多time-wait数量 netstat -ae|grep 1521|grep root 通过查看:vi /etc/sysctl.conf 可以看到 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_r

2010-10-28 17:02:00 19100

原创 Web后台开发的问题分析方法

<br /><br />Web后台开发中遇到的问题五花八门,分析问题涉及到的方方面面挺多的,不容易下手。本文分享工作中遇到的一些解决问题的方法仅供参考。如果您有好方法和案例,欢迎分享。<br /><br />1一些系统知识ulimit -a里的各种限制,特别是open files和core file size共享内存大小受/proc/sys/kernel/shmmax控制32位OS下默认写文件超过2G会coredump,可通过定义宏来解决32位OS下,受低端内存大小(800M,所有进程共享)的影响,单机so

2010-10-27 20:03:00 6129 1

转载 Linux下通过SSH方式登陆不需要密码的方法 SSH without password

<br />假设现在有两台Linux服务器 A,B。 从A登陆B是通过SSH方式连接的。 <br />在A服务器的控制台界面如下 <br />a@A:ssh-keygen -t rsa <br />a@A:ssh-copy-id -d ~/.ssh/id_rsa.pud b@192.168.2.5 <br /><br />b: 为登陆B服务器的帐户,这里要写你登陆B服务器的帐户; <br />192.168.2.5: 为B服务器的IP地址,这里应该写你要登陆的服务器的IP地址; <br /><br />然后

2010-10-27 19:50:00 9440

原创 load的小结

<br />linux下UPTIME或者TOP后,经常看到CPU的LOAD,1分,5分,15分钟内的平均负载, <br />几乎每个接触类 Unix 操作系统的工程师都知道如何查看系统负载。但这东西的工作机理到底是怎样的,可能没有多少能说清楚。对比了一些相关信息,加上自己的理解,做一下笔记。 <br /><br />什么是 Load ? 什么是 Load Average ? <br />Load 就是对计算机干活多少的度量(WikiPedia: the system load is a measure of

2010-10-27 18:23:00 6616

原创 linux下的pmap命令

<br />linux的pmap命令可以很方便地看到某个进程所用的内存情况,说明如下: 1 pmap -d 进程号  出现的几列的含义   每列的含义如下: 参数 解释 Address:进程所占的地址空间 Kbytes:该虚拟段的大小 RSS:设备号(主设备:次设备) Anon:设备的节点号,0表示没有节点与内存相对应 Locked:是否允许swapped Mode 权限:r=read, w=write, x=execute, s=shared, p=private(

2010-10-26 23:11:00 10352

转载 介绍一个监控软件dstat

<br />在监控方面,之前有了vmstat,iostat,sar等工具了,但如果想综合一点用的话, <br />新发现了一个不错的监控工具dstat,下面简单介绍之: <br />1 下载: <br />   http://dag.wieers.com/rpm/packages/dstat/dstat-0.6.7-1.rh7.rf.noarch.rpm <br /><br />2 安装 <br /><br />3  使用: <br />    输入dstat后,会显示出cpu,disk,net,pagin

2010-10-26 22:36:00 6816

转载 linux文件输入输出

<br />1. 基于文件指针的文件操作(缓冲)在Linux中,大多数的资源都可以以文件的方式进行处理,常见的文件类型有:l         普通文件l         无名管道和命名管道l         目录l         设备l         符号连接l         套接字普通文件:也称磁盘文件,并且能够进行随机的数据存储(能够自由seek定位到某一个位置);管道:是一个从一端发送数据,另一端接收数据的数据通道;目录:也称为目录文件,它包含了保存在目录中文件列表的简单文件。设备:也称为特殊文

2010-10-25 22:11:00 9994

转载 linux信号处理

1. 信号概念信号是进程在运行过程中,由自身产生或由进程外部发过来的消息(事件)。信号是 硬件中断的软件模拟(软中断)。每个信号用一个整型常量宏表示,以SIG开头,比如SIGCHLD、SIGINT等,它们在系统头文 件中定义,也可以通过在shell下键入kill –l查看信号列表,或者键入man 7 signal查看更详细的说明。信号的生成来自内核,让内核生成信号的请求来自3个地方:l         用户:用户能够通过输入CTRL+c、Ctrl+/,或者是终端驱动程序分配给信号控制字符的其他任何键来请求内

2010-10-25 21:47:00 7096

原创 nginx一般的http请求建立处理,发送函数调用,以及各个phase的状态(等完善)

<br /> <br />调用关系太复杂了,每个函数里面都做了很多事情,详细的过程有空再写。<br /> <br />// 当前连接过来时:ngx_http_init_connection会被调用<br />ngx_http_init_connection->ngx_http_init_request->ngx_http_process_request_line-><br />ngx_http_process_request_headers->ngx_http_process_request->ngx_ht

2010-10-24 16:40:00 10383

转载 用netstat命令发现大量的TIME_WAIT现象

<br /><br />用netstat命令发现大量的TIME_WAIT现象:<br />netstat -ae|grep 1521|grep root<br />……<br />TIME_WAIT   root<br />TIME_WAIT   root<br />TIME_WAIT   root<br />TIME_WAIT   root<br />TIME_WAIT   root<br />TIME_WAIT   root<br />TIME_WAIT   root<br />TIME_WAIT  

2010-10-22 11:54:00 8731

原创 LOSF 命令说明

<br />列出所有打开的文件:<br /># lsof<br /><br />列出Internet, x.25 (HP-UX), and UNIX domain 文件:<br /># lsof -i -U<br /><br />列出指定进程打开的IPv4文件:<br /># lsof -i 4 -a -p 1234<br /><br />列出指定进程打开的IPv4文件:<br /># lsof -i 6<br /><br />列出使用 /dev/log的文件:<br /># lsof /dev/log<b

2010-10-10 21:18:00 7882

原创 nginx源码分析(1):hash的使用

在nginx源码中提供了一个比较重要的hash结构,可以为我们带来高效的kv查找。该hash的实现比较简单,但却非常的高效。该hash结构是只读的,在创建之后,以后只能提供查询功能。该hash结构体,刚开始理解起来比较费劲,而且在使用时也会有不爽的感觉,需要好几个结构体,以及好几个函数配合才能完成初始化及查找。在本文中,对于通配符的使用,我们先不作介绍。我们先看看如何使用吧。创建一个hash结构体的过程是:1. 构造一个ngx_hash_key_t为成员的数组,然后用我们需要hash的key、value以及

2010-09-20 15:25:00 15285 3

原创 tb-common-utils源码分析(3):文件和目录的基本操作

<br />工作之前总在windows下写程序,进入linux之后,对文件和目录操作的很多方法不太熟,本文介绍一下tb-common-utils中对文件和目录操作封闭的几个函数,虽然简单,但还是值得学习的。<br />今天要介绍一下CFileUtil这个类,该类仅提供三个静态函数:mkdirs、isDirectory以及isSymLink。<br /> <br />首先是mkdirs,该函数用于创建多级目录,注意,不能将常量字符串传给该函数。<br /> bool CFileUtil::mkdirs(ch

2010-09-19 17:29:00 7794 1

转载 url转义字符

<br /><br />url转义字符原理<br />如果表单的action为list.jsf?act=go&state=5<br />则提交时通过request.getParameter可以分别取得act和state的值。<br />如果你的本意是act='go&state=5'这个字符串,那么为了在服务端拿到act的准确值,你必须对&进行转义<br />[预备知识]<br />  <br />     对与通过get方式提交的url,浏览器在提交前首先根据http协议把一一个的参数及其值解析配对。而ur

2010-09-19 13:26:00 7785

原创 tb-common-utils源码分析(2):简单线程管理

<br />在上一篇文章中,我们研究了日志类的实现。比较简单,也比较实用。这次,我们来研究一个对线程的简单管理方案。<br />在分析源码之前,我们先来看一个使用线程类的例子,上代码:<br /> <br />#include <stdio.h>// 引用头文件#include <tbsys.h>using namespace tbsys;// 写我们继承的线程类 class Myrunable : public Runnable { // 此处是我们的线程函数 vo

2010-09-14 16:26:00 9529 2

原创 tb-common-utils源码分析(1):CLogger

tb-common-utils是淘宝开发使用的一个公共库,淘宝使用广泛的kv系统tair即是使用该库作为其他底层库。该源码可在http://code.taobao.org/project/view/3/中找到。我们先从最基本的开始分析,首先今天要介绍的是clogger类,该类用于记录日志信息。先看该类的成员变量:private: // 文件句柄 int _fd; // 文件名 char *_name; int _check; // 最大文件数量

2010-09-14 15:27:00 3359 1

原创 体验测试生活

     本周最开始自己写了一些用例,主要是学习了perl脚本的使用,然后使用perl脚本来跑这些用例。之后,从周三开始进入测试组,体验一下测试流程,学习下测试理论,并参与用例设计编写与测试执行过程。    在测试组的这三天体会很深刻。第一天过来,看了一下以前简转繁模块的测试文档,当时就觉得很惊讶,这么简单一个模块,居然考虑那么多,本来以为一天就可以测试完成的,现在测试文档里面居然

2010-04-16 15:23:00 984 2

转载 epoll精髓

在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __FD_S

2010-04-12 19:08:00 753

原创 HTTP协议中的"Transfer-Encoding: chunked"

   通常,HTTP协议中使用Content-Length这个头来告知数据的长度。然后,在数据下行的过程中,Content-Length的方式要预先在服务器中缓存所有数据,然后所有数据再一股脑儿地发给客户端。    如果要一边产生数据,一边发给客户端,WEB 服务器就需要使用"Transfer-Encoding: chunked"这样的方式来代替Content-Length。    "Transf

2010-04-11 17:19:00 1322

原创 单点失败

    在电子商务系统中,单点失败(any point of failure)指的是,当位于系统架构中的某个资源(可以是硬件,软件,组件)出现故障时,系统不能正常工作的情形。要预防单点失败,通常使用的方法是冗余机制(硬件冗余等)和备份机制(数据备份,系统备份等)。例如说,在一个典型的Web三层架构中,可以将Web服务器做一个备份机,当运行着的Web服务器工作机出现问题时,即可立刻使用备份机继续工作

2010-02-05 16:29:00 2975 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除