自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

架构师专栏

专注于后台技术

  • 博客(128)
  • 收藏
  • 关注

原创 高可用架构经验

之前给组内同学分享了高可用方面的一些经验,具体见slideshare

2017-07-18 17:09:31 2391

原创 延迟与吞吐

对于一个request-response类型的在线服务来说,延迟和吞吐量是至关重要的性能指标。 延迟:从客户端来看,就是从发送请求到接收响应的整体耗时,包括:请求的网络耗时,请求在服务端的处理耗时以及响应的网络耗时。 吞吐量:服务在一定的并发下,每秒可以处理的请求数。 延迟和吞吐天生是矛盾的。对于服务来说,请求的处理是一个排队系统,且排队可能发生在请求路径上的任何环节,比如:请求的TCP包在路由器

2017-06-15 18:43:21 4152 1

原创 redis-infq——将infQ集成到redis

infQ以及对应定制化的redis去年就开发完了,现在放出来供大家把玩一下。(infQ的介绍见 infQ——不受限于内存的队列)

2016-11-30 19:01:39 2733

原创 swoole IO处理模型

介绍swoole网络框架中IO处理模型、流程及一些细节

2016-11-15 12:41:40 5999

原创 Java Agent初探——动态修改代码

简单试验了一下java agent

2016-03-03 18:16:51 17936 1

原创 infQ——不受限于内存的队列

本文设计了一个不受限于内存的队列。目标是在保证性能的情况下,提供无限容量(受限于磁盘,代价很低),用于替换掉redis本身的list结构,避免在队列场景中,由于消费能力不够,导致的拥堵。

2016-02-29 18:25:37 5586 1

原创 Redis EXISTS命令耗时过长case排查

介绍线上redis,非预期的Expire耗时过长的case排查

2016-01-19 16:47:23 19517

原创 redis源码分析(8)——replication

从源码级别介绍redis的主从同步的实现机制

2015-07-31 11:48:18 5378 1

原创 go内存泄露case

介绍一个golang内存泄露case的排查,go的gc、profile等

2015-07-18 23:25:14 16179

原创 localtime死锁——多线程下fork子进程

介绍localtime非信号安全,并且在多线程下,fork子进程出现死锁的原因

2015-07-17 16:20:57 11257 1

原创 redis做RDB时请求超时case

排查redis做RDB时请求超时的case,介绍THP(Transparent Huge Pages)的影响

2015-06-24 18:53:34 6372

原创 redis源码分析(7)——rdb

介绍redis持久化rdb的实现细节

2015-04-15 16:23:30 7674

原创 redis3.0深入详解(1)

从源码层面介绍redis3.0相对于2.8的改进

2015-04-10 17:24:06 11360 4

原创 redis源码分析(6)——aof rewrite

介绍redis的aof rewirte代码实现

2015-03-23 11:19:23 8108

原创 redis源码分析(5)——aof

介绍redis持久化机制——aof的实现

2015-03-17 11:50:37 5224

原创 redis源码分析(4)——发送响应内容

本篇介绍redis发送响应内容的过程

2015-01-30 16:25:44 5515 7

原创 fql——File Query Language

用python实现了一门小语言FQL,用类似SQL的语法,查询文件的相关信息。希望大家可以玩的开心

2015-01-23 23:18:12 4393

原创 redis源码分析(3)——请求处理

从源码分析,redis请求的处理过程

2015-01-23 12:23:05 18292

原创 FlatBuffers vs Protocol Buffers

介绍FlatBuffer,并和ProtocolBuffer做了简单的性能对比

2015-01-23 00:04:05 20775 1

原创 redis源码分析(2)——事件循环

redis源码分析,介绍事件循环的实现

2015-01-14 21:51:33 5093

原创 redis源码分析(1)——初始化

redis源码分析,介绍redis的初始化及启动过程

2015-01-13 23:05:16 5385

原创 基于vim搭建Go开发环境

Go作为一门新兴语言,发展的如火如荼啊。不过,目前还没有一个成熟的IDE。本文介绍基于vim搭建Go的开发环境,保证在具有vim的快感的同时,又支持Go的特性。

2014-11-04 14:21:59 19037 3

原创 Mac下/usr/include缺失

如何解决mac下/usr/include不存在的问题

2014-10-31 00:26:09 14792 1

原创 可恢复的安全rm

日常工作中,我们经常遇到rm删除重要文件的窘境,本文就时介绍如何摆脱这种窘境,让大家工作更舒爽

