go语言
文章平均质量分 67
xiaojinran
这个作者很懒,什么都没留下…
展开
-
gRPC go版本的初体验
简单来说,RPC就是要像调用本地的函数一样去调远程函数,实现分布式调用,系统服务水平能力扩展。本文的环境采用的是arm版本的centos7的容器进行测试,所以安装的软件均为arm版本的。提示有些包可能需要科学上网才能下载到。在大型的业务系统中,常常会使用分布式,微服务的方式来为整个系统提供服务,这些分布式、微服务部署在千差万别的网络中,不像原先的集中式,都在同一个代码仓库中,可以直接通过包的引用来调用,而且各个服务的写的语言又不一致,这就需要有一种标准来进行规范。原创 2022-12-25 17:19:18 · 857 阅读 · 0 评论 -
压缩go语言生成程序的大小
在使用go编译程序的时候,即时是一个入门的hello程序,编译后的大小都挺大的,经过压缩后,压缩比接近75%,还是非常可观的原创 2022-06-20 14:47:07 · 511 阅读 · 0 评论 -
json datasource使用
json datasource使用概述在grafana的数据源中,有个比较轻量级的数据源,可以跨网络进行json数据访问,比较灵活,对于需要由grafana来渲染数据,可以通过这种方式进行暴露。安装进入grafana服务器,执行以下命令进行安装,重启后即可使用json数据源grafana-cli plugins install simpod-json-datasourcejson数据源服务这里,我使用了gin框架,实现了json数据源至少需要的3个访问点,1个用于测试连通性,其余2个为指标数原创 2021-09-15 17:06:56 · 4105 阅读 · 0 评论 -
递归算法分析-最简单的例子
概述递归算法在算法设计中,是一种比较难以理解的算法存在,感觉递归算法无限套娃,最终居然也能返回正确结果,对于初入坑的童靴是一个神一般的存在。本文通过对递归算法的一个例子,从最简单的例子中,逐步撕开其神秘面纱。最简单的题目给你一个整数数组,要求返回这个数组中的最大值要求使用递归算法。如:数组{1,-9,10,18,6,22} 最大值为22分析相信拿到这个简单题目的同学一定很开心,这不是最简单的一道题吗?遍历数组,保存最大值即可完成。但如果是要求使用递归算法呢?那该如何做解?递归一般套路都是,将原创 2021-08-20 14:41:19 · 11926 阅读 · 0 评论 -
Golang 官方实现的双向链表
概述在go语言中,官方已经替我们实现了一个双向链表,可以用来存储、查找我们的数据,数据类型支持任意类型,其中节点的定义如下:// Element is an element of a linked list.type Element struct { // Next and previous pointers in the doubly-linked list of elements. // To simplify the implementation, internally a list原创 2021-08-13 15:57:48 · 13469 阅读 · 0 评论 -
Go语言中 数组和slice 走过的坑
数组和slice区别在go语言中,数组是一段连续的内存,在初始化时候需要明确声明其大小,不可以在运行时动态生成,而slice则可以自由得伸缩其大小。我们知道slice,底层其实就是一个数组。赋值区别数组赋值go语言中,数组赋值采用的是值赋值方式,赋值后的两个数组互不影响func arrayFuzhi(){ array1 := [3][3]int{{1,2,3},{4,5,6},{7,8,9}} array2 := array1 array1[0][0]=0 fmt.Prin原创 2021-08-10 15:53:36 · 13935 阅读 · 0 评论 -
浅谈Gin框架中bind
概述Gin框架中,有bind函数可以非常方便的将url的查询参数query parameter、http的Header,body中提交上来的数据格式,如form,json,xml等,绑定到go中的结构体中去,这期间Binding做了啥事情,这么多个Bindding函数,我们该如何选择,一起通过源码来解开其中神秘的面纱吧。Binding接口type Binding interface { Name() string Bind(*http.Request, interface{}) error原创 2021-07-16 11:16:24 · 23222 阅读 · 0 评论 -
初探zabbix_agent2 plugin
概述zabbix_agent2作为可以完全替代zabbix_agent功能的客户端,较以往的功能非常强大。采用go语言进行编写,插件化方式对监控的能力进行管理。一栈式代理能力,官方提供的5.2版本已经具有很强的监控能力zabbix_agent2指标在代理运行的情况下,我们可以执行zabbix_agent2 -R metrics 获取当前代理所支持的指标,以及指标的运行情况[Agent]active: truecapacity: 0/100tasks: 0agent.hostnam原创 2021-04-26 01:53:25 · 31371 阅读 · 0 评论 -
Window环境下安装mattn/go-oci8库
概述mattn/go-oci8库是在go语言中,连接oracle数据库的驱动程序,之前在另外一个篇 mattn / go-oci8 库安装 (用于go连接oracle数据库) 介绍了在linux环境如何编译和安装,这次我们在Windows环境下进行安装。环境准备GCC编译环境PKG-CONFIG 程序 百度网盘提取码: r4frOracle InstanceClient 这里我用的是截止目前最新的19.6版本Oracle SDK 这里我用的是截止目前最新的19.6版本安装配置GC原创 2020-07-03 10:39:50 · 592 阅读 · 0 评论 -
Golang 在 Mac、Linux、Windows 下如何交叉编译
交叉编译Golang 支持交叉编译,即在一个平台上生成另一个平台的可执行程序Mac 下编译 Linux 和 Windows 64位可执行程序CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.goLinux 下编译 M...转载 2020-04-19 23:27:42 · 136 阅读 · 0 评论 -
go build ldflags
示例go build -ldflags “-w -s -X main.Version=${VERSION} -X main.Build=${BUILD}”注解-w 去掉DWARF调试信息,得到的程序就不能用gdb调试了。-s 去掉符号表,panic时候的stack trace就没有任何文件名/行号信息了,这个等价于普通C/C++程序被strip的效果,-X 设置包中的变量...转载 2020-04-19 23:18:03 · 846 阅读 · 0 评论 -
解决go依赖包被墙
概述在go项目中,有些go的模块在golang.org上面,有时候被墙,无法下载。可以使用代理的方式,加速下载,建议使用这个项目https://goproxy.cn/。具体操作步骤$ go env -w GO111MODULE=on$ go env -w GOPROXY=https://goproxy.cn,direct...原创 2020-04-01 07:25:00 · 909 阅读 · 1 评论 -
Go中的Interface使用
概述在看别人的源码时候,时常看到别人在go编程时,使用Interface这种类型作为参数,以及返回Interface这种类型。在这里我记录下我自己的一些理解和测试代码,供以后在编程中多注意这种编程技巧。接口 Interface在go语言中,我理解接口的含义是指一种事物的特征集合,集合里面全是方法的实现,不包含其他字段,仅仅只有方法的签名,甚至都没有func这个关键字,如下代码示例:...原创 2020-03-06 23:29:36 · 460 阅读 · 0 评论 -
prometheus 监控扑克牌
背景昨天去亲戚家打扑克牌,一种在我们家乡话称之为“万乐”的游戏,输了240元,心疼ing。突然引发起了我的好奇心,我们是不是可以通过prometheus来监控扑克牌,统计分析一下,每一张牌对整个游戏的概率性影响。游戏规则介绍“万乐”规则很简单,就是一个庄家,若干名买家。根据不同的牌型有着不一样的赔率。具体如下:双A:两张A,赔率为5倍万乐::一张10,J,Q或K以及另外一张A,赔...原创 2020-03-02 23:57:14 · 1118 阅读 · 0 评论 -
Go语言代码规范指导
说明本文为转载文章,本人勘误整理,原文地址:https://www.cnblogs.com/coffees/p/10788901.html如有侵权,请联系删除,谢谢!目标本规范旨在为日常Go项目开发提供一个代码的规范指导,方便团队形成一个统一的代码风格,提高代码的可读性,规范性和统一性。本规范将从命名规范,注释规范,代码风格和 Go 语言提供的常用的工具这几个方面做一个说明。该规范参...转载 2020-02-26 07:54:54 · 645 阅读 · 0 评论 -
prometheus 基础使用记录
概述记录在使用prometheus常用功能和实验点配置热更新启动配置热更新功能:–web.enable-lifecycle通过http发送热更新指令:http://prometheus-server:9090/-/reload注意该指令如正确,http响应码为200如错误,则响应码为500,并返回错误信息failed to reload config: couldn’t l...原创 2020-02-22 15:36:01 · 1432 阅读 · 0 评论 -
mattn / go-oci8 库安装 (用于go连接oracle数据库)
mattn/go-oci8 库用于连接oracle数据库,项目地址为:https://github.com/mattn/go-oci8安装步骤如下:1. 从oracle官网下载oracleClient、SDKhttps://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.ht...原创 2020-02-10 18:09:05 · 2082 阅读 · 1 评论 -
接口服务数据格式技巧
需求背景在同其他应用交互的过程中,我们常常需要提供以接口的方式,暴露应用数据或功能。在提供数据这块内容中,常常是需要约定双方的各自的数据格式要求,已满足通讯的需要现在大部分的数据格式为json格式,在go语言中,json也得到了很好的支持,可以很方便的将结构体转换为json数据在这篇文章中,我简要地演示下针对特定的数据格式,我们在go语言中如何去设计相关的结构体,从而方便我们的编程,更清晰...原创 2020-01-06 09:09:49 · 1070 阅读 · 0 评论 -
ORM概念以及使用
ORM,Object Relation Management,对象关系管理,是一种解决编程语言以及同后台数据库交互的一种解决方案,允许编程语言通过构造同后台数据库表(关系型数据库)或文档(非关系数据库)的结构体或类来对数据库进行CRUD操作。开发人员无须编写sql语句,只需要调用相应的类或者方法,即可完成对数据库的操作,代码更加简洁易懂,更好地关注于业务而非底层sql语句拼凑。ORM框架...原创 2020-01-03 12:25:49 · 417 阅读 · 0 评论 -
prometheus监控HAProxy
从Prometheus官方网站可以看到,官方网站已经有支持对HAProxy软件的exporter,我们从官方网站下载下来进行使用,也可以通过下载HAProxy的项目地址,通过编译进行部署。github项目地址https://github.com/prometheus/haproxy_exporter二进制可执行程序地址https://prometheus.io/download/原理...原创 2019-12-30 15:26:00 · 3318 阅读 · 3 评论 -
Go语言学习
函数也是一种类型 在go语言中,函数可以自定义为一种类型,因此,函数也可以像其他结构体类型一样,具有自己的方法。相同的函数签名(指具有相同的参数类型和返回值类型,并且类型个数一致),便可以转换为该函数类型,调用该函数类型的方法。package mainimport ( "fmt")//定义一个函数类型,...原创 2019-12-30 12:08:35 · 101 阅读 · 0 评论 -
go 离线编译安装组件
背景:在某些环境和条件下,生产环境无法连接网络,导致无法使用go get的方式直接安装go插件或应用。原理解析:在介绍解决方案之前,我们先来理解下go get的原理。go get实际上是先把代码从github.com上面下载到本地,具体位置为$GOPATH假设我下载项目地址为 github.com/beego/bee[root@sintopan gopath]# echo ...原创 2019-12-13 08:48:35 · 1890 阅读 · 0 评论