开源
Mr_buffoon
远离舒适区
展开
-
Ansible python API使用实例
Ansible 是一个开源的自动化运维工具,可以实现批量主机命令、脚本等的批量执行,方便快捷,被管理主机不需要部署代理,具体请见官网https://www.ansible.com/这里简单介绍一下其提供的python API如何使用。Ansible目前已经发布多个版本,不同版本的API变化较大,在2.0的版本以前,ansible的API十分简单。通过大概十几行代码就可以模拟通过ad-hoc的方...原创 2018-10-07 09:54:23 · 4012 阅读 · 0 评论 -
groupcache源码分析(一)-- 概述
正在学习GO语言,基本语法已经差不多掌握,就打算阅读一些经典开源源码吸取营养,groupcache源码代码量不是很大,而且里面可以学到很多缓存相关的知识, 所以选取groupcache源码进行阅读分析。本篇先大概的介绍一下groupcache,然后简单分析一下代码结构,后续将会有一系列文章进行代码层面的详细讲解。groupcache是memcached作者Brad Fitzpatrick用G...原创 2018-10-29 18:22:53 · 1069 阅读 · 0 评论 -
groupcache源码分析(三)-- consistenthash
consistanthash.go文件中是consistanthash模块的代码,这主要是提供了一致性hash的一些接口。一致性hash算法,通常是用在查找一个合适的下载节点时,使负载更平均,同时也使得某个节点故障不会导致大量的重新映射成本s,要了解一致性hash原理请详见:https://www.cnblogs.com/lpfuture/p/5796398.html该部分主要封装了以下这几个接...原创 2018-10-31 14:53:13 · 485 阅读 · 0 评论 -
groupcache 源码分析(二)-- LRU
lru部分的代码在lru/lru.go文件中,它主要是封装了一系列lru算法相关的接口,供groupcahe进行缓存置换相关的调用。它主要封装了下面几个接口:// 创建一个Cachefunc New(maxEntries int) *Cache // 向Cache中插入一个KVfunc (c *Cache) Add(key Key, value interface{})// 从Ca...原创 2018-10-30 19:01:47 · 575 阅读 · 1 评论 -
groupcache源码分析(四)-- singleflight
singleflight.go文件中是singleflight模块的代码,这主要是进行相同访问的一个合并操作。也就是说,如果对于某个key的请求已经存在并且正在进行,则对该key的新的请求会堵塞在这里,等原来的请求结束后,将请求得到的结果同时返回给堵塞中的请求。该部分就封装了一个接口:func (g *Group) Do(key string, fn func() (interface{}, ...原创 2018-11-06 19:41:34 · 1033 阅读 · 0 评论 -
groupcache源码分析(五)-- byteview
byteview.go文件封装了一个string与byte[]的统一接口,也就是说用byteview提供的接口,可以屏蔽掉string与byte[]的不同,使用时可以不用考虑是string还是byte[]。首先封装了一个ByteView结构体:// A ByteView holds an immutable view of bytes.// Internally it wraps eithe...原创 2018-11-07 10:36:53 · 460 阅读 · 0 评论