7、条件变量的实现机制及避坑指南

你好,我是鸟窝。 在写Go程序之前,我曾经写了10多年的Java程序,也面试过不少Java程序员。在Java面试中,经常被问到的一个知识点就是等待/通知(wait/notify)机制。面试官经常会这样考察候选人:请实现一个限定容量...

Go 并发编程实战课

6、协同等待,任务编排利器

你好,我是鸟窝。 WaitGroup,我们以前都多多少少学习过,或者是使用过。其实,WaitGroup很简单,就是package sync用来做任务编排的一个并发原语。它要解决的就是并发-等待的问题:现在有一个goroutine A 在检查点(che...

Go 并发编程实战课

5、读写锁的实现原理及避坑指南

你好,我是鸟窝。 在前面的四节课中,我们学习了第一个同步原语,即Mutex,我们使用它来保证读写共享资源的安全性。不管是读还是写,我们都通过Mutex来保证只有一个goroutine访问共享资源,这在某些情况下有点“浪费”。比如说,在写少读多的情况下...

Go 并发编程实战课

4、骇客编程,如何拓展额外功能?

你好,我是鸟窝。 前面三讲,我们学习了互斥锁Mutex的基本用法、实现原理以及易错场景,可以说是涵盖了互斥锁的方方面面。如果你能熟练掌握这些内容,那么,在大多数的开发场景中,你都可以得心应手。 但是,在一些特定的场景中,这些基础功能是不足以应对的。这...

Go 并发编程实战课

3、Mutex:4种易错场景大盘点

你好,我是鸟窝。 上一讲,我带你一起领略了Mutex的架构演进之美,现在我们已经清楚Mutex的实现细节了。当前Mutex的实现貌似非常复杂,其实主要还是针对饥饿模式和公平性问题,做了一些额外处理。但是,我们在第一讲中已经体验过了,Mutex使用起来...

Go 并发编程实战课

2、Mutex庖丁解牛看实现

你好,我是鸟窝。 上一讲我们一起体验了Mutex的使用,竟是那么简单,只有简简单单两个方法,Lock和Unlock,进入临界区之前调用Lock方法,退出临界区的时候调用Unlock方法。这个时候,你一定会有一丝好奇:“它的实现是不是也很简单呢?” 其...

Go 并发编程实战课

1、如何解决资源并发访问?

你好,我是鸟窝。 今天是我们Go并发编程实战课的第一讲,我们就直接从解决并发访问这个棘手问题入手。 说起并发访问问题,真是太常见了,比如多个goroutine并发更新同一个资源,像计数器;同时更新用户的账户信息;秒杀系统;往同一个buffer中并发写...

Go 并发编程实战课

0、如何吃透Go并发编程

你好,我是晁岳攀,网名鸟窝。之前我在微博研发平台架构中心担任资深架构师,同时也是微服务框架rpcx的作者,欢迎来到“Go并发编程实战课”。 并发编程,为什么选Go?为什么要学Go并发呢?我想先和你聊聊我和Go结缘的经历。 作为一位老程序员,我在清华同...

Go 并发编程实战课

49、结束语

你好,我是陈旸。 看到结束语的时候,就意味着SQL专栏已经结束了。我希望这个专栏可以帮你打开数据的大门,从而通过数据发现更多的宝藏。 互联网已经进入到下半场是不争的事实。我们每天不是想着下载某个新的APP,而是选择卸载掉哪个不经常用的APP。对于互联...

SQL必知必会

48、期末测试

你好,我是陈旸。 《SQL必知必会》这个专栏已经完结很久了,在完结的这段时间里,我依然能收到很多评论。在这些评论中,有认真回答课后思考题的,也有积极提问的。这些评论极大地丰富了专栏的内容,感谢你一直以来的认真学习和支持。 为了让你更好地检测自己的学习...

SQL必知必会