2014-10-23 11:59:18 4112 1

原创 LevelDB源码阅读(1)—— SSTable的生成

介绍LevelDB的SSTable文件格式,创建过程

2014-10-22 16:09:18 3356

原创 mod_wsgi + pymssql访问SQL Server阻塞

mod_wsgi + pymssql访问SQL Server阻塞的解决方案

2014-06-16 12:41:06 2692 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 15319 2

原创 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 8767

原创 BigTable读书笔记

对BigTable的原理、实现、优化进行简介

2014-03-04 12:05:41 3393

原创 MVCC浅析

介绍MVCC的原理以及简单介绍下MySQL如何实现MVCC

2014-01-10 21:01:23 45918 14

原创 Linux下进程的文件访问权限

介绍linux下进程的文件访问权限

2013-08-31 22:05:21 7158

原创 Java和C++中多态的实现方式

简要描述C++与java多态实现机制

2013-08-27 00:28:34 6752

原创 理解事务——原子性、一致性、隔离性和持久性

介绍事务的ACID特性

2013-08-17 23:50:37 68962 7

原创 Linux下实现C++类的动态链接

介绍动态链接库的C API,C++类的动态链接以及相关的坑

2013-08-17 16:01:30 6202 2

原创 智能指针

智能指针就是存储指向堆上分配的对象的指针,行为上与C++的原生指针基本一致,区别是不需要管理对象的销毁。智能指针可以选择在适当的时机销毁对象,可以大幅降低空悬指针和野指针等错误。所有智能指针如果是非类成员,一般都是栈上分配的对象。这里介绍boost库的智能指针,主要有:1. scoped_ptr 概念上讲,智能指针意味着持有它所指向对象的拥有权,有责任在该对象不在需要时对其销毁。scoped_pt

2013-07-18 14:48:04 2380 1

原创 TCMalloc小记

周末抽空看了一下tcmalloc,了解了个大概。下面记录一下。一. 原理 tcmalloc就是一个内存分配器,管理堆内存,主要影响malloc和free,用于降低频繁分配、释放内存造成的性能损耗,并且有效地控制内存碎片。glibc中的内存分配器是ptmalloc2,tcmalloc号称要比它快。一次malloc和free操作,ptmalloc需要300ns,而tcmalloc只要50ns。同时tc

2013-07-16 08:53:59 52419 2

原创 Linux性能监控(1)

linux性能监控,就是要监控系统的各个子系统是否正常。linux主要的子系统包括:CPU、Memory、IO和Network,它们之间相互依赖,一个出问题可能会影响其他的。比如:网卡流量很大会导致更多的CPU开销,因为频繁的响应中断执行协议栈。        性能监控时,首先要确定应用的类型,然后对症下药,可以将应用分成:        CPU密集型:CPU开销很高,比如大量的CPU运算

2012-11-19 23:48:36 10109 3

原创 构造文法时表达式中算符优先级的问题

文法用于描述一种语言,语言中包含多个句子,句子又是由表达式组成的。多个原子表达式(不可再分的表达式,比如:a+b,c*d,-a等)和操作符或者括号一起又可以组成复合表达式(比如:a+b*c,a*(b+c)等)。在书写表达式文法时需要注意算符优先级问题,比如:四则运算中要优先计算乘除,然后才是加减,而被括号括起的表达式具有更高的优先级。解决优先级问题可以采取从优先级低的算符到优先级高的算符的顺序构造

2012-10-31 10:16:16 4995

原创 程序的前世今生——编译、链接和加载简介

本篇文章是组内分享的小结,主要介绍源代码 -> 可执行程序 -> 执行这一过程。也就是源代码是如何转化为可执行程序,然后可执行程序又是如何执行的。在用java或python时,只需要java ClsName或者python a.py就可以执行相应的程序,实际上它们都是依托于底层的虚拟机。本文主要介绍的是操作系统级别的连接、加载、执行等,而不是虚拟机语言的执行。这里只对链接、加载进行一个简介,详细内

2012-10-28 23:46:24 6353

原创 C语言字符串分割——strtok

之前遇到字符串分割的需求时,都是自己去实现,最近发现其实c标准库已经提供了这个功能。对标准库还是不熟悉啊,导致重复造车轮了,有必要把标准库看一下。。。        先看一下之前自己实现的字符串分割函数:void strsplit(const char *str, char *delim, void (*visitor)(const char *, int, int)){

2012-10-18 11:37:31 23154 10

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除