1文件名查找
find . –name *vm
递归地查找符合条件(文件名以vm结尾)的文件
2文件内容查找
grep –lr ‘log4j’ *
-l 匹配
-L 不匹配
-r 递归
find ./ -name ‘*.xml’ -exec grep -i “log4j”{} \; -print
在当前路径不区分大小写查找所有*.java的文件里面含有“ABCD”的内容行,并且print出来文件的路径。
批量替换多个文件中的字符串,格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径`。如sed -i "s/oldstring/newstring/g" `grep oldstring -rlyourdir`。
sed –i ‘s/test/tste/g’ *
s 替换
g 全局替换
全面比较HTTP GET与POST方法
1. 基本信息比较
属性
GET方法
POST方法
历史:
通常使用GET方法发送的数据作为URL的一部分将会被浏览器保存起来
使用POST方法提交的数据则不会作为URL的一部分,当然不会浏览器保存。
书签:
GET方法可能被浏览器当作书签(bookmark)保存
POST方法则不会
回退与重新提交:
使用GET方法的页面可以被回退并重新执行而不通知用户
POST方法会通知用户再次提交
Form编码类型:
GET提交数据只支持
application/x-www-form-urlencoded
POST支持application/x-www-form-urlencoded与multipart/form-data
参数:
由于GET的参数一般都跟在URL后面,支持的数据大小一般在2K,有些服务器可以支持到64K。这个就是很多网页超过64K就挂掉的真实原因。因为服务器限制了。
发送参数,还可以是文件,大小在理论上没有限制。
被攻击:
GET方法提交数据很容易被黑客攻击,实施脚本绑架。
POST方法相对GET方法不是那么容易被黑客攻击
数据类型限制:
GET方法提交数据只能是文本数据
POST方法则不受限制,二进制文件也可以。
安全性:
GET方法的安全性比POST方法要低一些,原因是数据做为URL的一部分是可见的。而且被浏览器存在历史访问记录中。
POST方法的安全性相对GET要高一些。因为参数数据不能被浏览器作为URL的一部分而存入历史访问记录中。
表单数据长度:
由于表单数据做为URL的一部分而URL长度通常是有限制的。
POST方法没有限制。
可用性:
GET方法通常不被用来发送密码与敏感信息。但是我发现还是有不少网站用GET来实现login。比如XXXX社区,它把login方法放在一个jquery完成JavaScript脚本中,用GET请求完成。
POST方法可以用来发送密码与其他敏感信息。
可见性:
GET方法对所有人可见
POST方法的变量是不可见的在URL中
缓存:
GET方法默认被缓存,这个就是很多时候用GET方法获取数据后面要跟个时间戳的原因
POST方法默认不被缓存。
除非Response头设置了Cache-Control或者Expires属性值。
最大的变量值:
GET支持最大为7607个字符
POST方法支持最大值为8MB
应用场合:
GET最常用的场合是获取数据,浏览器获取网页时候绝大多数通过GET方法实现,大多数浏览器下载也是使用GET方法获取文件
POST主要用来向服务器提交数据。
个人整理与总结,欢迎大家拍砖
亲和串的定义是这样的:给定两个字符串s1和s2,如果能通过s1循环移位,使s2包含在s1中,那么我们就说s2 是s1的亲和串。
AABCD CDAA ASD ASDF
yes no
//一般来说,像这种比较简单的,可以用KMP的题目,有一部分都是可以用函数strstr解决的
#include <stdio.h>
#include <string.h>
int main()
{
char s1[100005],s2[100005],s[200005];
int len1,len2,i,len;
while(scanf("%s%s",s1,s2)!=EOF)
{
len1 = strlen(s1);
len2 = strlen(s2);
for(i = 0; i<len1; i++)
{
s[i] = s1[i];
}
for(i = len1; i<2*len1; i++)
{
s[i] = s1[i-len1];
}
s[2*len1] = '\0';
if(strstr(s,s2))
printf("yes\n");
else
printf("no\n");
}
return 0;
}