Go语言进阶
Go语言开发中的用例介绍
random_w
这个作者很懒,什么都没留下…
展开
-
如何通过Hash算法实现服务器节点的合理调度——通过Go语言实现一致性Hash算法
在分布式系统开发中,我们经常会遇到服务器负载均衡的问题,我们需要将用户的请求均匀的分摊到每一台服务器,从而保证系统资源的有效利用。那么如何将请求均匀的进行分配呢?比较常见的就是 Hash 算法了,但是普通的余数hash(hash(比如用户id)%服务器机器数)算法伸缩性很差,当新增或者下线服务器机器时候,用户id与服务器的映射关系会大量失效。一致性hash则利用hash环对其进行了改进。1. Hash 算法Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, .原创 2020-09-03 22:56:12 · 418 阅读 · 0 评论 -
超级详细的跨域问题解决方法指南——以gin框架为例,解决跨域问题
一、什么是跨域1. 同源策略所谓同源是指:域名、协议、端口相同,而浏览器实现了同源策略,这里引用百度百科的解释:同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。2. 同源策略分类同源策略分为两种:DOM 同源策略:禁止对不同源页面 DOM 进行操作。这里主要场景是 iframe 跨域的情况,不同域名的 ifram原创 2020-08-27 14:14:10 · 5134 阅读 · 0 评论 -
windows系统安装protocol buffer如何解决protoc-gen-go依赖包安装的一系列问题
今天在学习 protocol buffer 的时候遇到了 protoc-gen-go not find 的问题,我是在 windows10 系统中安装的 protoc ,在官网下载了安装包(包虽然很小,但是下载是真的慢),然后安装,以为万事大吉,结果报依赖的问题,这里记录下解决方法,希望对大叫有帮助。1. 先来看问题$ protoc --go_out=. hello.proto'protoc-gen-go' 不是内部或外部命令,也不是可运行的程序或批处理文件。--go_out: protoc-.原创 2020-08-24 10:47:51 · 3322 阅读 · 0 评论 -
Go mod踩坑记
这篇博客向大家介绍,我再使用Go mod进行包管理中遇到的问题,持续更新,希望对你有帮助。1. Go mod 下载包报unrecognized的问题今天在一个开源项目上使用go mod进行包管理的时候遇到了下面的问题:golang.org/x/sys@v0.0.0-20200615200032-f1bc736245b1: unrecognized import path "golang.org/x/sys"遇到类似的问题,我们可以通过匹配值proxy的方式进行处理(类似的方法,应该也可以,不.原创 2020-07-17 14:46:26 · 2521 阅读 · 0 评论 -
Go语言cobra库学习笔记——从入门到精通
Go语言中,我们可以使用cobra很方便的进行命令行工具的开发,kubelet命令就是使用这个库开发的。在这片博客中,我将会总结一下我学习cobra库的笔记,希望对你有帮助。点击这里可以进入cobra官方说明。一、安装cobra1. 安装cobrago get github.com/spf13/cobra/cobra将cobra下载完成后,GOPATH/bin目录会生成一个cobra可执行程序,通过这个程序我们可以初始化一个cobra代码框架。2. 初始化一个项目我们可以通过下面的命令初始化.原创 2020-07-03 17:12:22 · 6407 阅读 · 3 评论 -
Go语言成长路线
原创 2020-06-24 10:15:44 · 487 阅读 · 0 评论 -
Go语言开发过程中,什么时候使用方法,什么时候使用interface进行方法封装呢?
刚开始做Go语言开发的过程中,经常会有一个疑问,使用接口封装的方法和不使用接口封装的方法,在本质上是没有区别的,但是在读了io标准库之后,对两者的使用有了进一步的理解,在这里总结一下。1.什么是方法在 go语言中可以通过下面的形式定义方法func (A type) function_name(args) {}其中A为一种定义好的类型,args为传入的参数,调用方法时,必须使用type.function_name的形式调用,type是定义好的类型,举个例子:package mainimpo.原创 2020-05-27 10:51:40 · 968 阅读 · 0 评论 -
Go语言中type func()的的使用分析
在Go语言中可以通过type来定义变量类型,在学习源码的过程中经常会看到一种type func()的定义方式,刚开始的时候有点难以理解,现在对这种方法做一下分析。1.案例分析在使用**“github.com/robfig/cron”**库创建定时任务时就会用到type func()这种定义类型的方式:func CreateCron() { //创建定时任务 i := 0 c := cron.New() spec := "*/5 * * * * ?" // AddFunc的第二个参数就是函.原创 2020-05-22 18:01:45 · 2347 阅读 · 0 评论 -
使用Golang将十进制数字转化为由A-Z(1-26)表示的形式
标题可能有点奇怪,有人可能会认为这就是一个简单的将十进制数字转化为26进制的数字,但是问题并没有这么简单。我遇到的问题如下: 已知一组数据的总量,也就是有多少条数据,现在需要将这组数据写入excel表格,但是在表格中只能将数据写在同一行上,这就意味着你不能构造A1-A100(如:将数据写在excel表格的第一列,共100个数据),这种方式,每一个数据要填写的位置索引...原创 2019-03-12 23:10:52 · 3590 阅读 · 1 评论 -
Go语言中用来检测结构体是否实现某个接口的方法(var _)
最近在阅读go语言源码的时候,看到了一种通过var _检测方法是否被定义的方法,查看了一些资料,总结一下。1. 案例分析通过下面的demo还原我遇到的问题。// Membertype Member struct { ID Role UserName }type IMember interface {}// 检测Member是否实现了IMember接口// 1) _为了避免变量未使用编译的时候报错// 2)_的类型为IMember,接口的值为Member.原创 2020-05-22 15:25:27 · 3048 阅读 · 1 评论 -
GO语言如何创建定时任务
1.时间表达式 在Linux系统中可以通过crontab创建定时任务,定时任务由两部分组成,一部分是时间表达式,一部分是具体执行的命令或者脚本,这里介绍一下时间表达式:时间表达式由五部分组成:[root@random_w ~]# cat /etc/crontabSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/b...原创 2020-01-19 15:22:03 · 1495 阅读 · 0 评论 -
Golang包管理工具(一)go mod
在项目上,经常需要使用外部的包来实现相应的功能,当多个人同时进行开发时,就需要一个包管理器,每个人通过包管理器将自己代码所调用包,保存在同一个目录地下,然后提交到git上面,当以通进行开发的人拉取代码后,就不需要担心本地没有你的依赖包的问题,从而确保项目开发正常进行,下面介绍golang1.11版本后的go mod使用方法。【1】与go mod相关的环境变量GO111MODULE环境变...原创 2019-04-10 18:22:31 · 1634 阅读 · 0 评论 -
glide使用教程
版权声明:本文为博主原创文章,转载请附上链接http://blog.csdn.net/to_be_better https://blog.csdn.net/to_be_better/article/details/78149713 </div> ...转载 2019-03-21 09:58:11 · 789 阅读 · 0 评论 -
ubuntu中beego和bee工具安装
1.通过go get安装beegorandom@random:~/go/src$ sudo go get -u github.com/astaxie/beego2.安装bee工具random@random:~/go/pkg$ sudo go get github.com/beego/bee 3.测试在当前工程的bin目录底下可以看到一个可执行文件。random@r...原创 2018-12-20 13:46:16 · 2079 阅读 · 0 评论 -
gomail发送邮件报:x509: certificate signed by unknown authority的解决方法
今天在项目上遇到一个问题,项目上使用gomail库进行邮件的发送,在自己电脑上测试是可以正常发送邮件的,但是要上线的前一天,进行了上线部署测试,结果发送邮件的功能一直报错,通过谷歌找到了解决方法。报错信息为:x509:certificatesignedbyunknownauthority\color{red}{报错信息为:x509: certificate signed by unknown authority}报错信息为:x509:certificatesignedbyunknownauthorit.原创 2020-05-20 14:29:16 · 2891 阅读 · 0 评论 -
Go语言切片去重
在go语言中我们可以利用map中key的唯一性对切片进行去重操作:package mainimport "fmt"func main() { s := []string{"张", "王", "李", "赵", "张", "王", "李", "赵"} fmt.Println(removeDuplicateElement(s))}func removeDuplicateElem...原创 2020-01-17 09:47:39 · 3073 阅读 · 0 评论