volatile与内存屏障总结

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

阅读全文

每月技术提升2018年8~10月

每月技术追踪 [移动前端]Angular 7发布,新版本带来了虚拟滚动、拖放、CLI Prompts等特性。 [编程语言]微软正式发布TypeScript 3.0,这是TypeScript之旅的一个新的里程碑。3.0虽然是个大版本,但并没有包含太多重大的变更(也就是说升级很容易)。新版本引入了一种新的灵活且可扩展的方式来构建项目、对操作参数列表提供了更强大的支持、新的强制显式检查类型、更好的JSX …

阅读全文

Zookeeper系统设计的缺陷

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

阅读全文

每周精选技术文章心得 Vol.2-20180603

本周开始除了每日的微信公众号闲来无事的阅读,周末时候再加入些以前知乎或微博收藏的文章来阅读,做到慢慢消化些碎片知识吧。 星期日(知乎特别篇): C++的奇特写法int b = 4[a];,可以用来做type trait/constraint,用来判断一个类型到底是一个重载了[ ](取下标)操作符的用户定义的类(比如vector),还是一个原生的数组或指针。当你的模板希望只处理原生数组或指针,而不希 …

阅读全文

每月技术提升2018年6~7月

每月技术追踪 [移动前端]近日,Node 之父 Ryan Dahl 发布新的开源项目 deno,完全放弃兼容node,使用 Go 语言代替 C++ 重新编写跨平台底层内核驱动,上层仍然使用 V8 引擎,最终提供一个安全的 TypeScript 运行时。但是最火的还是issue被国人掩埋,求不要更新学不动了。 [编程语言]Oracle计划取消Java序列化并用一个新的框架替代。据称序列化功能堪称诞生 …

阅读全文