欢迎光临
我们一直在努力

老王的文章

聊聊AES-IT技术资讯
安全

聊聊AES

老王阅读(977)评论(0)赞(1)

说起加密,通常分为对称加密和非对称加密,所谓对称加密中的对称,指的是加密和解密使用的是同一个密钥,如此说来什么是非对称就不用我多做解释了。对称加密相对于非对称加密而言,优点是速度快,缺点是安全性相对低一点,不过只要能保证密钥不泄露,其安全性...

关于手机App的Https抓包-IT技术资讯
tcpdump

关于手机App的Https抓包

老王阅读(1008)评论(0)赞(0)

我喜欢用 Mitmproxy 来处理手机 App 抓包之类的工作,本来用它来抓 Https 包是很容易的一件事,只要设置好代理,浏览 mitm.it 按提示安装证书即可,可是当 Android 版本升级到 7 以后,此方法就失效了,为什么呢...

WRK:一个可编程的HTTP性能测试工具-IT技术资讯
Lua

WRK:一个可编程的HTTP性能测试工具

老王阅读(1229)评论(0)赞(3)

同 ab 这种单线程 HTTP 性能测试工具相比,wrk 是一个足够现代化的 HTTP 性能测试工具,最重要的特性是:它是可编程的,借助内嵌 lua,我们可以控制测试的全过程。   关于 wrk 中 lua 扩展的数据结构,可以参...

SQL

数据库ID生成器基准测试

老王阅读(848)评论(0)赞(4)

在说明如何基准测试之前,我想聊聊我为什么要做这个事儿,话说最近做某后台的时候需要一个 ID 生成器,我不太想用 snowflake 等复杂的解决方案,也不太想用 redis 来实现,因为我手头只有 mysql,所以我琢磨着就用 mysql ...

如何查询同时包含多个指定标签的文章-IT技术资讯
SQL

如何查询同时包含多个指定标签的文章

老王阅读(2870)评论(0)赞(2)

文章和标签是典型的多对多的关系,也就是说每一篇文章都可以包含多个标签,如图: 每一篇文章都可以包含多个标签 下面问题来了:如何查询 tag_id 同时包含 1、2、3 的 article_id?此问题看似简单,实际上也非常简单,本来是一道送...

php

如何使用PHP解析XML大文件

老王阅读(895)评论(0)赞(1)

如果使用 PHP 解析 XML 的话,那么常见的选择有如下几种:DOM、SimpleXML、XMLReader。如果要解析 XML 大文件的话,那么首先要排除的是 DOM,因为使用 DOM 的话,需要把整个文件全部加载才能解析,效率堪忧,相...

OpenResty

手把手教你用OpenResty里的FFI

老王阅读(1368)评论(0)赞(2)

了解 OpenResty 的人应该知道,OpenResty 原本的 API 都是基于 C 实现的,不过在新版里都已经改成了基于 FFI 实现的,为什么这么做?因为 FFI 在效率上更有优势,除此以外,FFI 还有一个优点是可以很便利的和 C...

OpenResty

如何扩展一个OpenResty模块

老王阅读(1405)评论(0)赞(1)

因为 Lua 本身并没有继承之类的语法,所以我们不能通过 OOP 的套路来扩展模块,不过实际上对于 Lua 来说,扩展一个模块有更简单的方法,下面我们以 lua-resty-string 模块中的 aes 加解密功能为例子来说明一下。 &n...

Laravel队列的一些细枝末节-IT技术资讯
php

Laravel队列的一些细枝末节

老王阅读(1110)评论(0)赞(1)

因为我崇尚简单,所以我憎恨一切所谓的「重量级」框架,比如「Laravel」,有时候这种憎恨甚至到了偏执的程度,以至于如果我看到简历里写着诸如「精通 Laravel」之类的话,那么便会毫不犹豫的 PASS 掉候选人。不过现在我承认有点喜欢「L...

Linux

一次「Too many open files」故障

老王阅读(2028)评论(0)赞(0)

昨天,项目的 ElasticSearch 服务挂了,我说的挂可不是进程没了,因为有 Supervisor 保护,而是服务不可用了。以前曾经出现过一次因为 ES_HEAP_SIZE 设置不当导致的服务不可用故障,于是我惯性的判断应该还是 ES...

Redis

谈谈Redis的SETNX

老王阅读(897)评论(0)赞(1)

在 Redis 里,所谓 SETNX,是「SET if Not eXists」的缩写,也就是只有不存在的时候才设置,可以利用它来实现锁的效果,不过很多人没有意识到 SETNX 有陷阱!   比如说:某个查询数据库的接口,因为调用量...

监控Netstat数据-IT技术资讯
Linux

监控Netstat数据

老王阅读(1152)评论(0)赞(0)

我的日常工作有很大一部分比重是处理各种网络问题。很多时候,面对突发故障,完全搞不清楚缘由,此时,一个完善的监控系统能起到事半功倍的效果。   一个好消息是「netstat -s」里的各种计数器包含了很多有用的信息;一个坏消息是计数...

一个Laravel队列引发的报警-IT技术资讯
php

一个Laravel队列引发的报警

老王阅读(953)评论(0)赞(3)

一台服务器报警了,内存占用过高,奇怪的是集群里其它的服务器都没问题。不过从以往的经验来看:每一个匪夷所思的问题背后,都隐藏着一个啼笑皆非的答案。   首先通过「free -m」确认一下内存情况,发现用掉了 6893M,还剩 976...

