自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 收藏
  • 关注

原创 微信开源生产级paxos类库PhxPaxos

项目地址[url]https://github.com/tencent-wechat/phxpaxos[/url]实现原理[url=http://mp.weixin.qq.com/s?src=3&timestamp=1468151143&ver=1&signature=fGdg5ZDJyTsvVWFx2n7xyEAyTbkYU8CsFsBAQHNCjw4ASHXjqafTygJOz...

2016-07-10 21:20:05 249

原创 一个常见的paxos疑问

原文在 [url]http://stackoverflow.com/questions/14435646/paxos-value-choice/14472334#14472334[/url][quote]Now, let's take a hypothetical example that people often give, and which they think breaks Pax...

2015-10-07 01:18:47 164

原创 以两军问题为背景来演绎Basic Paxos

背景在计算机通信理论中,有一个著名的两军问题(two-army problem),讲述通信的双方通过ACK来达成共识,永远会有一个在途的ACK需要进行确认,因此无法达成共识。两军问题和Basic Paxos非常相似1) 通信的各方需要达成共识;2) 通信的各方仅需要达成一个共识;3) 假设的前提是信道不稳定,有丢包、延迟或者重放,但消息不会被篡改。Basic Paxos...

2015-09-28 10:28:52 303

原创 把开源项目从googlecode转移到github

前几天看到说 googlecode 准备关闭了,花一个晚上把以前放在 googlecode 的代码转移到 github 了,虽然有不少项目的设计已经落后于时代了,不过出于纪念自己几年前的热情,当作是一次归档吧。所有项目都转移到这个地址了 https://github.com/spsoft...

2015-03-14 23:07:36 200

原创 macosx 的一些技巧

更改root密码的方法:实用工具——终端 输入sudo passwd root 。然后提示你输入当前登录用户密码,通过以后,提示你输入两遍root的密码。这样你就设置好root帐号密码了。修改系统版本,欺骗 xcode 安装程序:[code]/System/Library/CoreServices/SystemVersion.plistProduct...

2011-04-20 01:33:59 129

rest 的一知半解

对编程实现来说,影响最大的一点就是只使用 4 个标准的操作,每个操作遵循关于幂等性的原则。对于遵循 rest 原则的程序,使用 get/put/delete/post 4 个操作。在 rest 之前,可能会有任意数量的操作。幂等性操作:get:查询put:更新,CreateIfNeeddelete:删除非幂等操作:post:调用任意过程3个幂等性操作做了严格...

2011-04-04 17:21:58 143

原创 2010总结

在 2010 年最后的两周,终于看到了把工作和生活重新平衡起来的希望。2010 年做过的事情1.新手上任,作为项目经理带领一个项目从零开始,在年底勉强达标;2.作为候任组长,在这一年犯了不少错误,到年底总算是入门了;3.不忍看到这几年工作积累下来的一点钱在贬值,转而跳进一个更大的坑;4.父母过来照顾自己,自己却很少时间陪他们;(这点做的太不地道了)5.作为程序员,没有突...

2011-01-01 10:27:18 100

自动化解决编译依赖问题

一个用 c++ 实现的系统,过于庞大,依赖很复杂,还要变化很频繁。原来靠手工维护 Makefile 里面的 link 和 incl ,经常都会因为一个底层模块的调整导致大规模的编译错误。后来把依赖关系整理到一个统一的文件中,每次编译的时候,从文件中读取依赖关系,实时计算 link 和 incl ,这样解决了上面的问题。不过好景不长,由于写代码的人太多,最近搞了好几个循环依赖的东西出来。原来...

2010-12-04 14:02:34 263

原创 调试堆栈错乱的问题

如果没有简单的重现办法,或者只是偶尔出现的话,可以通过 glibc 的一些特殊功能来协助debug 。[url]http://www.novell.com/support/viewContent.do?externalId=3113982&sliceId=1[/url]主要的作用是加快程序产生 core dump ,尽量在出现第一个错误的时候,就让程序 core dump ,这样一...

2010-07-15 00:57:15 524

原创 招行的信用卡实在很烂

