bogon:/home/jackxiang # man fd_set  看到了select的用法,贴了下代码如下:
select.cpp
      #include <stdio.h>
       #include <stdlib.h>
       #include <sys/time.h>
       #include <sys/types.h>
       #include <unistd.h>

       int
       main(void)
       {
           fd_set rfds;
           struct timeval tv;
           int retval;

           /* Watch stdin (fd 0) to see when it has input. */
           FD_ZERO(&rfds);
           FD_SET(0, &rfds);

           /* Wait up to five seconds. */
           tv.tv_sec = 5;
           tv.tv_usec = 0;

           retval = select(1, &rfds, NULL, NULL, &tv);
           /* Don't rely on the value of tv now! */

           if (retval == -1)
               perror("select()");
           else if (retval)
               printf("Data is available now.\n");
               /* FD_ISSET(0, &rfds) will be true. */
           else
               printf("No data within five seconds.\n");

           exit(EXIT_SUCCESS);
       }

g++ select.c

bogon:/home/jackxiang/com/com118 # ./a.out
dir
Data is available now.
bogon:/home/jackxiang/com/com118 # dir
total 24
-rwxr-xr-x 1 root root 7534 Aug 28 13:42 a.out
-rw-r--r-- 1 root root 4980 Aug 28 13:30 com118.c
-rw-r--r-- 1 root root 4056 Aug 27 23:05 com118.c.bak.jackxiang
-rw-r--r-- 1 root root  890 Aug 28 13:42 selectexample.cpp
前面介绍了串口的简单读写阅读全文
今天在修改 Blog Mover 上面那块菜单的时候我把 <a href="#" title="Step 1: 从源 Blog 读取日志" onclick="return selectTab('step1)" ... 中的href属性删除了,然后鼠标指针就不是手形了,于是我加上style="cursor:hand;",
在Firefox下查看发现鼠标指针没有变成手形,而是I形,而且报错了,说

”警告: 分析属性 'cursor' 值时出错。  声明被丢弃。
源文件:http://localhost:8080/blog-mover/styles/nicetabs.css
行:46“

后来查了一下发现:

在firefox下设置 cursor:hand;会报错,要用cursor:pointer 才可以。

style="cursor:hand;" 在IE中能正常显示成手;在firefox中却不能正常显示。

如果改用 style="cursor:pointer;" 则在两个浏览器下都能正常显示。
Bond哥说:

所有浏览器兼容!!!

<a href="javascript:document.getElementById('q_form').submit();">



<form action="question3.php" method="post" name="q_form" id="q_form">
<div class="right_div_2">
<div class="radio1"><input type="radio" name="3" value="yes" /><input type="radio" name="3" value="no"/></div>
<div class="radio2"><input type="radio" name="4" value="yes" /><input type="radio" name="4" value="no" /></div>
<div class="reset_next"><a href="javascript:document.getElementById('q_form').submit();">下一题</a></div>
</div>
</form>
写给应用(PHP)开发工程师,如果这些迹象(不良习惯)仍能在你身上找到,那么看来你还有很多必要的东西要学习,Live and learn。
阅读全文

php读写内存

WEB2.0 jackxiang 2010-8-25 19:30
windows下,php.ini中取消 ;extension=php_shmop.dll 这行的行首分号,加载shmop扩展。
Linux下得加上编译参数。

测试代码如下:


<?php
//定义全局变量
$super = "hello world";

//申请100字节共享内存空间
$shm_id = shmop_open(0xff3, "c", 0644, 100);
if (!$shm_id)
{
echo "申请空间失败<br>";
}

//内容写入共享内存空间
if (shmop_write($shm_id, $super, 0))
{
echo "全局变量已经写入共享内存<br>";
}
else
{
echo "写入共享内存失败<br>";
}

//关闭共享内存空间
shmop_close($shm_id);
?>


<?php
//读100字节共享内存空间
$shm_id = shmop_open(0xff3, "a", 0644, 100);

//获取共享内存空间中的前11个字节的内容
//create.php中 $super 变量长度为11
$share = shmop_read($shm_id, 0, 11);

echo $share;

//关闭
shmop_close($shm_id);
?>


来源:http://ymsomix.blog.sohu.com/148799230.html
       Apache中 RewriteCond语句对于我来说一直是个难点,多次试图去把它搞明白,都没有结构,这次我终于算大概知道它的意思了。
   RewriteCond就像我们程序中的if语句一样,表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句,这就是RewriteCond最原始、基础的功能,为了方便理解,下面来看看几个例子。
   RewriteEngine on
   RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla\/5\.0.*
   RewriteRule  index.php            index.m.php

   RewriteCond  %{HTTP_USER_AGENT}  ^Lynx.*
   RewriteRule  index.php            index.L.php

   RewriteRule  index.php            index.b.php
