文件上传漏洞之图片缩略图
作者:admin 日期:2020-03-01
MACOS 添加/查看路由表
作者:admin 日期:2019-11-14
SimpleHttpRequester的安装和使用
作者:admin 日期:2019-09-10
正则表达式的先行断言(lookahead)和后行断言(lookbehind)
作者:admin 日期:2019-07-01
正则表达式的先行断言和后行断言一共有4种形式:
(?=pattern) 零宽正向先行断言(zero-width positive lookahead assertion)
(?!pattern) 零宽负向先行断言(zero-width negative lookahead assertion)
(?<=pattern) 零宽正向后行断言(zero-width positive lookbehind assertion)
(?<!pattern) 零宽负向后行断言(zero-width negative lookbehind assertion)
这里面的pattern是一个正则表达式。
键盘符号中英文名称大全
作者:admin 日期:2019-05-20
符号 英文名 中文名
~ tilde or swung dash 波浪字符或代字号 ! exclamation mark 惊叹号 @ at sign or commercial at 爱特或小老鼠 # number sign 井号 $ dollar sign 美元符 % percent sign 百分号 ^ caret 脱字符 & ampersand 与和符 * asterisk 星号 () parentheses, round brackets, soft brackets, or circle brackets 小括号,圆括号 [] brackets (US), square brackets, closed brackets or hard brackets 中括号,方括号 {} braces (UK and US), French brackets, curly brackets 大括号,花括号 <> angle brackets or chevrons 尖括号 _ underscore 下划线 + plus sign 加号 − minus sign 减号 = equals sign 等号 < less-than sign 小于号 > greater-than sign 大于号 . period, full stop or dot 句号,点 , comma 逗号 : colon 冒号 ; semicolon 分号 ? question mark 问号 - hyphen 连字符 ... ellipsis 省略号 – dash 破折号 / slash, forward slash 斜线 \ backslash 反斜线 | vertical bar 竖线 “ quotation mark 双引号 ‘ apostrophe 单引号,省略符号
awk 切分nginx日志中的字段
作者:admin 日期:2019-01-23
php7 unset数组元素会不会释放内存
作者:admin 日期:2018-08-31
针对这个问题, 我们先上一段代码.
<?php $memory2 = $memory3 = $memory4 = 0; $data = []; $memory = memory_get_usage(); foreach (range(1, 100000) as $key) { $data[$key] = str_repeat("1', 100); } $memory2 = memory_get_usage() - $memory; foreach (range(1, 100000) as $key) { unset($data[$key]); } $memory3 = memory_get_usage() - $memory; echo "memory2: " . $memory2, PHP_EOL; echo "memory3: " . $memory3, PHP_EOL;
这段代码分别会输出3个内存使用情况. 分别记为memory2, memory3.
memory2: 给数组设置10000个key, 给value字段设置100个1的字符串. 之后的内存.
memory3: unset掉数据中所有的key之后的内存值.
array_unshift的性能问题
作者:admin 日期:2018-08-30
不加全文索引解决模糊查询的问题
作者:admin 日期:2018-08-29
简单应对验证码接口恶意攻击
作者:admin 日期:2018-08-26
这几天不断的有人攻击公司的验证码接口, 就是随机生成了一系列的手机号然后调用注册页面的验证码的接口. 对待这种攻击自然最严谨的是适时弹出验证码, 可临时我们没有这么快的速度去做这套验证码的方案(前面写了"适时"二字自然不能对所有人都弹出验证码, 本来用户转注册的转化率就低, 再加个验证码那就更难看了).
今天又是周末, 只能简单处理一下.
我们的接口拉扯类似于
/api/smsCaptcha/send.json
注意到攻击者是用固定的几个IP来发起请求的, 此时最简单有效又不影响用户的方法自然是屏蔽攻击者的ip. 一个简单的指令就能让攻击者暴露无遗.
tail -100000 /data/logs/nginx_access.log|grep smsC|awk "{print $1}'|sort |uniq -c|sort -n
PHP错误显示问题, 错误日志去哪儿了
作者:admin 日期:2017-08-10
相信很多做PHP开发的同学都会遇到一些PHP报错的情况. 有时候这些报错显示在页面上,有时候显示在日志文件里. 有时候可能会为一个500错误找半天, 却还是没有找到报在在哪里.
下面就根据地我一点点粗浅的认识总结一下这个问题.
开启error_reporting
要想看到错误, 第一件是就是开启error_reporting, 否则所有的错误都不会被报告. 开启的代码为:
error_reporting(E_ALL);
开启了错误报告之后, 我们可能在下面三个地方看到这个错误信息.
- 网页页面上.
- nginx日志中.
- php错误日志中.
display_errors
GIT不要密码, GIT记住密码
作者:admin 日期:2017-03-18
在Windows下执行Swoole
作者:admin 日期:2017-02-26
让git忽略已跟踪文件的修改
作者:admin 日期:2016-10-05
项目中的配置文件在版本管理中有时候会让我们很头疼. 服务器的环境可能不一样, 开发人员的开发环境也可能不一样. 对于这样的配置文件, 一种办法是干脆不加入版本控制. 但这样一来, 配置文件的改动需要用其它方法通知所有相关的开发人员. 而加入版本控制又会带来新的问题. 开发人员需要改配置, 提交的时候要小心翼翼的, 生怕把这个配置文件提交上去.
对于用git做版本控制的项目来说, 有一种两全的办法.
你可以把一个配置文件加入到版本控制中, 同时你可以在开发者本地忽略这个文件的修改. 命令如下:
$ git update-index --assume-unchanged /path/to/file #忽略跟踪 $ git update-index --no-assume-unchanged /path/to/file #恢复跟踪
当你断言一个文件是unchanged状态的时候, git不再去检查它的状态. 但是当远程分支对这个文件有更新的时候, 将会提示用户这个文件需要合并.
PHP BOM头导致COOKIE无法输出
作者:admin 日期:2016-07-27
带BOM头的UTF8文件, 其文件头部占三个字节(0xEF 0xBB 0xBF). 现在有很多的编辑器都可以识别BOM头了, 但还是有一些不能. 比如说PHP就无法识别这个标记. 所以PHP执行的时候会把它当作非PHP脚本直接输出.
而由于http协议限制setcookie是必需在所有的内容发送调用, 只要有任何的空白内容在setcookie执行之前执行了setcookie将会报一个warning, 且不会输出任何COOKIE
这么明显的问题在开发的时候一定会被发现, 但是, 但是, 但是(关键点)很多人调用setcookie时加了一个@符号号来关闭一个函数调用的输出.
curl设置代理
作者:admin 日期:2016-07-17
Windows版Docker体验
作者:admin 日期:2016-07-11
不久前发现Docker可以原生支持Windows了(目前仅支持64位windows10),安装了一个来体验. 此前是需要搞一个Vbox跑虚拟机的.
获取地址: http://www.docker.com/products/overview
因为我开发一般需要用到lnmp环境, 就准备搞一个这样的容器. 没有用hub上面现成的镜像, 自己在centos6的镜像上派生了一个. 因为docker的网络是基于nat的, 所以也做了端口映射. 另外把本地的一个开发目录挂载到nginx的html目录. 这样基本上就算完工了.
虽然给容器指定了2G内存, 但实际上容器并不会像虚拟机一样把所有的内存事先分配掉. 所有的内存是共享的, 未分配的内存宿主机依然可以拿来做其它的用途. 这是容器明显优于虚拟机的地方.