FLP impossibility证明 阅读笔记

FLP impossibility证明 阅读笔记

分布式系统一致性协议里面有一个FLP impossibility的结论,这个结论是说,在分布式系统中,异步网络(消息延迟可能任意大或丢失,消息可能乱序),只要有一个进程失效(进程死亡或者足够长时间不响应),就不可能设计出一个一致性协议。
该结论由Fisher、Lynch、Paterson三位分布式系统领域的科学家在1985年在论文Impossibility of Distributed Consensus with One Faulty Process证明。本文解读了证明过程。

《挑战程序设计竞赛》读书笔记(三)图算法 图搜索 最短路 最小生成树

《挑战程序设计竞赛》读书笔记(三)图算法 图搜索 最短路 最小生成树

本文是《挑战程序设计竞赛》读书笔记的第三篇,主要涉及图算法,图的搜索,单源最短路和所有点对的最短路Floyd算法,最小生成树算法。文中解释了Roadblocks问题:求出图中指定的起点s和终点e之间次短路(第二短的路径);Conscription招兵问题。

写跨平台C语言代码的十个规则

写跨平台C语言代码的十个规则

翻译了一篇关于写跨平台C语言代码的文章,介绍了10个相关规则。Rule #1: 同时开发 – 不要先开发后移植。不要把迁移工作外包。Rule #3: 使用标准C类型,不要使用特定于平台的类型。Rule #4: 只使用内置的 #ifdef 编译标志,不要自己发明轮子。 Rule #5: 开发一个简单的可重用的跨平台的基础库,来隐藏每个平台的代码。Rule 6#: 在所有的API中都使用Unicode(特别是UTF-8)。Rule #7: 不要使用第三方应用程序框架或者运行时环境来是你的代码跨平台。Rule #8: 原生代码本来就总是可以所有平台上编译->不是某个脚本让它们从不能编译变得能够编译了。 Rule #9:所有的程序都能在所有的平台编译。Rule #10:开除那些懒惰、不称职、态度差、不遵循这些规则的程序员。

Visual Studio调试基本过程

Visual Studio调试基本过程

最近因为工作需要,正在了解VS。在网上找了一些不错的介绍VS调试的文章,翻译整理成文。本文介绍Visual Studio调试基本过程。包括如下内容:Just My Code; Start, Break, Step, Run through Code, and Stop Debugging in Visual Studio;Attach to a process;使用断点和Break All(全部中断)来中断代码;Step into/over/out;运行到一个特定位置或特定函数;设置下一条要执行的语句;进入系统调用;停止调试。

Dynamo论文阅读笔记

Dynamo论文阅读笔记
Dynamo: Amazon’s Highly Available Key-value Store Dynamo这篇论文是2007年出来的,以前读研究生的时候读过,前两天看了一篇NoSQL综述提到了这篇论文,今天重读一遍,简单做些笔记,里面有些东西还只是简单看了下不够深入。 Dynamo系统本身并没有提出新的技术,但是将各种分布式技术融合在一起,构建了一个高性能高可用高可扩展的key-value存储。Dynamo牺牲了强一致性,使用vector clock等方法把数据冲突...