golang最大一特色便是其原生支持goroutine,轻量的goroutine的实现可以使得程序轻松支持超高并发。想要深入学习golang,少不了详细理解goroutine原理。 goroutine是golang实现的用户级线程,其具有以 … 继续阅读 GMP模型(一) 使用Java语言实现一个简单的协程?
defer 源码分析
和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汇编(二)
Go汇编(一)
想要搞明白Go汇编相关知识,需要明确很多概念。由于Go通过编译之后生成的汇编语言依然是一种中间层,并不完全对应到CPU硬件的汇编,因此有一些冲突的概念需要仔细区分。在详细分析Go汇编之前,需要先理解这些前提条件,只有明白这些前提条件,才能更 … 继续阅读 Go汇编(一)
2PC和3PC中的一些细节问题
简单总结下2PC和3PC的一些细节问题。 2PC 2PC为两段提交,主要是通过先准备,再提交来实现分布式事务。2PC运行过程如下: 准备阶段: 事务协调者给没给参与者发送Prepare消息,每个参与者要么直接返回失败状态,要么在本地预先执行 … 继续阅读 2PC和3PC中的一些细节问题
GC 总结三 – G1
相关文章: GC总结一- 序 GC总结二-CMS 接上一篇,我们来说说G1,G1作为现在的主要的JVM GC,被作为各大互联网主要使用的垃圾回收器,了解G1回回收原理和回收过程,才能帮组我们更好的定位问题,解决问题。 -XX:+UseG1G … 继续阅读 GC 总结三 – G1
借鉴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