• jquery reference

    Selector Example Selects
    * $(“*”) All elements
    #id $(“#lastname”) The element with id=lastname
    .class $(“.intro”) All elements with
    element $(“p”) All p elements
    .class.class $(“.intro.demo”) All elements with the classes “intro” and “demo”
    :first $(“p:first”) The first p element
    :last $(“p:last”) The last p element
    :even $(“tr:even”) All even tr elements
    :odd $(“tr:odd”) All odd tr elements
    :eq(index) $(“ul li:eq(3)”) The fourth element in a list (index starts at 0)
    :gt(no) $(“ul li:gt(3)”) List elements with an index greater than 3
    :lt(no) $(“ul li:lt(3)”) List elements with an index less than 3
    :not(selector) $(“input:not(:empty)”) All input elements that are not empty
    :header $(“:header”) All header elements h1, h2 …
    :animated $(“:animated”) All animated elements
    :contains(text) $(“:contains(‘W3Schools’)”) All elements which contains the text
    :empty $(“:empty”) All elements with no child (elements) nodes
    :hidden $(“p:hidden”) All hidden p elements
    :visible $(“table:visible”) All visible tables
    s1,s2,s3 $(“th,td,.intro”) All elements with matching selectors
    [attribute] $(“[href]”) All elements with a href attribute
    [attribute=value] $(“[href=’default.htm’]”) All elements with a href attribute value equal to “default.htm”
    [attribute!=value] $(“[href!=’default.htm’]”) All elements with a href attribute value not equal to “default.htm”
    [attribute$=value] $(“[href$=’.jpg’]”) All elements with a href attribute value ending with “.jpg”
    [attribute^=value] $(“[href^=’jquery_’]”) All elements with a href attribute value starting with “jquery_”
    :input $(“:input”) All input elements
    :text $(“:text”) All input elements with type=”text”
    :password $(“:password”) All input elements with type=”password”
    :radio $(“:radio”) All input elements with type=”radio”
    :checkbox $(“:checkbox”) All input elements with type=”checkbox”
    :submit $(“:submit”) All input elements with type=”submit”
    :reset $(“:reset”) All input elements with type=”reset”
    :button $(“:button”) All input elements with type=”button”
    :image $(“:image”) All input elements with type=”image”
    :file $(“:file”) All input elements with type=”file”
    :enabled $(“:enabled”) All enabled input elements
    :disabled $(“:disabled”) All disabled input elements
    :selected $(“:selected”) All selected input elements
    :checked $(“:checked”) All checked input elements
  • 一些常用开源软件

    操作系统:Centos※,Freebsd,Ubuntu
    网站服务:apache※,nginx※,lighttpd,php※,tomcat※,resin※
    数据  库:Mysql※,PostgreSQL,Mysql-proxy
    代理相关:lvs,keepalived,haproxy,nginx,apache,heartbeat(此行都是※)
    网站缓存:squid※,nginx※,varnish
    内存缓存:memcache※,memcached,TokyoTyrant※,MongoDB,Cassandra※,redis※,tair,CouchDB
    存储相关:Nfs※,Moosefs※,Hadoop※,gfs※,lustre,FastDFS
    版本管理:cvs,svn※,git※
    监控报警:mboy,mrtg,nagios※,cacti※,zbbix,munin※,hyperic※
    域名解析:bind※,powerdns,dnsmq※
    同步软件:rsync,sersync,drbd,csync2+lsyncd(此行都是※)
    分发工具:Secboy※,expect※,puppet※,cfengine※,ssh+rsync+sersync※
    虚拟软件:xen※,kvm
    内网软件:iptables※,zebra※,iftraf,ntop※,tc※,iftop
    邮件软件:qmail※,posfix※,sendmail
    远程拨号:openvpn※,pptp,openswan※,ipip※
    统一认证:ldap※
    队列工具:ActiveMQ※,RabbitMQ
    打包发布:mvn※,ants※,jenkins※
    测试软件:apache ab,smokeping,siege,JMeter,Webbench,LoadRunner(此行都是※)
    日志相关:syslog,rsyslog,Awstats
    DB代理  :mysql-proxy,amoeba

  • linux下 crontab文件在哪 crontab文件路径

    用户的都在/var/spool/cron/下
    /var/spool/cron/crontabs/root
  • linux三台以上服务器集群间建立ssh信任关系

    linux服务器集群之间进行ssh访问时需要输入密码,对进行scp等操作很麻烦,现教大家如何在linux服务器集群之间实现无密码访问。 ssh访问是是需要指定用户的,所以此处建立用户信任关系时以root用户为例,如服务器集群中有三台服务器,分别为A、B、C。现在要实现三台机器之间的root用户的相互无密码访问,操作步骤如下:

    (1 )用root用户登录A服务器,执行ssh-keygen -t rsa 命令,此命令为A机器上的用户root 生成密钥对。当询问保存路径时全部回车采用默认路径即可,当提示要为密钥输入 passphrase  是回车采用空密码。此命令执行完毕生成一对密钥文件 id_rsa          (私钥)和 id_rsa.pub    (公钥),默认存储在 /root/.ssh 下;
    (2 )  把生成的id_ras.pub 重定向到authorized_keys,命令是cat id_ras.pub > authorized_keys,把authorized_keys文件拷贝到B机器上得的同一目录下(命令为:scp  /root/.ssh/authorized_keys root@B: /root/.ssh/ 或者 scp  ./authorized_keys root@B: pwd);

    (3)用root用户登录B机器,按照要求执行(1)步骤,然后,将生成的 id_ras.pub 追加到authorized_keys文件中,命令是cat id_ras.pub >> authorized_keys,然后将 authorized_keys文件拷贝覆盖掉A级器上的authorized_keys文件,这样A,B机器之间就可以实现相互之间的ssh无密码访问。

    (4)对于C机器,同样将生成的生成的 id_ras.pub 追加到authorized_keys文件中,然后用新的authorized_keys文件覆盖A、B机器上的authorized_keys文件,则A、B、C机器之间就可以进行ssh无密码访问了。
    注:以上是对root用户而言,如果是普通用户的话,则权限需要修改,.ssh文件夹权限是700,authorized_keys文件的权限是600,执行以下两个语句即可:
    chmod 700 .ssh
    chmod 600  authorized_keys

  • 利用rsync 从 windows2003⇒linux系统备份

    windows端 安装rsyncServer(WINDOWS)版本 1.程序目录下配置文件 rsyncd.conf 修改为:

    port = 873
    use chroot = false
    strict modes = false
    uid=0
    gid=0
    list = no
    hosts allow = *
    log file = rsyncd.log
    #rsync连接时需要提供的用户名密码
    auth users = rsync_picbak 
    secrets file = rsyncd.secrets (跟rsyncd.conf配置文件是同级目录)
    
    [test] #同步目录设置  /cygdrive/d/代表d盘
    path = /cygdrive/d/websites
    read only = yes
    transfer logging = yes

    2.rsyncd.secrets的内容为:

    rsync_picbak = 111111(密码)

    3.启动rsync服务

    打开“控制面板”-->“管理工具”-->“服务”:
    找到一个RsyncServer的服务,启动它(防火墙设置记得打开873端口)

    linux端安装rsync的client客户端

    安装完毕 ,telnet 服务器ip 873 通的就可以执行以下同步操作了

    rsync -vzrtopg --progress --delete --password-file=/var2/db_bak/pass_file rsync_picbak@122.225.115.*::test/ /var2/pic_bak/208
    
    /var2/db_bak/pass_file 为存放密码的文件
    
    /var2/pic_bak/208 为本机需要备份的文件夹名称
  • mysql主从同步过程 同步原理

    Replication 线程
       Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们称之 Slave)。在 Master 与 Slave 之间的告终全副复制过程重要由三个线程来告终,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端。
      要告终 MySQL 的 Replication ,率先定然敞开 Master 端的Binary Log(mysql-bin.******)功能,否则无法告终。因为全副复制过程切实上即便Slave从Master端获得该日志然后再在自己身上全面 次序的厉行日志中所登记的各种垄断。敞开 MySQL 的 Binary Log 能够穿越在启用 MySQL Server 的过程中利用 “—log-bin” 参数选项,可能在 my.cnf 搭配文件中的 mysqld 参数组([mysqld]标识后的参数局部)添置 “log-bin” 参数项。
      MySQL 复制的大约过程如下:
      1. Slave 上面的IO线程连接上 Master,并哀求从指定日志文件的指定位置(可能从最开始的日志)尔后的日志内容;
       2. Master 接收到来自 Slave 的 IO 线程的哀求后,穿越负责复制的 IO 线程依据哀求消息读取指定日志指定位置尔后的日志消息,归来给 Slave 端的 IO 线程。归来消息中除非日志所包括的消息之外,还包括鄙碌回的消息在 Master 端的 Binary Log 文件的名目以及在 Binary Log 中的位置;
      3. Slave 的 IO 线程接收到消息后,将接收到的日志内容顺次写入到 Slave 端的Relay Log文件(mysql-relay-bin.******)的最末路,并将读取到的Master端的bin-log的文件名和位置登记到master- info文件中,以便在下顺次读取的时候能够打听的高速Master“我必需从某个bin-log的哪个位置开始后来的日志内容,请发给我”
       4. Slave 的 SQL 线程检测到 Relay Log 中新添置了内容后,会即刻解析该 Log 文件中的内容成为在 Master 端诚厉行行时候的那些可厉行的 Query 语句,并在切身厉行这些 Query。这么,切实上即便在 Master 端和 Slave 端厉行了同样的 Query,因而两端的数据是全面一样的。
      切实上,在老版本中,MySQL 的复制告终在 Slave 端并不是由 SQL 线程和 IO 线程这两个线程共同配合而告终的,而是由独自的一个线程来告终所有的工作。然而 MySQL 的工程师们很快觉察,这么做存在很大的危险和功能问题,重要如下:
       率先,万一穿越一个单一的线程来自力更生告终这个工作的话,就使复制 Master 端的,Binary Log日志,以及解析这些日志,然后再在切身厉行的这个过程成为一个串行的过程,功能慷慨会受到较大的局限,这种架构下的 Replication 的迟到慷慨就比拟长了。
       其次,Slave 端的这个复制线程从 Master 端获得 Binary Log 到来尔后,必需随后解析这些内容,还原成 Master 端所厉行的原始 Query,然后在切身厉行。在这个过程中,Master端很可能又曾经发生了许多的改变并生成了许多的 Binary Log 消息。万一在这个阶段 Master 端的存储系统揭示了无法修复的故障,那么在这个阶段所发生的所有改变都将永远的失落,无法再找归来。这种埋伏危险在Slave 端压力比拟大的时候尤其冒尖,因为万一 Slave 压力比拟大,解析日志以及利用这些日志所花费的工夫慷慨就会更长一些,可能失落的数据也就会更多。
       因而,在后期的改革中,新版本的 MySQL 为了尽量减小这个危险,并长进复制的功能,将 Slave 端的复制改为两个线程来告终,也即便前面所提到的 SQL 线程和 IO 线程。最早提出这个改进计划的是Yahoo!的一位工程师“Jeremy Zawodny”。穿越这么的改革,这么既在很大程度上处理了功能问题,缩小了异步的延随工夫,同时也收缩了埋伏的数据失落量。
      当然,即便是换成了目前这么两个线程来配合处理尔后,同样也还是存在 Slave 数据延时以及数据失落的可能性的,终究这个复制是异步的。凡是数据的改动不是在一个事务中,这些问题都是存在的。
      万一要全面避免这些问题,就只能用 MySQL 的 Cluster 来处理了。不过 MySQL的 Cluster 懂得笔者写这局部内容的时候,依旧还是一个内存数 据库的处理计划,也即便必需将所有数据包括索引全副都 Load 到内存中,这么就对内存的要求就极其大的大,对于等闲的公众化利用来说可厉行性并不是太大。当然,在之前与 MySQL 的 CTO David 沟通的时候得知,MySQL 目前正在不时改进其 Cluster 的告终,其中极其大的一个修改即便批准数据无须全副 Load 到内存中,而仅仅只是索引全副 Load 到内存中,我想信在告终该项改革尔后的 MySQL Cluster 将会更加受人迎接,可厉行性也会更大

  • 帝国目录权限修改脚本

    #! /bin/sh
    chmod 777 d/ -Rf
    chmod 777 s/ -Rf
    chmod 777 search/ -Rf
    chmod 777 html/ -Rf
    chmod 777 index.html -Rf
    chmod 777 e/data/ -Rf
    chmod 777 e/install/ -Rf
    chmod 777 e/admin/ebak/bdata/ -Rf
    chmod 777 e/admin/ebak/zip/ -Rf
    chmod 777 e/class/config.php
    chmod 777 e/class/user.php
    chmod 777 e/member/iframe/index.php
    chmod 777 e/member/login/loginjs.php
    chmod 777 e/pl/more/index.php
    chmod 777 e/sch/index.php
    chmod 777 e/tool/feedback/temp/ -Rf
    chmod 777 e/tool/gbook/index.php

  • insert into … select …

    语句形式为:Insert into Table2(field1,field2,…) select value1,value2,… from Table1
    要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。

  • nginx + spawn-fcgi

    apt-get install spawn-fcgi php5-cgi

    用 spawn-fcgi 启动 fcgi ,

    spawn-fcgi -a 127.0.0.1 -p 8000 -u nobody -f /usr/bin/php-cgi -C 5 ;

    在 nginx 里配置加一句:
    location ~ .php$ {
    fastcgi_pass 127.0.0.1:8000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /home/nginx/html$fastcgi_script_name;
    include fastcgi_params;
    }

  • linux系统内核优化tcp参数 sysctl.conf

    查看网络连接状态
    netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn

    debian系统32位优化
    在Squid服务器中
    vi /etc/sysctl.conf
    net.ipv4.tcp_syncookies=1
    net.ipv4.tcp_synack_retries = 2
    net.ipv4.tcp_syn_retries = 2
    net.ipv4.tcp_fin_timeout = 30
    net.ipv4.tcp_keepalive_time = 120
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.ip_local_port_range = 2048 65000
    net.ipv4.tcp_max_syn_backlog = 8192
    net.core.netdev_max_backlog=10000

    Apache或Nginx等的Web服务器,或Nginx的反向代理,则只需要更改以下几项即可:

    net.ipv4.tcp_syncookies=1
    net.ipv4.tcp_tw_reuse=1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.ip_local_port_range = 1024 65000


    如果是邮件服务器,则建议内核方案如下:

    net.ipv4.tcp_fin_timeout = 30
    net.ipv4.tcp_keepalive_time = 300
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.ip_local_port_range = 5000 65000
    kernel.shmmax = 134217728

    其中:

    net.ipv4.tcp_syncookies=1表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookie来处理,可防范少量的SYN攻击。默认为0,表示关闭。

    net.ipv4.tcp_tw_reuse=1表示开启重用。允许将TIME-WAIT套接字重新用于新的TCP连接。默认为0,表示关闭。

    net.ipv4.tcp_tw_recycle=1表示开启TCP连接中TIME-WAIT套接字的快速回收。默认为0,表示关闭。

    net.ipv4.tcp_fin_timeout=30表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。

    net.ipv4.tcp_keepalive_time=1200表示当keepalive启用时,TCP发送keepalive消息的频度。默认是2小时,这里改为20分钟。

    net.ipv4.ip_local_port_range=1024 65000表示向外连接的端口范围。默认值很小:32768~61000,改为1024~65000。

    net.ipv4.tcp_max_syn_backlog=8192表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。

    net.ipv4.tcp_max_tw_buckets=5000表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。对于Apache、Nginx等服务器,前面介绍的几个参数已经可以很好地减少TIME_WAIT套接字数量,但是对于Squid来说,效果却不大。有了此参数就可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

    netdev_max_backlog 在接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。

    执行以下命令使内核配置立即生效:

    /sbin/sysctl -p

    sysctl.conf中相关重要设定的详细说明

    $ /proc/sys/net/core/wmem_max
    最大socket写buffer,可参考的优化值:873200
    $ /proc/sys/net/core/rmem_max
    最大socket读buffer,可参考的优化值:873200
    $ /proc/sys/net/ipv4/tcp_wmem
    TCP写buffer,可参考的优化值: 8192 436600 873200
    $ /proc/sys/net/ipv4/tcp_rmem
    TCP读buffer,可参考的优化值: 32768 436600 873200
    $ /proc/sys/net/ipv4/tcp_mem
    同样有3个值,意思是:
    net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力.
    net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段.
    net.ipv4.tcp_mem[2]:高于此值,TCP拒绝分配socket.
    上述内存单位是页,而不是字节.可参考的优化值是:786432 1048576 1572864
    $ /proc/sys/net/core/netdev_max_backlog
    进入包的最大设备队列.默认是300,对重负载服务器而言,该值太低,可调整到1000.
    $ /proc/sys/net/core/somaxconn
    listen()的默认参数,挂起请求的最大数量.默认是128.对繁忙的服务器,增加该值有助于网络性能.可调整到256.
    $ /proc/sys/net/core/optmem_max
    socket buffer的最大初始化值,默认10K.
    $ /proc/sys/net/ipv4/tcp_max_syn_backlog
    进入SYN包的最大请求队列.默认1024.对重负载服务器,增加该值显然有好处.可调整到2048.
    $ /proc/sys/net/ipv4/tcp_retries2
    TCP失败重传次数,默认值15,意味着重传15次才彻底放弃.可减少到5,以尽早释放内核资源.
    $ /proc/sys/net/ipv4/tcp_keepalive_time
    $ /proc/sys/net/ipv4/tcp_keepalive_intvl
    $ /proc/sys/net/ipv4/tcp_keepalive_probes
    这3个参数与TCP KeepAlive有关.默认值是:
    tcp_keepalive_time = 7200 seconds (2 hours)
    tcp_keepalive_probes = 9
    tcp_keepalive_intvl = 75 seconds
    意思是如果某个TCP连接在idle 2个小时后,内核才发起probe.如果probe 9次(每次75秒)不成功,内核才彻底放弃,认为该连接已失效.对服务器而言,显然上述值太大. 可调整到:
    /proc/sys/net/ipv4/tcp_keepalive_time 1800
    /proc/sys/net/ipv4/tcp_keepalive_intvl 30
    /proc/sys/net/ipv4/tcp_keepalive_probes 3
    $ proc/sys/net/ipv4/ip_local_port_range
    指定端口范围的一个配置,默认是32768 61000,已够大.