发布新日志

  • windows2003终端服务器连接数超出

    2013-03-28 13:40:52

    windows2003终端服务器超出了最大允许连接数

    windows2003默认允许同时连接数是2个,而且不能更改,在这个时候如果提示终端服务器超出了最大允许连接数并且连接不上时可以尝试以下方法。

    方法一:

    老的远程桌面使用mstsc /console /v:192.168.0.1 强行登陆

    更新后的新版远程桌面使用mstsc /admin /v:192.168.0.1 强行登陆

    方法二:

    mstsc连接不上时但2003默认的tsmmc.msc管理工具可以连接上。

    1、找到一台能连上网络的windows2003的机器

    2、开始–运行–输入“tsmmc.msc”,跳出一个远程桌面控制台

    3、右键点击左边的“远程桌面”,选择“新建远程桌面”,按照要求填写要连接的虚拟主机的ip、用户名、密码、域名,然后点击“确定”

    4、点击新建好的远程桌面,就可以登陆到远程虚拟主机了

    登陆以后就需要对服务器的终端服务进行设置了,以免日后再出现类似情况。

    一、限制断开会话存在时间

      一般情况下,我们在维护远程服务器时,不可能长时间在线,但是系统默认的却是只要登录就不再断开。因此,我们可以修改这一默认设置,给他指定一个自动断开的时间即可。

      在远程服务器上打开“运行”窗口,输入“tscc.msc”连接设置窗口。然后双击“连接”项右侧的“RDP-Tcp”,切换到“会话”标签,选中“替代用户设置”选项,再给“结束已断开的会话”设置一个合适的时间即可。

    二、增加连接数量

      默认情况下允许远程终端连接的数量是2个用户,这也太少了一些,我们可以根据需要适当增加远程连接同时在线的用户。

      打开“运行”窗口,输入“gpedit.msc”打开组策略编辑器窗口,依次选择“计算机配置”-“管理模板”-“Windows组件”-“终端服务”,再双击右侧的“限制连接数量”,将其TS允许的最大连接数设置大一些就可以了。

      经过上面两个配置,基本上就可以保证远程终端连接时不再受限。但有一些用户反映,当前同时只有一个用户进行连接,却提示超出最大允许链接数,这又是什么原因呢?出现这种情况也是因为操作不当所造成的。在上一个账户登录过错程桌面后退出时,没有采用注销的方式,而是直接关闭远程桌面窗口,那么导致该会话并没有被释放,而是继续保留在服务器端,占用了连接数,这样就会影响下一个用户的正常登录了

  • 手把手教你如何使用Xenu处理网站死链

    2012-03-14 17:40:35

    今天教大家如何使用Xenu查链接工具对网站死链接进行处理,有图有真相,轻松四步教你熟练使用Xenu工具对网站死链进行彻底处理,保持网站内部链接的畅通,让网站排名更“给力”。

    第一,打开软件,点击“文件”,选择“检查网址”。

    第二,输入网址,点“确定”。

    第三,选择描红的错误链接,右击选择“属性”。

    第四,根据死链的网址以及锚文本,对所链网页进行查找,修改(这里,说下具体意思:页面网址就是死链网址,标题或链接文本就是锚文本,页面链接到这里是指链接到死链页面的其它网站页面)。

    Xenu工具的使用就说完了,小熊在这里结合自己的一些经验给大家提供以下几个修改方面的思路:1)如果“页面链接到这里”选项中的网址不多,可以选择删除死链网址或者页面;2)如果“页面链接到这里”中的网址较少,可以具体根据“页面网址”“标题或链接文本”两个选项到其页面源代码中进行查找并修改。

  • 脚本-合并多个文件

    2012-01-10 15:31:23

       最近有一个项目--需要整理数据,有2万多个源文件--无后缀、可用记事本打开编辑,在网上搜到的一个脚本很有用,可以快速的合并所有文件的内容到一个总的新文件中:
     for %f in (*) do type %f>>d:\temp.txt
  • 【转】Nginx是什么?Nginx介绍及Nginx的优点

    2011-12-21 18:08:37

    转自:
    http://linuxbpm.blog.51cto.com/1823930/386763
     

    Nginx是什么?Nginx介绍及Nginx的优点

         Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的,它已经在该站点运行超过两年半了。Igor Sysoev在建立的项目时,使用基于BSD许可。

       据说他当初是F5的成员之一,英文主页:http://nginx.net

       俄罗斯的一些大网站已经使用它超过两年多了, 一直表现不凡,相信想了解nginx的朋友都读过阿叶大哥的利用nginx实现负载均衡.直到2007年4月,俄罗 斯大约有20%左右的虚拟主机是由nignx服务或代理的。Google在线安全博客中统计nginx服务或代理了大约所有Internet虚拟主机的 4%。而netcraft的统计显示,nginx服务的主机在过去的一年里以四倍的速度增长。短短的几年里,它的排名已跃进第9。(参见:http://survey.netcraft.com/Reports/200707/ )

        Nginx以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配 Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新。

        因此我打算用其替代Apache应用于Linux服务器上。但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。那么我们必须使用FastCGI方式来执行PHP程序。

        现在,Igor将源代码以类BSD许可证的形式发布。Nginx因为它的稳定性、丰富的模块库、灵活的配置和低系统资源的消耗而闻名.业界一致认为它是 Apache2.2+mod_proxy_balancer的轻量级代替者,不仅是因为响应静态页面的速度非常快,而且它的模块数量达到Apache的近 2/3。对proxy
    和 rewrite模块的支持很彻底,还支持mod_fcgi、ssl、vhosts ,适合用来做mongrel clusters的前端HTTP响应。

      nginx做为HTTP服务器,有以下几项基本特性:

    处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.
    无缓存的反向代理加速,简单的负载均衡和容错.
    FastCGI,简单的负载均衡和容错.
    模块化的结构。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待。
    支持SSL 和 TLSSNI.

      Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 。它支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。

      Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响 应,只能重启服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的 CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上 是毫无用处的。就稳定性而言,nginx比lighthttpd更胜一筹。

      Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。

      Nginx采用master-slave模型,能够充分利用SMP的优势,且能够减少工作进程在磁盘I/O的阻塞延迟。当采用select()/poll()调用时,还可以限制每个进程的连接数。

      Nginx代码质量非常高,代码很规范,手法成熟, 模块扩展也很容易。特别值得一提的是强大的Upstream与Filter链。 Upstream为诸如reverse proxy,与其他服务器通信模块的编写奠定了很好的基础。而Filter链最酷的部分就是各个filter不必等待前一个filter执行完毕。它可以 把前一个filter的输出做为当前filter的输入,这有点像Unix的管线。这意味着,一个模块可以开始压缩从后端服务器发送过来的请求,且可以在 模块接收完后端服务器的整个请求之前把压缩流转向客户端。

      Nginx采用了一些os提供的最新特性如对sendfile (Linux2.2+),accept-filter (FreeBSD4.1+),TCP_DEFER_ACCEPT (Linux 2.4+)的支持,从而大大提高了性能。

      当然,nginx还很年轻,多多少少存在一些问题,比如:Nginx是俄罗斯人创建,目前文档方面还不是很完善.因为文档大多是俄语,所以文档方面这也是个障碍.尽管nignx的模块比较多,但它们还不够完善。对脚本的支持力度不够。

      这些问题,nginx的作者和社区都在努力解决,我们有理由相信nginx将继续以高速的增长率来分享轻量级HTTP服务器市场,会有一个更美好的未来。

  • memcache相关

    2011-09-06 00:05:20

    首先声明:本文出自孤风颠影|网站运维 网址:http://yunhaozou.org/mysql/229.html.转载请保留.(一个很不错地运维学习网站很好^^!)

    1.memcached简介
    memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大影响。这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
    2.memcached的特征
    memcached作为高速运行的分布式缓存服务器,具有以下的特点:
    1)协议简单:memcached的服务器客户端通信并不使用复杂的XML等格式,而使用简单的基于文本行的协议。因此,通过telnet也能在memcached上保存数据、取得数据。
    2)基于libevent的事件处理:libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。
    3)内置内存存储方式:为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。
    4)memcached不互相通信的分布式:memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。那么,分布式是完全取决于客户端的实现。
    ——————————————————————————————————————————
    3.Slab Allocation机制:整理内存以便重复使用
    目前memcached采用Slab Allocator的机制分配、管理内存。Slab Allocator的基本原理是按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题。
    1)如上图所示,Slab Allocation将分配的内存分割成各种尺寸的块(chunk,用于缓存记录的内存空间),并把尺寸相同的块分成组(chunk的集合,每个chunk的大小相同)。默认一个slab(chunks)的大小是1MB,叫1Page。
    2)slab allocator有重复使用已分配的内存的目的。也就是说,分配到的内存不会释放,而是重复利用。
    3)memcached根据收到的数据的大小,选择最适合数据大小的slab。 memcached中保存着slab内空闲chunk的列表,根据该列表选择chunk, 然后将数据缓存于其中。如当来了100bytes数据,会选择最合适的112bytes的chunk(假如slab classes中chunk的大小包含有88bytes、112bytes、144bytes……)
    4)Slab Allocator解决了当初的内存碎片问题,但由于分配的是特定长度的内存,因此无法有效利用分配的内存。例如,将100字节的数据缓存到128字节的chunk中,剩余的28字节就浪费了。
    ——————————————————————————————————————————
    4.memcached的删除机制
    1)memcached是缓存,所以数据不会永久保存在服务器上,其实数据不会真正从memcached中消失。实际上memcached不会释放已分配的内存,记录超时后,客户端就无法再看见该记录,其存储空间即可重复使用。
    2)Lazy Expiration:memcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。这种技术被称为lazy(惰性)expiration。因此,memcached不会在过期监视上耗费CPU时间。
    3)memcached会优先使用已超时的记录的空间,但即使如此,也会发生追加新记录时空间不足的情况,此时就要使用名为 Least Recently Used(LRU)机制来分配空间。 顾名思义,这是删除“最近最少使用”的记录的机制。因此,当memcached的内存空间不足时(无法从slab class 获取到新的空间时),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。
    ——————————————————————————————————————————
    5.memcached的分布式
    1)memcached但服务器端并没有“分布式”功能。分布式是完全由客户端程序库实现的。这种分布式是memcached的最大特点。
    2)set(存数据到memcached)时,set(‘key’,data),将’key’传给客户端程序库后,客户端实现的算法就会根据“键”来决定保存数据的memcached服务器。服务器选定后,即命令它保存(’key’,data);
    3)get(从memcached取数据)时,get(‘key’),此时客户端把’key’传递给函数库,函数库通过与数据保存时相同的算法,根据“键”选择服务器。使用的算法相同,就能选中与保存时相同的服务器,然后发送get命令。只要数据没有因为某些原因被删除,就能获得保存的值。
    4)以上将不同的键保存到不同的服务器上,就实现了memcached的分布式。 memcached服务器增多后,键就会分散,即使一台memcached服务器发生故障无法连接,也不会影响其他的缓存,系统依然能继续运行。
    5)Cache::Memcached的分布式算法简单来说,就是“根据服务器台数的余数进行分散”。 求得键的整数哈希值[使用crc32函数,如crc32($key)],再除以服务器台数,根据其余数来选择服务器。余数计算的方法简单,数据的分散性也相当优秀,但也有其缺点。那就是当添加或移除服务器时,缓存重组的代价相当巨大。

    1.memcached的安装
    1)memcached是基于libevent的事件处理,所以安装memcached时先要安装libevent库。
    yum -y install libevent libevent-devel
    2)memcached编译安装比较简单,一般都采用编译安装的方式如下:
    wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
    tar -zxvf memcached-1.4.5.tar.gz
    cd  memcached-1.4.5
    ./configure
    make && make install
    ——————————————————————————————————————————
    2.memcached启动
    1)memcached常用参数:(/usr/local/bin/memcached -h)
    -p <num>      TCP port number to listen on (default: 11211)
    -U <num>      UDP port number to listen on (default: 11211, 0 is off)
    -l <ip_addr>  interface to listen on (default: INADDR_ANY, all addresses)
    -d            run as a daemon
    -u <username> assume identity of <username> (only when run as root)
    -m <num>      max memory to use for items in megabytes (default: 64 MB)
    -c <num>      max simultaneous connections (default: 1024)
    -P <file>     save PID in <file>, only used with -d option
    -f <factor>   chunk size growth factor (default: 1.25)
    2)以daemon的方式启动memcached
    /usr/local/bin/memcached -u nobody -p 11211 -m 64 -c 128 -d
    ——————————————————————————————————————————
    3.memcached结合mysql、perl的实践
    cat memcached_mysql.pl
    #!/usr/bin/perl
    #Usage: test memcahed with mysql and perl
    #Made by yunhaozou@gmail.com,2010/12/20
    #
    use Cache::Memcached;
    use DBI;
    use Data::Dumper;
    use Digest::MD5 qw(md5_hex);
    use strict;
    #
    my $host = “127.0.0.1″;  #db相关信息
    my $port = “3306″;
    my $db = “zichan_db”;
    my $user = “root”;
    my $password = “”;
    my $dsn = “dbi:mysql:database=$db:hostname=$host:port=$port”;
    my $dbh = DBI->connect($dsn,$user,$password) or die “Couldn’t connect to database: ” . DBI->errstr;  #连接db
    my $memcached = Cache::Memcached->new({ servers=>["127.0.0.1:11211"],compress_threshold=>10_000});   #连接memcached
    #$memcached = Cache::Memcached->new({ servers=>["127.0.0.1:11211","192.168.2.1:11211"],compress_threshold=>10_000}); #表示连接两台机的memcached,这样可以实现负载均衡,一个机器挂了,另一个可以继续用
    my $zcsql = “select sn,model,cab_no,func,intra_ip,man_addr,contact from equipment where sn=’0917QAR012′;”;
    #
    my $result = query_result($zcsql);
    print Dumper $result;
    $dbh->disconnect();
    #
    sub query_result{
    my $query_sql = shift;
    my $query_key = md5_hex($query_sql);  #把查询sql语句转换为MD5值的key
    my $query_result = $memcached->get($query_key);
    return $query_result if $query_result;  #当在memcaed有缓存时直接返回
    $query_result = $dbh->selectrow_hashref($query_sql);
    $memcached->set(“$query_key”, $query_result); #当在memcached没有缓存时从数据查询,并缓存memcached
    return $query_result;
    }
    ——————————————————————————————————————————
    4.日常运维
    1)memcached是典型的是耗内存不耗CPU。而通常web进程(如Apache)是CPU敏感,内存不那么敏感的。因此可将memcached直接跑在前台web主机上,作为数据缓存(或数据库连接池)使用,也就是在web程序与数据库之间多加了一层。
    2)尽量使用memcached分布式部署。但各个模块尽量做到memcached资源隔离(之前因为社区前端公用memcached,有一次广东综合通信上线了一个页面,因工程师写代码时失误,显式调用了flush memcache,从而每次访问都清空整个memcached,把整个网站社区前端memcached资源清空,而且过几秒又被清空,这样造成的后果有多严重就不说了,写那代码的哥们有多惨也不说了~~)
    3)用telnet测试memcached
    telnet 127.0.0.1 11211
    Trying 127.0.0.1…
    Connected to zou.yunhao (127.0.0.1).
    Escape character is ‘^]’.
    set key 0 10 6   //10表示过期时间10秒,6表示将要存入数据字节为6(这里result为6)
    result
    STORED
    get key
    VALUE key 0 6
    result
    END
    4)memcached性能查看命令stats
    telnet 127.0.0.1 11211
    stats
    STAT pid 18006
    STAT uptime 702   //memcached运行的秒数
    STAT time 1292904537 //memcached服务器所在主机当前系统的时间,单位是秒。
    STAT version 1.4.5
    STAT pointer_size 64  //服务器所在主机操作系统的指针大小,一般为32或64
    STAT rusage_user 0.003999
    STAT rusage_system 0.013997
    STAT curr_connections 10   //表示当前的连接数
    STAT total_connections 11   //表示从memcached服务启动到当前时间,系统打开过的连接的总数。
    STAT connection_structures 11
    STAT cmd_get 0   //查询缓存的次数,平均每秒缓存次数cmd_get/uptime
    STAT cmd_set 0   //设置key=>value的次数
    STAT cmd_flush 0
    STAT get_hits 0  //缓存命中的次数,缓存命中率=get_hits/cmd_get*100%
    STAT get_misses 0  //cmd_get-get_hits
    STAT delete_misses 0
    STAT delete_hits 0
    STAT incr_misses 0
    STAT incr_hits 0
    STAT decr_misses 0
    STAT decr_hits 0
    STAT cas_misses 0
    STAT cas_hits 0
    STAT cas_badval 0
    STAT auth_cmds 0
    STAT auth_errors 0
    STAT bytes_read 7  //memcached服务器从网络读取的总的字节数
    STAT bytes_written 0  //memcached服务器发送到网络的总的字节数。
    STAT limit_maxbytes 67108864  //memcached服务缓存允许使用的最大字节数
    STAT accepting_conns 1
    STAT listen_disabled_num 0
    STAT threads 4
    STAT conn_yields 0
    STAT bytes 0
    STAT curr_items 0
    STAT total_items 0
    STAT evictions 0
    STAT reclaimed 0
    END
    ——————————————————————————————————————————
    5.监控
    1)nagios监控
    a. check_memcached
    先要安装check_memcached插件
    wget http://search.cpan.org/CPAN/authors/id/Z/ZI/ZIGOROU/Nagios-Plugins-Memcached-0.02.tar.gz
    tar xzvf Nagios-Plugins-Memcached-0.02.tar.gz
    cd Nagios-Plugins-Memcached-0.02
    perl Makefile.PL   (可能需要其他perl的modules,依照提示通过cpan安装即可)
    make && make install
    check_memcached [-H host:port] [-w warnings] [-c critical] [--size-warnng size-warnng] [--size-critical size-critical] [--hit-warning hit-warning] [--hit-critical
    hit-critical] [-t timeout]
    b. /check_tcp -H host -p 11211 -t 5 -E -s ‘stats\r\nquit\r\n’ -e ‘uptime’ -M crit
    2)cacti监控
    一台服务器起多个memcached,多端口cacti部署监控。
    a. 需要一个 Python memcached Client API
    wget ftp://ftp.tummy.com/pub/python-memcached/python-memcached-1.45.tar.gz
    tar xzvf python-memcached-1.45.tar.gz
    cd python-memcached-1.45
    python setup.py install
    b. 加模板memcached multiport
    wget http://tag1consulting.com/blog/cacti-memcache-multi-port-templates
    cp memcached.py   <cacti install目录>/scripts/memcachedmultiport.py
    c. 增加监控时devices->des && ip->host template选择memcachedmultiport->Downed Device Detection选择none->SNMP Version选择not in use->create graphs->Port to query for memcached statistics填写memcached端口。
    3)也可以自定义nagios、cacti监控,通过memcached命令stats取相关数据
  • 解决SysFader:IEXPLORE.EXE应用程序错误

    2011-01-27 14:50:05

    最近将浏览器从IE6升级到IE8,结果----在访问很多网页的时候,经常会出现“ysFader:IEXPLORE.EXE - 应用程序错误”的提示,提示内容为“0x0262d580指令引用的0x0262d580内存。改内存不能read”,每次不一定相同,但是都是由于SysFader引起的错误。
     

    解决方法--去掉“启用第三方浏览器扩展”

      打开IE8,找到“工具 -> Internet选项 -> 高级 -> 浏览 -> 启用第三方浏览器扩展*”,取消选中后重新启动IE8浏览器,问题成功解决。

     

  • 正则表达式全部符号解释

    2010-01-22 15:39:14

     

    字符 描述
    \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。
    ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。
    $ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。
    * 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
    + 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
    ? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
    {n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
    {n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
    {n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
    ? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
    . 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
    (pattern) 匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript. 中使用 SubMatches 集合,在JScript. 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 '\(' 或 '\)'。
    (?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。
    (?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
    (?!pattern) 负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
    x|y 匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
    [xyz] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
    [^xyz] 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
    [a-z] 字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。
    [^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。
    \b 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
    \B 匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
    \cx 匹配由 x 指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
    \d 匹配一个数字字符。等价于 [0-9]。
    \D 匹配一个非数字字符。等价于 [^0-9]。
    \f 匹配一个换页符。等价于 \x0c 和 \cL。
    \n 匹配一个换行符。等价于 \x0a 和 \cJ。
    \r 匹配一个回车符。等价于 \x0d 和 \cM。
    \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
    \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
    \t 匹配一个制表符。等价于 \x09 和 \cI。
    \v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
    \w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。
    \W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。
    \xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'\x41' 匹配 "A"。'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使用 ASCII 编码。.
    \num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匹配两个连续的相同字符。
    \n 标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。
    \nm 标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。
    \nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。
    \un 匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, \u00A9 匹配版权符号 (?)。

    转自:

    http:/ /yirlin.cnblogs.com/archive/2006/04/12/373222.html

  • [转] 几个NTP时间服务器以及使用方法

    2009-05-13 11:13:52

     

    通过互联网络上发布的一些公用网络时间服务器NTP server,就可以实现自动、定期的同步本机标准时间。

    依靠windows系统默认的windows或NIST等境外的时间服务器同步时间,总存在着访问堵塞、时间延迟大(同步精度低)等因素的影响。现在中国的国家授时中心发布了一个时间服务器地址,大家可以用国人自己的标准时间!

    方法一、采用系统自带的时间同步功能
    以Vista操作系统为例,单击系统托盘下方的时间,单击弹出窗口里的“更改日期和时间设置”,弹出“日期和时间”对话框,选择“Internet时间”选项卡,单击“更改设置”按钮,弹出“Internet时间设置”对话框,在服务器地址栏输入国家授时中心服务器的IP地址:210.72.145.44,单击“立即更新”按钮,同步完成后点击“确定”按钮退出,OK。

    方法二、修改注册表,提高时间同步精度
    由于系统默认的时间同步间隔是7天,我们无法自由选择,使得这个功能在灵活性方面大打折扣。其实,我们也可以通过修改注册表来手动修改它的自动同步间隔以提高同步精度,以下以Vista系统为例。
    1. 在“开始”菜单→“运行”项下(或按Win+R)输入“Regedit”进入注册表编辑器。
    2. 展开[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\
    Parameters]分支,双击NtpServer将键值修改为国家授时中心服务器的IP地址:210.72.145.44,然后点击“确定”按钮保存。(注:若已用过方法一,此步可以省略)
    3. 展开[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\
    TimeProviders\NtpClient]分支,并双击SpecialPollInterval键值,将对话框中的“基数栏”选择到“十进制”上,输入框中显示的数字正是自动对时的间隔(以秒为单位),比如默认的604800就是由7(天)×24(时)×60(分)×60(秒)计算来的。设定时间同步周期(建议设为900=15分钟或3600=1小时等周期值),填入对话框,点击确定保存关闭对话框。

    中国国家授时中心:
    http://www.time.ac.cn/stime.asp

    其他网络时间服务器地址如下:(也可以自己去搜索下)

    time.nist.gov (美国)
    ntp.fudan.edu.cn (复旦)  )(国内用户推荐使用此服务器)
    timekeeper.isi.edu
    subitaneous.cpsc.ucalgary.ca
    usno.pa-x.dec.com
    time.twc.weather.com
    swisstime.ethz.ch
    ntp0.fau.de
    ntp3.fau.de
    time-a.nist.gov
    time-b.nist.gov
    time-nw.nist.gov
    nist1-sj.glassey.com

    210.72.145.44 也是一个不错的地址,速度很快!

    我自己换过地址后,感觉速度很快,而且也缩短自动对时间隔,现在为2小时一次!

     

  • 手工删除services.msc中的服务

    2009-04-02 15:23:28

    windows XP:

    (1)  Regedit  
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services   key    
      选择想删除的--在编辑下删除;

    (2)在命令行执行sc delete [servicename]

    另外sc的常用功能,如服务启动、停止(sc start [servicename]\sc stop [servicename])都比在services.msc服务控制台中操作快得多,服务启动和停止是瞬间完成的。

    关于sc的其他功能请查看sc/?

     

    补充:

    在命令行模式下输入 sc,看到了吧,一大堆命令

      语法:sc create | delete | config 服务名 [参数]
      主要参数列表:
        start= demand|boot|system|auto|disabled|delayed-auto  //启动类型
        binPath= BinaryPathName                //可执行文件路径
        depend= 依存关系(以 / (斜杠) 分隔)
        DisplayName= <显示名称>                //屏幕显示名称

      作用依次是:新建、移除、重配置服务。

      例如:重新配置服务mysql的执行路径的方法是:
         sc config mysql binPath= "新路径"

    VISTA

    跟其他操作系统没什么区别,唯一要注意的就是cmd.exe要以管理员身份运行,否则不执行命令.


    一、注册服务,以tomcat为例
    1,在dos下进入tomcat\bin目录
    2,在命令行输入service install [服务名,默认Tomcat5]
    3,要启动该服务,输入:net start 服务名

    二、修改、删除服务
    语法:sc create | delete | config 服务名 [参数]
    主要参数列表:
      start= demand|boot|system|auto|disabled|delayed-auto  //启动类型
      binPath= BinaryPathName                //可执行文件路径
      depend= 依存关系(以 / (斜杠) 分隔)
      DisplayName= <显示名称>                //屏幕显示名称 作用依次是:新建、移除、重配置服务。
    例如:重新配置服务mysql的执行路径的方法是:
    sc config mysql binPath= "新路径"

     

    windows 2000:

    (1)HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services   key     选择你需要删除的服务删除    
    (2)resource kit 中的INSTSRV.EXE或者delsrv.exe也可以删除  
    用法: instsrv   <service   name>   remove
          delsrv <serviceName>

  • LE5.1.msstyles为无效的windows映像

    2009-03-25 10:48:26

    安装应用程序时出现:


      解决方法:

     

    桌面右键“属性”--主题 ,把主题改回“window xp”就OK。

  • 软件缺陷等级标准

    2009-02-17 15:51:52

    按照CMM5中定义的规范,BUG一般分致命,严重,一般和提示。致命是严重影响产品的BUG,比如操作手册的错误,需求的错误等。严重是产品中使功能无法实现的BUG,比如某个功能无法运行,GUI长时间僵死没有响应。一般是某个BUG的发生,只影响了一个功能,而其他功能可以正常运行。提示就是一些GUI的问题,或者友好性的问题。

    更为详细的划分如下:
    A类—严重错误,包括以下各种错误: 
    1. 由于程序所引起的死机,非法退出 
    2. 死循环 
    3. 数据库发生死锁
    4. 因错误操作导致的程序中断 
    5. 功能错误 
    6. 与数据库连接错误 
    7. 数据通讯错误 
    -----------------------------------------------------------
    B类—较严重错误,包括以下各种错误: 
    1. 程序错误 
    2. 程序接口错误 
    3. 数据库的表、业务规则、缺省值未加完整性等约束条件 
    -----------------------------------------------------------
    C类—一般性错误,包括以下各种错误: 
    1. 操作界面错误(包括数据窗口内列名定义、含义是否一致) 

    2. 打印内容、格式错误 
    3. 简单的输入限制未放在前台进行控制
    4. 删除操作未给出提示 
    5. 数据库表中有过多的空字段 
    -----------------------------------------------------------
    D类—较小错误,包括以下各种错误:
    1. 界面不规范 
    2. 辅助说明描述不清楚 
    3. 输入输出不规范 
    4. 长操作未给用户提示 
    5. 提示窗口文字未采用行业术语 
    6. 可输入区域和只读区域没有明显的区分标志 

    -----------------------------------------------------------
    E类—测试建议

  • ORACLE实例和ORACLE_SID

    2009-02-05 11:53:42

        前提:同一服务器上有多个实例并且均已启动。

    若登录时不指定连接串,一般是采用环境变量 ORACLE_SID,WINDOWS系统默认的ORACLE_SID值为最后所安装的实例。

    1、查看实例名称和ORACLE_SID
        在Unix/Linux环境可以 echo $ORACLE_SID 查看ORACLE_SID的值;
        在Windows环境可以(以我自己的机器为例):
        (1)开始—>运行(输入regedit),在HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1中有ORACLE_SID的键值(系统默认值),如下图所示:

         (2)登陆数据库,通过SQL语句查看(查看当前使用的数据库所对应的实例名称):

         SQL>show parameter instance;
         SQL>show parameter instance_name;
         SQL>select * from v$instance;

    2、切换实例

       在CMD窗口下,先修改ORACLE_SID的值(set ORACLE_SID=xxxx,该修改仅对当前CMD窗口有效),接着用同一CMD窗口访问数据库即可。

  • [转]ORACLE10G归档日志满了的解决方法

    2008-11-21 16:37:26

    转自:

    http://rubyol.javaeye.com/blog/193260

     

    如果Oracle的归档日志满了,应用连接数据库就会出错,这时需要手工删除过期的归档日志,方法如下:

    1.指定数据库实例

    $ export ORACLE_SID=db1

    2.进入rman

    $ rman

    3.连接数据库

    RMAN> connect target sys/password;

    4.查看归档日志的状态

    RMAN> list archivelog all;

    5.手工删除归档日志文件

    6.更新归档日志

    RMAN> crosscheck archivelog all;

    RMAN> delete expired archivelog all; --中间会提示确认,输入"yes"即可

    7.退出rman

    RMAN> exit

  • 实战--WINDOWS恢复系统时区

    2008-06-04 13:10:43

        昨天测试项目的时候,重启机器以后,就出现了这个怪问题----系统时间、日期和时区设置都没有问题,可是启动JAVA程序,服务器的时间和实际时间始终相差8个小时,找原因找的甚是郁闷,最后在同事的指点下,确定 原因是在于系统时区,就在网上google了一下,:)  最后问题终于解决了,解决方法如下:
    找一台操作系统跟你机器一样的,并且时区没问题的机器,将注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones 这个注册表分支导出,然后再把这个文件导入到自己的机器中,一切OK了~
        嘿嘿~~又学了一招。
Open Toolbar