-
在golang中复制指针值* a = * b
所属栏目:[大数据] 日期:2020-12-16 热度:139
type T struct { Id int Name string}func Copy(a *T,b *T) error { b.Id=5 b.Name="gert" a = b return nil} 一个还是空的,我必须这样做 func Copy(a *T,b *T) error { b.Id = 5 b.Name = "gert" a.Id = b.Id a.Name = b.Name return nil} 现在一个与b相同[详细]
-
Golang WaitGroup源码分析
所属栏目:[大数据] 日期:2020-12-16 热度:122
针对Golang 1.9的sync.WaitGroup进行分析,与Golang 1.10基本一样除了将 panic 改为了 throw 之外其他的都一样。 源代码位置: syncwaitgroup.go 。 结构体 type WaitGroup struct { noCopy noCopy // noCopy可以嵌入到结构中,在第一次使用后不可复制,使用[详细]
-
使用 GB 构建 Go project
所属栏目:[大数据] 日期:2020-12-16 热度:146
GB 介绍 Site: https://getgb.io/ Github: https://github.com/constabula... 官网首页介绍 A project based build tool for the Go programming language. 所以gb 是一个构建工具,依赖管理插件完成的 gb-vendor doc 为什么用gb,最喜欢的一点是 Project ba[详细]
-
file-io – 如何使用golang的“compress/gzip”包来gzip文件?
所属栏目:[大数据] 日期:2020-12-16 热度:110
我刚刚去加龙,不知道如何使用golang的“compress / gzip”包来我的优势。基本上,我只是想写一个文件,gzip,并通过另一个脚本直接从压缩格式读[详细]
-
GoLang Test 显示输出
所属栏目:[大数据] 日期:2020-12-16 热度:138
默认运行 go test 不会输出 testing.T.Log() 的内容。 要显示这些内容,需要加上开关 -v go test -v -timeout 30s xxx/xxx/package -run ^TestXXXFunction$ 在 Visual Studio Code IDE 环境中,可以设置 Workspace Settings。打开 .vscode/settings.json,添[详细]
-
Golang 路由匹配浅析[1]
所属栏目:[大数据] 日期:2020-12-16 热度:93
前言 在本文中以及下篇文章中,我们会研习Golang 的源码来探究Golang 是如何实现HTTP URL 匹配的,并对比 mux的实现。 本人水平有限,如有疏漏和不正确的地方,还请各位不吝赐教,多谢! Golang 源码基于1.9.2 正文 我们有这样一个HTTP 服务器程序: func ma[详细]
-
Gin实践 连载十 定制 GORM Callbacks
所属栏目:[大数据] 日期:2020-12-16 热度:197
定制 GORM Callbacks GORM itself is powered by Callbacks,so you could fully customize GORM as you want 项目地址:https://github.com/EDDYCJY/go... GORM 本身是由回调驱动的,所以我们可以根据需要完全定制 GORM,以此达到我们的目的 注册一个新的回[详细]
-
?年学 go 1:变量&函数
所属栏目:[大数据] 日期:2020-12-16 热度:131
变量函数 最近在学习golang,写下学习笔记提升记忆。 为了看起来不是那么枯燥,本学习笔记采用分析代码的形式。 首先搬出我们最经典的第一段代码: hello world package main // 0 import "fmt" // 1实现格式化的 I/O /* Print something */ // 2 func main()[详细]
-
?年学 go 2:控制流
所属栏目:[大数据] 日期:2020-12-16 热度:91
上一篇我们了解了golang 的变量、函数和基本类型,这一篇将介绍一下控制流 现在我们看一个复杂点的例子: fibonacci(递归版) package mainimport "fmt"func main() { result := 0 for i := 0; i = 10; i++ { result = fibonacci(i) fmt.Printf("fibonacci(%d)[详细]
-
gf框架之模板引擎 - 基本用法
所属栏目:[大数据] 日期:2020-12-16 热度:170
文章来源:http://gf.johng.cn/591642 控制器视图 gf为控制器提供了良好的模板引擎支持,由 gmvc.View 视图对象进行管理,提供了良好的数据隔离性。控制器视图是并发安全设计的,允许在多线程中异步操作。 func (view *View) Assign(key string,value interf[详细]
-
go实现LRU cache
所属栏目:[大数据] 日期:2020-12-16 热度:128
1. LRU简介 1.1 概述 缓存资源通常比较昂贵,通常数据量较大时,会竟可能从较少的缓存满足尽可能多访问,这里有一种假设,通常最近被访问的数据,那么它就有可能会被后续继续访问,基于这种假设,将所有的数据按访问时间进行排序,并按驱逐出旧数据,那么存在缓存的数[详细]
-
go append函数以及写入
所属栏目:[大数据] 日期:2020-12-16 热度:199
切片 切片有两种初始化方法,一种是字面量初始化,一种是make 不建议使用new 添加成员时,容量是2的指数递增的,2,4,8,16,32。而且是在长度要超过容量时,才增加容量。 append函数 append(type,len,cap)该函数第一个参数是类型,第二个参数是分配的空间[详细]
-
go基于grpc构建微服务框架-服务注册与发现
所属栏目:[大数据] 日期:2020-12-16 热度:112
概述 grpc 是谷歌开源的rpc框架,基于http2实现,并支持跨语言,目前基本涵盖了主流语言.跨语言的实现主要得益于protobuf,通过编写proto文件,通过protobuf工具生成对应语言的类库进行使用. 对于go这样一门新生语言来说,生态链还处于发展阶段,微服务框架也是如此[详细]
-
go基于grpc构建微服务框架-结构化日志输出
所属栏目:[大数据] 日期:2020-12-16 热度:81
1.结构化日志的意义 1.1 日志格式化 日志主要用于跟踪服务的运行信息,作为后端攻城狮,一般都会有一种想法,平时的时候希望日志越少越好,出问题的时候又总是抱怨,怎么才tmd这点日志,还在关键的地方没打印. 因此,日志很重要,将日志进行格式化也很重要,日志格式[详细]
-
Golang Once源码解析
所属栏目:[大数据] 日期:2020-12-16 热度:166
sync.Once可以实现单例模式,确保sync.Once.Do(f func())只会被执行一次,可以初始化某个实例单例。 针对Golang 1.9的sync.Once,与Golang 1.10一样。 源代码位置:synconce.go。 结构体 Once结构体定义如下: type Once struct { m Mutex done uint32 //[详细]
-
golang 更友好的格式化输出
所属栏目:[大数据] 日期:2020-12-16 热度:142
源码地址 安装 # 稳定版本go get -u -v gopkg.in/ffmt.v1# 最新版本go get -u -v github.com/go-ffmt/ffmt 用法 API 文档 示例 package mainimport ( ffmt "gopkg.in/ffmt.v1")func main() { example()}func example() { m := struct { String string Int in[详细]
-
Golang Cond源码分析
所属栏目:[大数据] 日期:2020-12-16 热度:57
cond的主要作用就是获取锁之后,wait()方法会等待一个通知,来进行下一步锁释放等操作,以此控制锁合适释放,释放频率,适用于在并发环境下goroutine的等待和通知。 针对Golang 1.9的sync.Cond,与Golang 1.10一样。 源代码位置:synccond.go。 结构体 type[详细]
-
golang 常见知识点
所属栏目:[大数据] 日期:2020-12-16 热度:164
题目链接:https://zhuanlan.zhihu.com/p/26972862 defer顺序问题,后定义的先执行,panic在defer后面才会向上传递,输出:打印后,打印中,打印前,触发异常 for range 迭代时会使用临时变量作为值拷贝,m保存临时变量的地址 goroutine 执行会保存for的变量[详细]
-
golang nil、error 与interface 总结
所属栏目:[大数据] 日期:2020-12-16 热度:89
interface{} 与nil golang 的interface{}大体可以描述为两个元素(type+data),只有当type和data都为nil的时候 interface才会与nil相等。 var v *T var i interface { }i = v v 为空指针,所以必定等于nil interface{},type和data都是nil,所以也为nil 但[详细]
-
golang中sync.RWMutex和sync.Mutex
所属栏目:[大数据] 日期:2020-12-16 热度:178
golang中sync.RWMutex和sync.Mutex区别 转自:http://blog.csdn.net/chenbaoke/article/details/41957725 golang中sync包实现了两种锁Mutex (互斥锁)和RWMutex(读写锁),其中RWMutex是基于Mutex实现的,只读锁的实现使用类似引用计数器的功能. type Mut[详细]
-
Golang中的接口
所属栏目:[大数据] 日期:2020-12-16 热度:135
软硬件环境 Windows 10 Go 1.8 什么是接口? 接口定义了一组方法,但是这些方法不包含实现的代码,另外接口里也不能包含变量。如下定义了一个接口 type intfNamer interface { Method1(param_list) return_type Method2(param_list) return_type ... } 为什[详细]
-
Golang精编100题
所属栏目:[大数据] 日期:2020-12-16 热度:54
能力模型 级别 模型 初级 primary 熟悉基本语法,能够看懂代码的意图; 在他人指导下能够完成用户故事的开发,编写的代码符合CleanCode规范; 中级 intermediate 能够独立完成用户故事的开发和测试; 能够嗅出代码的坏味道,并知道如何重构达成目标; 高级 s[详细]
-
GOLANG使用Context管理关联goroutine
所属栏目:[大数据] 日期:2020-12-16 热度:158
原文:https://gocn.io/article/333 一般一个业务很少不用到goroutine的,因为很多方法是需要等待的,例如 http.Server.ListenAndServe 这个就是等待的,除非关闭了Server或Listener,否则是不会返回的。除非是一个API服务器,否则肯定需要另外起goroutine发[详细]
-
GOLANG使用嵌入结构实现接口
所属栏目:[大数据] 日期:2020-12-16 热度:122
原文:https://gocn.io/article/332 考虑一个Packet接口,一般会返回一个Header,例如: type PacketHeader struct { ID uint32 Timestamp uint64 } type Packet interface { encoding . BinaryMarshaler encoding . BinaryUnmarshaler Header () * PacketHe[详细]
-
GOLANG实现超时对象检测的最好理解的方式
所属栏目:[大数据] 日期:2020-12-16 热度:77
原文:https://gocn.io/article/328 依赖于心跳的系统,都需要超时检测。比如P2P系统中客户端每隔120秒向数据服务器发送一次数据汇总,服务器就需要维护一个超时时间。比如一个UDP服务器,在和客户端之间创建Session之后,如果没有数据包,一般会有Ping包,[详细]
