自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

羽飞的专栏

不以物喜不以己悲

原创 TIPS Raft Committing entries from previous terms

本文是我对与Raft论文3.6.2节的理解。写这篇文章的原因是因为理解这段内容确实花了一些功夫。 面向对象:懂得Raft,同时也对3.6.2节有疑问,并且看了“参考”这里面几个之后还不是很清晰的同学。 NOTE: 3.6.2节是《CONSENSUS: BRIDGING THEORY AND PR...

2020-06-03 21:48:07 42 0

原创 TIP HBase 列 family和qualifier

HBase 列 family和qualifier 网上很多讲HBase的family和qualifier的文章,有不少说family是一级列,qualifier是二级列(或者说相当于)。 我对它们的理解是:qualifier是列,family就是列族,没有“一级”和“二级”的分别。 之所以出现fa...

2019-11-15 10:35:58 90 0

原创 数据库分布式事务2PC设计方案

数据库分布式事务2PC设计方案 数据库事务的概念 数据库事务通常指对数据库进行读或写的一个操作序列。 1、为数据库操作提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。 2、当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法...

2019-11-08 21:04:14 131 0

原创 core文件中查看切换出去协程的栈信息

使用协程时,如何在core文件中查看swapout的协程栈信息 NOTE core文件中查看切换出去协程栈信息的方法,直接使用请跳到"实现"这一节. 背景 最近开始流行使用协程来更进一步提升C/C++程序的性能,可能是受go语言的影响。据说go是天生支持协程的。协程切换时直...

2019-09-20 12:56:20 127 0

原创 尝试使用Chandy-Lamport方法设计分布式数据库快照

尝试使用Chandy-Lamport方法设计分布式数据库快照 C-L理论 根据Chandy-Lamport论文中的说明,分布式系统中节点间通过消息通道传递消息,消息按照顺序发送和接收。 某个节点做过快照后,通过消息通道发送不影响系统状态的消息marker通知其它节点做快照。 一个节点接收到mark...

2019-08-26 12:42:04 74 0

原创 Percolator 2PC模型

介绍 Percolator 用于Google的检索系统。Google爬取的网页建立的索引,通过Percolator系统建立索引。 Google的检索系统维护了上千台机器,有数十PB数据。 Percolator优化了增量处理(incremental processing)的问题: 很多网页是已...

2019-08-21 19:32:52 191 0

原创 分布式快照

这篇论文是Chandy和Lamport大神的作品,理论性非常强。如果想设计分布式死锁检测算法、分布式数据库全局快照或者判断分布式系统是否处于某个稳定状态(stable),可以深入阅读。原文更精彩。

2019-08-12 16:24:48 115 0

原创 PolarFS的ParallelRaft

PolarFS的ParallelRaft 简介 本文摘自阿里在PVLDB的一篇论文《PolarFS: An Ultra-low Latency and Failure Resilient Distributed File System for Shared Storage Cloud Data...

2019-07-31 13:23:19 493 4

原创 TIP linux下hook memset函数

linux下hook memset函数 memset在libc.so中。hook可以帮助我们查找一些问题,比如hook memset可以根据某些memset参数特征记录一些信息,可以记录下调用栈信息。 hook的代码: #define _GNU_SOURCE #include <stdlib...

2019-07-31 11:45:42 108 0

原创 F1 在线异步执行schema change

F1 在线异步执行schema change 论文《Online, Asynchronous Schema Change in F1》 总结 对,先来个总结。 F1拥有几百个无状态的F1 server,其内存中会缓存schema信息。不能做到同时让所有的F1 server同时应用某个sch...

2019-07-18 14:17:30 172 0

原创 A Critique of ANSI SQL Isolation Levels

A Critique of ANSI SQL Isolation Levels NOTE 本篇摘自论文,理论性很强,本人英语水平比较低,想要对事务隔离做深入了解的人阅读原文更好。 介绍 不同的事务隔离级别可以支持不同程度的事务并发度。 ANSI/ISO SQL-92定义了四种隔离级...

2019-07-15 11:57:58 413 0

翻译 页错误处理 Page Fault Handling

原文链接: http://www.informit.com/articles/article.aspx?p=29961&amp;seqNum=5 当一个进程要访问一个虚拟页,而这个虚拟页对应的PTE不在页表中, 或者这个PTE在某种方式上禁止访问,比如这页不存在或者访问模式跟这页的访问权...

2019-01-30 14:13:17 1151 0

原创 BUG FIX:进程退出时hang住

