【golang】 slice
使用golang已经快2年了,一直没有好好整理过基础知识,这次也好好整理一下,从最基本的slice开始,也把之前的一些疑惑进行自我解答 :)
使用golang已经快2年了,一直没有好好整理过基础知识,这次也好好整理一下,从最基本的slice开始,也把之前的一些疑惑进行自我解答 :)
那么它做了以下的改造完成了读写锁实现.
CuratorFramework提供了对于Zookeeper
client的封装,使调用者能够更方便的使用Zookeeper
,同时也提供了很多菜谱(recipes),其中的分布式锁是最常用的,那它是怎么基于Zookeeper
实现的分布式锁呢?
首先,先看一下ReentrantLock类结构。
这里可以看到,在ReentrantLock内部,有个Sync内部静态抽象类,该类继承自AbstractQueuedSynchronizer(AQS)
,并且有2个内部静态类的实现NonfairSync
与FairSync
,从类的名字就能看出来公平锁与非公平锁是通过Sync实现的。
前边介绍了HttpCore里基于传统阻塞IO实现,接下来这篇会比较长,主要是在架构层面上介绍HttpCore+HttpCore NIO.
NIO是什么我这里就不具体介绍了,如果有兴趣可以去看别人写的文档.下面这两个链接介绍内容都是一致的,基于老外写的一篇文章.
HttpComponents前身是大名鼎鼎的HttpClient,考虑到架构或者实现上改动太大,HttpComponents诞生了(重写),它将原有HttpClient进行拆分、模块化.
详细内容可查看gitlab官方文档.这里我介绍一些很常用的功能。
标签就是对commit id
加上一个别名。比如上次提交的commit id
为6224937
06ab447b6bb37e4e2a2f276a20fed2ab4,如果我想把这次版本进行发布,后期又能很清楚的知道这次版本发布了什么。那么使用Tag就很简单了。