Golang
文章平均质量分 80
Golang从入门到精通的学习记录
hezebin
https://hezebin.com
展开
-
etcd
民间文档:http://www.topgoer.com/%E6%95%B0%E6%8D%AE%E5%BA%93%E6%93%8D%E4%BD%9C/go%E6%93%8D%E4%BD%9Cetcd/%E6%93%8D%E4%BD%9Cetcd.html官方文档:https://github.com/etcd-io/etcd/blob/main/client/v3/README.md。原创 2023-08-04 14:38:23 · 723 阅读 · 0 评论 -
DDD领域驱动Golang实践
web-template-dddGithub地址:https://github.com/whereabouts/web-template-ddd1.简述基于DDD架构的Web服务快速构建模板。DDD领域驱动设计是一个很宽泛的方法论,涉及到的概念也很多,DDD并没有给出标准的代码模型,不同的人可能会有不同理解。该模板项目尝试通过不断的理解领域驱动,结合DDD的思想和规范,构建出一个代码目录结构,将DDD落地。2.DDD分层架构分层架构有一个重要的原则:每层只能与位于其下方的层发生耦合。具体又原创 2021-09-10 01:06:40 · 2896 阅读 · 0 评论 -
protobuf中的omitempty字段处理
问题描述proto文件自动生成.pb.go文件的代码中tag上会自动加上omitempty字段,如下:type RoleUser struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json原创 2021-09-06 19:07:35 · 2133 阅读 · 0 评论 -
Golang在Linux下部署环境快速搭建
文章目录1.安装Go环境2.安装MongoDB2.1 下载安装2.2 开启权限认证1.安装Go环境首先去Golang中文网选择对应版本的安装包:https://studygolang.com/dl,复制下载链接 https://studygolang.com/dl/golang/go1.15.12.linux-amd64.tar.gz:cd到/usr/local/src:cd /usr/local/src将压缩包下载到该目录下:wget https://studygolang.com/dl/原创 2021-05-16 15:44:35 · 965 阅读 · 1 评论 -
Golang在Windows下开发环境快速搭建
文章目录1.下载安装包2.安装及验证1.下载安装包官网在不科学上网的情况下不容易打开,可前往Golang中文网下载各个版本的安装包:https://studygolang.com/dl 。提示:如果要使用Go-Mirco建议安装1.14版本,因为目前还不支持1.15及其以上的版本,详见:Go-Micro启动依赖报错解决方法2.安装及验证运行下载的Golang安装包,选择好安装目录,一直Next就可以了,值得一提的是Golang的安装程序会为我们自动配置好环境变量:安装成功后验证一下是否安原创 2021-04-19 18:52:53 · 574 阅读 · 0 评论 -
Golang解决跨域问题
文章目录1.什么是跨域2.使用CORS解决跨域问题2.1 简单请求2.2 非简单请求2.3 配置CORS以解决跨域问题3.Golang解决跨域拦截1.什么是跨域由于浏览器的同源策略限制,进而产生跨域拦截问题。同源策略是浏览器最核心也最基本的安全功能;所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)。同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会原创 2021-02-24 20:51:34 · 5472 阅读 · 0 评论 -
JWT详解及Golang实现
文章目录1.背景2.概述3.组成3.1 Header3.2 Payload3.3 Signature4.令牌的校验5.续期方案5.1 方案15.2 方案26.Token总结7.Golang代码实现1.背景HTTP协议是一种无状态的协议,这意味着用户提供账号和密码进行登录认证后,下次再请求的时候,仍然需要认证,因为服务器并不知道是谁发送的请求,并不知道该用户已经认证过一次。 所以为了解决这一问题,保持客户端与服务端的会话状态,在服务器的缓存中需要为每位用户分配一份存储空间,用于存储用户的个人登录信息原创 2021-02-23 23:37:39 · 5308 阅读 · 0 评论 -
Golang实现SHA256加密和Base64编码
1.前言JWT的生成规范中常用到Base64 URL编码和SHA256加密算法,好消息是Golang原生包提供了对应的实现。2.Base64 编码Golang内置支持Base64编码解码,Go的encoding/base64包遵照RFC 4648规范实现了base64编码解码功能,包括标准方式以及URL/文件名称安全方式编码。2.1 Base64 标准方式编码解码RFC 4648规范约定标准Base64对任何二进制数据使用US-ASCII字符子集进行编码,字符包括:A-Z, a-z, 0-9, +原创 2021-02-23 23:59:16 · 2799 阅读 · 2 评论 -
Golang开源发布自己的包
文章目录1.前言2.新建仓库3. 构建项目和代码4.提交和发布代码5.引入和使用包1.前言我们平时在Golang项目的编码过程中,除了经常通过import使用官方提供的依赖包,也经常通过go get -u github.com/xxx/xxx命令下载第三方包来使用。那么我们如何将自己封装的包开源发布出去,让所有人都可以像使用其他三方包一样使用我们的包呢?2.新建仓库首先在我们的 Github 上新建一个仓库,权限选择 Public(默认):仓库创建成功后,我们得到仓库地址,通过git clone原创 2020-12-11 12:52:33 · 6066 阅读 · 0 评论 -
Go-Micro客户端请求报500错误的解决方法
1.服务端package mainimport ( "github.com/gin-gonic/gin" "github.com/micro/go-micro/registry" "github.com/micro/go-micro/web" "github.com/micro/go-plugins/registry/consul" "net/http")func main() { consulReg := consul.NewRegistry(registry.Addrs(":85原创 2020-12-09 23:12:44 · 3138 阅读 · 1 评论 -
Go-Micro启动依赖报错解决方法
启动报错# github.com/coreos/etcd/clientv3/balancer/pickerD:\GoPath\pkg\mod\github.com\coreos\etcd@v3.3.25+incompatible\clientv3\balancer\picker\err.go:37:44: undefined: balancer.PickOptionsD:\GoPath\pkg\mod\github.com\coreos\etcd@v3.3.25+incompatible\client原创 2020-11-26 14:19:07 · 1121 阅读 · 0 评论 -
Go-Micro微服务框架使用
1.Go-Micro微服务框架简介Go-Micro类似Java中的SpringCloud,虽然生态上有一些区别,但是可以类比比较。官当Github地址为 https://github.com/micro/go-micro,下载安装依赖命令:go get -u github.com/micro/go-micro2.创建Web服务Golang本身提供了丰富的http包,并且Gin等Web框架实现一个Web服务,但是为了贴合Go-Micro框架的统一规范,所以需要通过使用Go-Micro的github.原创 2020-12-09 23:54:42 · 1030 阅读 · 0 评论 -
Golang中log日志包的使用
文章目录1.前言2.log包介绍3.log包的使用3.1 日志输出方法3.2 自定义创建日志对象3.3 封装自定义日志包3.4 log包进一步解析1.前言作为后端开发人员,日志文件记录了发生在操作系统或其他软件运行时的事件或状态。技术人员可以通过日志记录进而判断系统的运行状态,寻找导致系统出错、崩溃的成因等。这是我们分析程序问题常用的手段。2.log包介绍在Golang中记录日志非常方便,Golang提供了一个简单的日志记录包log,包中定义了一个结构体类型 Logger,是整个包的基础部分,包中的原创 2020-12-01 11:02:26 · 3249 阅读 · 0 评论 -
Golang获取命令行参数的方式
1.介绍当我们希望通过命令行启动Golang程序,获取输入的各种形式参数时,该如何处理呢?2.os.Argsos.Args是一个string的切片,用来存储所有的命令行参数,包括go run main.go这部分,整体编译后实际是生成和运行的main.exe文件,所以第一个参数是main.exe。示例如下:func main() { for i ,v := range os.Args { fmt.Println(i, v) }}命令行携带参数启动:go run main.go -nam原创 2020-11-27 23:53:46 · 1842 阅读 · 0 评论 -
Golang依赖下载安装失败解决方法
在已经搭建golang和git环境后,并在挂了VPN的情况下,cmd中运行命令:go get github.com/astaxie/beego #下载依赖成功go get -u github.com/beego/bee #安装bee脚手架失败在安装bee脚手架时,要么是卡住,要么是如下的报错:原因还是因为被墙了,解决方法是更改golang的配置,主要修改环境变量和设置代理:set GO111MODULE=onset GOPROXY=https://goproxy.io然后重新执行安装命令原创 2020-10-09 15:02:03 · 4081 阅读 · 1 评论 -
Golang基础学习笔记(二)
文章目录12.Golang中的包12.1 Go中的包的介绍和定义12.2 Go包管理工具 go mod12.2.1 go mod init初始化项目12.2.2 引入其它项目的包12.3 Golang中自定义包12.4 Go中init()初始化函数12.4.1 init函数介绍12.4.2 init函数执行顺序12.5 Go中的第三方包12.5.1 方法1:go get 包全名 (全局)12.5.2 方法2:go mod download (全局)12.5.3 方法3:go mod vendor 将依赖复制原创 2020-10-08 23:49:31 · 522 阅读 · 0 评论 -
Golang基础学习笔记(一)
文章目录1.Golang的数据类型1.1 Golang中精度丢失问题1.2 byte 和 rune类型1.3 修改字符串1.4 基本数据类型转换2.Golang的流程控制2.1 for range(键值循环)2.2 switch case2.3 goto:跳转到指定标签3.Golang的数组3.1 数组定义和初始化3.2 数组的值类型3.3 切片定义(引用类型)4.Golang的切片4.1 为什么要使用切片4.2 基于数组定义切片4.3 切片的长度和容量4.4 切片的本质4.5 使用make函数构造切片4.原创 2020-10-07 00:22:45 · 594 阅读 · 0 评论