在 taobao 买了点东西,一卡通里面的余额不足,想用信用卡来支付。前后尝试了 5 次都没成功,实在太烂了。前后把信用卡信息完整地输入了 5 次,发泄一下,在这里骂两声吧。PS:最后打电话投诉,告诉我是系统维护,内牛满面,真是报应啊。用这个说辞跟很多人做过解释,结果今天也给人这样应付了,囧...

2010-05-24 00:36:38 169

原创 让设置 suid 的程序也产生 coredump

被 suid 的程序要产生 coredump 文件,还需要额外的设置。[url]http://www.linuxinsight.com/proc_sys_fs_suid_dumpable.html[/url][quote]suid_dumpableSubmitted by admin on Thu, 2006-06-01 01:45The value in th...

2010-05-11 11:24:11 290

在二进制程序中留下对应源代码的版本号

用 c/c++ 实现的一个库,在生产环境产生 bug 。由于上线过程没有详细的记录,因此不清楚生产环境所使用的库究竟对应什么版本的源代码。在使用 svn 和 gcc 的情况下,可以用如下的方法,在二进制程序中留下对应的源代码的版本号在源代码中增加一行,可以直接放到所有函数的最前面。[code]static const char resivion[] __attribute_...

2010-04-28 22:22:39 239

QMQP: The Quick Mail Queuing Protocol

[url]http://cyberdesk.com/wiki/qmail/qmqp[/url][url]http://cr.yp.to/proto/netstrings.txt[/url]QMQP 的基础是 netstring 格式。假设要把 hello world! 封装为 netstring 格式:1)先得到这个字符串的长度,122)按如下的顺序把长度和内容拼接起来:长...

2010-04-02 15:08:54 549

[zz]What does anon mean for pmap?

[url]http://stackoverflow.com/questions/1477885/trying-to-locate-a-leak-what-does-anon-mean-for-pmap[/url]Anon blocks are "large" blocks allocated via malloc or mmap -- see the manpages. As such...

2010-02-26 21:12:31 314

原创 [zz]Troubleshooting Memory Usage

[url]http://rimuhosting.com/howto/memory.jsp[/url][code]# create a memmon.sh script that tracks the current date, memory usage and running processescat /root/memmon.sh#!/bin/bashdate;up...

2010-01-13 21:05:34 90

原创 xml 和 json 在序列化数据方面的差异

