欢迎光临
我们一直在努力

老王的文章

白话火焰图-IT技术资讯
Linux

白话火焰图

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

很多人感冒发烧的时候,往往会模仿神农氏尝百草的路子:先尝尝抗病毒的药,再试试抗细菌的药,甭管家里有什么药挨个试,什么中药西药,瞎猫总会碰上死耗子,如此做法自然是不可取的,正确的做法应该是去医院验个血,确诊后再对症下药。 让我们回想一下我们一...

史上最LOW的在线DDL解决方案-IT技术资讯
PostgreSQL

史上最LOW的在线DDL解决方案

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

说起在线 DDL,最常见的操作莫过于在线加一个字段或者索引,不过如果数据量比较大的话,伴随而来的往往是长时间的等待,更要命的是系统在操作期间很可能会出现不可用的情况,所以一般只能等到凌晨操作,简直就是梦魇一般的存在。   在 Po...

实战Pinba-IT技术资讯
监控

实战Pinba

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

谁都知道监控系统很重要,但是要自己搭建一套好用的系统却不是一件简单的事情。国内已经有不少厂商提供类似的服务,比如:OneAPM、听云,其原理就是通过在服务器上部署一套探针,把数据汇总上报,但是问题却不像说起来这么简单,我曾经买过国内某个厂商...

php

一个PHP实现的ID生成器

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

通常来说,不管使用什么数据库,表里都有一个名为 id 的主键,既然是主键,那么必然要满足唯一性,对于 MySQL 用户来说,它多半是一个 auto_increment 自增字段,也有一些别的用户喜欢使用 UUID 做主键,不过对 MySQL...

关于FIN_WAIT2-IT技术资讯
TCP

关于FIN_WAIT2

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

前些天,有朋友问我关于 FIN_WAIT2 的问题:如果主动关闭的一方在进入 FIN_WAIT2 状态后没有收到被动关闭的一方发送的 FIN 包,那么会怎样?   让我们热热身,通过一张旧图来回忆一下 TCP 关闭连接时的情况: ...

Linux

如何判断GCC的版本

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

我说的 GCC 版本可不是指的「gcc –version」,而是指的上到 Linux 内核,下到 PHP 之类的软件,是用哪个版本的 GCC 编译的。   先看看如何判断 Linux 内核是用什么版本的 GCC 编译的? shel...

Linux

记录一个多核CPU负载不均衡问题

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

昨晚和一位读者朋友讨论了一个问题:在一台多核 CPU 的 Web 服务器上,存在负载不均衡问题,其中 CPU0 的负载明显高于其它 CPUx,进一步调查表明 PHP-FPM 的嫌疑很大。话说以前我曾经记录过软中断导致过类似的问题,但是本例中...

EAV or JSON-IT技术资讯
JSON

EAV or JSON

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

MongoDB 之类的 NoSQL 之所以流行,很大程度上取决于相对自由的 schema 设计,不管数据量多大,可以随时在线上环境添加新字段来保存新数据,而这种能力恰恰是传统的关系数据库所欠缺的,不过别担心,传统关系数据库有自己的应对之道。...

如何正确发布PHP代码-IT技术资讯
php

如何正确发布PHP代码

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

几乎每一个 PHP 程序员都发布过代码,可能是通过 ftp 或者 rsync 同步的,也可能是通过 svn 或者 git 更新的。一个活跃的项目可能每天都要发布若干次代码,但是现实却是很少有人注意其中的细节,实际上这里面有好多坑,很可能你就...

PostgreSQL Partial Index-IT技术资讯
PostgreSQL

PostgreSQL Partial Index

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

