go
文章平均质量分 69
一切归于平静
这个作者很懒,什么都没留下…
展开
-
docker基本命令
1、登录镜像服务器命令sudo docker login -u [user] -p pwd hostname2、host模式启动容器docker run --network=host --name 容器名 -d 镜像ID /bin/bash3、登录镜像docker exec -it 镜像ID /bin/bash原创 2021-09-28 18:58:54 · 75 阅读 · 0 评论 -
cgo编程
一、编译和链接参数1、编译参数:CFLAGS/CPPFLAGS/CXXFLAGS编译参数主要是头文件的检索路径、预定义的宏等参数。CFLAGS:对应c语言编译参数(*.c),CPPFLAGS对应c/c++代码编译参数(*.c/*.cc/*.cpp/*.cxx),CXXFLAGS对应纯C++编译参数(*.cc/*.cpp/*.cxx)。2、链接参数:LDFLAGS链接参数主要包含链接库的检索目录和链接库的名字。链接库不支持相对路径,必须为链接库指定决定路径。CGO中的$(SRCDIR)为当原创 2021-07-15 09:24:17 · 635 阅读 · 0 评论 -
如何比较golang中的结构体是否相等
转自:https://blog.csdn.net/jcetpoor/article/details/108946530如果是相同的无复杂类型的结构体创建的对象 可以直接使用 == 对比值和指针简单类型可排序的数据类型整型Integer浮点型Floating-point字符串String可以比较的数据类型除了上述三种外,还有Boolean,Complex,Pointer,Channel,InterfaceArray复杂类型 不可比较的数据类型SliceMapFunc转载 2021-07-02 16:30:31 · 2403 阅读 · 0 评论 -
httprouter 源码分析
转自:https://learnku.com/articles/27591httprouter 源码分析关于 httprouter 本身就不过多说了,可以直接去查看源码及 README 。这个包相对还是比较简单了,只有几个文件,并且除了标准库没有外部的依赖。难理解的就是基数树,需要算法基础。抛砖引玉,有不对的地方望指出,我及时修改。入口使用的是代码追踪的方式,可以从官方给的 demo 来入手:package mainimport ( "fmt" "githu转载 2021-04-22 15:08:47 · 768 阅读 · 0 评论 -
Go mod使用指南
转自:https://studygolang.com/articles/31112?fr=sidebar一、启用go modgo env -w GO111MODULE=on #开启 MODULEgo env -w GOPROXY=https://goproxy.cn,https://goproxy.io,direct #默认值为https://proxy.golang.org,directGO111MODULE可以设置为:off、on、auto(默认值),从GO111MODULE变量名转载 2021-04-15 14:58:36 · 2152 阅读 · 0 评论 -
Go 包管理与依赖查找顺序
转自:https://www.cnblogs.com/shix0909/p/13612789.html目录1. 规则: 2. 编译时的依赖包查找机制 3.vendor vendor的层级搜索 4. modules1. 规则:同一目录下只能存在一个包 目录和目录下源文件的包命名可以不同 当包名与目录名不同时,导入的是目录2. 编译时的依赖包查找机制在 Go 支持 Go Modules 之后,编译时编译器会从工作目录(当前所在目录)开始并逐级向上查找是否具有 go.mo.转载 2021-04-15 14:57:41 · 1389 阅读 · 0 评论 -
Golang 的 mgo 连接池
转自:https://blog.csdn.net/u010649766/article/details/79817549mgo 的 Session 与连接池简介mgo 是由 Golang 编写的开源 mongodb 驱动。由于 mongodb 官方并没有开发 Golang 驱动,因此这款驱动被广泛使用。mongodb 官网也推荐了这款开源驱动,并且作者在 github 也表示受到了 mongodb 官方的赞助。但由于作者的个人安排原因,该驱动的更新、bug 修复、issue 维护略微受到诟病。m转载 2021-04-15 14:52:57 · 2144 阅读 · 0 评论 -
golang结构体tag的使用
转自:https://blog.csdn.net/lengyue1084/article/details/107623817tag是结构体的元信息,可以在运行的时候通过反射机制读取出来1、tag定义格式:(tag在结构体字段的后方定义,由一对反引号包裹起来,不同的键值对之间使用空格分隔) `key1:"value1" key2:"value2"`2、指定字段名(序列化与反序列化默认情况下使用结构体的字段名,我们可以通过给结构体字段添加tag来指定json序列化生成的字段名) // 使...转载 2021-03-25 11:06:35 · 978 阅读 · 0 评论 -
Go module的介绍及使用
转自:https://blog.csdn.net/benben_2015/article/details/82227338Go1.1.1版本发布(2018-08-24发布)已经过去几天,从官方的博客中看到,有两个比较突出的特色,一个就是今天讲的module,模块概念。目前该功能还在试验阶段,有些地方还需要不断的进行完善。在官方正式宣布之前,打算不断修正这种支持。到时候就可以移除对GOPATH和go get命令的支持。如果你想现在想就试试这个新功能module,需要你将你的代码仓库放到GOPATH/sr转载 2021-03-03 16:39:07 · 654 阅读 · 1 评论 -
Go语言GOPATH详解(Go语言工作目录)
转自:http://c.biancheng.net/view/88.htmlGOPATH 是 Go语言中使用的一个环境变量,它使用绝对路径提供项目的工作目录。工作目录是一个工程开发的相对参考目录,好比当你要在公司编写一套服务器代码,你的工位所包含的桌面、计算机及椅子就是你的工作区。工作区的概念与工作目录的概念也是类似的。如果不使用工作目录的概念,在多人开发时,每个人有一套自己的目录结构,读取配置文件的位置不统一,输出的二进制运行文件也不统一,这样会导致开发的标准不统一,影响开发效率。GOPATH 适转载 2021-03-03 16:32:21 · 646 阅读 · 1 评论 -
go module
go get命令?1、GO111MODULE这个名字可能是go的版本号有关系,module功能是在go1.1.1版本增加的。2、GO111MODULE=off,go查询依赖包依赖GOPATH变量,工程fstest源码在$GOPATH/src下面,工程源码如下:main.go:package mainimport ( "fmt" "resty_chash")func main() { resty_chash.NewHashInstance() fmt.Println("te原创 2021-03-03 15:58:37 · 118 阅读 · 1 评论 -
go语言的GOPATH详解
GOPATH是Go语言中使用的一个环境变量,使用绝对路径提供项目的工作目录。工作目录是一个工程开发的相对参考目录。GOPATH适合处理大量Go语言源码、多个包组合而成的复杂工程。1、使用命令行查看GOPATH信息在命令行中运行go env后,结果如下:GO111MODULE="auto"GOARCH="amd64"GOBIN=""GOCACHE="/root/.cache/go-build"GOENV="/root/.config/go/env"GOEXE=""GOFLAGS=原创 2021-03-03 13:51:27 · 2354 阅读 · 0 评论 -
etcd 快速入门
转自:https://zhuanlan.zhihu.com/p/96428375?from_voters_page=true一、认识etcd1.1 etcd 概念从哪里说起呢?官网第一个页面,有那么一句话:"A distributed, reliable key-value store for the most critical data of a distributed system"即 etcd 是一个分布式、可靠 key-value 存储的分布式系统。当然,它不仅仅用于存储,还提转载 2020-12-03 19:02:02 · 507 阅读 · 1 评论 -
golang 如何排查和定位GC问题
转自:https://my.oschina.net/u/3470972/blog/1609721最近在做文本处理的时候遇到一个很奇怪的现象。串行执行脚本可能只需要几秒钟,但是如果想给每行开个协程并发处理的话,执行时间却从几十秒到几十分钟不等,关键是执行的过程中cpu的占用并不高。经过一系列的分析之后确认是gc导致的。所以想讲一下排查gc问题的一些小技巧,之后也会给出一些case: 一。如何查看程序运行过程中的GC信息呢? 设置gctrace的变量值为1即可,这个既可以设置成环境变量...转载 2020-11-20 15:27:20 · 1633 阅读 · 0 评论 -
golang gc 优化思路以及实例分析
转自:https://www.cnblogs.com/gao88/p/9850235.html一个即将上线的go 写的高频服务,压测的时候发现 gc 特别高,高到10%-15% 左右了,本文记录下优化 gc 的过程和和思路。线上环境1.10.该文章后续仍在不断的更新修改中, 请移步到原文地址http://dmwan.cc 首先,查看gc 是否有异常,我们可以使用 gctrace 跟踪实时的gc 。执行下面命令可以看到gc 的实时信息。GODEBUG=gctrace=1 go ...转载 2020-11-20 15:25:40 · 783 阅读 · 0 评论 -
cgo编程
简介:go语言通过自带的一个叫cgo的工具来支持c语言函数调用,同事我们可以用Go语言导出c动态库给其他语言使用。2.1 快速入门1、没有释放使用C.CString创建的C语言字符串会导致内存泄漏。2、需要通过extern "C"语句指示该函数的链接符号遵循C语言的规则。3、cgo不仅用于Go语言中调用C语言函数,还可以用于导出Go语言函数给C函数调用。4、通过CGO//export SayHello指令将Go语言实现的函数SayHello()导出为C语言函数。为了适配CGO导出原创 2020-11-13 09:18:31 · 650 阅读 · 0 评论 -
Go modules管理依赖
Go Modules 是 Go 语言的一种依赖管理方式,该 feature 是在 Go 1.11 版本中出现的,由于最近在做的项目中,团队都开始使用 go module 来替代以前的 Godep,Kubernetes 也从 v1.15 开始采用 go module 来进行包管理,所以有必要了解一下 go module。go module 相比于原来的 Godep,go module 在打包、编译等多个环节上有着明显的速度优势,并且能够在任意操作系统上方便的复现依赖包,更重要的是 go module 本身的设转载 2020-08-25 16:19:06 · 528 阅读 · 0 评论 -
go vendor介绍
go vendor是golang引入管理包依赖的方式,1.5版本开始引进,1.6正式引进。基本原理其实就是将依赖的包,特指外部包,复制到当前工程下的vendor目录下,这样go build的时候,go会优先从vendor目录寻找依赖包。优点将依赖的外部包引进到工程下的vendor目录,可以直接在其他机器直接编译,而不用再构建外部包的编译环境,一个一个的go get获取外部包。当然你也可以直接拷贝整个GOPATH下的第三方包源码过来,也是起到了vendor相同的作用,另外,防止了go get重转载 2020-08-25 10:48:17 · 907 阅读 · 0 评论 -
一致性哈希算法——虚拟节点
一致性哈希算法——虚拟节点一致性哈希算法是分布式系统中常用的算法。比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如key%N,key是数据的key,N是机器节点数,如果有一个机器加入或退出这个集群,则所有的数据映射都无效了,如果是持久化存储则要做数据迁移,如果是分布式缓存,则其他缓存就失效了。因此,引入了一致性哈希算法:把数据用hash函数(如MD5),映射到一个很大的空间里,如图所示。数据的存储时,先得到一个hash值,对应到转载 2020-08-10 17:33:03 · 807 阅读 · 0 评论 -
一致性哈希
转自:https://www.jianshu.com/p/735a3d4789fc前言伴随着系统流量的增大,出现了应用集群。在 Redis 中为了保证 Redis 的高可用也为 Redis 搭建了集群对数据进行分槽存放。在 Mysql数据库要存储的量达到一个很高的地步的时候,我们会对数据库进行分库分表操作。OK,到这儿先假设我们不知道什么是集群、什么是分库分表,我们先来看一个数据库水平切分演变的例子:假设我们的系统中有一张会员表 customer_info, 我们的系统刚开始无人问津,我们在一转载 2020-08-10 17:31:19 · 81 阅读 · 0 评论 -
go timer和ticker使用方式
转自:https://blog.csdn.net/busai2/article/details/82503699package mainimport ( "fmt" "sync" "time")/***ticker只要定义完成,从此刻开始计时,不需要任何其他的操作,每隔固定时间都会触发。*timer定时器,是到固定时间后会执行一次*如果timer定时器要每隔间隔的时间执行,实现ticker的效果,使用 func (t *Timer) Reset(d Duration) .转载 2020-08-05 17:20:00 · 344 阅读 · 0 评论 -
Go 服务注册--consul
转自:https://blog.csdn.net/qq_29632499/article/details/94621624此文详细介绍使用consul作为注册中心,实现两个服务之间的通信,这里只用了点到点通信。1 .安装consul- 注册中心服务注册中心我们选择consul:mac:brew install consulwindows:直接官网下载consul.exe可执行程序运行consul:启动Consul agent的开发模式: consul agent -dev...转载 2020-08-04 16:13:01 · 405 阅读 · 0 评论 -
golang语言中os/signal包的学习与使用
packagemain;import("os""os/signal""fmt")//signal包中提供了两个函数//Notifyf()用于监听信号//Stop()用于停止监听funcmain() {ch := make(chanos.Signal);//notify用于监听信号//参数1表示接收信号的channel//参数2及后面的表示要监听的信号//os.Inte...转载 2020-08-04 15:12:53 · 607 阅读 · 0 评论 -
golang增加自定义头和通过代理访问http请求方便fiddler抓包
直接代码:package mainimport ("net/http""net/url")func main() { urli := url.URL{} urlproxy, _ := urli.Parse("http://127.0.0.1:8888") client := http.Client{ Transport: &http.Transport{ Proxy: http.ProxyURL(urlproxy), }原创 2020-07-29 10:09:34 · 790 阅读 · 0 评论 -
GO1.11 Module做项目版本管理
转自:https://studygolang.com/articles/13895?from=singlemessagego 1.11 有了对模块的实验性支持,大部分的子命令都知道如何处理一个模块,比如run build install get list mod子命令,第三方工具可能会支持的晚一些。到 go 1.12 会删除对GOPATH的支持,go get命令也会变成只能获取模块,不能像现在这样直接获取一个裸包。可以用环境变量GO111MODULE开启或关闭模块支持,它有三个可选值:...转载 2020-07-24 16:45:01 · 172 阅读 · 0 评论 -
go的编译问题
转自:https://www.cnblogs.com/embedded-linux/p/11616183.htmlgo1.1.1版本前,想要对go包进行管理,只能以来第三方库实现,比如Vendor,GoVendor,GoDep,Glide等等。1、开启GO111MODULE用环境变量GO111MODULE开启或关闭模块支持,它有三个可选值:off、on、auto,默认值是autoGO111MODULE=off 无模块支持,go会从GOPATH和vendor文件夹寻找包。GO111MODU转载 2020-07-24 15:41:11 · 233 阅读 · 0 评论 -
go常见问题
1、goland2017版本下载github.com/astaxie/beego之后无法使用,也没有在vendor目录。通过go mod init / go mod vendor将第三方依赖库打包到vendor目录下面。2、beego学习笔记beego是一个快速开发go应用的HTTP框架,他可以用来快速开发API、Web及后端服务等各种应用,是一个RESTful的框架,设计灵感来源于tornado、sinatra和flask这三个框架,但是结合了Go本身的一些特性(interface、st...原创 2020-07-23 19:08:21 · 271 阅读 · 0 评论