在 [url=http://iunknown.iteye.com/blog/319063]spdatapickle[/url] 项目中,实现了在 C 的 structure 和 xml/json 之间自动转换的功能。需要选择一种 xml/json 的格式。在查看了一些其他语言的实现之后,json 的格式比较一致,xml 的格式就五法八门。不过从这里也可以看出,xml 能用的方法实在太多,太灵活了。...

2009-12-29 21:20:54 259

原创 Half-Sync/Half-Async 和 Leader/Follower 模式的实现代码

把之前发表过的一篇文章贴到自己 blog 中,便于查看。在 [url=http://code.google.com/p/spserver/]SPServer[/url] 中实现了 HSHA 和 LF 两种线程池。目前的实现还是比较可读的,这两种线程池最主要的处理逻辑各自都被集中到了一个函数中。先来看看 HSHA 的核心实现代码[url]http://spserver...

2009-12-27 13:33:25 148

原创 [zz]Unicode演义

[url]http://woolzey.bokee.com/6749370.html[/url]前Unicode时代在Unicode出来,我们最熟悉的编码是ASCII。ASCII严格的说是一个7位的英语 编码标准,定义了33个控制字符和95个可显示字符。第8位留作奇偶校验,但是 通常都置为0。ASCII只适用于英语,缺少其他语言的支持。IBM最早使用“代码页”的方法映射...

2009-11-19 11:54:28 1962

vc6 设置 pre-build 步骤

把 spdatapickle 移植到 win32 平台,使用 vc6 进行编译。在编译示范例子的时候,第一步需要调用代码生成工具根据 xml 生成一些代码。这个步骤在 makefile 中很容易实现,但是在 vc6 中,试了好久才终于试验成功。记录一下步骤[img]http://dl.iteye.com/upload/attachment/165175/5324ca86-9ceb-3be4...

2009-11-06 22:52:14 282

spcached: memcached 的克隆实现,支持 windows 平台

memcached 没有官方的 windows 发布版本,只有一些第三方的开发人员在发布 windows 的版本。在 windows 平台编译 memcached 也比较麻烦。之前为了测试的目地,基于 spserver 和 spdict 实现了一个 memcached 的克隆版本 -- spcached。[url]http://iunknown.iteye.com/blog/80095...

2009-11-03 22:51:20 104

socat

socat 类似 telnet ,但是支持多种协议。比如要 debug unix domain socket 的 server ,用下面的命令就可以得到和 telnet 一样的效果。[code]bash$ ./socat unix-connect:/tmp/my.sock stdin[/code]...

2009-10-28 23:11:13 152

原创 SP stands for

[url]http://acronyms.thefreedictionary.com/SP[/url]SP SpeedSP SpanishSP Service PackSP State PoliceSP Security PoliceSP Standard Play(ing)SP Shore Patrol (US Navy equivalent to MP)SP...

2009-10-22 21:35:05 373

一个轻量的 wire format 解释器(google protobuf 的二进制格式)

google 的 protobuf 项目,底层的二进制格式设计很精简,格式的详细描述参考下面的链接:[url]http://code.google.com/apis/protocolbuffers/docs/encoding.html[/url]下载链接[url]http://spjson.googlecode.com/files/spjson-0.3.src.tar.gz[/ur...

2009-10-07 21:38:47 1244

一个用于快速定位 C/C++ 函数返回位置的 macro

这个 macro 是这样的[code]#define return for( printf("return %s %d\n",__FILE__,__LINE__); ; ) return[/code]对于 C/C++ 程序来说,使用上面的 macro ,可以把函数的返回位置输出到屏幕。使用的场景:需要调试具有多出口的 C/C++ 函数,并且原有的代码在返回的位置都没...

2009-09-28 23:11:19 225

使用 gettimeofday 来测量执行时间存在的问题

之前一直使用 cprof 来分析 c/c++ 程序的性能瓶颈,可惜在 2.6 内核 + 多线程的情况下, cprof 貌似不工作了。无奈之下,使用 gettimeofday 来人肉分析。为了方便,写了这样一个类[code]class SP_NKClock { struct timeval mBornTime; struct timeval mPrevTime;}...

2009-08-01 17:25:38 982

原创 [zz]Tokyo Cabinet Table Engine

Sounds impressive and cool. I wonder about Table engine performance though.My experiences with Berkeley DB (using the native C API) were positive, from a performance point of view, largely because B...

2009-07-05 22:26:14 84

原创 [zz]Multi Tenancy - The Physical Data Model

http://ayende.com/Blog/archive/2008/08/07/Multi-Tenancy--The-Physical-Data-Model.aspxContinuing on the multi tenancy theme, let us talk about the actual physical structure of the data store. In ge...

2009-06-23 21:58:49 99

原创 [zz]schema manager

[url]http://kered.org/blog/2006-05-24/summer-of-code/[/url]Additionally, it supports the following:automatic downgrades are supported (in addition to upgrades)the application can automatic...

2009-06-07 20:10:44 95

原创 [zz] libdrizzle + SQLite hack

用 google 查了一下 sqlite server ,查到了一个有趣的项目。[url]http://planet.mysql.com/entry/?id=17507[/url][quote]There, now you make any SQLite database look like a Drizzle or MySQL server. The sqlite_serve...

2009-05-24 21:11:15 110

SPHiveDB: 基于 sqlite 的数据库服务器

在 share nothing 的架构中,如果数据规模很大,为了提高可用性,通常采用数据库分片(database sharding)的策略。常见的分片策略是按主键把数据分散到不同的数据库中。在使用常规的 RDBMS 的场景中,分片策略中使用的数据库个数通常在100以下。在某些特殊的场景中,可能希望采用更极端的分片方法,比如在类似地址本这种应用中,可以为每个用户创建一个数据库。SPHiveD...

2009-05-23 23:39:28 188

原创 [zz]Tokyo Cabinet Observations

[url]http://parand.com/say/index.php/2009/04/09/tokyo-cabinet-observations/[/url]I’m using Tokyo Cabinet with Python tc for a decent sized amount of data (~19G in a single hash table) on OS X....

2009-05-05 17:41:25 110

spmemvfs: 在内存中加载/保存 sqlite3 数据库

关于 sqlite3 有很多的介绍文章,这里就不提了。说一下 memory vfs for sqlite3 可能用在什么场景下。一个常见的场景是用户地址本功能。地址本应用中,把一个用户的所有联系人列出来,是最常用的操作,增加/删除/修改 的操作相对显的比较少。常规的做法可能是把多个用户的数据保存在一个表中(比如用 mysql),至少包含两个字段 ( username, ad...

2009-05-01 18:38:40 368

[zz]Save SQLite memory database to file

[url]http://itsystementwicklung.de/pipermail/list-pysqlite/2008-July/000113.html[/url]I would like to do this for similar reasons. I have a web application where the application data will be ...

2009-04-25 15:45:57 213

SPSmtpGate: SMTP 反垃圾邮件网关

SPSmtpGate 是一个反垃圾邮件网关,支持 Sendmail 8 的 Milter 协议,采用透明 smtp proxy 的模式。Milter 协议由 Sendmail 公司提出,在 Sendmail 和 Postfix 中都有实现。目前开源的 Milter 模块非常丰富,如果搭配的好,这些 milter 可以有效地拦截垃圾邮件。借助于 SPSmtpGate ,SendMail/Postfi...

2009-04-16 22:01:15 651

SpamAssassin, spf, greylist, dnsbl 相关的 milter 编译安装

首先,如果系统中没有 libmilter.a 库,那么下载 sendmail-8.14.3 ,把 libmilter.a 安装上。libmilter 库有个 bug ,会导致很多的 milter core dump 。[code]sendmail-8.14.3/libmilter/smfi.c 832c832< ++s; /...

2009-04-05 14:15:01 202

milter client 的实现

在浏览了 milter 的协议描述和具体的实现之后,决定自己动手实现一份。sendmail 里面的 milter client 的实现,实在显得太复杂了。很多基本功能都没有实现为函数,在用到的地方直接实现;而且 sendmail 偏偏要实现所有的灵活性,导致代码的可读性非常糟糕。看了 sendmail 的具体实现之后,以为 milter 协议会很复杂,实现起来会有难度。在调通了 option ...

2009-03-28 19:38:17 178

原创 libmilter 的相关资料

协议的详细描述[url]http://cpansearch.perl.org/src/AVAR/Sendmail-PMilter-0.96/doc/milter-protocol.txt[/url]milter client 的实现[url]http://milliways.chance.ru/~ark/soft/[/url]

2009-03-26 22:37:55 230

SPSmtpServer: 一个基于 SPServer 的 SMTP 服务器框架

在 SPServer 中增加了一个 smtp 服务器框架。在框架中把 smtp 协议相关的内容做了封装,基于这个框架来实现各种 smtp 服务器(反垃圾网关,或者用于投递邮件的mta),可以减少工作量。[url]http://spserver.googlecode.com/files/spserver-0.9.4.src.tar.gz[/url]有了这个框架之后,要实现一个简单的 ...

2009-03-15 15:08:28 362

原创 当缺少 DSL 的时候

之前接触过 DSL (domain-specific language) 的概念,在看到下面这段话之后,我觉得这是一个典型的讨论 DSL 的案例。这里描述了在缺乏 DSL 的情况,我们会遇到的困难情况。http://www.douban.com/subject/3267583/关系和语言 那些开始应对这些挑战的作家和理论家由于缺乏描述这些现象的语言而深感苦恼(特别参见...

2009-03-01 20:56:30 127

原创 [zz]break when opening certain file

http://www.nabble.com/break-when-opening-certain-file-td21428195.htmlYou want a "conditional breakpoint".Assuming you're on i386-linux or similar (adjustments arestraightforward for most oth...

2009-02-16 17:38:51 82

空空如也

空空如也

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

TA关注的人

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