volatile与内存屏障总结

一. 内存屏障 Memory Barrior 1.1 重排序 同步的目的是保证不同执行流对共享数据并发操作的一致性。在单核时代,使用原子变量就很容易达成这一目的。甚至因为CPU的一些访存特性,对某些内存对齐数据的读或写也具有原子的特性。但在多核架构下即使操作是原子的,仍然会因为其他原因导致同步失效。 首先是现代编译器的代码优化和编译器指令重排可能会影响到代码的执行顺序。 其次还有指令执行级别的乱序 …

阅读全文

Zookeeper系统设计的缺陷

之前总结过Zookeeper的各种设计优点,但是这个系统的缺陷与优点同样突出,本文就是结合自己的使用经验,业界给出的评价对ZK的缺点进行的归纳,一方面归纳使用表现上的不足,另一方面根据个人经验总结出系统本身功能设计时的就存在的缺陷。同时也思考了相应对策与改进的办法,算是本人对ZK设计的完整的思考总结吧。最后还关注了下etcd这个后起之秀的设计,看看它是否已经弥补了ZK的不足,能否担当后继者。 1. …

阅读全文

区块链技术全面剖析:Solidity合约编写

一、特别点 1.版本声明,pragma solidity ^0.4.0;版本要高于0.4才可以编译 2. 函数,分为internal和external函数,可以直接调用f(),或者使用this.f()。但两者有一个区别。前者是通过internal的方式在调用,而后者是通过external的方式在调用。请注意,这里关于this的使用与大多数语言相背。出参在returns关键字后定义,参数名字可以省略 …

阅读全文

试试10分钟创建并发行自己的数字货币

根据 Coinist 数据显示,2017 年全年的 ICO 融资规模达到 38 亿美元。大部分主流 ICO 代币都是基于以太坊(Ethereum)平台开发,ICO 热潮也支撑着以太币价格从 2017年1月1日的 8 美元涨到最近的 886 美元,总市值超过 800 亿美元。然而因为以太坊友好的开发接口,实际上你完全也可以在十分钟内创建属于你自己的数字货币或者说代币。 这一切就要归功于 ERC20 …

阅读全文