volatile与内存屏障总结

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

阅读全文

Zookeeper系统设计的缺陷

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

阅读全文

去中心化交易所现状与实现

据了解当前数字货币交易所已经超过500家,目前依旧是井喷状态。大家耳熟能详的都是中心化交易所,这些交易所的交易流程与模式和大家日常使用的证券交易所模式一致。中心化交易所在技术实现上是有传统成熟解决方案的,即使面对海量大并发实时交易,依旧可以给用户提供很好的服务体验。庞大的用户量和交易量,也带来了足够的交易深度,提供了充分的流动性。但是中心化交易所也面临有很多问题:4 人为因素——中心化信用背书,会 …

阅读全文

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

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

阅读全文