go
文章平均质量分 86
程序员学编程
会一点python,Go,C的程序员,欢迎大家关注。
展开
-
Note on worker pools in Go
Goroutines are cheap. Unlike some languages, you can usually get away with spawning a Goroutine for each incoming request, but at scale, the non-zero cost may become a bottleneck. Or perhaps you’d like to limit the concurrency of your server because not al转载 2021-05-17 17:49:20 · 221 阅读 · 0 评论 -
Go连接MongoDB入门
欢迎加入go语言学习交流群:6367284492019年3月,发布了适用于MongoDB的正式的可用于生产环境的GO驱动程序,该驱动程序自发布以来一直在持续更新。在本教程中,我们将学习使用Go驱动程序执行简单的MongoDB CRUD操作。环境准备在开始本教程之前,需要做两件事。Go应该安装在您的机器上。本教程使用Go 1.15版。您可以从此链接下载Go软件包。在您的电脑上安装最新版本的MongoDB并启动MongoDB的本地服务器。安装MongoDB驱动程序通过运行以下命令来安装Mong原创 2020-12-19 18:59:00 · 1051 阅读 · 1 评论 -
Go中怎样连接RabbitMQ?
在Go中连接RabbitMQRabbitMQ是出色的消息中间件,golang理所当然的也支持了。RabbitMQ是一个很棒的pub-sub系统,并且pub-sub已成为微服务中的主要通信体系结构。在我目前的工作中,我们每天通过Go服务使用RabbitMQ推送数亿个社交媒体帖子。让我们一起来看一下如何使用开源amqp软件包有效地发布和订阅消息 。1、概述RabbitMQ需注意的两个主要实体是routing keys 和queues。服务将消息(在本例中为JSON格式)发布到routing keys 。然原创 2020-12-18 11:05:57 · 1742 阅读 · 0 评论 -
匿名结构在golang中的妙用
欢迎加入go语言学习交流群:636728449Golang的匿名结构是什么?匿名结构就像普通结构一样,但是它没有名称定义,因此不能在代码的其他地方引用。Go中的结构类似于C等其他语言中的结构。它们是字段的类型化集合,用于将数据分组在一起,以使我们作为程序员更易于管理。要创建匿名结构,只需在声明类型后立即实例化实例:newCar := struct { make string model string mileage int}{ make: "Ford", model:原创 2020-12-15 10:40:33 · 2350 阅读 · 1 评论 -
快去检查下你Go服务连接MySQL的代码吧!!
一个线上尘封5年的bug排查过程文章目录一个线上尘封5年的bug排查过程一、现象1、go版本信息:2、现象:3、触发条件:二、排查1、复现过程2、替换driver3、debug三、问题根因四、总结一、现象1、go版本信息:go 1.15go-mysql-driver/mysql v1.52、现象: 在服务全量拉取一张表的时候,返回了部分数据。但是我们自己的业务代码层面没有报错,只看到go-mysql-driver那里打印了部分错误日志:read: connection res原创 2020-12-09 21:13:10 · 642 阅读 · 1 评论 -
go break的使用
文章目录一、踩得坑二、break的使用1、break用于for循环2、 break用于select3、break用于嵌套循环4、break label 、 goto label 、continue label5、官方解释参考文章一、踩得坑 for { time.Sleep(p.Cfg.WatchInterval) select { case <-ctx.Done(): ...原创 2019-08-20 15:21:51 · 2475 阅读 · 0 评论 -
GRPC的metadata使用
文章目录一、简析1、创建metadata2、发送metadata3、接收metadata二、代码举例1、proto文件编写2、server端编写3、client端编写三、实际使用举例四、参考文件在http请求当中我们可以设置header用来传递数据,grpc底层采用http2协议也是支持传递数据的,采用的是metadata。 Metadata 对于 gRPC 本身来说透明, 它使得 client...原创 2019-04-02 20:17:32 · 17982 阅读 · 4 评论 -
利用etcd实现服务注册和服务发现
文章目录服务注册服务发现协议编写服务端实现客户端实现实验结果参考文章服务注册主要逻辑在go func函数里面,先是去etcd获取一下服务,没有获取到的话就注册进去。package etcdserviceimport ( "context" "fmt" "log" "strings" "time" "go.etcd.io/etcd/clientv3"...原创 2019-03-31 16:45:37 · 8861 阅读 · 0 评论 -
go实践之swagger自动生成api文档
文章目录go实践之swagger自动生成api文档1、安装需要用到的包2、接口代码支持swagger3、 生成swagger接口go实践之swagger自动生成api文档作为一个后端开发,给前端提供api接口是必须的。手动去写文档不是一个程序员的风格。swagger就是一个很好的api文档生成该工具,go当然也支持了。下面看看怎么使用这个工具。1、安装需要用到的包root@localhos...原创 2018-12-08 21:12:45 · 15702 阅读 · 2 评论 -
go实践之apiserver搭建
文章目录go实践之apiserver搭建1、配置文件读取2、数据连接3、日志初始化4、server初始化5、接口编写go实践之apiserver搭建本文主要记录下博主用gin搭建app server的过程,方便后续学习。web框架用的gin,日志用的zap,数据库连接用的mysql driver,配置文件读取用的是viper。整个项目的框架如下:.├── app│ ├── comme...原创 2018-12-08 11:30:40 · 2445 阅读 · 2 评论 -
go基础之json格式数据处理
go基础之json格式数据处理1、结构体小写问题导致出错2、struct没有正确加tag3、struct加上tag4、struct tag扩展go基础之json格式数据处理go标准库里面提供了一个包进行go格式的数据处理,官方文档地址:https://golang.org/pkg/encoding/json/ 具体文档大家可以自己去看,这里只记录我自己作为一个...原创 2018-08-10 10:46:04 · 1047 阅读 · 0 评论 -
go基础之服务退出问题
最近学习公司微服务的代码,看到每一个微服务的main函数都阻塞在那里,然后里面起的goroutine一直在哪里运行。package mainimport( "fmt" "os" "os/signal" "syscall" "log" "time")func testFunc() error { go func(){原创 2018-07-31 19:31:04 · 1450 阅读 · 0 评论 -
Prometheus笔记(二)监控go项目实时给grafana展示
一、prometheus和grafana安装1、promethues安装2、grafana安装二、获取监控数据三、配置grafana展示数据1、修改配置重启promethues和grafana2、创建数据源3、创建dashboard参考资料一、prometheus和grafana安装1、promethues安装先写好配置文件,保存为promet...原创 2018-07-14 16:05:12 · 12529 阅读 · 0 评论 -
Prometheus笔记(一)metric type
Prometheus笔记(一)metric type1、Counter1.1 Counter1.2 CounterVec2、Gauge2.1 Gauge2.2 GaugeVec3、Summary4、Histogram二、参考资料Prometheus笔记(一)metric typePrometheus客户端库提供四种核心度量标准类型。 这些...原创 2018-07-13 11:36:53 · 14241 阅读 · 0 评论 -
go基础之不定参函数
制定类型参数任意类型参数的变参go语言同其他编程一样也提供了对变参函数的支持。本文简单讲解一下go中变参函数的使用方法。制定类型参数不定参数是指函数传入的参数个数为不定数量,个数需要在调用的时候才能得到确定。go语言中接受不定参数的函数的原型如下所示:func myfunc(args ...type)func myfunc(arg1 int, args ...原创 2018-07-05 20:01:24 · 1134 阅读 · 0 评论 -
go基础之基本数据结构(数组、slice、map)
go基本的数据结构有数组、slice、map,高级数据结构为结构体为用户自定义类型。本片文章主要讲解三大基本数据结构。数组数组是包含单个类型的元素序列,但是长度固定的数据类型,一个数组声明时需要指定数据类型和长度进行。例如定义长度为6的整形数组var x [6]int声明一个数组x用于存储int类型的元素且长度为6,所以数组x将由6个整数元素组成。声明一个数组并赋值...原创 2018-07-01 15:36:02 · 6824 阅读 · 1 评论