golang 下载依赖太慢 go get 太慢解决办法(goproxy 国内代理),详细版
用过go的同学都知道go get …… 是一个漫长的过程,既然python 有pip国内镜像,node 也有国内镜像,那go是否有类似的镜像呢?确实有go mod + goproxy 可参考http://mirrors.aliyun.com/goproxy/,具体怎实现呢? 在环境变量中加入GOPROXY值为https://mirrors.aliyun.com/goproxy/ 新建一个文件夹test 在test下执行go mod init test 新建main.go 写入代码 package...阅读全文
windows Golang基础教程
golang基础教程一、安装和配置golang的sdkWindows 安装和配置sdk1、下载golang sdk工具包1.Go 语言的官网为:golang.org , 因为各种原因,可能无法访问。2.SDK 下载地址:Golang 中国 https://studygolang.com/dl3.如何选择对应的 sdk 版本 Windows系统下,根据自己电脑的系统是32位还是64位的自行选择下载32位系统:go1.15.6.windows-386.msi 、go1.15.6.windows-38...阅读全文
GoLang的匿名函数与闭包
序言 在GoLang开发过程中,经常会遇到「匿名函数」和「闭包」,但是对这两个概念始终是一知半解,因此决定认真整理一下以解答这一疑惑。 一、什么是匿名函数? 首先,什么是「匿名函数」。匿名函数,顾名思义就是没有名字的函数,我们从一个简单的例子开始介绍。 1. 不带参数的匿名函数 package main import ( "fmt" ) func main() { f:=func(){ fmt.Println("hello world") } f()//hello world fmt.Print...阅读全文
聊聊zerolog的encoder
序本文主要研究一下zerolog的encoderencodergithub.com/rs/zerolog@v1.20.0/encoder.gotype encoder interface { AppendArrayDelim(dst []byte) []byte AppendArrayEnd(dst []byte) []byte AppendArrayStart(dst []byte) []byte AppendBeginMarker(dst []byte) []byte AppendBool(...阅读全文
golang 注册和获取consul服务,api服务注册获取以及grpc注册获取
1.普通接口注册服务 执行后就会出现下面那个服务,他这里会检查这个服务是否可用,不可用就会自动剔除 package main import ( "fmt" "net/http" consulapi "github.com/hashicorp/consul/api" ) const ( consulAddress = "124.70.156.31:8500" localIP = "124.70.156.31" localPort = 3001 ) func consulRegister() { /...阅读全文
golang 注册和获取consul服务,api服务注册获取以及grpc注册获取
1.普通接口注册服务 执行后就会出现下面那个服务,他这里会检查这个服务是否可用,不可用就会自动剔除 package main import ( "fmt" "net/http" consulapi "github.com/hashicorp/consul/api" ) const ( consulAddress = "124.70.156.31:8500" localIP = "124.70.156.31" localPort = 3001 ) func consulRegister() { /...阅读全文
Kubernetes学习笔记之kube-proxy service实现原理
Overview我们生产k8s对外暴露服务有多种方式,其中一种使用 external-ips clusterip service ClusterIP Service方式对外暴露服务,kube-proxy使用iptables mode。这样external ips可以指定固定几台worker节点的IP地址(worker节点服务已经被驱逐,作为流量转发节点不作为计算节点),并作为lvs vip下的rs来负载均衡。根据vip:port来访问服务,并且根据port不同来区分业务。相比于NodePort ...阅读全文
改了一个SQL建表语句转Struct的插件
Github:Github感谢原作者:https://github.com/idoubi阅读全文
简单4步,利用Prometheus Operator实现自定义指标监控
本文来自Rancher Labs 在过去的文章中,我们花了相当大的篇幅来聊关于监控的话题。这是因为当你正在管理Kubernetes集群时,一切都会以极快的速度发生变化。因此有一个工具来监控集群的健康状态和资源指标极为重要。 在Rancher 2.5中,我们引入了基于Prometheus Operator的新版监控,它可以提供Prometheus以及相关监控组件的原生Kubernetes部署和管理。Prometheus Operator可以让你监控集群节点、Kubernetes组件和应用程序工作负...阅读全文
【golang】随机数的使用方法
使用math/rand包操作随机数,rand.Seed(seedNum)方法设定种子值,rand.Intn(n)获取一个小于n的随机数,需要注意的是,同一个种子值,生成的随机数是确定的。所以我们尽量保证种子值的随机性,一般情况下可以采用系统时间的毫秒数作为种子值。 package main import ( "fmt" "math/rand" "time" ) func main() { var seedNum int64 = 666 //创建随机数种子,种子的值决定了随机数的值,只要种子确定,...阅读全文
【golang】冒泡排序和选择排序
冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 package main import "fmt" /** 冒泡排序:将每一个数同相邻的下一个数对比,比下一个数大则交换位置. */ func bubble(list []int) []int { //用来判断是否完成...阅读全文
Excelize 发布 2.3.2 版本, Go 语言 Excel 文档基础库
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。入选2020 Gopher ...阅读全文
docker的常规操作
配置阿里云容器加速器 0 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 1 配置阿里云镜像加速器:cd /etc/docker/daemon.json, 2 vim daemon.json 把: {"registry-mirrors": ["https://3tg72qr.mirror.aliyuncs.com"]} 填上 2_2 在镜像中心-镜像加速器- (https://3tg72qr1.mirror.aliyuncs...阅读全文
如何读取yaml,json,ini等配置文件【Golang 入门系列九】
本文转载自如何读取yaml,json,ini等配置文件【Golang 入门系列九】 前面已经讲过一些Go语言的基础知识,感兴趣的朋友可以先看看之前的文章。https://www.cnblogs.com/zhangweizhong/category/1275863.html。 实际项目中,还有一个比较重要的基础功能,就是读取相关的配置文件。今天就来说一说,Golang 是如何读取YAML,JSON,INI等配置文件的。 一. go读取json配置文件 JSON 应该比较熟悉,它是一种轻量级的数据交...阅读全文
Golang实践-error
Golang实践-error Error Go error 是一个普通的接口,普通的值 type error interface { Error() string } 经常使用errors.New()来返回一个error对象 type errorString struct { s string } func (e *errorString) Error() string { return e.s } 对于真正意外的情况,那些表示不可恢复的程序错误,比如索引越界,不可恢复的环境问题,栈溢出,才会使...阅读全文
【golang】函数的使用
一.无参数无返回值函数 package main import "fmt" /** * 无参数无返回值 */ func helloFunc(){ fmt.Println("Hello World!") } func main() { helloFunc() } 运行结果: Hello World! 二.有参数无返回值,可以传递一个或多个参数 package main import "fmt" /** * 有参数无返回值,同类型参数可以合并在一起写,用“,”分隔 */ func helloFunc...阅读全文
golang中的switch
Go 编程语言中 switch 语句的语法如下: switch Variable{ case val1: ... case val2: ... default: ... } switch 语句执行的过程从上至下,直到找到匹配项。与C++中不同的是:switch 默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case,如果我们需要执行后面的 case,可以使用 fallthrough。但是fallthrough语句会强制执行下一个case,不论是否判断为真。 例如: ...阅读全文
【golang】递归求最大公约数
首先是求两个数最大公约数的数学原理: 辗转相除法, 又名欧几里德算法,是求最大公约数的一种方法。它的具体做法是:用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。 使用golang实现的代码如下: package main import "fmt" func divisor(min,max int) (maxDivisor int){ //用小数除大...阅读全文