Mac 10.10上编译 Bochs

想开始写操作系统了,但是卡在Mac上编译Bochs上,看了几个issue,还是没有头绪, 因为Apple已经放弃了x11和carbon(有兴趣可以看这文档), 终于找到了如下的方法: 第一步,安装SDL库 可以使用HomeBrew的方式: 阅读全文>> [阅读全文]

MySQL的一个坑

*PS:其实也不是坑吧,主要是之前没有关注这个东西* 首先看一下坑的由来: 1. 昨天运营那边反馈过来一个问题,就是手机端商品存在重复.然后开始排查,手机端的商品总数和PC上是一至的,但是手机端存在重复的商品,就意味着有的商品没有显示.已开始以为是缓存问题,在更新select的时侯,阿润老师的排序crond更新了排名,导致问题,但是后来取消了缓存,发现问题还在. 2. 最后问题定为在数据库上,我执行了如下的sql语句(...<... [阅读全文]

蘑菇街的101天 — 团购重构

*PS:很长时间没有写博了.主要原因就是最近一个人在支撑蘑菇街的团购业务,分身乏术.虽然没有写出分享,但还是有个人的笔记.* 相对而言,博客的价值在于分享,但是由于很多的时侯,分享依赖的业务场景不同,所以很多的时侯并不适用,亦或者现场恢复困难,写出来的东西没有具体的实例,感觉不太稳妥. 最简单的一个就是关于innoDB索引计算的一个case.排查过程不说了,直接上结果,就是mysql在进行索引消耗计算的时侯存在一定的误差...阅读全... [阅读全文]

一次线上debug的过程

事情的缘由是这样的,很久之前,我写了一个爬虫,然后爬虫幸福的运行在服务器上,突然有一天,我收到一份邮件,上面写着爬虫失效,然后 肯定先是ssh上去看看进程. 先top一下看状况,一切良好,java进程的运行比较平稳,所以排除了死循环的错误,或者是NPE退出的错误. 然后线上使用**jstack**查了下虚拟机栈,然后就发现了如下一段奇葩的栈: ``` "pool-6-thread-629" prio=10 ti...<0... [阅读全文]

Java,Go,NodeJS性能测试

**PS: 项目地址:[github](https://github.com/MikeCoder/PerformanceTest),这边有所有的代码** ###写在文章之前:  rpctest文件夹下为测试程序,使用说明见文档,改写自网上淘宝的性能测试用代码  go java nodejs文件夹下为三个不同版本的rpc echo server.  线下测试看,go语言的效率和Nodejs差不多,java因... [阅读全文]

关于容器的新的看法

关于Java中的容器,大家因该第一个想到的是Tomcat,毕竟这应该是学习Java中的第一个容器(如果玩Java Web的话)。在经历了第一个项目和第二个项目之后,我才开始体会到容器的 必要性。 在此之前,我之前的所有的Java程序都是指定main函数的runnable jar package。这样做确实简单。而且快捷。但是有一个很明显的缺点,就是你无法控制他的生命周期。举一个很 简单的例子,如果程序挂了,除了运气比较好去to... [阅读全文]

第一个任务 -- 店铺爬虫

关于这个项目,首先需求比较简单.或者说单一吧.唯一要做的就是将PHP传来的任务给做完.没有多余的爬取,只需要爬取一个页面上的商品描述和商店的描述.唯一好玩的一点就是需要在一周时间内 爬取180万url左右的数据.同时还要考虑对面的防刷设置.分配给的测试资源有两台16核32G的服务器. 很显然.爬虫的关键在于VPS的分配,因为一个ip访问某个网站的频率有限制.在有限的时间,要想爬取更多的网页,就需要多个vps,要多少呢.理论上,服..... [阅读全文]

阅读Redis源码(三) -- redis通信协议与事件驱动

在redis中,关于事件驱动框架的代码集中在ae.h/ae.c中.作者也在头部设置了介绍:a simple event-driven programming library. 这个框架其实很简单,核心就是一个消息 队列,同时只有一个线程负责对其进行处理,这里面的调度思想,还是简单的优先级队列,文件操作优先级永远高于时间操作.而且任务之间并不会进行抢占. 具体执行过程,可以参照如下干特图: ``` time -------...&... [阅读全文]

阅读Redis源码(二) -- 数据库及持久化策略

之前的一篇文章写了关于Redis的字典数据结构,但是,他并不是与我们直接交互的.因为我们在进行添加字段的时候,往往需要添加过期值,这一点我们在字典数据结构中没有能够得到体现. 所以,我们需要关注另外一个数据结构,**redisDb**.即Redis的数据库储存,在redis.h中,该结构体的定义如下. ``` typedef struct redisDb { dict *dict; /... [阅读全文]

阅读Redis源码(一) -- 基本数据结构

Redis 和其他很多 key-value 数据库的不同之处在于, Redis 不仅支持简单的字符串键值对, 它还提供了一系列数据结构类型值, 比如列表、哈希、集合和有序集, 并在这些数据结构类型上定义了一套强大的 API 。 通过对不同类型的值进行操作, Redis 可以很轻易地完成其他只支持字符串键值对的 key-value 数据库很难(或者无法)完成的任务。 在 Redis 的内部, 数据结构类型值由高效的数据结构和算法进行支... [阅读全文]