使用Go env命令设置Go的环境
1 前言
在进行Go开发的时候,设置Go的环境变量信息是必须的。下面介绍windows和Linux,以及Go自身提供的命令进行设置的形式
2 设置
2.1 Linux的设置
In Linux or macOS, you can execute the below commands.(在Linux或者macOS,你可以执行下面的命令)
# Enable the go modules feature
export GO111MODULE=on
# Set ...
Go语言的原子操作atomic
atomic
原子操作
Go中原子操作的支持
CompareAndSwap(CAS)
Swap(交换)
Add(增加或减少)
Load(原子读取)
Store(原子写入)
原子操作与互斥锁的区别
atomic.Value
Load
Store
总结
参考
atomic
原子操作
原子操作即是进行过程中不能被中断的操作,针对某个值的原子操作在被进行的过程中,CPU绝不会再去进行其他的 ...
go select的用法
golang中的select语句格式如下
select {
case <-ch1:
// 如果从 ch1 信道成功接收数据,则执行该分支代码
case ch2 <- 1:
// 如果成功向 ch2 信道成功发送数据,则执行该分支代码
default:
// 如果上面都没有成功,则进入 default 分支处理流程
}
可以看到select的语法结构 ...
GitHub 热点速览 Vol.35:Let's Go,Rust 大放异彩
摘要:语言之争,一直存在于各类社群,不论是单个编程语言的交流群,亦或是 NoSQL、云开发等技术群,总能看到“要不要换 Go”、“Rust 比 C++ 更强”的影子。撇开语言特性,本周的热点趋势周榜上 Rust 和 Go 开发的项目表现都很良好,比如,搜索引擎:MeiliSearch,虽然 ES 在搜索这块独占鳌头,但是 MeiliSearch 凭借它 ...
Go | Go 语言打包静态文件以及如何与Gin一起使用Go-bindata
Go | Go 语言打包静态文件以及如何与Gin一起使用Go-bindata
系列文章目录
第一章 Go 语言打包静态文件以及如何与Gin一起使用Go-bindata
Table of Contents
系列文章目录
前言
一、go-bindata是什么?
二、使用步骤
1. 安装
2. 使用
3. 读取文件
三、和 Gin 一起使用
1. 使用 go-bindata-assetfs 进行打包
2. 安装 g ...
go语言gRPC系列(三) - 使用grpc-gateway同时提供HTTP和gRPC服务
1. gRPC提供HTTP服务
1.1 存在的意义
1.2 代码示例
1.3 使用postman尝试调用
1.4 gRPC客户端代码调用
2. 使用grpc-gateway同时提供HTTP和gRPC服务
2.1 前言
2.2 安装
2.3 目录结构
2.4 示例代码
2.4.1 编写proto描述文件:proto/hello_http.proto
2.4.2 编译proto
2.4.3 实现HTTP服务端
2.4.4 实现gRPC服务端
2.4.5 ...
Win10系统下设置Go环境变量
前言
本人安装Window系统下的Go语言的相关信息如下:
Go语言版本:go1.14.6
安装包:go1.14.6.windows-amd64.msi
安装路径:D:\Program Files\Go
Win10系统下配置Go语言环境变量
打开Win10下的环境变量设置界面
右键我的电脑->属性->高级系统设置->环境变量。
它有用户变量和系统变量。两者的区别是用户变量下配置只对 ...
go语言gRPC系列(一) - gRPC入门
1. 前言
2. gRPC与Protobuf简介
3. 安装
4. 中间文件演示
4.1 编写中间文件
4.2 运行protoc命令编译成go中间文件
5. 创建gRPC服务端
5.1 新建Product.protoc
5.2 运行protoc命令
5.3 实现RegisterProdServiceServer接口
5.4 准备工作完成,创建main函数将服务端跑起来
6. 创建gRPC客户端
6.1 拷贝Product.pb.go到客 ...
go微服务系列(一) - go micro入门
1. 什么是go micro
1.1 go micro作用
1.2 go micro架构组成
2. go micro入门
3. 结合consul进行服务注册/发现
3.1 consul的安装
3.2 服务注册代码示例
3.2 服务发现代码示例
1. 什么是go micro
1.1 go micro作用
它是一个可插入的RPC框架,用于在Go中编写微服务。开箱即用,您将收到:
服务发现: 应用程序自动注册 ...
GO语言获取文件的大小
在项目中,我们可能会需要获取一个文件的大小,在Go语言中,有很多方法来获取一个文件的大小
Read字节方式
func main() {
file,err:=os.Open("water")
if err ==nil {
sum := 0
buf:=make([]byte,2014)
for {
n,err:=file.Read(buf)
sum+=n
if err== ...
Go操作Redis
简介
Remote Dictionary Server, 翻译为远程字典服务, Redis是一个完全开源的基于Key-Value的NoSQL存储系统,他是一个使用ANSIC语言编写的,遵守BSD协议,支持网络、可基于内存的可持久化的日志型、Key-Value数据库,并提供多种语言的API.
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash) ...
Go语言如何将json时间格式化为dateime格式
目录问题一、示例:原生time.Time的json输出为UTC格式二、自定义结构体Datetime(缺点是需要手动转换类型)三、自定义结构体Datetime+自定义临时结构体(最佳方案)
问题
我们知道go语言的time.Time类型在转为json的时候,输出的是UTC的时间,而我们绝大部分时候使用的都是Datetime格式。
其实解决问题的核心就是使用自定义 ...
Go操作Elasticsearch
安装ES
拉取es到本地
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.0
创建一个网络
docker network create esnet
启动容器
docker run --name es -p 9200:9200 -p 9300:9300 --network esnet -e "discovery.type=single-node" bdaab402b220
安装ElisticHD
docker run -p 9800:9800 -d --link es:de ...
go操作elasticsearch
简介:
es包地址:https://github.com/olivere/elastic/ 这个版本被广泛使用,我们也用这个。
注意:es版本不同,要导入不同的包。6.0版本导入“github.com/olivere/elastic”
连接es:
var host = "http://xxx.com:9201"
func es_init() {
client, err := elastic.NewClient(
elastic.SetURL(hos ...
Go RPCX学习:快速入门
RPCX的产生
rpcx是一个类似阿里巴巴 Dubbo 和微博 Motan 的分布式的RPC服务框架,基于Golang net/rpc实现。
谈起分布式的RPC框架,比较出名的是阿里巴巴的dubbo,包括由当当网维护的dubbox。不知道dubbo在阿里的内部竞争中败给了HSF,还是阿里有意将其闭源了,官方的代码使用的spring还停留在2.5.6.SEC0 ...
go操作redis
golang操作redis主要有两个库,go-redis和redigo。两者操作都比较简单,区别上redigo更像一个client执行各种操作都是通过Do函数去做的,redis-go对函数的封装更好,相比之下redigo操作redis显得有些繁琐。但是官方更推荐redigo,所以项目中我使用了redigo。
redigo的使用入门可以去查godoc:http://godoc.org/github.com/ga ...
go template使用
以text/template为例, 而html/template的接口与前者一样,不再缀述。
模板文件一般由.tmpl或.tpl为后缀。
一些名词
dot:用表示.,相当于一个变量,保存着传进来的值,可以改变
pipeline:从字面上看,有点像管道|,但从文档上看,实际上指的是一切取值操作,包括{{ . }}、{{ $name }},而|与unix中的一样:作为函数的最 ...
go 操作 kafka
import "github.com/Shopify/sarama"
saram 使用纯go语言编写。用于处理Apache Kafka(0.8及更高版本)的纯Go客户端库. 它包括一个易于生成和使用消息的高级API,以及一个在高级API不足时控制线路上字节的低级API. 内嵌提供了高级API的用法示例及其完整文档.
生产者:
有几种类型的生产者:
sarama.NewSyncPr ...
Go sqlx库
在项目中我们通常可能会使用database/sql连接MySQL数据库。本文借助使用sqlx实现批量插入数据的例子,介绍了sqlx中可能被你忽视了的sqlx.In和DB.NamedExec方法。
sqlx介绍
在项目中我们通常可能会使用database/sql连接MySQL数据库。sqlx可以认为是Go语言内置database/sql的超集,它在优秀的内置database/sql基础上提供了一 ...
go 密码 hash 加密
目录bcrypt加密算法原理和应用简单使用一起实现一个demo获取用户输入的密码Hash & Salt 用户的密码目前我们做了什么验证密码更新 Main 函数全部代码
bcrypt加密算法原理和应用
对于同一个密码,每次生成的hash不一样,但是hash中包含了salt(hash产生过程:先随机生成salt,salt跟password进行hash);
在下次校验时,从has ...