和Java的finally类似,Go也提供了defer关键字用来做函数最后的收尾动作。虽然defer的用法看似简单,但是不理解其原理,依然会踩到很多坑。同时recover()也是需要通过和defer关键字配合使用。因此,这里简单分析一下de … 继续阅读 defer 源码分析
分类:首页
Goroutine Coroutines
Go Goroutine 在刚接触Go的时候,了解到Go特色之一便是协程,Go通过在用户态管理程序中所有的协程,使得其在Web方面能够轻松支撑起百万连接。这里简单梳理下协程与线程的区别以及Go如何解决协程中的问题。 为什么要有协程? 在早期 … 继续阅读 Goroutine Coroutines
Go汇编(二)
接Go汇编(一),理解Go一些前置条件之后,接下来通过实际分析来进一步分析Go源码编译之后的汇编语言。 有下面一段代码: func add(a int, b int) int { c := 1 n := sub(a, b, c) retur … 继续阅读 Go汇编(二)
2PC和3PC中的一些细节问题
简单总结下2PC和3PC的一些细节问题。 2PC 2PC为两段提交,主要是通过先准备,再提交来实现分布式事务。2PC运行过程如下: 准备阶段: 事务协调者给没给参与者发送Prepare消息,每个参与者要么直接返回失败状态,要么在本地预先执行 … 继续阅读 2PC和3PC中的一些细节问题
借鉴ConcurrentHashMap 并发处理技巧
这篇文章只是简单总结下ConcurrentHashMap的精髓,并没有详细分析源码。 网上解析ConcurrentHashMap源码的文章很多,有详细的,也有简单介绍的。但是个人认为如果不是要去排查Bug的话,那也没有比较一行行的斟酌,看源 … 继续阅读 借鉴ConcurrentHashMap 并发处理技巧
Kafka Exactly Once和事务
说到分布式事务,大多数想到的都是2PC,3PC,TCC等,然而真正使用和实现的现有项目又比较少,在Kafka中,提供了批量消息的事务实现,接下来简单分析下Kafka事务的原理。 Kafka Exactly Once Kafka的事务首先依赖 … 继续阅读 Kafka Exactly Once和事务
Kafka & Zookeeper
Zookeeper作为分布式配置中心,为很多大型分布式系统提供分布式配置,集群管理。然而Zookeeper不是万能的,如果写入数据量过大,或者值修改过于频繁,则Zookeeper可能会成为瓶颈,下面从Kafka & Zookeepe … 继续阅读 Kafka & Zookeeper
分布式一致性算法
一直想写篇文章总结下分布式一致性算法,但是这个东西细节实在太多…每次捋一半就卡住。 这篇文章,是第三次重写。 本文只是总结各个分布式算法之间的易同,前提是需要对各个算法有一定的理解。 分布式一致性算法是为了解决集群中主从服务数据 … 继续阅读 分布式一致性算法
二分搜索算法及其变体
二分的思想很简单,但是代码的细节确很难理解,每次做算法遇到二分的变体,脑子里都是浆糊,当时理解了,后面又忘了,需要注意的细节太多太多了,网上有很多分析二分变体的博客,写的都很详细,但是总是阅后即忘。。。 今天碰巧又遇到了这类算法,痛定思痛, … 继续阅读 二分搜索算法及其变体
Redis 深入解析
Redis作为目前互联网领域使用最广泛的存储中间件,Redis有着超高的性能,丰富的功能,其应用范围之广泛,几乎说道缓存,第一个选择便是Redis。Redis所提供的的丰富的数据结构以及对数据结构的各种操作指令使得Redis不仅仅可以作为缓 … 继续阅读 Redis 深入解析