随笔分类 -  go

golang相关
摘要:背景 在之前的文章《漫谈微服务》我已经简单的介绍过微服务,微服务特性是轻量级跨平台和跨语言的服务,也列举了比较了集中微服务通信的手段的利弊,本文将通过RPC通信的方式实现一个增删查Redis的轻量级微服务示例,大部分内容翻译自文章《Microservice in golang, using Redi 阅读全文
posted @ 2019-12-22 21:17 我是码客 阅读(4542) 评论(0) 推荐(1)
摘要:前言 Golang的slice类型为连续同类型数据提供了一个方便并且高效的实现方式。slice的实现是基于array,slice和map一样是类似于指针语义,传递slice和map并不涉及底层数据结构的拷贝,相当于传递底层数据结构的指针。 Arrays数组 数组类型的定义需要指定长度和元素的类型。例 阅读全文
posted @ 2019-08-08 20:38 我是码客 阅读(6353) 评论(0) 推荐(0)
摘要:前言 我博客之前的Golang高效实践系列博客中已经系统的介绍了Golang的一些高效实践建议,例如:《Golang高效实践之interface、reflection、json实践》、《Golang 高效实践之defer、panic、recover实践》、《Golang 高效实践之并发实践conte 阅读全文
posted @ 2019-07-29 16:56 我是码客 阅读(768) 评论(0) 推荐(1)
摘要:前言 反射是程序校验自己数据结构和类型的一种机制。文章尝试解释Golang的反射机制工作原理,每种编程语言的反射模型都是不同的,有很多语言甚至都不支持反射。 Interface 在将反射之前需要先介绍下接口interface,因为Golang的反射实现是基于interface的。Golang是静态类 阅读全文
posted @ 2019-07-26 13:35 我是码客 阅读(3971) 评论(0) 推荐(1)
摘要:前言 在上篇Golang高效实践之并发实践channel篇中我给大家介绍了Golang并发模型,详细的介绍了channel的用法,和用select管理channel。比如说我们可以用channel来控制几个goroutine的同步和退出时机,但是我们需要close channel通知其他接受者,当通 阅读全文
posted @ 2019-07-19 20:13 我是码客 阅读(2530) 评论(0) 推荐(0)
摘要:前言 在我前面一篇文章Golang受欢迎的原因中已经提到,Golang是在语言层面(runtime)就支持了并发模型。那么作为编程人员,我们在实践Golang的并发编程时,又有什么需要注意的点呢?下面我会跟大家详细的介绍一些在实际生产编程中很容易踩坑的知识点。 CSP 在介绍Golang的并发实践前 阅读全文
posted @ 2019-07-18 10:42 我是码客 阅读(9362) 评论(1) 推荐(0)
摘要:前言 Golang自2009年发布第一个版本,2012年发布1.0版本。在这10年的时间里,不断有开发者加入Golang的阵营中,不断共建Golang生态。其中比较有代表性的Golang编写软件作品是Docker和Kubernetes。从目前Golang的发展时间和社区活跃度来看,Golang无疑是 阅读全文
posted @ 2019-07-16 18:05 我是码客 阅读(11699) 评论(4) 推荐(4)
摘要:前言 并发(并行)一致都是编程语言的核心主题,不同于其他语言,例如C/C++语言用户序自行借助pthread创建线程,Golang天然就给出了并发解决方案:goroutine。 Goroutine 写过Golang程序的朋友都知道,go func就可以启动一个goroutine,但是goroutin 阅读全文
posted @ 2019-07-03 21:18 我是码客 阅读(565) 评论(0) 推荐(0)
摘要:前言 上一篇文章中已经给大家整体的介绍了开源监控系统Prometheus,其中Exporter作为整个系统的Agent端,通过HTTP接口暴露需要监控的数据。那么如何将用户指标通过Exporter的形式暴露出来呢?比如说在线,请求失败数,异常请求等指标可以通过Exporter的形式暴露出来,从而基于 阅读全文
posted @ 2019-06-25 14:05 我是码客 阅读(6131) 评论(0) 推荐(0)
摘要:前言 Prometheus是CNCF的一个开源项目,Google BorgMon监控系统的开源版本,是一个系统和服务的监控系统。周期性采集metrics指标,匹配规则和展示结果,以及触发某些条件的告警发送。 特点 Prometheus主要区别于其他监控系统的特点是: 多维度数据模型(时序数据是由指标 阅读全文
posted @ 2019-06-22 15:42 我是码客 阅读(2930) 评论(1) 推荐(1)
摘要:前言 go test 上篇 给大家介绍了golang自带的测试框架,包括单元测试和性能测试。但是在实际生产中测试经常会遇到一些网络或者依赖的第三方系统接口,运行测试用例的时候希望忽略这些接口的实际依赖,聚焦在具体业务逻辑代码,这就需要模拟这些接口的行为,也就是我今天介绍给大家的golang/mock 阅读全文
posted @ 2019-06-21 17:01 我是码客 阅读(897) 评论(0) 推荐(0)
摘要:前言 Go语言本身集成了轻量级的测试框架,由go test命令和testing包组成。包含单元测试和压力测试,是保证我们编写健壮Golang程序的有效工具。 演示环境 示例 老规矩,我会用一个简单的示例演示go test的用法,让大家有一个直观的感受。 my.go文件内容: my_test.go文件 阅读全文
posted @ 2019-06-20 18:05 我是码客 阅读(1579) 评论(0) 推荐(0)
摘要:前言 程序性能分析我相信是每个程序员都会遇到的问题,比如说一个程序的CPU为什么占用这么高?有没有优化的空间?又比如程序出现了内存泄漏如何排查等等。如果是C++程序会借助于Google pprof c++ profile,java程序会依赖于jstack等工具,幸运的是Golang语言本身就集成了性 阅读全文
posted @ 2019-06-18 17:55 我是码客 阅读(5556) 评论(0) 推荐(1)
摘要:前言 go 1.5 引进了vendor管理工程依赖包,但是vendor的存放路径是在GOPATH底下,另外每个依赖还可以有自己的vendor,通常会弄得很乱,尽管dep管理工具可以将vendor平级化管理,但是相对GOPATH的路径是逃不掉的。另外,各个包的版本管理也显得原始,甚至有的开发将依赖包从 阅读全文
posted @ 2019-06-15 17:51 我是码客 阅读(6747) 评论(0) 推荐(0)