
go语言开源项目
badman250
专注分享IT知识技能
展开
-
16.go开源groupcache项目笔记——部署
16.go开源groupcache项目笔记——部署 groupcache没有服务端与客户端之分。本身没有main函数就是一个库,可以被其他应用集成到代码中。主要结构说明:consistenthash一致性hash哈希算法,lru(提供了LRU缓存算法,最终存数据的地方,里面使用了两种数据结构,map和list,map用来保存key-value数据,list按访问顺序保存valu原创 2017-09-27 20:17:21 · 9344 阅读 · 0 评论 -
7.go开源cache2go项目笔记——benchmark_test文件
7.go开源cache2go项目笔记——benchmark_test文件1 导入包import ( "sync" "sync/atomic" "testing" "time")2 函数BenchmarkNotFoundAdd测试主函数。并发测试NotFoundAdd.原创 2017-09-26 22:00:34 · 6976 阅读 · 0 评论 -
6.go开源cache2go项目笔记——cache_test文件
6.go开源cache2go项目笔记——cache_test文件1 导入包import ( "bytes" "log" "strconv" "sync" "sync/atomic" "testing" "time")变量var ( k= "t原创 2017-09-26 21:59:34 · 7489 阅读 · 0 评论 -
4.go开源cache2go项目笔记——cacheitem文件
4.go开源cache2go项目笔记——cacheitem文件1 导入导入的包如下:import ( "sync" "time")2 CacheItem结构体该结构是CACHE中的一个ITEM。所以叫做CacheItem.type CacheItem struct { sync.RWMutex原创 2017-09-26 21:58:38 · 8010 阅读 · 0 评论 -
15.go开源groupcache项目笔记——sinks代码
15.go开源groupcache项目蛤蟆笔记——sinks代码结构体和接口类型Sink为接口。type Sink interface { SetString(sstring) error SetBytes(v[]byte) error SetProto(mproto.Message) error vi原创 2016-07-26 23:28:21 · 30590 阅读 · 0 评论 -
14.go开源groupcache项目笔记——peers代码
14.go开源groupcache项目蛤蟆笔记——peers代码 属于groupcache包。定义了进程如何找到并和其他peers通信。 定义Content为接口,可以是任何类型。 ProtoGetter也为接口,必须被一个peer来实现,包含一个Get函数。入参Content可以为nil.定义PeerPicker为接口,包含Pick原创 2016-07-26 23:27:58 · 30956 阅读 · 0 评论 -
5.go开源cache2go项目笔记——cache文件
5.go开源cache2go项目蛤蟆笔记——cache文件1 导入包就一个sync同步包2 变量创建两个全局变量一个是cache,是MAP类型,存储的是cachetable 指针。map 是引用类型,语法如下:var map1 map[keytype]valuetype[keytype] 和 valuetype 之间允许有空格,但是 gofmt 移除了空原创 2016-07-23 23:35:30 · 30807 阅读 · 0 评论 -
3.go开源cache2go项目笔记——cachetable文件
3.go开源cache2go项目蛤蟆笔记——cachetable文件 该文件是项目中行数最多的go文件。共338行。1 导入:"log" "sort" "sync" "time"2 CacheTable结构结构定义如下:type CacheTable struct { sync.RW原创 2016-07-23 23:34:39 · 31421 阅读 · 0 评论 -
2.go开源cache2go项目笔记——项目介绍
2.go开源cache2go项目蛤蟆笔记——项目介绍 该项目是GO对象的缓存库,包含CACHE过期自动删除CACEH功能等。 项目中包含examples文件夹,里面包含一些使用例子。 主目录就没有其他文件夹了,剩下的都是go文件为主了。 (PS:还有LICENSE.TXT, README之类的可以打开瞅瞅)1 Go文件原创 2016-07-23 23:34:16 · 31888 阅读 · 0 评论 -
1.go开源cache2go项目笔记——简单使用-
1.go开源cache2go项目蛤蟆笔记——简单使用-1 下载开源下载路径:https://github.com/muesli/cache2go 2 代码如下:packagemain import( "fmt" "time" "cache2go-master") //Keys&valuesincache2g原创 2016-07-23 23:33:47 · 32635 阅读 · 0 评论 -
8.go开源cache2go项目笔记——callbacks调用
8.go开源cache2go项目笔记——callbacks调用调用CALLBACK测试,包含main函数1 代码如下:package mainimport ( "fmt" "time" "cache2go-master")func main() { cache:= cache2go.Cache("my原创 2017-09-26 22:01:00 · 2643 阅读 · 0 评论 -
9.go开源cache2go项目笔记——dataloader调用
9.go开源cache2go项目笔记——dataloader调用测试dataloader相关功能。1 代码packagemain import( "fmt" "strconv" "github.com/muesli/cache2go") funcmain(){ cache:=cache2go.Cache("my原创 2017-09-26 22:01:29 · 6965 阅读 · 0 评论 -
10.go开源cache2go项目笔记——mycachedapp调用
10.go开源cache2go项目笔记——mycachedapp调用1 代码如下packagemainimport( "fmt" "time" "cache2go-master")typemyStructstruct{ text string moreData[]byte}funcmain(){原创 2017-09-26 22:01:57 · 6338 阅读 · 0 评论 -
13.go开源groupcache项目笔记——byteview_test测试代码
13.go开源groupcache项目笔记——byteview_test测试代码TestByteView创建一个字符串数组"","x","yy"两套循环,对比字符串数组和ByteView结构体。判断是否一一相等。Of函数Of函数用于被testbyteview调用。返回byteview.入参为interface,可以是任何类型。然后从中获取其byte[]数组,并返原创 2017-09-27 20:16:45 · 9463 阅读 · 0 评论 -
12.go开源groupcache项目笔记——byteview代码
12.go开源groupcache项目笔记——byteview代码定义结构体ByteViewtype ByteView struct { //If b is non-nil, b is used, else s is used. b[]byte sstring}b不为空使用b,b为空就使用s.Len函数原创 2017-09-27 20:16:17 · 9581 阅读 · 0 评论 -
11.go开源groupcache项目笔记——testpb代码
11.go开源groupcache项目笔记——testpb代码其中test.pb.go代码由test.proto产生。1 Test.proto包含6个message结构TestMessageTestRequestTestResponseCacheStatsStatsResponseEmpty和 一个serviceGroupCacheTest原创 2017-09-27 20:15:50 · 9629 阅读 · 0 评论 -
10.go开源groupcache项目笔记——singleFlight
10.go开源groupcache项目笔记——singleFlight1 singleFlight这个包主要实现了一个可合并操作的接口1.1 先定义一个回调函数结构calltype call struct { //类似java的CountdownLatch的 wg sync.WaitGroup // 回调函数 val原创 2017-09-27 20:15:22 · 10401 阅读 · 0 评论 -
9.go开源groupcache项目笔记——lru代码
9.go开源groupcache项目笔记——lru代码LRU是LeastRecently Used 近期最少使用算法。内存管理的一种页面置换算法,对于在内存中但又不用的数据块(内存块)叫做LRU,操作系统会根据哪些数据属于LRU而将其移出内存而腾出空间来加载另外的数据。 LRU用于实现LRU 的cache.1 LRU文件1.1 Cache结构体原创 2017-09-27 20:14:46 · 10698 阅读 · 0 评论 -
8.go开源groupcache项目笔记——groupcachepb代码
8.go开源groupcache项目笔记——groupcachepb代码包含两个文件一个groupcache.pb.go和一个groupcache.proto文件。1 groupcache.pb.go该文件前头有输出:// Code generated by protoc-gen-go.// source: groupcache.proto// DO NOT ED原创 2017-09-26 22:04:56 · 10869 阅读 · 0 评论 -
7.go开源groupcache项目笔记——关于gocode代码自动补齐
7.go开源groupcache项目笔记——关于gocode代码自动补齐首先下载gocode代码,输入如下:go get github.com/nsf/gocode如果是WINDOWS直接输入如下:go get -u -ldflags -H=windowsguigithub.com/nsf/gocode然后编译命令如下:go build gocode.go autocomp原创 2017-09-26 22:04:34 · 7446 阅读 · 0 评论 -
6.go开源groupcache项目笔记——consistenthash_test代码
6.go开源groupcache项目笔记——consistenthash_test代码用于测试consistenthash代码。1 代码如下packageconsistenthash import( "fmt" "strconv" "testing") funcTestHashing(t*testing.T){原创 2017-09-26 22:03:52 · 6446 阅读 · 0 评论 -
5.go开源groupcache项目笔记——关于testing
5.go开源groupcache项目笔记——关于testingGo语言通过testing包提供自动化测试功能。包内测试只要运行命令 go test,就能自动运行符合规则的测试函数。Go语言测试约定规则1.一般测试funcTestXxx(*testing.T)测试行必须Test开头,Xxx为字符串,第一个X必须大写的[A-Z]的字幕。为了测试方法和被测试方法的可读性,一般Xxx为被测试方原创 2017-09-26 22:03:21 · 6579 阅读 · 0 评论 -
4.go开源groupcache项目笔记——关于strconv
4.go开源groupcache项目笔记——关于strconv Strconv包是赋值将string进行转换的,例如将字符串转换为整型数字等。1 测试代码packagemain import( "fmt" "strconv") funcmain(){ varorigstring="666" varanin原创 2017-09-26 22:02:50 · 6170 阅读 · 0 评论 -
3.go开源groupcache项目——consistenthash代码
3.go开源groupcache项目——consistenthash代码 Consistenthash代码是提供ring hash的实现。 包含两个文件consistenthash.go和consistenthash_test.go。 包名叫做consistenthash定义了一个Hash 函数,一个Map结构体。1 Map结构体原创 2016-07-24 23:18:24 · 30943 阅读 · 0 评论 -
2.go开源groupcache项目——关于protobuf
2.go开源groupcache项目——关于protobufprotobuf是Google公司开发出来,把某种数据结构的信息,以某种格式保存起来。主要用于数据存储、传输协议格式等场合。和XML 差不多Google公司放着XML不用,非要另起炉灶,重新造轮子。一个根本的原因是XML性能不够好。另一个是代码 生成机制, 除了性能好,代码生成机制是主要吸引人的地方。可以把proto文件看成是原创 2016-07-24 23:17:50 · 30823 阅读 · 0 评论 -
1.go开源groupcache项目——groupcache介绍
1.go开源groupcache项目——groupcache介绍代码下载地址如下:https://github.com/golang/groupcache目标是在很多场景下替换memcached。1 memcachedMemcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高原创 2016-07-24 10:39:19 · 31502 阅读 · 0 评论