上面语句的作用是当你是用FF浏览器访问index.php这个文件的时候,会自动让你访问到index.m.php这个文件,当你是用一些移动终端访问的时候,会让你对index.php这个文件的访问实际访问的是index.L.php去,如果你是用其它的浏览器访问的时候,会让你跳到 index.b.php。在说形象一点,上面的语句就等同于程序里面的下面语句(依PHP语句为例):
        if($_SERVER['HTTP_USER_AGENT'] == 'Mozilla/5.0')
        {
              //跳转到对index.m.php的访问
        }
        else if($_SERVER['HTTP_USER_AGENT'] == 'Lynx')
        {
              //跳转到对index.L.php的访问
        }
        else
              //跳转到对index.b.php的访问

在看例2:
        RewriteCond %{HTTP_REFERER} (www.test.cn)
        RewriteRule (.*)$ test.php
上面语句的作用是如果你访问的上一个页面的主机地址是www.test.cn,则无论你当前访问的是哪个页面,都会跳转到对test.php的访问。

在看例三:
       RewriteCond %{REMOTE_HOST} ^host1.* [OR]
       RewriteCond %{REMOTE_HOST} ^host2.* [OR]
       RewriteCond %{REMOTE_HOST} ^host3.*
       RewriteRule (.*)$ test.php
上面语句的作用是如果你的地址是host1或host2或host3的时候,则就跳到对test.php。从这里可以看出,RewriteCond语句之间默认的是AND,如果想要OR,则要明确的写出来。

下面是自己收藏的一些有用的重写规则:
RewriteCond %{REQUEST_FILENAME} !-f   //如果文件存在,就直接访问文件,不进行下面的RewriteRule.(不是文件或文件不存在就执行重写)

RewriteCond %{REQUEST_FILENAME} !-d   //#如果目录存在就直接访问目录不进行RewriteRule

RewriteCond %{REQUEST_URI} !^.*(\.css|\.js|\.gif|\.png|\.jpg|\.jpeg)$ //#如果是这些后缀的文件,就直接访问文件,不进行Rewrite

来源:http://www.mx111.com/Article_View.asp?id=1347
Linux下把GBK编码的文件转化为utf-8编码的命令

iconv -f gbk -t utf8 in_file > out_file



conv -f gbk -t utf8 phone_samsung.php > phone_samsung2.php




find default -type d -exec mkdir -p utf/{} \;
find default -type f -exec iconv -f GBK -t UTF-8 {} -o utf/{} \;


这两行命令将default目录下的文件由GBK编码转换为UTF-8编码,目录结构不变,转码后的文件保存在utf/default目录下。

