- 博客(128)
- 收藏
- 关注
原创 延迟与吞吐
对于一个request-response类型的在线服务来说,延迟和吞吐量是至关重要的性能指标。 延迟:从客户端来看,就是从发送请求到接收响应的整体耗时,包括:请求的网络耗时,请求在服务端的处理耗时以及响应的网络耗时。 吞吐量:服务在一定的并发下,每秒可以处理的请求数。 延迟和吞吐天生是矛盾的。对于服务来说,请求的处理是一个排队系统,且排队可能发生在请求路径上的任何环节,比如:请求的TCP包在路由器
2017-06-15 18:43:21
4558
1
原创 redis-infq——将infQ集成到redis
infQ以及对应定制化的redis去年就开发完了,现在放出来供大家把玩一下。(infQ的介绍见 infQ——不受限于内存的队列)
2016-11-30 19:01:39
2840
原创 infQ——不受限于内存的队列
本文设计了一个不受限于内存的队列。目标是在保证性能的情况下,提供无限容量(受限于磁盘,代价很低),用于替换掉redis本身的list结构,避免在队列场景中,由于消费能力不够,导致的拥堵。
2016-02-29 18:25:37
5942
1
原创 redis做RDB时请求超时case
排查redis做RDB时请求超时的case,介绍THP(Transparent Huge Pages)的影响
2015-06-24 18:53:34
6419
原创 fql——File Query Language
用python实现了一门小语言FQL,用类似SQL的语法,查询文件的相关信息。希望大家可以玩的开心
2015-01-23 23:18:12
4517
原创 FlatBuffers vs Protocol Buffers
介绍FlatBuffer,并和ProtocolBuffer做了简单的性能对比
2015-01-23 00:04:05
20974
1
原创 基于vim搭建Go开发环境
Go作为一门新兴语言,发展的如火如荼啊。不过,目前还没有一个成熟的IDE。本文介绍基于vim搭建Go的开发环境,保证在具有vim的快感的同时,又支持Go的特性。
2014-11-04 14:21:59
19113
1
原创 mod_wsgi + pymssql访问SQL Server阻塞
mod_wsgi + pymssql访问SQL Server阻塞的解决方案
2014-06-16 12:41:06
2726
1
原创 Thrift in python
Thrift官网上的文档很少,从网上搜到的也大都千篇一律,即使是《Thrift: the missing guide》对如何构建python的server和client也没有进行详尽讲述。本博特意看了下thrift提供的python lib,对书写相应的server和client进行了简单的总结,如有错误,欢迎大家指正。1. Thrift network stack Transport Trans
2014-04-02 16:07:08
15389
原创 MAC下thrift安装
按照thrift官网上的文档进行安装,步骤如下: 1. 安装boost ./bootstrap.sh —prefix=PATH_TO_BOOSTsudo ./b2 threading=multi address-model=64 variant=release stage install 2. 安装libevent./configure —prefix=PATH_TO_LIBEVENTmake
2014-03-26 23:40:18
8822
原创 智能指针
智能指针就是存储指向堆上分配的对象的指针,行为上与C++的原生指针基本一致,区别是不需要管理对象的销毁。智能指针可以选择在适当的时机销毁对象,可以大幅降低空悬指针和野指针等错误。所有智能指针如果是非类成员,一般都是栈上分配的对象。这里介绍boost库的智能指针,主要有:1. scoped_ptr 概念上讲,智能指针意味着持有它所指向对象的拥有权,有责任在该对象不在需要时对其销毁。scoped_pt
2013-07-18 14:48:04
2428
1
原创 TCMalloc小记
周末抽空看了一下tcmalloc,了解了个大概。下面记录一下。一. 原理 tcmalloc就是一个内存分配器,管理堆内存,主要影响malloc和free,用于降低频繁分配、释放内存造成的性能损耗,并且有效地控制内存碎片。glibc中的内存分配器是ptmalloc2,tcmalloc号称要比它快。一次malloc和free操作,ptmalloc需要300ns,而tcmalloc只要50ns。同时tc
2013-07-16 08:53:59
52601
1
原创 Linux性能监控(1)
linux性能监控,就是要监控系统的各个子系统是否正常。linux主要的子系统包括:CPU、Memory、IO和Network,它们之间相互依赖,一个出问题可能会影响其他的。比如:网卡流量很大会导致更多的CPU开销,因为频繁的响应中断执行协议栈。 性能监控时,首先要确定应用的类型,然后对症下药,可以将应用分成: CPU密集型:CPU开销很高,比如大量的CPU运算
2012-11-19 23:48:36
10189
1
原创 构造文法时表达式中算符优先级的问题
文法用于描述一种语言,语言中包含多个句子,句子又是由表达式组成的。多个原子表达式(不可再分的表达式,比如:a+b,c*d,-a等)和操作符或者括号一起又可以组成复合表达式(比如:a+b*c,a*(b+c)等)。在书写表达式文法时需要注意算符优先级问题,比如:四则运算中要优先计算乘除,然后才是加减,而被括号括起的表达式具有更高的优先级。解决优先级问题可以采取从优先级低的算符到优先级高的算符的顺序构造
2012-10-31 10:16:16
5120
原创 程序的前世今生——编译、链接和加载简介
本篇文章是组内分享的小结,主要介绍源代码 -> 可执行程序 -> 执行这一过程。也就是源代码是如何转化为可执行程序,然后可执行程序又是如何执行的。在用java或python时,只需要java ClsName或者python a.py就可以执行相应的程序,实际上它们都是依托于底层的虚拟机。本文主要介绍的是操作系统级别的连接、加载、执行等,而不是虚拟机语言的执行。这里只对链接、加载进行一个简介,详细内
2012-10-28 23:46:24
6452
原创 C语言字符串分割——strtok
之前遇到字符串分割的需求时,都是自己去实现,最近发现其实c标准库已经提供了这个功能。对标准库还是不熟悉啊,导致重复造车轮了,有必要把标准库看一下。。。 先看一下之前自己实现的字符串分割函数:void strsplit(const char *str, char *delim, void (*visitor)(const char *, int, int)){
2012-10-18 11:37:31
23272
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人