实战Sentry-IT技术资讯
Linux

实战Sentry

老王阅读(1841)评论(0)赞(1)

不管你用什么编程语言,都会面临如何处理错误日志的问题。很多程序员对错误日志放任自流,直到出现故障了才追悔莫及,如果问我怎么办,我会推荐 Sentry!   Sentry 是一个错误记录和聚合的平台,只要看看它漂亮的界面就会喜欢上它...

SQL

记一次Auto Increment故障

老王阅读(966)评论(0)赞(3)

实际上本次故障的素材来自于朋友的朋友,虽然我并不是故障的亲身经历者,但即便只是作为旁观者,依然感觉有所收获,于是乎记录下来以馈读者。   故障的来龙去脉大致是这样的:在一个月黑风高的晚上,苦逼的程序员被一阵急促的报警短信声惊醒,原...

记一次LVS/Nginx环境下的访问控制-IT技术资讯
LVS

记一次LVS/Nginx环境下的访问控制

老王阅读(904)评论(0)赞(2)

偶然间,我发现 Graphite 显示服务器网卡流量呈锯齿状,于是查了一下 Nginx 日志,发现有人在周期性抓我们的接口数据。我这爆脾气自然不能容忍这种行径。   简单分析一下访问日志,很容易就能拿到了可疑的 IP 段,直接用 ...

Linux

监控进程

老王阅读(871)评论(0)赞(2)

有时候,进程突然终止服务,可能是没有资源了,也可能是意外,比如说:因为 OOM 被杀;或者由于 BUG 导致崩溃;亦或者误操作等等,此时,我们需要重新启动进程。   实际上,Linux 本身的初始化系统能实现简单的功能,无论是老牌...

Nginx

Nginx带宽控制

老王阅读(867)评论(0)赞(0)

有个老项目,通过 Squid 提供文件下载功能,利用 delay_parameters 实现带宽控制,问题是我玩不转 Squid,于是盘算着是不是能在 Nginx 里找到类似的功能。   好消息是 Nginx 提供了 limit_...

Redis

如何统计Redis中各种数据的大小

老王阅读(915)评论(0)赞(0)

UPDATED:如果版本够,记得试试 redis-cli 的 bigkeys 选项 如果 MySQL 数据库比较大的话,我们很容易就能查出是哪些表占用的空间;不过如果 Redis 内存比较大的话,我们就不太容易查出是哪些(种)键占用的空间了...

Where SLOW-IT技术资讯
TCP

Where SLOW

老王阅读(950)评论(0)赞(0)

前些天翻了翻「Wireshark数据包分析实战」,总结了一下汇聚成本文。   所谓慢,通常只是整体的主观感受,我们真正应该关心的是哪个环节最耗时? Where Slow 判断原则按上图所示: 如果 TCP 握手或 ACK 耗时长,...

Linux

如何安装xsscrapy

老王阅读(881)评论(0)赞(1)

我不想攻击别人,但我更不想被别人攻击。于是乎安全扫描变得格外重要,如此才能防患于未然,xsscrapy 就是这样一个漏洞检测工具。   既然这个工具是用 Python 写的,那么理论上安装应该是一件非常简单的事情: shell&g...

关于FIN_WAIT1-IT技术资讯
TCP

关于FIN_WAIT1

老王阅读(1023)评论(0)赞(2)

前些天,一堆人在 TCPCopy 社区里闲扯蛋,有人提了一个问题:FIN_WAIT1 能持续多久?引发了一场讨论,期间我得到斌哥和多位朋友的点化,受益良多。   让我们热热身,通过一张旧图来回忆一下 TCP 关闭连接时的情况: T...

Poor Man PHP Profiler-IT技术资讯
php

Poor Man PHP Profiler

老王阅读(946)评论(0)赞(3)

说起 Profiler,老派的 PHP 程序员会选 XDebug,新派的 PHP 程序员会选 Xhprof,不过我们公司的服务器上都没装,于是我写了这个「Poor Man PHP Profiler」。   既然不用 XDebug ...

PHP优化杂烩-IT技术资讯
php

PHP优化杂烩

老王阅读(867)评论(0)赞(2)

讲 PHP 优化的文章往往都是教大家如何编写高效的代码,本文打算从另一个角度来讨论问题,教大家如何配置高效的环境,如此同样能够达到优化的目的。   pool 一个让人沮丧的消息是绝大多数 PHP 程序员都忽视了池的价值。这里所说的...

TCP

一次优化引发的血案

老王阅读(854)评论(0)赞(3)

前些天一个Nginx+PHP项目上线后遭遇了性能问题,于是打算练练手,因为代码并不是我亲自写的,所以决定从系统层面入手看看能否做一些粗线条的优化。   首先,我发现服务的Backlog设置过小,可以通过ss命令查询Send-Q来确...

DNS

简易云端Hosts的构建

老王阅读(936)评论(0)赞(0)

如果大家记忆力不太差的话,那么应该会记得前段时间发生的全国性DNS解析故障:很多顶级域名被解析到了IP地址 「65.49.2.178」,导致中国互联网瘫痪了几个小时。不过在那起事件里一些移动客户端应用得以幸免,其原因在于它们使用了云端Hos...