问题描述 进程kill后迟迟不退出,pstack看到一直在等锁: Thread 1 (Thread 0x2b3db1e9d900 (LWP 83917)): #0 0x00002b3db6193f4d in __lll_lock_wait () from /lib64/libpthread...

2018-10-26 11:01:48 509 0

翻译 用户空间的SystemTap探测是怎么工作的

这篇文章介绍SystemTap在用户层的实现原理。对文档进行了部分摘抄翻译,原文易懂,建议阅读原文:How SystemTap Userspace Probes Work。另外介绍另一篇文档:动态追踪技术漫谈 在给Bitcoin增加SystemTap时,对它的实现感到很疑惑,还有这会增加...

2018-08-01 17:02:58 554 0

原创 munmap参数错误导致进程空间异常

munmap传入错误参数len,系统不会帮忙校验有效性,而是能删则删,把[addr,addr+len]范围内的进程空间全部移除掉,不管中间是否有空洞。

2018-07-19 12:57:38 610 0

原创 SLUB 代码笔记

数据结构 主要包含两个缓存对象(CPU的kmem_cache_cpu和内存节点numa的kmem_cache_node),还有一个描述本身slab数据的kmem_cache。 CPU缓存 struct kmem_cache_cpu { void **freelist; ...

2018-07-17 13:20:52 425 0

原创 TIP: Unable to initialize gtk, is DISPLAY set properly?

除了网上提供的一些常见方法,使用xming时可能还有一种原因,就是xming拒绝了主机的转发请求,需要在xming的配置文件X0.hosts中增加主机名称: localhost 10.1.241.70 localhost是本来默认有的。 X0.hosts与Xming.exe在同一个目录。...

2018-05-10 17:10:05 1833 0

原创 python pkg_resource.DistributionNotFound: ReviewBoard

httpd部署ReviewBoard报错: DistributionNotFound: ReviewBoard 网上查到很多解决方法,但是都不管用。自己查pkg_resources文档,发现pkg_resources文档说需要distribution需要是egg包,但是我用pip in...

2018-02-08 11:42:10 317 0

原创 CBW/CWDE/CDQE扩展指令

CBW/CWDE/CDQE扩展指令使用符号扩展的方式对源操作数进行双倍扩展。CBW指令(将字节转换到字)复制源操作数的符号位(bit 7)到AH寄存器的所有位。CWDE(将字转换为双字)指令复制AX寄存器的符号位(bit 15)到EAX寄存器的高16位。 CBW和CWDE使用同一个操作数。CBW...

2017-11-02 16:38:01 3986 0

翻译 Translation Lookaside Buffer (TLB)

CPU每次访问虚拟内存,虚拟地址都必须转换为对应的物理地址。从概念上说,这个转换需要遍历页表,页表是三级页表,就需要3次内存访问。就是说,每次虚拟内存访问都会导致4次物理内存访问。简单点说,如果一次虚拟内存访问对应了4次物理内存访问,肯定比1次物理访问慢,这样虚拟内存肯定不会发展起来。幸运的是,有...

2017-08-10 14:58:18 5563 0

原创 munmap导致的BUG

一次线上BUG的分析过程

2017-01-29 18:06:46 2876 0

原创 Linux 从core信息中找到TLS信息

Linux X86-64环境上在core文件中查找TLS变量信息

2016-08-09 16:59:07 3509 0

原创 pthread_key泄露问题检测

本文记录了查找pthread_key_create创建失败或者TLS资源泄露问题的查找过程

2016-07-26 11:03:14 746 1

原创 MapReduce在Zookeeper集群上鉴权失败

MapReduce在Zookeeper集群上鉴权失败

2016-04-26 21:07:09 3079 0

原创 Linux 性能测试工具

Linux 性能测试工具

2016-03-29 16:02:35 2379 0

原创 SystemTap介绍

SystemTap是一个诊断Linux系统性能或功能问题的开源软件。它使得对运行时的Linux系统进行诊断调式变得更容易、更简单。有了它,开发者或调试人员不再需要重编译、安装新内核、重启动等烦人的步骤。

2016-03-17 11:46:21 2061 0

原创 TIP: system errno 12 Cannot allocate memory

system/fork函数执行失败,错误码12,Cannot allocate memory,相关资料汇总

2016-01-14 16:08:53 4919 0

原创 TIP 链接错误 link error

TIP 链接错误 link error环境 OS : linux 3.13.0 gcc : 4.8.2 code: sqlite-3.5.3 详细信息执行的编译命令gcc -fpic -ftemplate-depth-64 -m64 -DLINUX -DLINUX_X86 -DOPENBOSS ...

2016-01-12 14:35:39 757 0

原创 添加Linux系统调用(ubuntu, 3.13.0)

Ubuntu上3.13版本添加Linux系统调用

2015-06-01 10:04:09 1611 0

翻译 推测的删除锁(Speculative Lock Elision):实现高并发多线程执行

SLE全称Speculative Lock Elision,我称之为推测的删除锁。这是一篇关于SLE的论文翻译,但是因为本人英语功底很差,所以翻译的不通顺而且会有很多错误的地方。之所以把它发出来,是因为个人感觉SLE设计的很巧妙,而且没有搜索很多到关于SLE的文章,这里的目的只是为了让大家了解SL...

2015-05-24 20:31:30 1782 0

原创 GLIBC中NPTL线程实现代码阅读

glibc中thread的实现,加深对POSIX线程的理解

2015-05-15 20:09:32 3418 2

原创 GCC对乘法的优化

这个标题有点大,我并没有看过GCC的源码,所以也不知道很准确的GCC对乘法的优化。但是我做了几个测试,发现GCC的强大之处,与君共享。 突然想到做这个测试,是因为前段时间有个面试,出了一个很基础的问题,y = x * 63怎么优化。这种是学校的学生都会做的问题: y = (x << ...

2015-05-09 10:58:08 1415 0

原创 HAProxy中描述符管理

本文试图描述HAProxy中对描述符的管理,以从中获取收益以应用到自己的程序中,并提高程序的效率。

2015-04-05 21:08:13 1058 0

原创 Outlook VBA自动处理邮件

需求描述 公司里面每天都会有很多邮件,三分之一都是不需要看的,Outlook的过滤功能不错,都可以处理掉。还有些邮件,根据正文或者附件做一下处理自动转发出去就行了。于是上网搜集了一些资料,写个了小程序,共享一下,以后可以参考,也希望对大家有点用处。 实现 废话少说,直接上代码吧。打开O...

2015-04-04 17:39:17 12238 1

原创 HAProxy内存池简介

HAProxy介绍HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,HAProxy是完全免费的、借助HAProxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案。HAProxy内存池概述HAProxy的内存池按照类型分类,每种类型的...

2015-03-22 12:35:43 743 0

原创 堆-链表实现

小顶堆大顶堆的概念大家应该都很熟悉了,如果不了解,可以搜索一下,网上很多介绍,而且很多源码实现,都很简单。 不过从网上看了一些堆的实现,都是用数组的。但是数组有一个缺陷,需要扩展时,就要复制原来的内存,申请新的空间。所以我在想能不能用链表,发现还真可以,就凑凑写了个代码。最后代码是写完了,发现其...

2015-03-15 20:37:24 1655 1

原创 Linux中POSIX文件锁的实现

我试图通过个人的理解方式讲解Linux文件锁的实现,使用的内核版本是3.13.0。 POSIX文件锁简介 先简单说下什么是文件锁。 Linux文件锁有两种:协同锁(有些成为建议锁)和强制锁。Linux读写文件时不会对协同锁做校验,只会对强制锁做验证。我只想看Linux内核如何同步多个...

2014-11-30 20:18:15 2390 0

原创 TinyXml从内存中解析,并保存到内存

网上介绍TinyXml的例子很多,所以不用再介绍了。最近也需要解析XML,从网上找了一下,发现TinyXml是最合适的。 TinyXml同时支持Windows和Linux平台,而且它很小巧,功能也全面,包括对XML各种特性的操作。 不过美中不足,虽然网上的应用实例很多,但是大部分都是从文件中解...

2012-08-18 21:53:13 4246 1

原创 验证snprintf是否以null结尾

昨天一个同事问我snprintf末尾是不是一定为'\0',我印象中以前看过strncpy不保证以'\0'结尾。今天早起感觉不妥,干脆试验一把。下面是结果。 测试代码 #include int main(void) { char szBuf...

2012-07-20 09:30:49 1584 0

原创 静态框显示图像

<br /><br />其实VC中的Pictrue控件和静态框控件都是一样的,只不过它们的属性不同罢了。<br />如果在静态框里面显示图像呢?<br />静态框,CStatic有一个函数SetBitmap,可以使用这个函数设置静态框中的图像,详见M...

2011-03-30 22:45:00 1227 0

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