随笔分类 -  Go

摘要:1. Kafka介绍 1.1.1. Kafka是什么 kafka使用scala开发,支持多语言客户端(c++、java、python、go等) Kafka最先由LinkedIn公司开发,之后成为Apache的顶级项目。 Kafka是一个分布式的、分区化、可复制提交的日志服务 LinkedIn使用Ka 阅读全文
posted @ 2020-11-22 14:28 Terry- 阅读(995) 评论(0) 推荐(0)
摘要:gRPC 阅读全文
posted @ 2020-11-22 00:07 Terry- 阅读(114) 评论(0) 推荐(0)
摘要:BFF(Backend for Frontend)和网关Gateway是微服务架构中的两个重要概念,这两个概念相对比较新,有些开发人员甚至是架构师都不甚理解。 参考:https://www.cnblogs.com/dadadechengzi/p/9373069.html 阅读全文
posted @ 2020-11-22 00:04 Terry- 阅读(155) 评论(0) 推荐(0)
摘要:在开发过程中,map是必不可少的数据结构,在Golang中,使用map或多或少会遇到与其他语言不一样的体验,比如访问不存在的元素会返回其类型的空值、map的大小究竟是多少,为什么会报"cannot take the address of"错误,遍历map的随机性等等。 本文希望通过研究map的底层实 阅读全文
posted @ 2020-11-20 22:41 Terry- 阅读(393) 评论(0) 推荐(0)
摘要:如今Docker的使用已经非常普遍,特别在一线互联网公司。使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力。在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如今在微服务架构越来越流行的情况下,微服务+Docker的完美组合,更加方便微服务架构运维部署落地。 阅读全文
posted @ 2020-11-20 22:04 Terry- 阅读(151) 评论(0) 推荐(0)
摘要:slice是 Go 语言在数组之上提供的一个重要的抽象数据类型。在绝大多数需要使用数组的场合,切片都实现了完美替代。并且和数组相比,切片提供了更通用、功能更强大且便捷的数据序列访问接口。 1.什么是数组 Go 语言数组是一个固定长度的、容纳相同类型元素的连续序列。因此 Go 数组类型具有两个属性:元 阅读全文
posted @ 2020-11-20 20:44 Terry- 阅读(276) 评论(0) 推荐(0)
摘要:Go工程化 阅读全文
posted @ 2020-11-20 20:42 Terry- 阅读(132) 评论(0) 推荐(0)
摘要:package main import ( "fmt" ) type Student struct { id int name string } func main() { //比较 s1 := Student{1, "yy"} s2 := Student{2, "yang"} s3 := Stud 阅读全文
posted @ 2020-11-20 16:28 Terry- 阅读(323) 评论(0) 推荐(0)
摘要:logrus介绍 logrus配置 日志打印 HOOK机制 Gin日志 Fatal处理 线程安全 logrus介绍 golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数。对于更精细的日志级别、日志文件分割,以及日志分发等方面,并没有提供支持。在golang的世界 阅读全文
posted @ 2020-11-19 23:18 Terry- 阅读(643) 评论(0) 推荐(0)
摘要:为什么要使用日志 记录参数信息 猜测用户行为 复现系统bug并修复 func main() { // 禁用控制台颜色 gin.DisableConsoleColor() // 创建记录日志的文件 f, _ := os.Create("gin.log") gin.DefaultWriter = io. 阅读全文
posted @ 2020-11-19 19:19 Terry- 阅读(1289) 评论(0) 推荐(0)
摘要:什么是分组 对router创建Group(就是分组), 对同一分组会拥有同一前缀和同一中间件 写法 eg: r := gin.Default() v1 := r.Group("/v1") v1.POST("/login",loginEndpoint) v1.POST("/submit",submit 阅读全文
posted @ 2020-11-19 18:02 Terry- 阅读(1212) 评论(0) 推荐(0)
摘要:Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。 Viper Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。 鉴于viper库本身的README已经写得十分详 阅读全文
posted @ 2020-11-18 22:34 Terry- 阅读(591) 评论(0) 推荐(0)
摘要:在多年的 Go 语言实践积累后逐渐形成了一种典型项目结构,如下图所示: 上面就是一个支持构建二进制可执行文件(在 src 下)的典型 Go 项目的结构。 1 src 目录: 存放项目要编译构建的可执行文件对应的 main 包的源文件。如果有多个可执行文件需要构建,每个可执行文件的 main 包单独放 阅读全文
posted @ 2020-11-18 13:07 Terry- 阅读(255) 评论(0) 推荐(0)
摘要:一、HTTP基本认证 Basic Authentication——当浏览器访问使用基本认证的网站的时候, 浏览器会提示你输入用户名和密码。 http auth的过程: 客户端发送http请求 服务器发现配置了http auth,于是检查request里面有没有"Authorization"的http 阅读全文
posted @ 2020-11-17 21:45 Terry- 阅读(671) 评论(0) 推荐(0)
摘要:package Factory import "fmt" type Restaurant interface { GetFood() } type Donglaishun struct { } func (d *Donglaishun) GetFood() { fmt.Println("东来顺的饭菜 阅读全文
posted @ 2020-11-17 15:57 Terry- 阅读(120) 评论(0) 推荐(0)
摘要:组合 > 继承 Go中的设计,以为继承的被诟病,所以Golang的设计团队在语言的设计时并没有采用经典的OO模式 那Golang中各个部分是怎么联系到一起的呢 type ReadWriter interface { Reader Writer } 通过在interface中嵌入interface t 阅读全文
posted @ 2020-11-16 21:54 Terry- 阅读(226) 评论(0) 推荐(0)
摘要:内建函数 make 用来为 slice,map 或 chan 类型分配内存和初始化一个对象(注意:只能用在这三种类型上),跟 new 类似,第一个参数也是一个类型而不是一个值,跟 new 不同的是,make 返回类型的引用而不是指针,而返回值也依赖于具体传入的类型 make()函数在golang的代 阅读全文
posted @ 2020-11-16 18:17 Terry- 阅读(2292) 评论(0) 推荐(0)
摘要:我的GOPATH是这样的 但是当我go get下载包之后 下载的却不在src,而是在 $GOPATH$/pkg 下 原因可能是之前第一次go get下载, GitHub的速度太慢了,我更改了代理,使用了mod功能 go mod的正确使用 这次重新使用goland的终端按go mod步骤导入 使用 g 阅读全文
posted @ 2020-08-23 12:25 Terry- 阅读(4259) 评论(0) 推荐(0)