![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
golang
文章平均质量分 54
我拿把旧钥匙
敲着厚厚的墙
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
96掌门师兄
showcode1024
展开
-
gin-swagger
// @title Swagger Example API// @version 1.0// @description This is a sample server Petstore server.// @termsOfService http://swagger.io/terms/// @contact.name API Support// @contact.url http://www.swagger.io/support// @contact.email support@swagge.原创 2021-04-25 13:48:45 · 275 阅读 · 0 评论 -
go orm
1.AutoMigrateGORM支持Migration特性,支持根据Go Struct结构自动生成对应的表结构原创 2021-04-23 18:18:56 · 136 阅读 · 0 评论 -
EMQ + 插件
JWT鉴权http://blog.fatedier.com/2020/03/28/golang-jwt/原创 2021-04-19 17:42:31 · 551 阅读 · 1 评论 -
context包
所以:cancel 即使不主动调用,也不影响资源的最终释放,但是提前主动调用,可以尽快的释放,避免等待过期时间之间的浪费;建议还是按照官方的说明使用,养成良好的习惯,在调用WithTimeout之后defer cancel()...原创 2020-07-21 11:42:34 · 95 阅读 · 0 评论 -
ETCD
1.安装https://www.cnblogs.com/chenqionghe/p/10503840.html原创 2020-07-20 16:34:27 · 315 阅读 · 0 评论 -
go + mysql + redis 做二级缓存
mysql有个方案,可内置memcache,线性一致性| [binlogsync](https://github.com/xiaomatech/binlogsync) | 14 | Python | 通过 mysql binlog event 把sql变更实时推送到各系统(cache/redis,search/elasticsearch,queue/kafka) |./2018.md:4953:| [mybus](https://github.com/liudong1983/mybus.原创 2020-07-18 11:54:16 · 522 阅读 · 0 评论 -
go mysql
判断值是否存在: 不存在的时候Scan返回的err == sql.ErrNoRows原创 2020-07-15 17:28:01 · 114 阅读 · 0 评论 -
K8s + kubevirt
除了 Master、Kubernetes 集群中的其他机器被称为 Node 节点,在较早的版本中也被称为 Minion原创 2020-05-07 11:41:55 · 568 阅读 · 0 评论 -
goroutinue(协程) + GOMAXPROCS
i:=runtime.GOMAXPROCS(0) //返回获取当前cpu核心(内核个数 * 超线程)go1.5 (released 2015/08/19)之后,默认就设置了GOMAXPROCS 为最大 cores 数量,无需设置package mainimport( "fmt" "runtime") func main() { i := runtime.GOMAXP...原创 2020-04-16 11:41:23 · 321 阅读 · 0 评论 -
kafka + go
kafka是如何管理group的,为什么./kafka-consumer-groups.sh --new-consumer --bootstrap-server 127.0.0.1:9092 --describe --group my_test10 这个命令查不到不在线的group?发送消息的时候key的作用,是否为了做hash映射,是的,似的消息相对有序,那么如果reblance之后,...原创 2019-03-26 12:07:14 · 797 阅读 · 0 评论 -
golang编码规范
1. protoc协议中消息字段定义(统一使用驼峰格式命名,单词之间不要使用下换线连接),使得生成的消息协议,在rpc api编解码和 json编解码中,json字段名是一样,这样调用方,使用发送kafka消息,或者调用go-micro API中生成json数据时候,只要写一套json就可以了...原创 2020-02-24 19:29:39 · 209 阅读 · 0 评论 -
GOIM
1.protoc版本protoc-gen-go是老版本原创 2020-02-01 19:20:12 · 258 阅读 · 0 评论 -
VSCode + 配置参数详解(go, php + yii,python依赖包无法断点)
IDE的选择个人觉得还是Eclipse +插件的模式好,可惜想调试Beego项目的时候,会报找不到资源,因为Eclipse调试使用的是install方式,会把.exe拷贝到src的同一级bin目录下,所以资源文件等,使用的是相对路径就找不到了,不知道怎么破VSCode代码跳转后返回原来的地方 windows: ctrl + u安装dlvvscode调试安装go get -v g...原创 2019-07-03 11:19:57 · 792 阅读 · 0 评论 -
go + jwt + 权限认证
1.生成的token长度和jwtCustomClaims(playload)大小相关2.支持jwt.SigningMethodHS256和jwt.SigningMethodES256,jwt.SigningMethodRS256等加密方法package mainimport( "github.com/dgrijalva/jwt-go" //"time" "reflect"...原创 2019-11-21 12:08:01 · 567 阅读 · 0 评论 -
go Test 单元测试 测试框架
1.https://blog.csdn.net/weixin_39172380/article/details/88666479go test -v原创 2019-11-15 12:06:26 · 321 阅读 · 0 评论 -
golang 基础语法需要注意的
1. for range遍历切片, mappackage mainimport ( "fmt")func Sum(set []int) int { var result int //for num := range set { //这个的num是索引,正确的写法是 for _, value := range set{ for _, num := range set{ /...原创 2019-11-15 11:13:01 · 93 阅读 · 0 评论 -
Gin框架
1.URL中带参数,如 Get /user/10000 ,则获取的id是10000group:=engine.Group("user")group.GET("/:user_id",controller.GetUserHandler)id:=c.Param("user_id")2.gin 可以使用middleware,你在middleware里面解析token,拿到use...原创 2019-11-04 14:51:48 · 415 阅读 · 0 评论 -
ketama 分布式hash算法
Hash不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值,简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数import( "gotest/hash/cityhash" "gopkg.in/mgo.v2/bson" "fmt" "time")func main(){ for{ subKey := bson.NewObjectId...原创 2019-10-09 16:17:46 · 223 阅读 · 0 评论 -
goconf + yaml 配置文件
1.不使用某个字段要注释掉该字段,而不是at_userid (空格,没有值) 这样2.时间参数,可以是100s这样,自动转换了原创 2019-10-24 16:04:32 · 462 阅读 · 0 评论 -
接口interface
1.接口转化为其他类型inter 是interface类型,转化为string类型是:str :=inter .(string)转为其他类型也类似,如果inter是空接口,则会crash2.如何判断接口为空https://www.cnblogs.com/lanyangsh/p/9903659.html3.类型断言varainterface{}=nil//t...原创 2019-10-21 11:45:36 · 147 阅读 · 0 评论 -
异常处理 defer painc recover()
package mainimport ( "fmt" "time" //log "github.com/thinkboy/log4go" )func PaincRecov(){ defer func(){ fmt.Println("defer start") if err := recover(); err != nil { fmt.Println(err) }...原创 2019-10-21 11:12:06 · 264 阅读 · 0 评论 -
go 日志(log4 + logrus)
1.使用%v打印错误,log.Error("net.ListenTCP(\"tcp4\",\"%s\")error(%v)",bind,err)type TestV struct{ iday int64 strInfo string}testV := &TestV{iday : 50, strInfo : "xiaoyu"}log.Error("%v", *t...原创 2019-10-17 11:32:50 · 446 阅读 · 0 评论 -
bufio
import "bufio" rd := bufio.NewReader(f) for { //strLine, err := rd.ReadString('\n') //以'\n'为结束符读入一行 byteLine, _, err := rd.ReadLine() //以'\n'为结束符读入一行 strLine := string(byteLi...原创 2019-10-16 14:21:08 · 96 阅读 · 0 评论 -
函数
看下命名返回值 和非命名返回值混合使用的情况------------------------------------------------------------1.命名返回值从函数中可以返回一个命名值。一旦命名了返回值,可以认为这些值在函数第一行就被声明为变量了空白符_在 Go 中被用作空白符,可以用作表示任何类型的任何值。我们继续以rectProps函数为例,该...原创 2019-10-14 12:09:04 · 117 阅读 · 0 评论 -
通道 channel + goroutine + select + 结束goroutine
https://www.jianshu.com/p/2a1146dc42c3表达式求职chan 泄漏的案例函数中的全局变量,让子goroutine去引用,是线程安全的吗?----------------------------1.无缓冲的通道,向通道中写入之后,如果没有被读取,则写入线程(协程)被阻塞,直到数据被读取无缓冲的通道,如果通道没数据,则读取线程被阻塞,直到通道...原创 2019-08-13 15:54:06 · 178 阅读 · 0 评论 -
mgo
看一下$ref------------------------------------------------------urimongodb://admin:123456@127.0.0.1:27017/wechat (有密码)无密码:127.0.0.1:27017使用mgodatagen生成测试数据使用 mgodatagen,1000 万个 document 可...原创 2019-07-24 10:40:29 · 326 阅读 · 0 评论 -
Go + time包
1.timestamp转string//9位秒时间?要再测试下func GetTimeStrFromTimeStamp(iTimeStamp int64) string{ strTime := time.Unix(iTimeStamp, 0).Format("2006-01-02 15:04:05.000") return strTime}2. string ...原创 2019-07-12 16:46:43 · 271 阅读 · 0 评论 -
go结构体总结(+Json 高级进阶) + 接口
1.结构体和Jsontype CurrUser struct{ Name string `json:"name,omitempty"` //如果为空值,则转json的时候,该字段不生成,从没有该字段的json字符串转结构体的时候,不报错,为默认值 No int `json:"no,omitempty"` Uniqueid stri...原创 2020-01-06 15:00:21 · 396 阅读 · 0 评论 -
go 依赖管理 (windows go module) & import引用 gitlab/gitea等私有库
1.go vendor创建项目之后,在项目根目录下govendor init,自动生成vendor文件夹(存放你项目需要的依赖包)和vendor.json文件然后编写代码,再将依赖使用go get下载到src目录下在本项目的根目录下执行govendor add +external则依赖的包会被拷贝到vendor目录下(即便删除gopath下的目录,也不受影响),vendor....原创 2019-06-28 14:53:30 · 1305 阅读 · 0 评论 -
go 命令行处理 flag
var confFile stringfunc init() {flag.StringVar(&confFile, "c", "./feed_queue.conf", " set feed queue config file path")//flag.StringVar(&confFile, "c", "/Users/zhuyi/Documents/go...原创 2019-05-22 16:46:39 · 184 阅读 · 0 评论 -
go安装,基础类型,语法
验证内存泄漏,内存泄漏的检测工具------------------------------------------------go开源项目汇总https://github.com/hackstoic/golang-open-source-projects0.linux安装tar -C /usr/local -zxvf go1.10.3.linux-amd64.tar.gz...原创 2019-03-01 11:50:10 · 307 阅读 · 0 评论 -
beego
1.URL正则表达式beego.Router(“/api/?:id”, &controllers.RController{})默认匹配 //例如对于URL”/api/123”可以匹配成功,此时变量”:id”值为”123”Ctx.Input.Param(":id")...原创 2019-05-22 16:25:16 · 376 阅读 · 0 评论 -
性能/内存优化 + 工具
net/http/pprofimport ( "fmt" _ "net/http/pprof" "net/http" )go func() { http.ListenAndServe("localhost:6060", nil) }()然后访问http://localhost:6060/debug/pprof/ 就可以看到性能2.可以...原创 2019-08-13 16:07:01 · 104 阅读 · 0 评论 -
go-metrics(别说,没有API说明,真难用),想写本golang的书籍,类似msdn的
Meterm := metrics.NewMeter()metrics.Register("quux", m)m.Mark(47)m.Mark(20)fCount = m.RateMean() //从创建以后,每5秒钟计算一次,公式: mark数/span时间比如上例: mark是67,所以第一个5秒是 67/5 ,所以前5秒就是 17.39Rate1(),Rat...原创 2019-08-23 17:55:06 · 671 阅读 · 0 评论 -
go + grpc
QA:grpc的服务端多线程处理实现方式?或者grpc对底层的每个请求处理本身就是多线程?---------------------------------------------------------------------------------------------------------------------------1.go 使用protobuf安装的时候注意x/ne...原创 2019-03-28 14:50:48 · 260 阅读 · 0 评论 -
zookeeper(go-zookeeper)
1. 单机搭建https://blog.csdn.net/weixin_42207486/article/details/80647802下载wget http://apache.fayea.com/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz2.集群搭建Zookeeper集群中节点个数一般为奇数个(>=3),若集群中...原创 2019-03-20 20:16:07 · 405 阅读 · 0 评论 -
go + redis
验证下映射到分片的hash算法--------------------0.原子操作,要么都成功,要么都失败,集群不支持TxPipelinepline := s.redis.TxPipeline()pline.Set("xiaoyu", 27, 0)pline.HSet("stud_123", "xiaoli", 16)pline.Exec()1.go-redis使用连接池...原创 2019-09-16 12:30:31 · 152 阅读 · 0 评论 -
map
直接使用key获取value,key不存在的时候返回默认值,不会崩溃mapIdName:=map[string]string{}name:=mapIdName["123"]map的元素是指针type User struct{ UserId string UserNo int64}type Group struct{ GroupMember map[...原创 2019-09-10 14:45:44 · 99 阅读 · 0 评论 -
切片
https://github.com/Tiger1994/LeetCode/blob/master/Q68.cppappend 需要重新分配空间的时候,会重新分配空间吗?初始内存地址会改吗?作为参数的时候,如果append呢?会修改原来的append值吗?实验一下https://blog.csdn.net/cyk2396/article/details/78893420---...原创 2019-08-27 11:29:00 · 180 阅读 · 0 评论 -
atomic锁和mutex
https://www.cnblogs.com/a-xu/p/9240957.html原创 2019-08-23 11:57:24 · 411 阅读 · 0 评论