JSONP原理

JSONP的最基本的原理是:
动态添加一个是一致的(qq空间就是大量采用这种方式来实现跨域数据交换的)。JSONP是一种脚本注入(Script Injection)行为,所以有一定的安全隐患。

那jquery为什么不支持post方式跨域呢?

虽然采用post+动态生成iframe是可以达到post跨域的目的(有位js牛人就是这样把jquery1.2.5 打patch的),但这样做是一个比较极端的方式,不建议采用。

也可以说get方式的跨域是合法的,post方式从安全角度上,被认为是不合法的,万不得已还是不要剑走偏锋。

client端跨域访问的需求看来也引起w3c的注意了,看资料说html5 WebSocket标准支持跨域的数据交换,应该也是一个将来可选的跨域数据交换的解决方案。

MySql锁表解决(死)

1. show open tables where In_use>0; 查看被锁的表
In_use show how many threads are currently using this table, meaning have it locked or waiting on the table lock for this table to lock it.
2.show processlist; 查看所有执行线程

如果在线上不慎执行了一个复杂sql,ctrl + c不一定会终止sql在服务端的执行,可以通过以上两个sql,检查表是否被锁,以及执行线程是否终结。如果还在执行,手动kill一下线程

演示:(id 7是我用python 来连过来的一个会话,虽然是状态是sleep,为了演示,干掉他)

mysql> show processlist;
+—-+——+———–+——+———+——+——-+——————+
| Id | User | Host | db | Command | Time | State | Info |
+—-+——+———–+——+———+——+——-+——————+
| 7 | root | localhost | yy | Sleep | 154 | | NULL |
| 8 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+—-+——+———–+——+———+——+——-+——————+
2 rows in set (0.00 sec)

mysql> kill 7;

mysql> show processlist;
+—-+——+———–+——+———+——+——-+——————+
| Id | User | Host | db | Command | Time | State | Info |
+—-+——+———–+——+———+——+——-+——————+
| 8 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+—-+——+———–+——+———+——+——-+——————+
1 row in set (0.00 sec)

php扩展Filter过滤 邮箱(email ip url等)

Filter 函数
filter_has_var — Checks if variable of specified type exists
filter_id — 返回与某个特定名称的过滤器相关联的id
filter_input_array — 获取一系列外部变量,并且可以通过过滤器处理它们
filter_input — 通过名称获取特定的外部变量,并且可以通过过滤器处理它
filter_list — 返回所支持的过滤器列表
filter_var_array — 获取多个变量并且过滤它们
filter_var — 使用特定的过滤器过滤一个变量

过滤 email ip url等
mixed filter_var ( mixed $variable [, int $filter = FILTER_DEFAULT [, mixed $options ]] )
$filter:
FILTER_VALIDATE_EMAIL email
FILTER_VALIDATE_IP ip
FILTER_VALIDATE_URL url
还有很多可以看php手册