作者归档

KMP算法

KMP算法
在介绍KMP算法之前,先介绍一下BF算法。
一.BF算法
BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第二个字符和P的第一个字符,依次比较下去,直到得出最后的匹配结果。
举例说明:
S:  ababcababa
P:  ababa
BF算法匹配的步骤如下
i=0                      i=1                   i=2                 i=3                 i=4
第一趟:ababcababa         第二趟:ababcababa      第三趟:ababcababa    第四趟:ababcababa    第五趟:ababcababa
ababa                    ababa                 ababa               ababa               ababa
j=0                      j=1                   j=2                 j=3                 j=4(i和j回溯)
i=1                      i=2                   i=3                 i=4                 i=3
第六趟:ababcababa         第七趟:ababcababa      第八趟:ababcababa    第九趟:ababcababa   第十趟:ababcababa
ababa                    ababa                 ababa               ababa               ababa
j=0                      j=0                   j=1                 j=2(i和j回溯)        j=0
i=4                      i=5                   i=6                 i=7                 i=8
第十一趟:ababcababa       第十二趟:ababcababa    第十三趟:ababcababa  第十四趟:ababcababa  第十五趟:ababcababa
ababa                    ababa                 ababa               ababa               ababa
j=0                      j=0                   j=1                 j=2                 j=3
i=9
第十六趟:ababcababa
ababa
j=4(匹配成功)
代码实现:
阅读更多…

SSH无密码登录

  1. step1.   a$ ssh-keygen -t rsa    一路回车
  2. step2.   a$ scp ~/.ssh/id_rsa.pub b:~/.ssh/a.pub    //输入密码
  3. step3.   b$ cat ~/.ssh/a.pub >> ~/.ssh/authorized_keys

大功告成。之后在使用a机向b机复制文件的时候就不用再输入密码了。

用c写在linux访问https网页内容

今天遇到几个狗血的问题,在此我不得不大吐一番。

1、POST/GET可以获取http网页的内容,但不可以用来获取https的,SSL验证这关通不过,如果您可以解决这个问题,欢迎给我留言,我期盼您的到来。

2、用curl库访问https网页,先看下支不支持https协议,但是报这个error:CURLE_PEER_FAILED_VERIFICATION (51) – 远程服务器的 SSL 证书或 SSH md5 指纹不正确。
阅读更多…

mysql 建表的问题?

一直以来用的数据库都是别人给搭好的,从来都是连上就用,不管什么,弄好就退出,今天自己弄一个新的服务器,mysql库人给搭好了,但是不知道怎么连,很可笑,连本服务器上的数据库:mysql  -u 用户名  -p  ;如果要指定是那个数据库  mysql  数据库名  -u 用户名  -p

建表还是不成功,老是报一个错误:ERROR 1046 (3D000): No database selected,才知道没有选database,因为我连接到数据库执行的命令是:mysql  -u 用户名  -p

阅读更多…

使用SecureCRT rz\sz 上传 下载文件

连一个新的服务器,发现不能使用rz、sz命令,在网上查了一下,发现需要安装lrzsz,才可以使用。

1.Linux软件源安装
yum install lrzsz

2.Linux源码包安装
阅读更多…

shell集合计算命令uniq用法

1、取file1 file2的并集

cat  file1 file2 |sort  -u |uniq

2、取file1 file2的交集

cat file1 file2|sort -u |uniq -d

3、去掉file1 file2的交集

cat file1 file2|sort -u |uniq -u

excel的BUG。打开大csv文件显示不全

.csv:用逗号分割的文本文件,一般用于在不同应用程序之间进行数据交换。
如果文件内的内容超过65536行,用excel2003可以打开,但是超过65536的数据会丢失,用wps打开也是这样。
可以excel2003以上的版本,比如2007,可以打开,且数据不会丢失,也可用写字板打开。
文件内容不超过65536行,就不会有数据丢失的问题了。

Linux内核参数-共享内存信号量semaphore设置

共享内存

可以通过ipcs -lm命令查看目前系统共享内存的参数限制:

# ipcs -lm

—— Shared Memory Limits ——–
max number of segments = 4096
max seg size (kbytes) = 1048576
max total shared memory (pages) = 2097152
min seg size (bytes) = 1

这里涉及到3个于共享内存相关的参数:SHMMAX,SHMMNI,SHMALL
阅读更多…

shell编程控制结构

1、expr计算整数变量值

格式 :expr arg

例子:计算(2+3)×4的值
1、分步计算,即先计算2+3,再对其和乘
4
s=`expr 2 + 3`
expr $s \* 4
2
、一步完成计算:
expr  `expr 2 + 3 `  \* 4
说明:
运算符号和参数之间要有空格分开;
通配符号(*),在作为乘法运算符时要用\、“”、‘’符号修饰
:expr 3 \* 2         expr 3 “*” 2       expr 3 ‘*’ 2 
 `(反引号)与键盘上的~同一个键上的符号 
[fsy@localhost ~]$ s=`expr 2 + 3`
[fsy@localhost ~]$ echo $s
5
[fsy@localhost ~]$ expr $s \* 4
20
[fsy@localhost ~]$ expr `expr 2 + 3` \* 4
20
[fsy@localhost ~]$ expr 2 \* 3
6
[fsy@localhost ~]$ expr 2 “*” 3
6
[fsy@localhost ~]$ expr 2 ‘*’ 3
6
[fsy@localhost ~]$ expr 2 * 3
expr: 语法错误
[fsy@localhost ~]$

阅读更多…

shell:读取文件的每一行内容并输出

昨天写了一个脚本,只是做简单的表插入和表删除,写shell脚本的时候,死死的卡在shell读文件内容这块,所以写出来跟大家分享下。

num=`cat ptest.txt|wc -l`
echo $num
if [ $num -gt 0 ];then
while read feemobile
do
echo "insert into mms_subscribe_pause (packageid,businessid,packageidsmc,sendnum,recnum,booktime,subscribetime,subscribetype,subscribeip,mobiletypeid,suspendtime,suspendtyp
e,suspendip,suspendname,suspendreason,pidsmt,bidsmt,smcstatus,pidmianfei,bidmianfei,gateway,area,usertype,leagueid,status,Pcode,FeeCode,contenttype,isrelated) select packageid,b
usinessid,packageidsmc,sendnum,recnum,booktime,subscribetime,subscribetype,subscribeip,mobiletypeid,now(),'42','MISC_PAUSE','','',pidsmt,bidsmt,smcstatus,pidmianfei,bidmianfei,g
ateway,area,usertype,leagueid,status,Pcode,FeeCode,contenttype,isrelated from mms_subscribe where recnum='$feemobile';" |$mmsdb
echo "delete from mms_subscribe where recnum='$feemobile';" |$mmsdb
done < ptest.txt
fi

看,是不是很简单,问题来了,我是逐行逐行读取ptest.txt里的内容,那它怎么可能自动实现读取一行行文件内容的呢?done < ptest.txt起的作用就是把待读取的文件内容准备好。那逐行读取文件写法只有这一种吗?答案是否定的。 阅读更多…