一个有意思的PHP函数-levenshtein  

发现一个有意思的PHP函数 levenshtein(),计算两个字符串之间的编辑距离。 官网链接levenshtein 官网描述: 编辑距离,是指两个字串之间,通过替换、插入、删除等操作将字符串str1转换成str2所需要操作的最少字符数量。 该算法的复杂度是 O(m*n),其中 n 和 m 分别是str1 和str2的长度 (当和算法复杂度为O(max(n,m)**3)的similar_text()相比时,此函数还是相当不错的,尽管仍然很耗时。)。 语法: int levenshtein (

Posted:2018-06-03  By vilay

通过Mysql的status数据计算QPS和TPS  

QPS(Queries Per Second):每秒服务器处理完的请求次数 TPS(TransactionsPerSecond):每秒钟处理完的事务次数,一般TPS是对整个系统来讲的。一个应用系统1s能完成多少事务处理,一个事务在分布式处理中,可能会对应多个请求,对于衡量单个接口服务的处理能力,用QPS比较多。 进入Mysql的命令行, MariaDB [(none)]> show status 会显示出系统的很多数据 示例: Uptime:系统运行的时间 Questions:发送给数据库

Posted:2018-06-03  By vilay

Restful 风格可能存在的几个安全问题  

随着restful的流行,现在微服务以及很多api相关应用都采用这种架构风格进行设计。 好处显而易见,但是还是要注意其伴随的安全问题 1.遗漏了对资源从属关系的检查 例如:/users/10 有没有验证当前登陆的是否是id为10的用户?如果填的是其它id是否能够获得数据? 当包含多个资源的时候,例如:/users/10/orders/10 是否对用户以及订单都进行过验证? 2. HTTP响应中缺失必要的 Security Headers X-Frame-Options 为了防止应用遭受点击劫持攻

Posted:2018-06-03  By vilay

PHP Reload  

在修改了php的配置之后,需要重启才能够生效。之前我大部分都是直接restart进行重启操作。 重启有一个坑,就是必须保证当前应用没有用户或者业务在跑,否则进程会销毁终止。 除了restart之外还有一个reload的操作,一般来说reload相对于restart肯定是更能够达到平滑重启的要求的,但是也还是存在一些问题。 php-fpm.conf的文件中有一个参数:process_control_timeout 默认情况下是注释的。 ; Time limit for child processe

Posted:2018-06-03  By vilay

vim 命令学习  

Vim是vi的升级版比vi功能更强大。 一般功能: x(小写)删除光标所在位置的下一个字符 X(大写)删除光标所在位置的前一个字符 i 光标所在位置后插入 I 行首添加 a 光标所在位置添加 A 行尾添加 o (小写)下一行添加 O (大写)上一行添加 dd 删除光标所在行 5dd 删除光标所在下5行 u 撤销 yy 复制行 5yy 复制5行 p (小写)光标下一行粘贴 P (大写)光标上一行粘贴 gg 光标跳转到第一行 G 光标跳转到最后 命令模式操作: q 退出 ! 强制 q! 强制退出 w

Posted:2018-06-02  By vilay

Linux 命令学习笔记  

wc统计信息 wc index.php #依次输出 行数 字数 字节数 文件名 wc -l index.php #统计文件行数 wc -w index.php #统计文件字数 wc -c index.php #统计字节数 last 显示最近登陆用户 last #显示最近登录的用户列表 last -6 #显示最近登录的 6 条登录信息 last -u nick #显示指定用户 nick 的登录信息 lastlog lastlog #显示最后登录的用户信息,内容为 用户名 终端 ip地址 登录时间

Posted:2018-06-02  By vilay

Linux grep/sed/awk 命令  

grep grep -c 'img' index.php # 查看index.php文件中包含img的有多少行 cat var.php | grep -o 'img' # 查看文件中匹配到的部分,如果有两个匹配,就显示两个img cat var.php | grep 'img' # 把包含img的整行内容都显示 ps -aux | grep 80 #查找指定端口 sed sed -n '2p' index.php #查看文件第 2 行 sed '2d' index.php #打印文件内容不显示第

Posted:2018-06-02  By vilay

Linux 文件内容查看  

cat命令 cat nginx.conf # 查看nginx.conf文件内容,全部显示 cat nginx.conf fcgi.conf # 查看多个文件内容 cat -n index.php #查看文件内容并从 1 开始添加序号 less 分屏显示文件内容 less index.php # enter 下一行,空格下一屏,q退出 more分屏显示文件内容 more -10 index.php #每屏显示10行数据 more +20 index.php #从20行开始显示 enter 下一行,

Posted:2018-06-02  By vilay

Linux 文件/目录操作  

file:查看文件类型 file filename touch :新建空文件 touch filename.php cp:复制文件或目录 cp index.php /var/www/ # 复制文件到目录下 cp -a index.php /var/www/ # 复制文件到目录下,并且保留文件的属性、权限、软连接自动指向目标文件 cp -r /var/www/ /root/ # 递归的复制目录 unlink:删除文件,只能删除文件不能删除目录 unlink index.php mv:移动文件或者目

Posted:2018-06-02  By vilay

生成csv的时候全角的字符串不能导出的解决方法  

用户在输入数据的时候,不懂什么原因,数据是全角的,但是数据库保存没有任何问题,在数据导出到csv的时候就缺失了。 最开始的方案 //略 $tel = iconv($mobile,'utf-8','gb2312'); //略 这种方式全角数据会丢失。 改良方案,使用函数mb_convert_encoding() //略 $tel = mb_convert_encoding($mobile,'gb2312','utf-8'); //略 这样生成的数据在前后带了个?,再次修改 //略 $tel = m

Posted:2018-05-31  By vilay

Centos crontab 执行不成功分析过程  

在Centos上用crontab执行计划任务,定时脚本,但是最终却没有看到效果. 首先,我去查看了crontab日志,发现crontab有去执行,但是脚本并没有执行。 查看日志的方法 cat /var/log/cron 日志有执行记录。 然后我测试了一个脚本文件,创建一个shell脚本文件,内容如下 echo 1 >> test.txt 放在crontab 里面去定时执行,结果还是没有。 我怀疑是脚本文件的问题,直接执行文件 sh test.sh 有文件生成,然后我把脚本直接扔cro

Posted:2018-05-31  By vilay

Windows Mysql 8.0.11 zip安装  

Mysql 8.0.11 在windows下的安装 1. 下载zip安装包 Mysql zip包 2. 解压安装包到目录 例如解压到位置F:/mysql/ 3.生成配置文件 [mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=F:\mysql # 设置mysql数据库的数据的存放目录 datadir=F:\database # 允许最大连接数 max_connections=200 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据

Posted:2018-05-27  By vilay

PHP 生成唯一ID  

开发的时候经常需要生成唯一的标识,例如订单号,用户标识等。 记录下几种生成的方法: 1. PHP 自带的函数 uniqid() echo uniqid(); echo uniqid('php_'); 此函数不保证返回值的唯一性。 由于绝大多数系统使用 NTP 或者类似服务调整系统的时间,所以系统时间经常发生变化。 此外,进程/线程可能不会返回唯一的 ID。 用 more_entropy 来增加唯一性的概率。 2. 多带点客户端信息 echo md5($_SERVER['HTTP_USER_AGE

Posted:2018-05-27  By vilay

重启服务器之后sshd重启失败  

在重启服务器之后,无法远程连接,进入系统之后,重启SSHD失败,报错 Bind to port xxx on 0.0.0.0 failed: Permission denied. 解决方法:关闭SELinux 1. 临时关闭,重启后会失效 setenforce 0 2. 永久关闭 vi /etc/selinux/config 修改 SELINUX=enforcing改为SELINUX=disabled

Posted:2018-05-22  By vilay

Mysql 更新字段中的部分内容  

有时候数据库中的某个字段的值存储比较复杂,但是部分内容变更了,我们需要批量更新部分内容 update articles set content=replace(content,'http://www.test.com','http://www.example.com');

Posted:2018-05-20  By vilay