说起「Partial Index」,估计很多人没听说过。在 PostgreSQL 中,它的含义是指:通过查询条件索引选定的行,而不是所有的行。虽然 MySQL 也有此概念,但是其更接近前缀索引的含义:比如你想索引一个 VARCHAR(255...

记几个常见的Laravel报错-IT技术资讯
php

记几个常见的Laravel报错

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

我已经用了一段时间的 Laravel 框架了,期间遇到了不少问题,有一些调试起来着实不太容易,本文筛选出几个,如果能让大家少走一些弯路,那我就算没白写。   报错:「Can’t swap PDO instance while wi...

被黑了-IT技术资讯
安全

被黑了

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

话说从前些天开始,我的某台服务器不时会出现外网访问响应速度变慢的情况,不过内网访问倒是一直正常。因为并不是核心服务器,所以一开始我便忽略了监控报警,但是随着服务器的可用性越来越差,我不得不腾出手来看看到底发生了什么。   既然是网...

浅谈CLOSE_WAIT-IT技术资讯
TCP

浅谈CLOSE_WAIT

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

TCP 有很多连接状态,每一个都够聊十块钱儿的,比如我们以前讨论过 TIME_WAIT 和 FIN_WAIT1,最近时不时听人提起 CLOSE_WAIT,感觉有必要梳理一下。   所谓 CLOSE_WAIT,借用某位大牛的话来说应...

PostgreSQL

PgBouncer in action

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

原本我是 MySQL 的忠实粉丝,后来命运使然,接手了一个 PostgreSQL 项目,一边用一边学,遇到了不少问题,本文说说其中的连接池问题。   有人曾经问我「为什么 PostgreSQL 没有 MySQL 流行呢?」,我说是...

php

Dependency Injection 和 Service Locator

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

说起 IoC,其实是 Inversion of Control 的缩写,翻译成中文叫控制反转,不得不说这个名字起得让人丈二和尚摸不着头脑,实际上简而言之它的意思是说对象之间难免会有各种各样的依赖关系,如果我们的代码直接依赖于具体的实现,那么...

php

聊聊代码的割裂感

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

早些年,我特别喜欢下围棋,每天都会下几盘。那时候日本围棋不仅高手林立,而且风格迥异,比如:小林光一的地铁流,武宫正树的宇宙流等等,不过我最喜欢的棋手当属大竹英雄,他下棋时追求美感,如果棋形不漂亮,那么他宁可认输也绝不玷污棋盘。后来,我成为了...

手把手教你用Strace诊断问题-IT技术资讯
Linux

手把手教你用Strace诊断问题

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

早些年,如果你知道有个 strace 命令,就很牛了,而现在大家基本都知道 strace 了,如果你遇到性能问题求助别人,十有八九会建议你用 strace 挂上去看看,不过当你挂上去了,看着满屏翻滚的字符,却十有八九看不出个所以然。本文通过...

Unicode and UTF-8-IT技术资讯
php

Unicode and UTF-8

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

绝大多数程序员都听说过 Unicode 和 UTF-8,但是清楚它们之间关系的人就不多了,关于这个问题,与其苍白的陈述它们的概念,不如举例子说明来得自然。   我前些天碰到一个需求:随机生成几个汉字。原本我便对编码之类的问题发怵,...

手把手教你用Sar诊断问题-IT技术资讯
Linux

手把手教你用Sar诊断问题

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

如今各种高大上的监控工具早已经让人目不暇接了,但是熟悉基础的 Linux 监控命令依然是必要的,就好比 IDE 再好用,我们也得学会 vi 或者 emacs 才行。如果让我选一个必须学会的 Linux 监控命令的话,那么我想我一定会选 sa...

实战ElasticStack-IT技术资讯
ElasticSearch

实战ElasticStack

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

我对 ElasticStack 可以说是既熟悉又陌生,说熟悉是因为很久以前就已经开始使用 ELK 来分析日志了,说陌生是因为以前的 ELK 环境都是同事搭建的,我主要是看看 Kibana 面板而已。随着 V5 的发布,ELK 全面进化为 E...

php

谈谈PHP的Reload操作

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

通常修改了 PHP 的配置后,为了让修改生效会执行 reload,而不是 restart,因为有很多前辈告诫过我们,reload 能保证整个过程的平滑性,所谓平滑性指的是在 reload 的过程中,旧的进程在处理完当前请求前不会提前终止。很...

cron

如何正确设置CRON定时任务

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

相信很多人看了标题后都会纳闷:设置 CRON 定时任务有什么难的?不过请相信我,正确设置 CRON 真的不是一件简单的事情!各位看官不妨听我慢慢道来。   关于 CRON,出镜率最高的一个问题莫过于:为什么手动执行一切正常,放到 ...

SQL里是否可以使用JOIN-IT技术资讯
SQL

SQL里是否可以使用JOIN

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

很多公司都禁止程序员在 SQL 中使用 JOIN,至于原因则出奇的一致:用 JOIN 慢。不过我从没见过谁来论证为什么用 JOIN 慢,结果这个人云亦云的结论越传越广,让我觉得是时候来讨论一下这个看似正确的结论了。   举个例子:...

Linux

手把手教你用Dropwatch诊断问题

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

老实说,Dropwatch 并不是什么新鲜玩意,很多年前霸爷就专门撰文介绍过它,通过它可以大概找出系统为什么会丢包,其原理就是跟踪 kfree_skb 的调用行为。不过虽然很多人知道它的存在,但是却并不知道如何具体使用它,所以我写下了这篇文...

自动打Tag杂记-IT技术资讯
Python

自动打Tag杂记

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

给一段文字标记 Tag 是一个很常见的需求,比如我每篇博客下面都有对应的 Tag,不过一般说来,Tag 是数据录入者人为手动添加的,但是对大量用户产生的数据而言,我们不能指望他们能够主动添加合适的 Tag,于是乎就产生了这样的需求:自动打 ...

php

Laravel专供:实现Schemaless

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

之所以要实现 Schemaless,主要是因为在线 DDL 有很多痛点,关于这一点,我在以前已经写过文章,没看过的不妨看看「史上最LOW的在线DDL解决方案」,不过那篇文章主要以介绍为主,并没有涉及具体的实现,所以我写了一个 Laravel...

ihh

真假百度蜘蛛的甄别

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

虽然百度的口碑并不好,但是不可否认的是,它一直是中文搜索中的霸主,所以对大多数中小型商业公司而言,都对百度蜘蛛的抓取行为予以放行,不过还有很多非法的蜘蛛,它们会通过 User-Agent 把自己伪装成百度蜘蛛,此时如果单纯以 User-Ag...

使用Mitmproxy分析接口-IT技术资讯
ihh

使用Mitmproxy分析接口

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

对于服务端开发者来说,通过抓包分析接口是必备技能之一,常见工具有 Charles 和 Fiddler 等等,不过 Charles 是收费的,Fiddler 虽然是免费的,但是其 Mac 版还不稳定,本文使用另一个工具:Mitmproxy。 ...

如何抓取汽车之家的车型库-IT技术资讯
Python

如何抓取汽车之家的车型库

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

实际上,关于「如何抓取汽车之家的车型库」,我已经在「使用 Mitmproxy 分析接口」一文中给出了方法,不过那篇文章里讲的是利用 API 接口来抓取数据,一般来说,因为接口不会频繁改动,相对 WEB 页面而言更稳定,所以通常这是数据抓取的...