Blog
    12 posts
PHP和Java互通的国密SM4算法
简述 最近有需求要使用SM4算法传递信息,PHP加密,Java解密,网上找了一下 PHP7可以使用gmssl的PHP拓展支持,http://gmssl.org/docs/php-api.html PHP5只能用https://github.com/fevin/gmsm 这边项目是PHP5版本的,上面这个拓展只实现了128bit的块加密,没有实现ecb,cbc等对称加密模式 自己实现了一下ecb,使用数组来处......
Mysql中in vs join
简述 最近在一个群里看到join和in的争论,到底什么时候用in,什么时候用join,我做了实验来验证 预备知识 join type介绍 join type并非指join类型,而是查询类型 explain sql后的type字段正是join type Mysql中有以下join type,性能从高到底为: * system : 系统常量表 * const : 常量表 * eq_ref : 主键或者唯一索引 * ref : 非空索引 * ref_or_null : 可空索引 * range :索引列使用 BETWEEN, IN, >=, LIKE等范围查询 * index : 循序扫描索引列 * ALL : 顺......
web控制打印机的优秀工具-qz.io
引言 以往通过web控制打印机,一般是通过js控制Applet运行java去控制打印机,但如今主流浏览器因为安全问题,已经不允许在网页中运行java了.非要运行java只能装低版本的浏览器,这容易产生安全问题,不是一个好办法. qz.io 能很好的解决这个问题. qz.io qz.io的思路很巧妙,通过一个客户端程序去驱动打印机,同时在客户端建立一个websocket服务器,暴露出api给web调用.支持所有浏览器,所有操......
使用Docker和Laradock进行PHP开发
为什么要使用Docker Docker能极大地减少环境配置和环境差异带来的工作,能相当程度提高生产力.以往我们使用的Homestead等虚拟机只能实现开发环境的共享,并不能用到生产环境中,无法减少运维的工作. 什么是Docker? Docker 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的运行效率,降低了云计算资源供应的成本! 使用 Docker,可以让应用的部署、测试和分发都变得前所未有的高效......
Linux服务器使用selenium的正确知识
导语 最近使用PHP做了一些爬虫,其中部分需要用到selenium开浏览器 值得注意的是Linux服务器没有显示输出终端的,我们要运行GUI程序,需要用到虚拟显示终端,比如 Xvfb 另外服务器上建议用Firefox,备用Chrome,在实践当中,前者问题少一些 安装步骤 安装php-webdriver https://github.com/facebook/php-webdriver 安装Firefox apt-get install firefox 安装geckodriver https://github.com/mozilla/geckodriver/releases 安装xvfb apt-get install xvfb 运行步骤 设置xvfb export DISPLAY=:10 Xvfb :10 -screen 0 1366x768x24 -ac & 启用......
如何记忆VIM快捷键
使用键盘代替鼠标操作 光标上下左右移动:j k h l h:在最左边,左移动 l:同理,在最右边,右移动 j:下移 k:上移 在hjkl前加数字,比如3j就是向下移动三行,3l即使向右三行. w(word) 向右移动到下个单词的开头处,3w向右移动到3个单词的位置 b(back) 向左按移动到下个单词的开头处,3e向左移动到3个单词的位置 e(end) 向右移动到单词结尾处. 0 移动到行首 $ 移动到行尾,和正则的$意思一样 使用键盘进行插入,修改,删除,复制,粘贴 i......
读《高性能mysql》笔记
性能监控工具 sysbench pt-query-digest Anemometer new rilic xhprof生产环境下的PHP性能跟踪工具 show profile show status 选择正确的数据类型 通常越小越好 越简单越好 采用not null 使用枚举类型 TIMESTAMP通常优于DATETIME 多表关联,关联主键数据类型应当一致 不要怕用NULL,避免不存在的值,如:DATETIME NOT NULL DEFAULT ‘0000-00-00 00:00:00’ 在冗余量允许的情况下,减少JOIN,考虑适当把同一个字段数据存到不同表里,使用触发器来维护,这可以减少全表扫描。 建立合适的索......
读《Modern PHP》笔记
读这本书感觉真的是一个前辈给后辈的敦敦教诲,颇费苦心。 我在这里列一下这本书的精华,供大家参考。 使用接口 依赖接口,而非具体实现,可以解耦,参考Laravel的契约 性状(trait) 这个特性很有意思,名字名副其实。 假如现在有一个人,还有一辆车,车和人都要实现给自己定位的功能,显然车和人不适合从一个父类继承,那这个时候trait就排上用场了。这是一个横向复用机制,让若干不想关的类带上同样一个性状。 http://php.net/manual/zh/language.oop5.traits.php 生成......
读《高性能PHP应用开发》笔记
《高性能PHP应用开发》这本书最值得学习的其实是一个思路: 要诊断问题,从目标的全生命周期出发,用合适的工具去测试和衡量,逐环节排查优化。 HTTP请求的生命周期 对于用户来说,一个HTTP请求的生命周期如上图,其中有一个环节慢,都会导致卡顿。 DNS/PING响应延迟检测工具:http://ping.chinaz.com/ WEB服务生命周期 服务器压力测试工具:ab 前端 这个环节往往是最容易被PHP程序员忽......
你真的了解IP吗,PHP如何严格获取真实用户IP?
PHP里用来获取客户端IP的变量有这些: $_SERVER['HTTP_CLIENT_IP']这个头是有的,但是很少,不一定服务器都实现了。客户端可以伪造。 $_SERVER['HTTP_X_FORWARDED_FOR'] 是有标准定义,用来识别经过HTTP代理后的客户端IP地址,格式:clientip,proxy1,proxy2。详细解释见 http://zh.wikipedia.org/wiki/X-Forwarded-For。 客户端可以伪造。 $_SERVER['REMOTE_ADDR'] 是可靠的, 它是最......