摘要 为什么需要关注垃圾回收器? 垃圾回收关键 - 标记 根集合 CMS 回收器标记 G1 回收器标记 SATB 算法 C4/Z 回收器标记 结论 引用 摘要 垃圾回收作为 Java 语言的重要特性,把开发人员从繁重的内存管理中解放出来,极大的 提高了生产效率。尽管市面上有形形色色不同的垃圾回收器,Hotspot 自带且成熟的有:
Serial GC Parallel GC Parallel Old GC (Parallel Compacting GC) Concurrent Mark & Sweep GC (or “CMS”) Garbage First (G1) GC(Java 9 默认) Oracle 正在开发或者处于试验阶段的垃圾回收有:
ZGC,高吞吐量,低延时的 GC,承诺最大垃圾回收造成的应用暂停时间不大于 10 ms, 无论堆和存活对象大小多少。1 Epsilon GC2 ,测试目的 GC 此外,还有不少非 Oracle 主导的 GC ,比如 Redhat 的 Shenandoah GC3 ,Azul 的 C4 GC 等。
目录 摘要 SQL 的现在 Not Only SQL 要水平扩展,也要 SQL 总结 引用
摘要 毫不夸张的说,关系数据库是企业软件系统的核心,企业形形色色信息行为的背后,都有 关系数据库的支撑。
SQL 作为关系型数据库最重要的功能之一,有着悠久的历史。 随着数字化大潮的到来, 关系数据库(SQL) 又面临着新的机遇和挑战。对于 IT 行业的从业人员,了解关系数据库 和 SQL 新的发展,对于解决企业 IT 的核心问题十分必要。
SQL 的现在
Not Only SQL NoSQL 的兴起是对于传统的关系型数据库(SQL) 的最近的一次颠覆尝试。有几个原因导 致了 NoSQL 的兴起:
相对于传统的关系型数据库,NoSQL 更容易为企业提供更好数据库可扩展性,是的企 业能够应对日益增长的庞大的数据量。 相比于传统的关系型数据库,很多优秀的 NoSQL 以开源的形式存在。 很多操作在关系型数据库中没有支持,比如 JSON 数据格式全文搜索。 没有严格的 Schema 限制,因此在很多情况下比较灵活。 然而很快,NoSQL 便暴露除了很多不足:
没有标准的数据查询语言,不同的 NoSQL 提供了不同且不完备的 SQL 替代品;随着 应用程序的演进,应用程序所累积的数据会越来越多,数据之间的关系会变得越来越 复杂,在这种情况下由于 NoSQL 所提供的简单的数据查询语句不成熟且不完备,尤 其是考虑到 NoSQL 没有严格的 Schema 限制的情况下,导致大量的应用程序和数据 库之间的脆弱的胶水代码。 NoSQL 中很多数据处理和聚合实际上都是开发人员在应用程序中手写,相比于 SQL 广泛的标准适用性和成熟的优化方案,NoSQL 在处理数据之间的多对一和多对多关系 以及数据之间的关联时,性能差距非常明显。 人们很快发现,原来 NoSQL 的真正的意思是 Not Only SQL。
目录 目录 摘要 问题由来 顺序 区块链是分布式系统 工作量证明即分布式时钟,时钟的基本单位十分钟 每个矿工都是时间的创造者 统一的时钟和顺序 工作量证明即时钟 摘要 本文试图从分布式系统(分布式时钟)的角度理解区块链(比特币,下同)的一致性;实 际上区块链之所以安全可信,工作量证明是主要原因,数字签名和哈希校验是辅助性因素。
比特币系统的交易并非立即可信,通常支付发起后需要等一个小时交易才算正式生效,大 宗交易甚至要等 二十四个小时;等待时间的背后,正是比特币基于工作量证明的 渐进 式 信任机制。
比特币系统是一个去中心化的分布式系统,其网路内所有的节点身份均等;因此渐进式的 信任机制的本质是 工作量证明所构建分布式时钟。
本文从“双花”问题展开,通过不断提问的方式逐步接近本文的主题。
问题由来 “双花”问题是区块链系统上的主要安全问题之一;在去中心化的 P2P 网络上,由于数据 的可复制性,使得系统可能存在同一笔数字资产因不当操作被重复使用的情况。现实世界 中纸币天然的屏蔽了这个问题,即便是网上交易,在大银行主导的中心化的支付网络上, 个人用户复制数据进行“双花”基本上不可能,因此也鲜有“双花”的问题。
一个典型的区块链上双花问题场景如下:
Bob 拥有一幅价值 $250000 的名家画作,她希望通过 Bitcoin 系统卖出这幅画作。
Alice 对这幅画作很感兴趣,Alice 通过区块链系统,向 Bob 支付了价值 $250000 的比 特币。
Bob 等了一段时间,看到区块链上已经有若干个确认(即当前交易所在区块之后新增了 区块)后,将画作发送给 Bob
假设 Alice 拥有整个区块链网络中 51% 的算力,Alice 可以重新挖矿,对这笔交易和这笔 交易所在的块进行共识攻击;由于 Alice 拥有 51% 的算力,因此很快共识攻击所在的区 块链分叉上的区块数很快就超过正常交易的分叉