RewriteCond %{REQUEST_URI} !^/component.php$
RewriteRule /*.php  /component.php?key=jack


访问:component.php get变量会没有jack,而访问除开component.php的其他页面就有有Jack变量了。


这个也可以:
   RewriteCond %{REQUEST_URI} !^/component.php$
#   RewriteRule /*.php  /component.php?key=jack
   RewriteRule ^(.+?)\.php$  /component.php?key=jack


你可以把参数带上:


   RewriteCond %{REQUEST_URI} !^/component.php$
#   RewriteRule /*.php  /component.php?key=jack
   RewriteRule ^(.+?)\.php$  /component.php?key=$1


感谢:PHP高级编程组:我姓-->苏同学,呵呵!



备注:


<VirtualHost *:80>
ServerAdmin jackxiang@****.com
   DocumentRoot /usr/local/***/htdocs/***.act_view
   ServerName zzz.act.***.com
   AddDefaultCharset UTF-8

   RewriteEngine on
   RewriteCond %{REQUEST_URI} !^/component.php$
   RewriteRule /*.php  /component.php?key=jack
#   RewriteRule ^(.+?)\.php$  component.php?key=jack
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{QUERY_STRING} ^(.+)$
   RewriteRule ^/c/([a-zA-Z0-9]*)/([a-zA-Z0-9]*)$ /component.php
   RewriteRule ^/c/([a-zA-Z0-9]*)$ /component.php
   RewriteRule ^/c/(\w*)/(\w*) /component.php

   ErrorLog   /tmp/apache_****_act.log
   CustomLog /tmp/apache_****_act.clog common
   <Directory />
         Options Includes FollowSymLinks
         AllowOverride None
   </Directory>
</VirtualHost>



RewriteRule /*.php  /component.php?key=jack 可以,但是用:
RewriteRule ^(.+?)\.php$  /component.php?key=jack 后,没法访问:
domian.com/component/index.php/framemain  奇怪!!!

原来是少个斜杠,于是重新测试apache的urlrewrite正确的如下:


<VirtualHost *:80>
ServerAdmin jackxiang@***.com
   DocumentRoot /usr/local/tads/htdocs/****.act_view
   ServerName ****.act.**.com
   AddDefaultCharset UTF-8

   RewriteEngine on
   RewriteCond %{REQUEST_URI} !^/component.php$
   RewriteRule ^(.+?)\.php$  /component.php
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{QUERY_STRING} ^(.+)$
   RewriteRule ^/c/([a-zA-Z0-9]*)/([a-zA-Z0-9]*)$ /component.php
   RewriteRule ^/c/([a-zA-Z0-9]*)$ /component.php
   RewriteRule ^/c/(\w*)/(\w*) /component.php

   ErrorLog   /tmp/apache_****_act.log
   CustomLog /tmp/apache_****_act.clog common
   <Directory />
         Options Includes FollowSymLinks
         AllowOverride None
   </Directory>
</VirtualHost>


参考:http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_rewrite.html
必须参看:http://www.jackxiang.com/post/3439/


后面Bond:
RewriteCond %{REQUEST_URI} !^.*(\.css|\.js|\.gif|\.png|\.jpg|\.jpeg)$ //#如果是这些后缀的文件,就直接访问文件,不进行Rewrite
RewriteCond %{REQUEST_FILENAME} !-f   //如果文件存在,就直接访问文件,不进行下面的RewriteRule.(不是文件或文件不存在就执行重写)
RewriteEngine on
RewriteRule !\.(js|ico|txt|gif|jpg|png|css|html|xml)$ index.php
RewriteCond %{QUERY_STRING} ^(.+)$ 这个能解释一下吗?好几个,这个就是符合有query语句的情况。From:ianzhang(张文驰)


阅读全文
把2个串口用交叉线连起来,假设两个串口分别为/dev/ttyS0和/dev/ttyS1,则可以直接在一个shell执行cat /dev/ttyS0,然后在另外一个shell 执行echo "test." >/dev/ttyS1,如果两个串口都是好的,则执行cat /dev/ttyS0会输出'test."如果不行,则可用cat /proc/interrupts看一下是否产生了中断,也可用setserial查看串口设置

简单总结一些串口程序调试的方法
最近在做一个串口发送数据的程序,有时候在办公室写有时候在家里。在办公室都是用串口连接两台电脑来调试串口程序。因为电脑多,用一根线连起来,这边发那边收,收的一边xp里用串口调试助手,很方便。回到家就不那么方便了,以前只有一台笔记本,现在多了一台台式机。虽然机器多了,但是有时候又忘记把串口线带回来,也不方便。我的程序是linux qtembedded的,到现在用过几种其他方法调试串口数据发送,简单总结一下。

1.单机的时候。用ln -s output /dev/ttySAC2 把程序里用到的串口ttySAC2连到一个文件,写数据进去之后,再用xxd打开这个文件,看16进制输出。缺点是看结果慢一拍,好处是最简单。xxd是 linux命令行查看16进制的工具,可以在vi中调用,也可以直接在命令行使用。

2.两台机器连接,台式机向笔记本发送数据。那时候还不知道下面说的qtserialport-terminal。笔记本打开一个终端,用cat /dev/ttyUSB0|xxd输出接收到的数据,也是可以直接看到16进制输出的。但是似乎默认有缓存,不是每次发的数据都能及时显示出来。

3. 就是今天发现的方法。在virtualbox里装的xp,设置里enable serialport,选择host device,/dev/ttyS0。但是启动后找不到串口,自己手动添加一个,IRQ4,3F8,出来的是com3。(显示com1被使用,不知道原因)然后打开串口调试助手,在宿主机linux里运行程序,发送数据到/dev/ttyS0;xp里用串口调试助手就可以收到数据了。这样也不需要连线,一台机器就可以调试,马上可以看到接受的数据,也是个不错的办法。

另外,在Archlinux的aur里,有一个用qt和 qextserialport和多线程方式实现的qtserialport- terminal,和串口助手差不多。但是没有16进制显示,默认不能用ttyUSB,但是可以选择很多种字符编码。等有时间了,可以改一下,加上16进制和usb串口。 看看这个程序的源码,就可以很容易写出多线程的串口程序。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/alexxu_118/archive/2010/06/29/5701409.aspx
[eparator]
 webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便。

  1、适用系统:Linux

  2、编译安装:

引用wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz
tar zxvf webbench-1.5.tar.gz
cd webbench-1.5
make && make install

  3、使用:

引用webbench -c 500 -t 30 http://127.0.0.1/test.jpg
  参数说明:-c表示并发数,-t表示时间(秒)

  4、测试结果示例:

引用Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://127.0.0.1/test.jpg
500 clients, running 30 sec.

Speed=3230 pages/min, 11614212 bytes/sec.
Requests: 1615 susceed, 0 failed.

下面是用100个并发连接分别去压生产环境中同一负载均衡器VIP下、提供相同服务的两台服务器,一台为Nginx,另一台为Apache,Nginx每秒处理的请求数是Apache的两倍多,Nginx服务器的系统负载、CPU使用率远低于Apache:

  你可以将连接数开到10000~30000,去压Nginx和Apache上的phpinfo.php,这是用浏览器访问Nginx上的phpinfo.php一切正常,而访问Apache服务器的phpinfo.php,则是该页无法显示。4G内存的服务器,即使再优化,Apache也很难在“webbench -c 30000 -t 60 http://xxx.xxx.xxx.xxx/phpinfo.php”的压力情况下正常访问,而调整参数优化后的Nginx可以。

  webbench 下载地址:http://blog.s135.com/post/288/

  注意:webbench 做压力测试时,该软件自身也会消耗CPU和内存资源,为了测试准确,请将 webbench 安装在别的服务器上。

  测试结果:##### Nginx + PHP #####

引用[root@localhost webbench-1.5]# webbench -c 100 -t 30 http://192.168.1.21/phpinfo.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://192.168.1.21/phpinfo.php
100 clients, running 30 sec.

Speed=102450 pages/min, 16490596 bytes/sec.
Requests: 51225 susceed, 0 failed.

top - 14:06:13 up 27 days,   2:25,   2 users,   load average: 14.57, 9.89, 6.51
Tasks: 287 total,   4 running, 283 sleeping,   0 stopped,   0 zombie
Cpu(s): 49.9% us,   6.7% sy,   0.0% ni, 41.4% id,   1.1% wa,   0.1% hi,   0.8% si
Mem:   6230016k total,   2959468k used,   3270548k free,   635992k buffers
Swap:   2031608k total,     3696k used,   2027912k free,   1231444k cached

  测试结果:#####   Apache + PHP #####
引用[root@localhost webbench-1.5]# webbench -c 100 -t 30 http://192.168.1.27/phpinfo.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://192.168.1.27/phpinfo.php
100 clients, running 30 sec.

Speed=42184 pages/min, 31512914 bytes/sec.
Requests: 21092 susceed, 0 failed.

top - 14:06:20 up 27 days,   2:13,   2 users,   load average: 62.15, 26.36, 13.42
Tasks: 318 total,   7 running, 310 sleeping,   0 stopped,   1 zombie
Cpu(s): 80.4% us, 10.6% sy,   0.0% ni,   7.9% id,   0.1% wa,   0.1% hi,   0.9% si
Mem:   6230016k total,   3075948k used,   3154068k free,   379896k buffers
Swap:   2031608k total,     12592k used,   2019016k free,   1117868k cached


--------------------------------------------------------------------------------

  为什么Nginx的性能要比Apache高得多?这得益于Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll网络I/O模型。

  处理大量的连接的读写,Apache所采用的select网络I/O模型非常低效。下面用一个比喻来解析Apache采用的select模型和Nginx采用的epoll模型进行之间的区别:

  假设你在大学读书,住的宿舍楼有很多间房间,你的朋友要来找你。select版宿管大妈就会带着你的朋友挨个房间去找,直到找到你为止。而epoll版宿管大妈会先记下每位同学的房间号,你的朋友来时,只需告诉你的朋友你住在哪个房间即可,不用亲自带着你的朋友满大楼找人。如果来了10000个人,都要找自己住这栋楼的同学时,select版和epoll版宿管大妈,谁的效率更高,不言自明。同理,在高并发服务器中,轮询I/O是最耗时间的操作之一,select和epoll的性能谁的性能更高,同样十分明了。

来源:http://hi.baidu.com/arongdy/blog/item/a7dab0511813c02c42a75b98.html

mysql非root启动解除文件句柄的1024限制的注意事项

问题描述:couldn't increase number of open files to more than 1024
/usr/sbin/mysqld: Can't open file: './xxxx/xxxx.frm' (errno: 24)

如果非root启动时不修改最大句柄数,启动日志就会出现:
: Can't open file: '.\database\certain_table.frm' (errno: 24)
查询原因:
[~]# perror 24
OS error code  24:  Too many open files
待到句柄数耗光时,就会出现:
导致mysql无法应答新连接。
规避方法:
在root下修改ulimit后(比如ulimit -HSn 16666 ),
不能"su -" 或者"exit"到普通用户, 需要用su 到普通用户,否则修改的ulimit无效,导致句柄还是会不够用。
关于修改可打开最大文件句柄数,针对不同的linux系统有不同的方案

阅读全文
Tags:
日常脚本习惯:

(1)所有字符串用引号引起来。比如grep abc> run.log,类似含有“>”等特殊符号的命令,如果不加引号,在执行时可能会带来不可预料的后果。 建议在输入参数时,先输入一对双引号,再返回来输入参数值,这样出错的可能性就小很多了。

    shell中各种引号的区别:

    1)双引号,也称为弱引号,如果参数是用双引号括起的话,Shell解释器会先扩展双引号里面元字符引导的变量,字符代表的意义。

        USER="selen";

        echo "$USER is my name."

        selen is my name.

    2)单引号,也称为强引号,在单引号里面的所有字符,包括元字符,都会当成没有特殊意义的字符。

        USER="selen";

        echo "$USER is my name."

        $USER is my name.

    3)反引号,将两个反引号之前的字符串作为命令执行,并在当前位置输出命令的标准输出。和 $()有相同的功能。

        lst=`pwd`

        echo $lst

        /usr/local/smsmt/sh

    4)一些例子

        #如何输出一个单引号

        echo ""

        echo \

        #如何输出一个双引号

        echo """

        echo "

        #单引号中如何输出变量的值,即单引号中如果还有一层单引号,可以开启变量的替换。

        USER="selen";

        echo $USER is my name.

        selen is my name.

(2)所有命令的参数数指定,尽量不要用默认,而是明确指出。比如使用ls -lrht想取到文件的修改时间,如果不指定时间格式的话,会使用本机默认的时间格式,在不同的机器,甚至不同的用户下不会不同的执行结果;最好加上如--time-style="full-iso"之类的格式限定参数。


关于rm操作的总结:
运维人员经常需要定期在后台删除一些东西,如日志、过期的数据等,这些都涉及到rm操作;
    进行rm操作有很强的风险,一定要慎之又慎,否则会造成很严重的后果,比如需要删除某个目录下的某些数据,
        你输入了rm /
        此时你手一抖或者无意识地敲到了回车,完了。。。
        更杯具的是,你是用root用户登陆的。。。


    为了降低风险,在rm操作时采用以下步骤:
    a、先用ls命令列出你所要删除的文件;
    b、再确认一遍所列文件是否全是需要删除的文件;
    c、确认完毕后,将命令的ls修改为rm,然后回车,完成删除操作;
    d、多输入几次ls命令,防止无意中按到向上箭头+回车,又一次杯具的上演;

    ps:在日常的运维工作中,一定不要先输入rm然后再输入路径,这样很容易造成误操作,切记;人不在,记得锁屏,并且主窗口

不要是O-secureCrt,否则也有出错的风险;能脚本例行化的,采用脚本例行化,以尽量规避认为操作的风险。

suse linux下没有eth0
ifconfig 看不到eth0
ifconfig -a 才能看到eth0
但是在/etc/sysconfig/network 里没有ifcfg-eth0!!!!!

你没启用eth0,
ifconfig -a eth0 up


也许你正在为SUSE Linux IP设置而发愁,也许你正在到处寻找SUSE Linux IP设置方法,来这里我来教你两种SUSE Linux IP设置方法。希望他会对你有所帮助。我们来一起交流,让我们SUSE Linux 的知识共同进步。

第一种SUSE Linux IP设置方法
ifconfig eth0 192.168.1.22 netmask 255.255.255.0 up
route add default gw 192.168.1.2

释义:
#IP配置,包括子网掩码,看情况修改eth0和192.168.1.22
#网关修改 ,看情况修改192.168.1.2


第二种SUSE Linux IP设置方法
在suse操作系统中每个网卡都有一个配置文件,在/etc/sysconfig/network/目录下。用root登录,编辑ifcfg-eth0-你的网卡的物理地址的那个文件:
把BOOTPROTO的赋值改成成static,也就是BOOTPROTO=static
然后增加如下内容:
IPADDR=192.168.1.110
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255


配置完后 要让它生效,就输入/etc/init.d/network restart就可以生效,注意suse9的网管配置是在/etc/sysconfig/network/目录下的 routes这个文件配置的。这样你就学会了SUSE Linux IP的两种设置方法了。


BOOTPROTO='dhcp'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR='192.168.1.110'
MTU=''
NAME='Realtek RTL8101E PCI Express Fast Ethernet controller'
NETMASK='255.255.255.0'
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
UNIQUE='rBUF.T0mVfVzGmv3'
USERCONTROL='no'
_nm_name='bus-pci-0000:02:00.0'


suse enterprise 10 kernel version:
Linux 2.6.16.60-0.21-smp i686

1.yast运行,启动网卡。

2.进入/etc/sysconfig/netwrok/,找对应网络文件。一般为ifcfg-eth*文件。

3.vi ifcfg-eth*

4.典型 ifcfg-eth0配置

BOOTPROTO='static'
BROADCAST='2.255.255.255'

IPADDR='2.2.2.123'
MTU=''
NETMASK='255.0.0.0'
NETWORK='2.0.0.0'
REMOTE_IPADDR=''
STARTMODE='onboot'
_nm_name='static-0'

5./etc/init.d/network start启动网络

6.临时ip: ifconfig eth0 2.2.2.123 up

7.终止和启动一个网卡:ifdown eth0 , ifup eth0

8.ifconfig -a 显示ip配置。



ab测试

WEB2.0 jackxiang 2010-8-24 16:05
D:\apmxe\apache22\bin>ab.exe -c 2 -n 4  -p emk_upload.request.txt -T multipart/form-data,boundary=---------------------------7da1cb115107c  -C Apache=1234 -H Accept-Encoding:gzip,deflate -v 2  http://appupload.qq.com/cgi-bin/emk_upload
背景:现在的notepad++保存文件时有时会存在这个问题,给PHP上传,有输出等,包括正则匹配等有一定影响,不可不防啊。
UTF-8(无BOM)和UTF-8这两个有什么区别呢?BOM是什么呀?
BOM: Byte Order Mark
UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行。
一般我用UTF-8无BOM格式
来自:http://tinypig.iteye.com/blog/557660

Notepad++的UTF-8无BOM格式什么意思:

膘哥在http://www.neatstudio.com/show-584-1.shtml 里面转载我的周报指点道,摘录如下:
最后它说的BOM问题,这就不太应该了。不过他的正则写得不错。我一直用editplus,文件选项里可是有一条:保存时始终去除BOM,就行了啦。用记事本,是会生成BOM的,微软的东西是差呀。。

我google了一下,其实可以使用EditPlus 将UTF-8 文件的BOM清除掉,打开EditPlus -> 工具 -> 配置用户工具 -> 文件,默认编码方式选择:UTF-8,UTF-8 标识选择:总是删除签名,最后保存参数设置。如图
点击在新窗口中浏览此图片
好像最新版本和上图不太一样,如下:
点击在新窗口中浏览此图片

如此,UTF-8 文件中令人讨厌的BOM 就可以被清除掉!

windows下查看:
windows用edit检查下
dos下cmd下输入命令 edit,然后拖动要查的文件到dos窗口里,再按下回车就能看到文件头里的bom了。
AWK的字符串判断比较一定要用双引号,单引号不行,如下:


mysql -e "show processlist"|awk '/30207639/'
30207639        baige   192.168.111.61:5012     baige   Sleep   233             NULL


sub(/reg/,newsubstr,str)
只替换第一个匹配字符串

gsub(/reg/,newsubstr,str)
替换字符串str中所有的符合/reg/正则的子串替换为字符串newsubstr

index(str,substr);
返回子串substr在串str中的索引

length(str)
返回字符串的长度

match(str,/reg/)
如果在串str中找到正则/reg/匹配的串则返回出现的位置,未找到则返回0

split(str,array,sep)
使用分隔符sep把字符串分解成数组array

substr(str,position[,length])
返回str中从position开始的length个字符

tolower(str)
toupper(str)
把字符串进行大小写

来源:http://hi.baidu.com/tengteng2007/blog/item/6b4c1d089d4bcdd963d98664.html
分页: 149/272 第一页 上页 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 下页 最后页 [ 显示模式: 摘要 | 列表 ]