- 浏览: 409474 次
最新评论
-
iunknown:
909601686 写道我理解下来,之所以使用奇数应该不仅仅是 ...
以两军问题为背景来演绎Basic Paxos -
909601686:
我理解下来,之所以使用奇数应该不仅仅是为了判断谁赢。而是这样就 ...
以两军问题为背景来演绎Basic Paxos -
feclipse:
you are my hero! 看了你的图示之后,我的理解 ...
以两军问题为背景来演绎Basic Paxos -
lcc0739:
相当好!通俗易懂,看了好几篇paxos只有你这个最深入浅出!
以两军问题为背景来演绎Basic Paxos -
iunknown:
tangfu 写道hi,问一下,博主提供的库与pb兼容么,比如 ...
一个轻量的 wire format 解释器(google protobuf 的二进制格式)
文章列表
项目地址
https://github.com/tencent-wechat/phxpaxos
实现原理
微信自研生产级paxos类库PhxPaxos实现原理介绍
原文在 http://stackoverflow.com/questions/14435646/paxos-value-choice/14472334#14472334
引用Now, let's take a hypothetical example that people often give, and which they think breaks Paxos. Suppose we have three Acceptors A1, A2, and A3. A1 and A2 have both accepted value ABC at round 1 and A3 has chosen ...
背景
在计算机通信理论中,有一个著名的两军问题(two-army problem),讲述通信的双方通过ACK来达成共识,永远会有一个在途的ACK需要进行确认,因此无法达成共识。
两军问题和Basic Paxos非常相似
1) 通信的各方需要达成共识; ...
前几天看到说 googlecode 准备关闭了,花一个晚上把以前放在 googlecode 的代码转移到 github 了,虽然有不少项目的设计已经落后于时代了,不过出于纪念自己几年前的热情,当作是一次归档吧。
所有项目都转移到这个地址了 https://github.com/spsoft
更改root密码的方法:实用工具——终端 输入sudo passwd root 。然后提示你输入当前登录用户密码,通过以后,提示你输入两遍root的密码。这样你就设置好root帐号密码了。
修改系统版本,欺骗 xcode 安装程序:
/System/Library/CoreServices/SystemVersion.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN&qu ...
对编程实现来说,影响最大的一点就是只使用 4 个标准的操作,每个操作遵循关于幂等性的原则。对于遵循 rest 原则的程序,使用 get/put/delete/post 4 个操作。在 rest 之前,可能会有任意数量的操作。
幂等性操作:
get:查询
put:更新,CreateIfNeed
delete:删除
非幂等操作:
post:调用任意过程
3个幂等性操作做了严格的定义,但是 post 明显是留下来的尾巴,可以调用任意的过程。采用的方法是抓住能抓的,不能抓的就放松。
在 2010 年最后的两周,终于看到了把工作和生活重新平衡起来的希望。
2010 年做过的事情
1.新手上任,作为项目经理带领一个项目从零开始,在年底勉强达标;
2.作为候任组长,在这一年犯了不少错误,到年底总算是入门了;
3.不忍看到这几年工作积累下来的一点钱在贬值,转而跳进一个更大的坑;
4.父母过来照顾自己,自己却很少时间陪他们;(这点做的太不地道了)
5.作为程序员,没有突破,做的都是自己熟悉的东西;
在技术上,现在能记得的
1.一个配置文件
2.一个脚本
3.一个代码生成工具
4.一个库
一个用 c++ 实现的系统,过于庞大,依赖很复杂,还要变化很频繁。原来靠手工维护 Makefile 里面的 link 和 incl ,经常都会因为一个底层模块的调整导致大规模的编译错误。后来把依赖关系整理到一个统一的文件中,每次编译的时候,从文件中读取依赖关系,实时计算 link 和 incl ,这样解决了上面的问题。
不过好景不长,由于写代码的人太多,最近搞了好几个循环依赖的东西出来。原来实时计算 link 和 incl 的代码有一些问题,导致计算一次需要耗时 5~10 分钟。直接的后果就是写完一段代码,然后敲一个 make ,接着去倒杯水,喝完回来,还没看到可执行程序。
仔细回忆了数据结 ...
如果没有简单的重现办法,或者只是偶尔出现的话,可以通过 glibc 的一些特殊功能来协助debug 。
http://www.novell.com/support/viewContent.do?externalId=3113982&sliceId=1
主要的作用是加快程序产生 core dump ,尽量在出现第一个错误的时候,就让程序 core dump ,这样一般还能看出最初的事发地点。
招行的信用卡实在很烂
- 博客分类:
- MISC
在 taobao 买了点东西,一卡通里面的余额不足,想用信用卡来支付。前后尝试了 5 次都没成功,实在太烂了。前后把信用卡信息完整地输入了 5 次,发泄一下,在这里骂两声吧。
PS:最后打电话投诉,告诉我是系统维护,内牛满面,真是报应啊。用这个说辞跟很多人做过解释,结果今天也给人这样应付了,囧
被 suid 的程序要产生 coredump 文件,还需要额外的设置。
http://www.linuxinsight.com/proc_sys_fs_suid_dumpable.html
引用
suid_dumpable
Submitted by admin on Thu, 2006-06-01 01:45
The value in this file determines whether core dump files are produced for set-user-ID or otherwise protected/tainted binaries. Three differen ...
用 c/c++ 实现的一个库,在生产环境产生 bug 。由于上线过程没有详细的记录,因此不清楚生产环境所使用的库究竟对应什么版本的源代码。
在使用 svn 和 gcc 的情况下,可以用如下的方法,在二进制程序中留下对应的源代码的版本号
在源代码中增加一行,可以直接放到所有函数的最前面。
static const char resivion[] __attribute__((used)) = { "$Id: $" };
然后再对这个文件做如下的 svn 操作,令它生效
svn propset svn:keywords "Id" xxx.cp ...
http://cyberdesk.com/wiki/qmail/qmqp
http://cr.yp.to/proto/netstrings.txt
QMQP 的基础是 netstring 格式。假设要把 hello world! 封装为 netstring 格式:
1)先得到这个字符串的长度,12
2)按如下的顺序把长度和内容拼接起来:长度,冒号,内容,逗号
按上面的步骤处理之后,结果如下
netstring( hello world! ) = 12:hello world!,
netstring 可以嵌套。多个 netstring 可以按顺序拼接起来,然后把这个拼接的结果作为 ...
http://stackoverflow.com/questions/1477885/trying-to-locate-a-leak-what-does-anon-mean-for-pmap
Anon blocks are "large" blocks allocated via malloc or mmap -- see the manpages. As such, they have nothing to do with the Java heap (other than the fact that the entire heap should be stored i ...
http://rimuhosting.com/howto/memory.jsp
# create a memmon.sh script that tracks the current date, memory usage and running processes
cat << EOF > /root/memmon.sh
#!/bin/bash
date;
uptime
free -m
vmstat 1 5
ps auxf --width=200
if which iptables 2>&1 > /dev/null; then
ipt ...