随笔分类 - Go
摘要:异步check代码: package main import ( "fmt" "reflect" "time" ) type janitor struct { interval time.Duration overtime time.Duration } func (j *janitor) Runa
阅读全文
摘要:testify介绍 testify用go实现的一个assert风格的测试框架,这个包提供了我们需要的断言的功能,提供了非常丰富的断言方法。 提供了测试suite、断言、mock三种功能。 官方文档:https://godoc.org/github.com/stretchr/testify 安装: g
阅读全文
摘要:快速解决 公司golang的项目,使用到了公司的私有仓库: 运行报错: unknown revision vx.x.x 解决: 配置git(将https 换成 git 方式): git config --global url."git@私有仓库域名:".insteadOf "https://私有仓库
阅读全文
摘要:最近公司部门使用go-FastDFS做文件存储,在这里记录一下。 go-FastDFS 简介 项目地址:https://github.com/sjqzhang/go-fastdfs 编译版本下载地址:https://github.com/sjqzhang/go-fastdfs/releases 中文
阅读全文
摘要:NSQ NSQ是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优异。 NSQ的优势有以下优势: NSQ提倡分布式和分散的拓扑,没有单点故障,支持容错和高可用性,并提供可靠的消息交付保证 NSQ支持横向扩展,没有任何集中式代理。 NSQ易于配置和部署,并且内置了管理界面。 与其他mq的比较
阅读全文
摘要:一、下载Go语言安装包 官网下载地址:https://golang.org/dl/,使用tar命令将档案包解压到/usr/local目录中: sudo tar -C /usr/local -xzf go1.11.5.linux-amd64.tar.gz 二、添加环境变量和工作变量到系统环境中 先进入
阅读全文
摘要:RPCX的产生 rpcx是一个类似阿里巴巴 Dubbo 和微博 Motan 的分布式的RPC服务框架,基于Golang net/rpc实现。 谈起分布式的RPC框架,比较出名的是阿里巴巴的dubbo,包括由当当网维护的dubbox。不知道dubbo在阿里的内部竞争中败给了HSF,还是阿里有意将其闭源
阅读全文
摘要:原文链接:http://www.01happy.com/golang-struct-tag-desc-and-get/ 在处理json格式字符串的时候,经常会看到声明struct结构的时候,属性的右侧还有小米点括起来的内容。形如: 1 type User struct { 2 UserId int
阅读全文
摘要:原文:https://mp.weixin.qq.com/s/GpVy1eB5Cz_t-dhVC6BJNw 作者:饶全成 Go 语言的 context 包短小精悍,非常适合新手学习。不论是它的源码还是实际使用,都值得投入时间去学习。 这篇文章依然想尝试全面、深入地去研究。文章相比往期而言,整体不长,希
阅读全文
摘要:切片简单介绍 slice 的底层数据是数组,slice 是对数组的封装,它描述一个数组的片段。两者都可以通过下标来访问单个元素。 数组是定长的,长度定义好之后,不能再更改。而切片则非常灵活,它可以动态地扩容。切片的类型和长度无关。 数组就是一片连续的内存, slice 实际上是一个结构体,包含三个字
阅读全文
摘要:值类型 值类型包括基本数据类型,int,float,bool,string,以及数组和结构体(struct)。值类型变量声明后,不管是否已经赋值,编译器为其分配内存,此时该值存储于栈上。值类型的默认值: var a int //int类型默认值为 0 var b string //string类型默
阅读全文
摘要:原文链接:https://segmentfault.com/a/1190000018448064 作者:薛薛薛 分断锁 type SimpleCache struct { mu sync.RWMutex items map[interface{}]*simpleItem } 在日常开发中, 上述这种
阅读全文
摘要:新老朋友好久不见,我是大彬,这篇文章准备了很久,不是在拖延,而是中间做了一些其他事情,耽搁了一些。 这篇文章主要介绍Go内存分配和Go内存管理,会轻微涉及内存申请和释放,以及Go垃圾回收。 从非常宏观的角度看,Go的内存管理就是下图这个样子,我们今天主要关注其中标红的部分。 友情提醒: 文章有点长,
阅读全文
摘要:序列化与反序列化 在网络上客户端与服务之间通过数据交换来通信,消息被当作字节序列来传输,它们是没有结构的,仅仅只是一串字节流。但是我们需要传输的数据可能是高度结构化的,所以在传输前必须进行序列化,需要有合适的协议来约定传输的内容的含义。在传输之前将要(有类型的)数据 序列化 成字节流,接收到字节流时
阅读全文
摘要:golang分布式存储 读书笔记(1)——流操作之GetStream封装 golang分布式存储 读书笔记(2)——流操作之PutStream封装
阅读全文
摘要:Go 语言map实现采用的是哈希查找表,并且使用链表解决哈希冲突(数组+链表)。 map数据结构 type hmap struct { count int flags uint8 B uint8 noverflow uint16 hash0 uint32 buckets unsafe.Pointer
阅读全文
摘要:Channel作为Go CSP的重要组成部分 在传统的编程语言中,并发编程模型是基于线程和内存同步访问控制。 而CSP是一种新的并发编程模型,CSP的并发哲学: Do not communicate by sharing memory; instead, share memory by commun
阅读全文
摘要:Golang指针 *类型:普通指针类型,用于传递对象地址,不能进行指针运算。 unsafe.Pointer:通用指针类型,用于转换不同类型的指针,不能进行指针运算,不能读取内存存储的值(必须转换到某一类型的普通指针)。 uintptr:用于指针运算,GC 不把 uintptr 当指针,uintptr
阅读全文
摘要:如何得到一个对象所占内存大小? fmt.Println(unsafe.Sizeof(int64(0))) // "8" type SizeOfA struct { A int } unsafe.Sizeof(SizeOfA{0}) // 8 type SizeOfC struct { A byte
阅读全文
摘要:nil nil 是go语言中预先定义的标识符,不是关键字或保留字。我们可以直接使用nil,而不用声明它。而且我们可以定义一个名称为 nil 的变量,比如下面这样: var nil = errors.New("my god") 虽然上面的声明语句可以通过编译,但是并不提倡这么做。 默认值nil 在go
阅读全文