随笔分类 -  Go

摘要:Go test工具 Go语言中测试依赖go test命令。go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的源代码文件都是go test 测试的一部分,不会被go build编译到最终的可执行文件中。 测试函数类型在*_test.go文件中有 阅读全文
posted @ 2020-02-15 17:59 -零 阅读(953) 评论(0) 推荐(0) 编辑
摘要:Go语言中type的用法: 1.定义结构体类型2.类型别名3.定义接口类型4.定义函数类型 1.定义结构体类型 结构体可用于用户自定义数据类型和进行面向对象编程。 type Person struct { name string age int sex bool } func (p *Person) 阅读全文
posted @ 2020-02-13 17:33 -零 阅读(2532) 评论(0) 推荐(0) 编辑
摘要:本文来自:CSDN博客 感谢作者:wkyb608 查看原文:Redigo--Go连接Redis 本文主要介绍go Web开发中操作redis。 Redigo是go连接Redis的扩展包,用此包时需先执行: go get github.com/garyburd/redigo/redis 安装完后,在文 阅读全文
posted @ 2020-01-21 13:54 -零 阅读(2051) 评论(0) 推荐(0) 编辑
摘要:LRU原理与分析 LRU是Least Recently Used 的缩写,翻译过来就是“最近最少使用”,也就是说,LRU缓存把最近最少使用的数据移除,让给最新读取的数据。而往往最常读取的,也是读取次数最多的,所以,利用LRU缓存,我们能够提高系统的performance. LRU实现 1. 新数据插 阅读全文
posted @ 2019-12-24 12:40 -零 阅读(621) 评论(0) 推荐(0) 编辑
摘要:本文:https://chai2010.cn/advanced-go-programming-book/ch5-web/ch5-06-ratelimit.html Ratelimit 服务流量限制 计算机程序可依据其瓶颈分为磁盘IO瓶颈型,CPU计算瓶颈型,网络带宽瓶颈型,分布式场景下有时候也会外部 阅读全文
posted @ 2019-12-12 15:11 -零 阅读(1410) 评论(0) 推荐(0) 编辑
摘要:本文:https://chai2010.cn/advanced-go-programming-book/ch6-cloud/ch6-02-lock.html 分布式锁 在单机程序并发或并行修改全局变量时,需要对修改行为加锁以创造临界区。为什么需要加锁呢?我们看看在不加锁的情况下并发计数会发生什么情况 阅读全文
posted @ 2019-12-12 15:06 -零 阅读(4187) 评论(0) 推荐(0) 编辑
摘要:本文:https://chai2010.cn/advanced-go-programming-book/ch6-cloud/ch6-01-dist-id.html 分布式id生成器 有时我们需要能够生成类似MySQL自增ID这样不断增大,同时又不会重复的id。以支持业务中的高并发场景。比较典型的,电 阅读全文
posted @ 2019-12-12 14:26 -零 阅读(1925) 评论(0) 推荐(0) 编辑
摘要:本文:https://books.studygolang.com/The-Golang-Standard-Library-by-Example/chapter06/06.2.html path:https://www.php.cn/manual/view/35279.html filepath:ht 阅读全文
posted @ 2019-12-11 23:02 -零 阅读(14137) 评论(0) 推荐(1) 编辑
摘要:ParseBool 将字符串转换为布尔值 // 它接受真值:1, t, T, TRUE, true, True// 它接受假值:0, f, F, FALSE, false, False.// 其它任何值都返回一个错误func ParseBool(str string) (value bool, er 阅读全文
posted @ 2019-12-11 22:09 -零 阅读(697) 评论(0) 推荐(0) 编辑
摘要:转发:https://mp.weixin.qq.com/s/ZlyQHfmoY1lzOoRgFSCOBw 开发go程序的时候,时常需要使用goroutine并发处理任务,有时候这些goroutine是相互独立的,而有的时候,多个goroutine之间常常是需要同步与通信的。另一种情况,主gorout 阅读全文
posted @ 2019-11-24 21:57 -零 阅读(744) 评论(0) 推荐(0) 编辑
摘要:准备工作 先安装Protobuf 编译器 protoc,下载地址:https://github.com/google/protobuf/releases 我的是windows,将压缩包bin目录下的exe放到环境PATH目录中即可。 然后获取插件支持库 // gRPC运行时接口编解码支持库 go g 阅读全文
posted @ 2019-11-11 23:55 -零 阅读(941) 评论(0) 推荐(0) 编辑
摘要:了解grpc/protobuf gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。gRPC提供了一种简单的方法来精确地定义服务和为iOS、And 阅读全文
posted @ 2019-11-10 15:44 -零 阅读(2430) 评论(0) 推荐(0) 编辑
摘要:defer使用语法 //defer后面必须是函数调用语句或方法调用语句,不能是其他语句,否则编译器会出错。 package main import ( "fmt" ) func foo(n int) int { defer n++ //defer fmt.Println(n) return n } 阅读全文
posted @ 2019-11-09 13:43 -零 阅读(741) 评论(0) 推荐(0) 编辑
摘要:Go Select使用 Go中的select和channel配合使用,通过select可以监听多个channel的I/O读写事件,当 IO操作发生时,触发相应的动作。 基本用法 //select基本用法 select { case <- chan1: // 如果chan1成功读到数据,则进行该cas 阅读全文
posted @ 2019-11-09 12:03 -零 阅读(9426) 评论(0) 推荐(3) 编辑
摘要:缓冲信道 语法结构:cap为容量 ch := make(chan type, cap) 缓冲信道支持len()和cap()。 只能向缓冲信道发送容量以内的数据。 只能接收缓冲信道长度以内的数据。 缓冲信道的容量是指信道可以存储的值的数量。我们在使用 make 函数创建缓冲信道的时候会指定容量大小。 阅读全文
posted @ 2019-11-09 11:58 -零 阅读(449) 评论(0) 推荐(0) 编辑
摘要:信道(Channel) 信道(Channel)可以被认为是协程之间通信的管道。数据可以从信道的一端发送并在另一端接收。 默认为同步模式,需要发送和接收配对。否则会被阻塞,直到另外的信道准备好后被唤醒。 信道分为无缓冲信道和有缓冲信道无缓冲信道:信道是同步的,接收前没有能力保存任何值。这种类型的信道只 阅读全文
posted @ 2019-11-08 00:51 -零 阅读(450) 评论(0) 推荐(0) 编辑
摘要:Go 并不是完全面向对象的编程语言。Go 官网的 FAQ 回答了 Go 是否是面向对象语言,摘录如下。 可以说是,也可以说不是。虽然 Go 有类型和方法,支持面向对象的编程风格,但却没有类型的层次结构。Go 中的“接口”概念提供了一种不同的方法,我们认为它易于使用,也更为普遍。Go 也可以将结构体嵌 阅读全文
posted @ 2019-11-06 16:35 -零 阅读(435) 评论(0) 推荐(0) 编辑
摘要:Go语言中的字符串 Go 中的字符串是兼容 Unicode 编码的,并且使用 UTF-8 进行编码,这样每一个Unicode字符根据代码点的大小使用1、2、3或4个字节表示代码点。Go 语言中的字符串是一个字节切片,也就是说单个字符可以被字节索引,我们可以假定每个字符的编码只会占用一个字节。例如: 阅读全文
posted @ 2019-11-05 19:19 -零 阅读(906) 评论(0) 推荐(0) 编辑
摘要:前言 map 是在 Go 中将值(value)与键(key)关联的内置类型。通过相应的键可以获取到值。 在一个map里所有的键都是唯一的,而且必须是支持==和!=操作符的类型,切片、函数以及包含切片的结构类型由于具有引用语义,不能作为映射的键,使用这些类型会造成编译错误。 map的value值可以是 阅读全文
posted @ 2019-11-04 22:35 -零 阅读(891) 评论(0) 推荐(0) 编辑
摘要:结构体是用户定义的类型,表示若干个字段(Field)的集合。有时应该把数据整合在一起,而不是让这些数据没有联系。这种情况下可以使用结构体。 例如,一个职员有 firstName、lastName 和 age 三个属性,而把这些属性组合在一个结构体 employee 中就很合理。 结构体的声明基础 t 阅读全文
posted @ 2019-11-02 18:34 -零 阅读(743) 评论(0) 推荐(0) 编辑