GO语言mqtt使用(例子)
GO语言使用mqtt
"github.com/eclipse/paho.mqtt.golang"
//mqtt
"github.com/sirupsen/logrus"
//日志
package mqtt
import (
"crypto/tls"
"encoding/json"
"errors"
"os"
"os/signal"
"time"
"fmt"
MQTT "github.com/eclipse/paho.mqtt.golang"
log "github.com/sirupsen/logrus"
)
var MqttAgent *Agent
...
使用 go 实现一个Ping程序
使用golang 实现一个Ping程序
基本原理
ping 程序的基本原理
首先呢,ping用到的协议是网络层的ICMP协议,发送/接收的是ICMP报文,最终的形式还是以一个IP报文在网络中传送。
ping命令主要基于ICMP(Internet Control Message Protocol)实现,它包含了两部分:客户端、服务器。
客户端 : 向服务端发送ICMP回显请求报文
服 ...
我用 go-zero 一周实现了一个中台系统,已开源!
作者:Jack
最近发现golang社区里出了一个新星的微服务框架,来自好未来,光看这个名字,就很有奔头,之前,也只是玩过go-micro,其实真正的还没有在项目中运用过,只是觉得 微服务,grpc 这些很高大尚,还没有在项目中,真正的玩过,我看了一下官方提供的工具真的很好用,只需要定义好,舒适文件jia结构 都生成了,只需要 ...
Go加密算法总结
前言
加密解密在实际开发中应用比较广泛,常用加解密分为:“对称式”、“非对称式”和”数字签名“。
对称式:对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。具体算法主要有DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法。
非对称加密(公钥加密):指加密和解密使用不同密钥的加密算法,也 ...
golang confluent-kafka-go
针对golang的 kafka client 有很多开源package,例如sarama, confluent等等。在使用sarama 包时,高并发中偶尔遇到crash。于是改用confluent-kafka-go,其简单易用,并且表现稳定。
本文主要介绍confluent-kafka-go的使用方法。confluent-kafka-go,是kafka官网推荐的golang package。
confluent-kafka-go is Confluent's ...
go操作RabbitMQ
go操作RabbitMQ
RabbitMQ服务器安装1、安装erlang
wget https://www.rabbitmq.com/releases/erlang/erlang-18.2-1.el6.x86_64.rpm
2、安装RabbitMQ
wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el6.noarch.rpm
3、 常用命令
systemctl start rabbitmq-server 启动
ra ...
Go-swagger 的安装与使用
目录
一、安装与配置
下载与安装
添加环境变量
二、开始第一个 swagger 案例
swagger 初始化
声明 API 接口
生成接口代码
添加新的功能接口
代码完善
一、安装与配置
1.下载与安装
附件中下载 swagger 执行包,或者从 go-swaager 官网下载,根据 OS 选择合适的版本:
这里我们下载Windows 64版本的 swagger_windows ...
我用go-zero开发了第一个线上项目
作者:结冰
前言
说在最前面,我是一个外表谦让,内心狂热,外表斯文,内心贪玩的一个普通人。我的职业是程序员,是一个golang语言爱好者,一半是因为golang好用,一半是因为其他语言学不好。我是从phper转为gopher的,写php的时候我认识了互联网软件,写go的时候感觉自己终于在编程。
初见golang
我大学专业是软件。 ...
Go TryLock实现
Go TryLock实现
Go标准库的sync/Mutex、RWMutex实现了sync/Locker接口, 提供了Lock()和UnLock()方法,可以获取锁和释放锁,我们可以方便的使用它来控制我们对共享资源的并发控制上。
但是标准库中的Mutex.Lock的锁被获取后,如果在未释放之前再调用Lock则会被阻塞住,这种设计在有些情况下可能不能满足我的需求。有时候我 ...
我是如何用go-zero 实现一个中台系统的
最近发现golang社区里出了一个新星的微服务框架,来自好未来,光看这个名字,就很有奔头,之前,也只是玩过go-micro,其实真正的还没有在项目中运用过,只是觉得 微服务,grpc 这些很高大尚,还没有在项目中,真正的玩过,我看了一下官方提供的工具真的很好用,只需要定义好,舒适文件jia结构 都生成了,只需要关心业务,
...
深入分析 Java、Kotlin、Go 的线程和协程
前言
协程是什么
协程的好处
进程
进程是什么
进程组成
进程特征
线程
线程是什么
线程组成
任务调度
进程与线程的区别
线程的实现模型
一对一模型
多对一模型
多对多模型
线程的“并发”
协程
协程的目的
协程的特点
协程的原理
Java、Kotlin、Go 的线程与协程
Kotlin 的协程
使用「线程」的代码
使用 ...
Go语言的context包从放弃到入门
目录一、Context包到底是干嘛用的二、主协程退出通知子协程示例演示主协程通知子协程退出主协程通知有子协程,子协程又有多个子协程三、Context包的核心接口和方法context接口emptyCtx结构体BackgroudTODOvalueCtx结构体ValueWithValue示例cancelCtx结构体WithCancel示例timerCtx结构体WithDeadlineWithTimeout示例四、总结 ...
从go-libp2p开始
这里是从一系列关于libp2p的go实现教程开始,go-libp2p
我们会讲述go的安装,go模块的设置,启动libp2p节点,并在它们之间发送消息。
安装go
go-libp2p推荐使用包含 modules feature的go版本,也就意味着你必须使用1.11或以上版本。
你可以按照 official installation instructions安装go ...
Go微服务实践之增删改查
从此篇文章开始,我们来陆续介绍 go-zero 开发一个项目所需要的组件和开发实践。
首先我们从 model 层开始,来说说go-zero 的API以及封装细节。首先 model 层连接的API集中在core/stores。我们先来看看操作 mysql 这类数据库,API方法我们来到 core/stores/sqlx,所以接下来用几篇的文章总体介绍一下 sqlx 的使用和设计思 ...
Go语言的omitempty
使用
熟悉 Golang 的朋友对于 tag、json 和 struct 都不陌生。
type Address struct {
City string `json:"city"`
Street string `json:"street"`
ZipCode string `json:"zip_code"`
}
func TestMarshal(t *testing.T) {
data := `{
"city": "Beijing",
"street": "a"
}`
addr := &Address{}
...
也许是最客观、全面的比较 Rust 与 Go:都想把 Rust 也学一下
最近一年,将 Rust 和 Go 进行比较的不少,但不少都不公正,带感情色彩。而这篇文章客观、全面的分析对比了 Rust 和 Go,让你具体项目时选择最合适的。
Rust 还是 Go,哪个更好?你应该为下一个项目选择哪种语言,为什么?两者在性能,简单性,安全性,功能,规模和并发性等方面如何比较?它们有什么共同点,并且在根本 ...
Golang go-linq使用说明
日常开发过程中需要对切换进行一些简单的检索、计算等,暂时golang没有泛型。基于减少代码的目的go-linq是一个不错的扩展,以下是一些简单的使用说明
如有不全的,请参考官方的文档地址
Git地址:https://github.com/ahmetb/go-linq
文档地址 :https://godoc.org/github.com/ahmetb/go-linq
一、需要引入的包
linq "github ...
Go 进程诊断工具 gops
本文转自
在类 Unix 系统中,我们常常会使用 ps 命令来查看系统当前所运行的进程信息,该命令为我们提供了较大的帮助,能够快速的定位到某些进程的运行情况和状态。
而在 Go 语言中,也有类似的命令工具,那就是 gops[1](Go Process Status)。
gops 是由 Google 官方出品的一个命令行工具,与 ps 命令的功能类似,能够查 ...
go中开启 go module
如果不设置,直接使用命令创建会报错,如下:
go: modules disabled inside GOPATH/src by GO111MODULE=auto; see 'go help mod
01、配置GO111MODULE=on环境变量:配置后,最好是重启一下电脑,以免没有生效,搞得自己很烦。
02、使用命令:go mod init
...
go 使用go-redis 和redigo 连接redis
package main
import (
"context"
"fmt"
"log"
"math/rand"
"net/http"
"sync"
"time"
goredis "github.com/garyburd/redigo/redis"
redis "github.com/go-redis/redis/v8"
)
var ctx = context.Background()
var redisdb *redis.Client
var once sync.Once
var pool *goredis.Poo ...