golang
文章平均质量分 77
love666666shen
Golang、Python、Java、Scala学习者,对Golang、大数据领域、深度学习等方面的知识比较感兴趣,志同道合的博友可以多多交流、相互学习、每天进步一点点!!!
展开
-
go mod更新指定的tag的包后,go vendor内容未更新
go mod tidy与go mod vendor更新依赖库及版本原创 2023-01-28 22:36:51 · 3423 阅读 · 0 评论 -
golang使用技巧与易错点总结
golang使用过程中,一些易错点、易忽略点,和使用技巧总结。原创 2022-06-16 23:28:38 · 5439 阅读 · 0 评论 -
golang中的定时器
golang定时任务原创 2022-06-06 23:09:53 · 2953 阅读 · 0 评论 -
【微软面试题】golang实现红包金额随机分配
问题有一次参见微软面试,在第三面技术面的时候,面试官给了如下一道算法题:Split money in red envelop. Given amount S, split into N random numbers.For example:Input: S=100 N=3Output: [40.00 25.03 34.97]分析场景这是一道模拟抢红包的场景,有一个总额为S的红包,有N个人抢,每个人抢到的金额随机,且总额为S。隐藏点目前红包最小单位为分,因此最终得到的浮点数精度为2位小原创 2022-02-10 00:05:06 · 734 阅读 · 0 评论 -
使用自定义错误码拦截grpc内部状态码
在golang项目中,通过grpc开发时,对于非法传入的参数、解析失败、返回异常时,虽然使用的是自定义的状态码,如果不做特殊处理,grpc默认会使用其内部的状态码进行拦截。如果想要使用自定义的错误码,应该如何处理呢?这里提供一种方式可以自由使用自定义的状态码,虽然不能从全局拦截grpc状态码,但也能够做到简洁方便地处理自定义状态码,具体只需在返回error之前,通过status.Errorf()传入自定义错误码和错误信息描述即可。import ( "google.golang.org/grpc/cod原创 2021-09-16 18:44:25 · 1991 阅读 · 0 评论 -
go test进行单元测试时,出现undefined方法或者command-line-arguments [build failed]解决方案
【Golang】解决Go test执行单个测试文件提示未定义问题文章来源:https://www.cnblogs.com/Detector/p/10010292.html背景很多人记录过怎么执行Go test单个文件或者单个函数,但是要么对执行单文件用例存在函数或变量引用的场景避而不谈,要么提示调用了其它文件中的模块会报错。其实了解了go test命令的机制之后,这个问题就迎刃而解了。也是一个同事向我求助我才知道有这样一个问题存在,因为场景特殊他只想执行我们的测试代码其中一个文件中的测试代码,因为调转载 2021-08-26 14:26:41 · 8497 阅读 · 1 评论 -
golang中开发和面试中一些容易忽略知识点
slice切片相关的考察点,主要设计切片扩容机制、切片拷贝、切片初始化、地址传递与值传递等。slice扩容示例程序package mainimport "fmt"import "time"func main() { // 不指定长度切片的扩容 arr0 := make([]int, 0) fmt.Println("arr0:", arr0, "len:", len(arr0), "cap:", cap(arr0)) for i := 0; i < 10; i++ { a原创 2021-06-23 20:26:15 · 195 阅读 · 2 评论 -
Go 内存管理概述
随着程序的运行,对象被写入内存。在一些特定时刻当它们不再被需要时,它们应该被移除。这个过程被称为 内存管理 。本文旨在给出内存管理的概述,然后深入研究在 Go 中如何使用垃圾收集器实现内存管理。Go 的内存管理近些年已经发生了很大变化,未来很可能还会发生更多变化。如果您正在阅读这篇文章,并且您使用的是比 1.16 更高的 Go 版本,那么这里的一些信息可能已经过时了。内存管理方式手动内存管理在像 C 这样的编程语言中,程序员会调用 malloc 或 calloc 之类的函数来将对象写入内存。这些函数返转载 2021-06-05 23:03:30 · 251 阅读 · 0 评论 -
go与go mod命令使用及遇到的问题
iris版本更新引起的问题在使用golang iris框架进行后端开发时,出现原因:在使用go mod tidy或者go run的时候,默认会下载安装最新版本的包。在go.mod文件中,发现使用的iris是最新的v12.2.0-alpha2测试版,而这个版本的好多东西相比v12.1.8版本,函数的参数,返回值发生了变化,引起其他包也可能出错。module github.com/xxxxxx/huoxinggo 1.13require ( github.com/Joker/jade v1.0原创 2021-06-01 23:39:17 · 8804 阅读 · 5 评论 -
golang浅拷贝与深拷贝
浅拷贝golang中通过copy方法,可以实现浅拷贝操作。func copy(dst, src []Type) int基本认识:1.copy只能用于切片,不能用于 map 等任何其他类型。2.copy返回结果为一个 int 型值,表示 copy 从原切片src复制到目的切片的长度。使用注意事项虽然,copy定义很简单,但是使用过程中要特别注意以下几点,否则很容易产生非预期结果。1.切片 dst 需要先初始化长度在使用copy将 src 完全 复制 到 dst 时,需要初始化目的切片ds原创 2021-04-11 23:19:08 · 3613 阅读 · 1 评论 -
深入理解defer内存分配及执行过程
defer性能go 1.13 正式版本的发布提升了 defer 的性能,号称针对 defer 场景提升了 30% 的性能。This release improves performance of most uses of defer by 30%.go 1.13 之前只有 defer 语句只会被编译器翻译成两个过程:1. 回调注册函数过程:deferproc2. 执行回调函数链过程:deferreturngo 1.13 带来的 deferprocStack 函数,这个函数就是这个 30% 性原创 2021-02-18 18:32:09 · 945 阅读 · 0 评论 -
gofmt格式化golang代码
格式化单文件: gofmt -l -w test.go格式化整个工程:gofmt -l -w $GOPATH/go_project原创 2020-11-23 10:53:04 · 858 阅读 · 0 评论 -
go micro微服务资料
微服务从入门到实践下面的内容主要汇总自【学院君】,这些文章条例清晰、步骤详细、明白易懂,在这里学到了之前浅尝辄止、不求甚解的东西,非常感谢!概念篇(免费)开篇:什么是微服务架构微服务架构总体实现概述(总体框架图、一次完整的调用链路以及涉及到的组件)微服务架构的优缺点和适用场景(适用于复杂系统,但也不是银弹,提高了系统的复杂度)服务拆分的维度和拆分前的技术保障框架篇(免费)Go Micro 框架初探及底层架构(微服务框架选型)基于 Go Micro 构建第一个微服务接口(新手建议跳过看下一篇原创 2020-10-28 21:26:45 · 326 阅读 · 0 评论 -
微服务简述
go micro简介微服务架构服务注册发现原理服务的注册发现是将所有服务注册到ETCD、Consul等注册中心,通过注册中心提供可用的服务列表,让各个服务之间知道彼此的状态与地址。比如客户端可以向注册中心发起查询,来获取服务的位置。下面均以consul为例,说明原理。服务注册与发现过程:当User Service启动的时候,会向consul发送一个POST请求,告诉consul自己的IP和Port;consul 接收到User Service的注册后,每隔10s(默认)会向User Se转载 2020-10-13 18:50:46 · 675 阅读 · 0 评论 -
golang数据竞态
Golang以构建高并发容易、性能优异而闻名。但是,伴随着并发的使用,可能发生可怕的数据争用data race问题。而一旦遇到data race问题,由于其不知道什么时候发生,这将会是难以发现和调试的错误之一。数据竟态示例下面是一个发生数据竟态的示例:func main() { fmt.Println(getNumber())}func getNumber() int { var i int go func() { i = 5 }() return i}在上面的示例中,g翻译 2020-09-25 09:50:47 · 641 阅读 · 0 评论 -
golang静态代码检查配置与常见格式异常
go环境配置下载go1.13版本,通过命令解压到/usr/local目录下,并设置环境变量:sudo tar -zxvf go1.13.9.linux-amd64.tar.gz -C /usr/local/Ubuntu_20200618虚拟机环境变量如下,通过gedit ~/.bashrc命令打开并编辑:export GOROOT=/usr/local/go # install dictoryexport GOPATH=/home/sym原创 2020-07-12 22:50:25 · 8993 阅读 · 0 评论 -
限流与熔断初探
1 技术方案1.1 限流/熔断开关和阈值在ETCD中配置在公共包go-common中封装一个方法,在ETCD中设置限流/熔断开启/关闭的开关,将父类context传递进去,读取环境变量,开关开启则进行限流和熔断(限流/熔断阈值写死,从环境变量中读取)优点:目标明确,工作量、技术实现可预知缺点:需要人为开启/关闭限流、熔断开关,限流/熔断阈值固定,必须达到该阈值才会出发,不够灵活1.2 根...原创 2019-12-30 11:26:57 · 2540 阅读 · 0 评论 -
golang项目规范总结
1.实践规范在进行golang项目开发过程中,虽然没有Java那么多多变成模式,但有一些实践经验可以总结下来,对形成良好的编程规范和解决bug是有一定的帮助的。1.1 最佳实践总结(1)尽量不要panic,而要返回错误给调用方处理在生产环境中运行的代码必须避免出现 panic。panic 是 cascading failures 级联失败的主要根源 。如果发生错误,该函数必须返回错误,并允...原创 2019-10-24 23:43:19 · 1148 阅读 · 2 评论 -
go语言学习笔记——框架与工具
常用框架gin框架Gin 框架中文文档:https://www.jianshu.com/p/98965b3ff638常用库网络库http库golang中的http库 https://blog.csdn.net/weixin_42654444/article/details/82288320golang 中的http包详解:https://blog.csdn.net/yuwenqi12...原创 2019-03-01 18:00:06 · 606 阅读 · 0 评论 -
golang中defer的使用规则
为什么使用defer在golang当中,defer代码块会在函数调用链表中增加一个函数调用。这个函数调用不是普通的函数调用,而是会在函数中正常返回,也就是在return之后添加一个函数调用。因此,defer通常用来释放函数内部变量。为了更好的学习defer的行为,我们首先来看下面一段代码:func CopyFile(dstName, srcName string) (written int6...转载 2019-03-03 00:09:39 · 255 阅读 · 0 评论 -
golang中的gin框架学习
gin框架中常用方法gin.H{ }有这么一行c.JSON(200, gin.H{“message”: “use get method”}) 这其中有一个gin.H{ },看样子,这像是一个结构体struct,查看gin框架的源码,声明如下: 所以,这只是一个map结构,别以为是一个struct设置http请求方式gin框架封装了http库,提供了GET、POST、PUT、D...原创 2019-03-29 21:00:24 · 8653 阅读 · 1 评论 -
Mac端安装protobuf及其简单使用
protobuf简单介绍protobuf是Google开发出来的一个语言无关、平台无关的数据序列化工具,在rpc或tcp通信等很多场景都可以使用。通俗来讲,如果客户端和服务端使用的是不同的语言,那么在服务端定义一个数据结构,通过protobuf转化为字节流,再传送到客户端解码,就可以得到对应的数据结构。这就是protobuf神奇的地方。并且,它的通信效率极高,“一条消息数据,用protobuf序...原创 2019-04-12 11:12:10 · 29226 阅读 · 0 评论 -
golang中的值类型和引用类型
值类型与引用类型值类型值类型:这些类型的变量直接指向存在内存中的值,值类型的变量的值存储在栈中。当使用等号=将一个变量的值赋给另一个变量时,如 j = i ,实际上是在内存中将 i 的值进行了拷贝。可以通过 &i 获取变量 i 的内存地址。 值拷贝引用类型引用类型:引用类型拥有更复杂的存储结构:(1)通过make创建并分配内存 (2)初始化一系列属性:指针、长度、哈希分布、数据队...原创 2019-08-20 20:48:29 · 8486 阅读 · 2 评论 -
golang学习笔记
开发环境配置Atom编辑器:是Facebook和GitHub联合开发的,但是GitHub被微软收购之后,在2018.12月份Facebook宣布停止更新。VS code:微软开发,功能强大,语言类型支持丰富。VScode快捷键https://www.cnblogs.com/bindong/p/6045957.htmlgolang开发框架https://blog.csdn.net/f...原创 2019-01-11 10:26:38 · 230 阅读 · 0 评论