不忘痴心 砥砺前行


  • 首页

  • 标签

  • 分类

  • 归档

三色标记+混合写屏障|Go 语言垃圾回收机制

发表于 2018-09-18 | 分类于 Coder

垃圾回收(Garbage Collection,简称GC)是编程语言中提供的自动的内存管理机制,自动释放不需要的内存对象,让出存储器资源,GC过程中无需程序员手动执行。GC机制在现代很多编程语言都支持,GC能力的性能与优劣也是不同语言之间对比度指标之一。

Golang在GC的演进过程中也经历了很多次变革:

  1. V1.3之前的标记-清除(mark and sweep)算法
  2. V1.5的三色标记法
  3. V1.8混合写屏障机制

阅读全文 »

限流 | Go 实现速率限制

发表于 2018-09-12 | 分类于 Coder

在开发高并发系统时,为了保证系统的高可用和稳定性,业内流传着“三把斧”:

  • 缓存:提升系统访问速度,增大系统处理容量
  • 降级:当服务出现故障或影响到核心业务时,暂时屏蔽掉,待高峰期过后或故障解决后再打开
  • 限流:通过对并发(或者一定时间窗口内)请求进行限速来保护系统,一旦达到限制速率则拒绝服务(定向到错误页或告知资源没有了)、排队等待(比如秒杀、评论、下单)、降级(返回兜底数据或默认数据)

最近,由于我负责的一个项目后端这边需要控制 API 的访问频率,于是研究了下 限流 相关的技术。

阅读全文 »

GMP|Golang 的协程调度器

发表于 2018-08-17 | 分类于 Coder

对于 Gopher 来说,掌握 Go 语言的协程调度机制是走向高级工程师的必由之路。

阅读全文 »

浅析 Go 语言之 sync.map

发表于 2018-07-08 | 分类于 Coder

Go中的 map不是并发安全的,在Go 1.9之后,引入了 sync.Map,即并发安全的map。

先介绍下 sync.Map 的几个特点:

  1. 以空间换效率,通过read和dirty两个map来提高读取效率
  2. 优先从read map中读取(无锁),否则再从dirty map中读取(加锁)
  3. 动态调整,当misses次数过多时,将dirty map提升为read map
  4. 延迟删除,删除只是为value打一个标记,在dirty map提升时才执行真正的删除
阅读全文 »

跨链三部曲-3:IBC

发表于 2018-06-27 | 分类于 Blockchain

Cosmos Network 中最令人兴奋的特色是 InterBlockchain Communication (IBC) 协议,允许不同区块链之间进行资产转移。IBC 已经实现为一个 basecoin 插件,本节我将介绍如何使用它进行不同区块链间的资产互转。

阅读全文 »

跨链三部曲-2:Basecoin Plugin

发表于 2018-06-16 | 分类于 Blockchain

在前一节中,我们学习了如何使用 basecoin 启动区块链和 basecli 来发送交易,同时研究了 Account 和 SendTx 这两种基本类型。本节,我们将演示如何扩展 SendTx 以便让它支持另外一种交易类型:AppTx,这样就可以发送数据到一个自定义的插件 plugin。这里,我们来探索一个简单的 plugin:Counter。

阅读全文 »

跨链三部曲-1:Basecoin

发表于 2018-05-22 | 分类于 Blockchain

前面我们讲到 Basecoin 是一个基于 tendermint 的 ABCI 应用,同时它也是一个跨链应用。这节,我给大家介绍如何利用它在不同的账户之间发送交易,并试着探索下其中的技术内幕。

阅读全文 »

跨链三部曲-0:开篇

发表于 2018-05-07 | 分类于 Blockchain

区块链技术发展到现在,从开山鼻祖比特币开始,涌现出了各种形形色色的链。

但,由于每个链都是独立的、垂直的封闭体系,当前的链圈只是由许多彼此割裂开来的区块链「孤岛」构成,链与链之间无法进行价值和数据的交换。

讽刺的是,声称去中心化的区块链之间的价值互换却主要依靠中心化的交易所来完成。

为了实现区块链之间的原子交易、资产转换、区块链内部信息互通,涌现了各种 跨链 技术。

阅读全文 »

我体验了 N 款数字货币钱包

发表于 2018-05-06 | 分类于 Blockchain

钱包,被看作未来数字资产交易的入口,谁能成为其中的独角兽,谁就可能会成为未来区块链版的“支付宝”,甚至“微信”。

我司举办了一次“钱包抓虫大赛”,号召全公司员工去体验市面上流行的各种数字货币钱包,分析其优缺点,以便为我们的钱包设计提供借鉴和参考。

阅读全文 »

Mysql主从同步/复制

发表于 2018-04-14 | 分类于 数据库

主从同步原理

在master机器上,主从同步事件会被写到特殊的log文件中(binary-log);在slave机器上,slave读取主从同步事件,并根据读取的事件变化,在slave库上做相应的更改。

主从同步作用

  • 数据备份:主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。
  • 架构扩展:水平扩展数据库的负载能力。当业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
  • 读写分离:写服务使用master,读服务使用slave,读写服务分离互不影响,提高并发访问性能。
阅读全文 »
1…345…15

彦祖老师

143 日志
15 分类
233 标签
GitHub E-Mail
© 2015 — 2023 彦祖老师
浙ICP备20005040号-1