垃圾回收(Garbage Collection
,简称GC
)是编程语言中提供的自动的内存管理机制,自动释放不需要的内存对象,让出存储器资源,GC过程中无需程序员手动执行。GC机制在现代很多编程语言都支持,GC能力的性能与优劣也是不同语言之间对比度指标之一。
Golang在GC的演进过程中也经历了很多次变革:
- V1.3之前的标记-清除(
mark and sweep
)算法 - V1.5的三色标记法
- V1.8混合写屏障机制
垃圾回收(Garbage Collection
,简称GC
)是编程语言中提供的自动的内存管理机制,自动释放不需要的内存对象,让出存储器资源,GC过程中无需程序员手动执行。GC机制在现代很多编程语言都支持,GC能力的性能与优劣也是不同语言之间对比度指标之一。
Golang在GC的演进过程中也经历了很多次变革:
mark and sweep
)算法在开发高并发系统时,为了保证系统的高可用和稳定性,业内流传着“三把斧”:
最近,由于我负责的一个项目后端这边需要控制 API 的访问频率,于是研究了下 限流 相关的技术。
Go中的 map
不是并发安全的,在Go 1.9之后,引入了 sync.Map
,即并发安全的map
。
先介绍下 sync.Map
的几个特点:
read
和dirty
两个map
来提高读取效率read map
中读取(无锁),否则再从dirty map
中读取(加锁)misses
次数过多时,将dirty map
提升为read map
value
打一个标记,在dirty map
提升时才执行真正的删除Cosmos Network
中最令人兴奋的特色是 InterBlockchain Communication
(IBC) 协议,允许不同区块链之间进行资产转移。IBC 已经实现为一个 basecoin 插件,本节我将介绍如何使用它进行不同区块链间的资产互转。
在前一节中,我们学习了如何使用 basecoin 启动区块链和 basecli 来发送交易,同时研究了 Account
和 SendTx
这两种基本类型。本节,我们将演示如何扩展 SendTx
以便让它支持另外一种交易类型:AppTx
,这样就可以发送数据到一个自定义的插件 plugin。这里,我们来探索一个简单的 plugin:Counter
。
前面我们讲到 Basecoin 是一个基于 tendermint 的 ABCI 应用,同时它也是一个跨链应用。这节,我给大家介绍如何利用它在不同的账户之间发送交易,并试着探索下其中的技术内幕。
区块链技术发展到现在,从开山鼻祖比特币开始,涌现出了各种形形色色的链。
但,由于每个链都是独立的、垂直的封闭体系,当前的链圈只是由许多彼此割裂开来的区块链「孤岛」构成,链与链之间无法进行价值和数据的交换。
讽刺的是,声称去中心化的区块链之间的价值互换却主要依靠中心化的交易所来完成。
为了实现区块链之间的原子交易、资产转换、区块链内部信息互通,涌现了各种 跨链 技术。
钱包,被看作未来数字资产交易的入口,谁能成为其中的独角兽,谁就可能会成为未来区块链版的“支付宝”,甚至“微信”。
我司举办了一次“钱包抓虫大赛”,号召全公司员工去体验市面上流行的各种数字货币钱包,分析其优缺点,以便为我们的钱包设计提供借鉴和参考。