
go
文章平均质量分 77
moliyiran
这个作者很懒,什么都没留下…
展开
-
Go 每日漫谈——Go Module 的一些坑
每天和大家来漫谈 Go 语言的相关的一些知识、问题、最佳实践等。今天是第一天,来说一说Go Module unknown revision 的问题。简单介绍下Go Module,它是一个 Go 依赖管理工具。现在我们生成一个可执行文件,它在 go.mod 寻找依赖。$ go install app.go我们会使用一些依赖,这些代码在私有仓库比如 Gitlab、Github 上。执行上面命令之后,会提示下面的文字或者反复需要输入用户名密码去验证,即使你配置了 ssh keys 。go.转载 2020-09-16 17:19:10 · 1205 阅读 · 0 评论 -
php+go实现grpc
1.先安装编译器:https://github.com/google/protobuf/releases把bin下的exe放到环境PATH目录。做成环境变量.2.获取go支持库的插件: // gRPC运行时接口编解码支持库 go get -u github.com/golang/protobuf/proto // 从 Proto文件(gRPC接口描述文件) 生成 go文件 的编译器插件 go get -u github.com/golang/protobuf/protoc-gen-g原创 2020-07-05 14:14:18 · 2068 阅读 · 1 评论 -
Go modules: checksum mismatch
今天手贱,在goland里运行了下go mod vendor.然后各种问题。总是报这个:或者就是出现程序可以运行,但是文件里导入包标红,ctrl+左键不跳。然后不停的删.idea,删go.mod,go.sum重构还是不行。最后执行go clean -modcache...原创 2020-04-15 14:27:57 · 3259 阅读 · 0 评论 -
sublime php 运行环境
有时候需要用运行一段PHP代码,比如测试某个函数返回值等等,如果启动 Http Server,再打开浏览器,那黄花菜都凉了。我们可以在 Sublime Text 3 中创建php的 build system,这样就可以利用 Ctrl+B 命令快速运行。1、将PHP程序设置到环境变量中,在任意目录下都可执行php;通过win+R输入sysdm.cpl打开系统属性(也可以通原创 2017-08-10 21:22:22 · 558 阅读 · 0 评论 -
sarama-cluster消费者运行时报panic: non-positive interval for NewTicker
笔者是go新手,照着例子运行customer代码如下:package mainimport ( _"flag" "fmt" "log" "os" "os/signal" _"syscall" "github.com/Shopify/sarama" "github.com/bsm/sarama-cluster")var ( groupId = "g3" b...原创 2020-02-23 19:53:05 · 5704 阅读 · 9 评论 -
记一次golang定时器引发的诡异错误
作为一只在9127工作制下摸鱼的程序猿,周六自然是愉快的加班了。一早上除了一位新同学在我们的“敏捷迭代”下错删了接口之外没什么大事。临近中午,突然隔壁组大佬找到我,表示有个go语言服务偶现panic的问题需要求助。了解了一下,原来是他们组的一个妹子(小姐姐??)写的代码的问题。okok,既然大佬都来找我了,帮忙解决下顺便……再好不过了。咳咳,进入正题,将问题场景的代码先放出来: va...转载 2020-02-23 19:18:19 · 1828 阅读 · 0 评论 -
Golang如何正确的停止Ticker
Golang可以利用time包的Ticker实现定时器的作用,最近使用Ticker时,发现调用Ticker的Stop方法无法正确的停止Ticker,协程会阻塞在等待Ticker的C通道处,精简后的代码如下:func UseTickerWrong() *time.Ticker { ticker := time.NewTicker(5 * time.Second) go func(...转载 2020-02-23 19:10:22 · 2111 阅读 · 0 评论 -
[Golang] timer可能造成的内存泄漏
背景前两天,跟一位学长交流Golang;然后,他突然问我:你知道timer可能造成内存泄漏嘛? 当时,甚是一脸懵逼,毕竟之前写的Agent测了好久,都没发现这个问题啊。今天,就索性了解了下。这里先说下结论,timer的误用可能造成某些等待timer的Goroutine无法正常退出,导致资源无法释放;(ps. 虽然的确算是内存泄漏,但是对于我这种写C出身的人来说,感觉还是怪怪的)接下来进入正题...转载 2020-02-23 19:07:46 · 1560 阅读 · 0 评论 -
Golang 定时器timer和ticker
两种类型的定时器:ticker和timer。两者有什么区别呢?请看如下代码:tickerpackage mainimport ( "fmt" "time")func main() { d := time.Duration(time.Second*2) t := time.NewTicker(d) ...转载 2020-02-23 19:04:23 · 1197 阅读 · 0 评论 -
GO标准库flag
Go语言内置的flag包实现了命令行参数的解析。os.Argsos.Args是一个[]string类型。获取命令参数示例:func main() { if len(os.Args) > 0{ for index,args := range os.Args{ fmt.Printf("args[%d]=%v\n", index, ...转载 2020-02-22 15:57:30 · 784 阅读 · 0 评论 -
go build 不同系统下的可执行文件
Golang 支持在一个平台下生成另一个平台可执行程序的交叉编译功能。1、Mac下编译Linux, Windows平台的64位可执行程序:$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build test.go$ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go2、Lin...转载 2020-02-22 09:22:25 · 1002 阅读 · 0 评论 -
golang 将kafka的offset置为最新
需要解决:当需要用同一个group_id去消费kafka的partition时,如果程序down掉,可能存在已经消费的数据尚未提交的可能,此时会造成重复消费的问题,且在重启这段时间会产生新的数据,重启这段时间的kafka消息不想再消费。采用方案:1、创建consumer时将offset设置为最新import ( "github.com/Shopify/sarama" clus...转载 2020-02-21 14:45:38 · 4233 阅读 · 0 评论 -
kafka的go版本api介绍及使用示例
一、概述go语言版本的kafaka API,使用sarama和sarama-cluster包,支持offset追踪。生产和消费的过程,都是通过设置一个配置结构体开始的。并发量小时,可以用同步生产者,但是并发量大时,必须使用异步生产者。1.1 安装依赖库saramago get github.com/Shopify/sarama该库要求kafka版本在0.8及以上,支持kafka定义的h...转载 2020-02-21 14:33:05 · 1764 阅读 · 0 评论 -
kafka的go版本api使用
概述go语言版本的kafakaAPI准备golangsarama简单使用生产和消费的过程都是通过一个配置开始的.生产者//设置配置 config := sarama.NewConfig() //等待服务器所有副本都保存成功后的响应 config.Producer.RequiredAcks = sarama.WaitForAll //随机的分区类型...转载 2020-02-20 18:54:23 · 1166 阅读 · 0 评论 -
Golang中 Context包深入浅出
控制并发有两种经典的方式,一种是WaitGroup,另外一种就是Context,今天我就谈谈Context。什么是WaitGroupWaitGroup以前我们在并发的时候介绍过,它是一种控制并发的方式,它的这种方式是控制多个goroutine同时完成。func main() { var wg sync.WaitGroup wg.Add(2) go fu...转载 2020-02-13 11:34:52 · 259 阅读 · 0 评论 -
内存对齐
结构体字段顺序不同,所占内存大小也不同。原因是内存对齐导致的.比如如下结构体:type user5 struct { j int64 b byte i int32}在64位机子上,#pragma pack(n)默认为8字节对齐.32位上是4字节对齐.现在我开始计算:a.int64占8位,所以0-7index存放.b.byte占1字节,所以你开始存放的初始坐标就是1的...原创 2020-02-12 14:46:48 · 174 阅读 · 0 评论 -
iota的一个特别用法
const( a = iota // 0 b // 1 c // 2)const( a = iota // 0 b = 100 // 100 c = iota // 2 d // 3)const( a, b = iota + 1, iota + 2 // 1,2 ...转载 2020-02-10 13:15:30 · 342 阅读 · 0 评论 -
Go 文本和HTML模板
文本模板: package mainimport ( "log" "os" "text/template")type Student struct { Name string Age int Sex string Habbits []string Normal string}const templ = `...转载 2020-02-07 15:55:23 · 174 阅读 · 0 评论 -
golang 详解 defer
什么是deferdefer用来声明一个延迟函数,把这个函数放入到一个栈上, 当外部的包含方法return之前,返回参数到调用方法之前调用,也可以说是运行到最外层方法体的"}"时调用。我们经常用他来做一些资源的释放,比如关闭io操作func doSomething(fileName string) { file,err := os.Open(fileName) if err...转载 2020-02-06 14:24:59 · 182 阅读 · 0 评论 -
golang语言defer特性详解.md
[TOC]golang语言defer特性详解defer语句是go语言提供的一种用于注册延迟调用的机制,它可以让函数在当前函数执行完毕后执行,是go语言中一种很有用的特性。由于它使用起来简单又方便,所以深得go语言开发者的欢迎。但是,真正想要使用好这一特性,却得对这一特性深入理解它的原理,不然很容易掉进一些奇怪的坑里还找不到原因。接下来,我们将一起来探讨defer的使用方式,使用场景及一些容...转载 2020-02-06 14:24:13 · 467 阅读 · 0 评论 -
golang中os/signal包的使用
这是一个创建于 2015-06-17 20:03:59 的文章,其中的信息可能已经有所发展或是发生改变。os/signal包实现对信号的处理golang中对信号的处理主要使用os/signal包中的两个方法:一个是notify方法用来监听收到的信号;一个是 stop方法用来取消监听。func Notify(c chan<- os.Signal, sig ...os.Signal)...转载 2019-03-20 11:18:39 · 348 阅读 · 0 评论 -
golang中archive/tar包详解
go语言官方标准库提供tar库,以方便对tar的操作一、了解tar什么是tar?tar是一种打包格式,但不对文件进行压缩,所以打包后的文档一般远远大于zip和tar.gz,因为不需要压缩的原因,所以打包的速度是非常快的,打包时CPU占用率也很低。tar的目的是什么?方便文件的管理(帮助理解:就是你存在很多文件的时候,但是你很多要很长时间不去接触的话,你想要变得更加简洁,可以进行tar操...转载 2019-04-01 22:43:30 · 1314 阅读 · 0 评论 -
go语言path包和filepath包的学习与使用
path包:package main; import ( "fmt" "path") //go语言path包的学习 func main() { //返回路径的最后一个元素 fmt.Println(path.Base("./a/b/c")); //如果路径为空字符串,返回. fmt.Println(path.Base("")); ...转载 2019-04-16 21:26:46 · 569 阅读 · 0 评论 -
go标准库的学习-text/template
导入方式:import "text/template"template包实现了数据驱动的用于生成文本输出的模板。其实简单来说就是将一组文本嵌入另一组文本模版中,返回一个你期望的文本如果要生成HTML格式的输出,参见html/template包,该包提供了和本包相同的接口,但会自动将输出转化为安全的HTML格式输出,可以抵抗一些网络攻击。用作模板的输入文本必须是utf-8编码的文本...转载 2019-06-02 17:21:29 · 587 阅读 · 0 评论 -
文本和HTML模板
package mainimport ( _"flag" _"fmt" _"strings" _"bytes" "log" "os" "text/template")type Yee struct{ Gee []Student Ff string}type Student struct{ Name原创 2019-02-28 15:09:53 · 486 阅读 · 0 评论