从一个问题开始谈秒杀业务场景

这个首先就是从一个知乎提问开始的。有一天我看到这么一个提问: 然后,排名第一的答案就是一个静态页面,一个告知用户当前访问人数过多,请稍后再试。当然,这在很多人看来都是一个笑话。不过,对于一个之前做过秒杀业务的人来说。这真的是一段非常精妙的代码,某种角度上来说,这可以解决90%的秒杀场景。不过,用户体验太差,尤其是那些看到 console 有信息就会高潮的人来说。 所以,这边就先抛砖,来讲下我对秒杀业务的理解。 对于秒杀来说,它和传统的商城系统有着本质的区别: 低廉价格 大幅推广 瞬时售空 一般是定时上架 流量时间短、瞬时并发量高 对于技术人员来说,我们其实常常会把注意力着重的放在第五点上,就是对于流量的处理。 其实,在我的观点里,初期就将全部的精力放在第五点的优化上,这并不是... [阅读全文]

Ubuntu 14.04 添加侧边栏启动图标

5月没写博客。于是,水一波吧。。。。这个月本来是在做一个安卓 APP 的开发,等结束了总结下吧。 有朋友遇到个问题,就是 Ubuntu 上下载使用火狐之后,左侧启动栏上的图标很难看。因为系统无法识别这个新启动的应用是属于什么类型的,它的启动图标是什么。 网上有其他的教程,比如这个:Ubuntu为eclipse添加快捷启动。 基本的思路确实是这样,因为 Unity 或者其他的 X-windows 都会基于 /usr/share/applications 中的启动项来进行图标的配置。 不过这样做有个弊端。就是如果将你下载的软件存放在个人目录下。比如 home,而在 applications 里面添加了启动器,那么就会有可能,其他用户无法使用这个 launcher。如果你说你的电脑上就你一个用户。那么,就不是问题。 而且,作为一个会使用和创造工... [阅读全文]

一次 MySQL 调优经历

最近有一个朋友遇到一个问题,就是突然之间网站的响应时间变成了秒级,而且 MySQL 占用了大量的 CPU 资源。具体如下图: CPU 资源占用: 响应时间: 可以看到这一个很明显的异常值。所以,我就开始排查。一切都是常规的思路,连上服务器,然后看看当前都是些什么任务。 当前任务: 可以看到,基本上所有的 query 都是在等待表锁。然后查了下这张表的表结构,还有 select 和 update 的执行情况。 表结构: SELECT 语句执行情况: 以 SELECT x FR... [阅读全文]

Hexo 博客加密插件简述

缘由 众所周知,Hexo 是一个很赞的静态博客系统。但是,他有一个很大的缺陷,就是无法对文章进行加密处理。比如,我想对一篇文章做权限控制,例如提问回答可见等等。所以,这就产生了一个这样的需求。 虽然我不是一个 Hexo 用户,但是,看到这样的知乎问答: 我只想说,不想一想实现就直接说不可以的,都不是程序员,一点创造性都没有。顺便吐槽下知乎这个社交平台。 说正事。这个插件的主要用途就是为博客加密,使用方法很简单,这边就不详细描述,因为还有一些没有完善的地方,先期的文档在这:GITHUB 原理 其实说穿了,也很简单。因为 Hexo 是纯静态博客系统,所以不可能采用后台密码校验的方式进行处理。所以这个校验就落到了前端上。但是,如果直接 js 进行密码校验,这就好像,我把钥匙放在钥匙孔里,然后... [阅读全文]

Hexo 标签云插件

现已升级至2.0.*版本,请移步 Hexo-Tag-Cloud 查看具体安装方法。 按照常理,首先要说明为什么要写这个东西。最主要的原因是,我在看同学博客的时候,被大部分的标签云恶心到了。 要么就是一个静态的列表,要么就是一个不知道怎么停下来的标签球。为表愤怒,我就写了这个插件。 求 STAR Hexo-Tag-Cloud 使用方法 在 hexo 博客的根目录找到 package.json 这个文件夹,添加如下的依赖: { "name": "hexo-site", "version": "0.0.0", "private": true, "hexo": { "version": "3.2.0" }, "dependenci... [阅读全文]

在 Dingo/Api 中实现自定义错误回复

目前在用 Laravel 做一个 APP 后台的开发。因为都是 API,所以需要定义个通用的通信协议。这个比较好解决,而且我之前的思路也都有,具体可以看这篇:设计自认为优雅的接口(上)。这里就不再废话了。 考虑到之后的通用性和可维护性,我们决定使用 Dingo/Api 这个插件进行 API 的管理,开发。所以,理所当然的遇到了这么一个应用场景。 这是使用 Dingo/Api 之后,标准的返回值: url: http://www.ehs.com/api/test/index { "status_code": 100, "message": "成功", "timestamp": 1457267879, "data": "eyJmZmYiOiJmZmYifQ==", "sign": "d550edf4061cd60a404cd18350a1dbf299e4e... [阅读全文]