月度归档:2016年12月

PHP 接口类与抽象类不同之处分析

两者之间区别

  • 对接口的使用是通过关键字implements。对抽象类的使用是通过关键字extends。当然接口也可以通过关键字extends继承。
  • 接口中不可以声明成员变量(包括类静态变量),但是可以声明类常量。抽象类中可以声明各种类型成员变量,实现数据的封装。(另JAVA接口中的成员变量都要声明为public static final类型)
  • 接口没有构造函数,抽象类可以有构造函数。
  • 接口中的方法默认都是public类型的,而抽象类中的方法可以使用private,protected,public来修饰。
  • 一个类可以同时实现多个接口,但一个类只能继承于一个抽象类。
  • 接口类方法不能有具体方法内容,抽象类可以定义具体方法内容或者定义抽象方法(无具体方法内容)。
    继续阅读
本文已经被查看217次

mysql innodb引擎安装办法

进入mysql 命令行:mysql -uroot -p

输入密码

查看是否存在innode引擎。

mysql> show engines;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                    | Transactions | XA   | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| CSV        | YES     | CSV storage engine                                         | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance     | NO           | NO   | NO         |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
5 rows in set (0.00 sec)

查看是否有InnoDB。

如果不存在查看是否有innoDB

mysql> SHOW variables like "have_%";
+-------------------------+----------+
| Variable_name           | Value    |
+-------------------------+----------+
| have_community_features | YES      |
| have_compress           | YES      |
| have_crypt              | YES      |
| have_csv                | YES      |
| have_dynamic_loading    | YES      |
| have_geometry           | YES      |
| have_innodb             | YES      |
| have_ndbcluster         | NO       |
| have_openssl            | DISABLED |
| have_partitioning       | NO       |
| have_query_cache        | YES      |
| have_rtree_keys         | YES      |
| have_ssl                | DISABLED |
| have_symlink            | YES      |
+-------------------------+----------+
14 rows in set (0.00 sec)

显示结果中会有如下3种可能的结果:

have_innodb YES
have_innodb NO
have_innodb DISABLED
这3种结果分别对应:

已经开启InnoDB引擎
未安装InnoDB引擎
未启用InnoDB引擎

如果需要安装InnoDB引擎,需要如下操作:

查看插件目录

mysql> SHOW variables like "plugin_dir";
+---------------+--------------------------------------------+
| Variable_name | Value                                      |
+---------------+--------------------------------------------+
| plugin_dir    | /usr/local/mysql-5.1.69/lib/mysql/plugin |
+---------------+--------------------------------------------+
1 row in set (0.00 sec)

进入插件目录
查找是否已经存在innodb的so
从步骤二中查看是否已经存在innodb的so
如果不存在 则从mysql的安装结构中将innodb so拷贝到plugins_dir目录中

安装innodb

mysql> install plugin innodb soname "ha_innodb.so";

至此输入命令

mysql> show engines;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                    | Transactions | XA   | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| CSV        | YES     | CSV storage engine                                         | NO           | NO   | NO         |
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance     | NO           | NO   | NO         |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
5 rows in set (0.00 sec)

如果出现InnoDB为yes,即安装成功。

本文已经被查看373次

拦截异常访问IP的shell

主要通过查看异常IP,将异常IP放入iptables进行拦截。

#!/bin/bash


function check(){
    touch /var/named/data/ddos/back_bad_ip.txt
    time=`date +"%Y-%m-%d %H:%M:%S"`
    ar=`wc -l /var/named/data/ddos/back_bad_ip.txt |awk '{print $1}'`
    sleep 1
    #红色自己改有端口, SYN_RECV等
    tail -n 100000 /var/named/data/query.log |grep 'cpsc.gov'|grep -v "STREAM"|awk '{print $5 }'|awk -F '#' '{print $1}'|sort|uniq -c |awk ' {print $1,$2}' > /var/named/data/ddos/bad_ip ;
    cat /var/named/data/ddos/bad_ip |awk -vtime="$time" '{print time"    |    " $1"    |    "$2}' >>/var/named/data/ddos/back_bad_ip.txt
    ar2=`wc -l /var/named/data/ddos/back_bad_ip.txt |awk '{print $1}'`
    for i in `awk '{print $2}' /var/named/data/ddos/bad_ip`
    do
    iptables -I INPUT -s $i -j DROP
    done
}

#间隔10s无限循环检查函数
while true
do 
        check
        #每隔10s检查一次,时间可根据需要自定义
        sleep 10
done

本文已经被查看168次