锁在计算机的世界里随处可见,当大家都想操作一个资源的时候,如果一窝蜂涌进来,就会出事的。
举个例子,加入说有2个线程都在操作一个共享资源(一个int),给他+1。我们知道+1不是原子操作,所谓原子操作,就是如果这个操作开始执行了,那么就不会被打断。看过汇编的同学都知道,+1需要先mov然后在add,如线程1mov了,然后执行线程2的mov,就会出问题。轻则数据错误,重则程序崩溃。感觉这个例子不太恰当,还是领会精神吧。为了保护我们的操作,那么就需要使得这个共享资源的操作变成原子的,这就需要锁了。
在并发编程中,尽量少用锁,能不用就不用,因为锁的开销很大很大。首先在业务层面进行分隔,尽量让不同的执行单元操作各自独立的数据,如果不可避免要用到锁,那么锁的范围要尽量小。

阅读全文 »

背景

之前一直都在通信行业撸代码,做的都是C/C++,感觉提升不大,所以打算往互联网转型,看看百万千万用户的产品是如何做出来的。
于是在拉勾上投了阿里云。

阅读全文 »

京东云面试记录

从通信行业转型到互联网,对云,分布式,高并发感兴趣,想搞底层。
于是在拉勾投了京东云。
面试分4轮,四位面试官分别是架构师、部门老大、大boss 、hr。

阅读全文 »

背景

正在撸自己的容器云,目前的业务不是复杂,所以做法比较土:自己管理集群,调用每个节点的docker daemon remote API来创建/启动/停止/删除镜像及容器,虽然简单,但是需要自己做集群管理(都还没上服务发现),比较麻烦。
此后打算用k8s,但由于其他原因,暂时搁置。后来咨询swarm的maintainer线超博,以及DaoCloud的高手们,决定采用swarm

阅读全文 »