RabbitMQ 入门 (Go) - 6. 数据持久化(上)

从本节开始,我介绍一下如何将相关数据持久化到数据库,也就是上图中蓝色的部分。 目前的问题 我先运行 6 个传感器和2 个协调器,这里我使用了批处理文件: 运行后,看一下 RabbitMQ 的管理控制台: 注意上面前面几个 Queue,这些 Queue 就是我们让传感器和协调器监听那两个 Fanout ... »

golang 入门之环境搭建

【安装运行时】 直接上官网下载运行时安装即可:golang 官网 根据自己操作系统选择 golang 运行时版本,例如windows 当然我们也可以直接选择下面的稳定版本进行下载 下载安装后,安装程序会自动配置环境变量,我们在cmd中输入 go version 查看当前golang运行时版本 go ... »

go的令牌桶实现库 go-rate

关于我 我的博客|文章首发 go-rate是速率限制器库,基于 Token Bucket(令牌桶)算法实现。 go-rate被用在LangTrend的生产中 用于遵守GitHub API速率限制。 速率限制可以完成一些特殊的功能需求,包括但不限于服务器端垃圾邮件保护、防止api调用饱和等。 库使用说 ... »

RabbitMQ 入门 (Go) - 5. 使用 Fanout Exchange 做服务发现(下)

到目前为止,我一直专注于如何让消息进出消息代理,也就是RabbitMQ。 实际上,我们可以继续使用 RabbitMQ 和它的 Exchanges 来连接这个应用程序的其他部分,但是我想探索一个稍微不同的模型:我想使用协调器来跟踪哪些类型的消费者得到消息通知。 这样的话,我断开了传感器数据生成器和数据 ... »

RabbitMQ 入门 (Go) - 4. 使用 Fanout Exchange 做服务发现(上)

到目前为止,我们项目的结果大致如下: 传感器生成的模拟数据(包含传感器名称、数据、时间戳)是通过传感器在运行时动态创建的 Queue 来发送的。这些 Queue 很难直接被发现。 为了解决这个问题,我创建了另一个消息,它包含各传感器的 Queue 的路由 key,这个消息是在一个“众所周知”的 Qu ... »

前端使用bcrypt对密码加密,服务器对密码进行校验

以前为了防止前端密码安全问题,都是对密码进行md5(password + salt)。 有些也会用别的加密方式,但还是会存在撞库,彩虹表等破解常规密码。 因此使用bcrypt加密是一个不错的选择,因为每次加密都会随机salt,每次加密结果都不一样,相对安全性更高些。 下面是一个示例代码,启动一个ht ... »

go每日一库 [home-dir] 获取用户主目录

关于我 我的博客|文章首发 顾名思义,go-homedir用来获取用户的主目录。实际上,通过使用标准库os/user我们也可以得到内容,使用以下方式 标准库使用 package main import ( "fmt" "log" "os/user" ) func main() { u, err := ... »

golang 性能优化分析:benchmark 结合 pprof

前面 2 篇 golang 性能优化分析系列文章: golang 性能优化分析工具 pprof (上) golang 性能优化分析工具 pprof (下) 一、基准测试 benchmark 简介 在 golang 中,可以通过 benchmark 基准测试来测试代码性能。基准测试主要是通过测试 cp ... »

golang 性能调优分析工具 pprof(下)

golang 性能调优分析工具 pprof(上)篇, 这是下篇。 四、net/http/pprof 4.1 代码例子 1 go version go1.13.9 把上面的程序例子稍微改动下,命名为 demohttp.go: package main import ( "bytes" "fmt" "i ... »

[Design Pattern With Go]设计模式-工厂模式

这次介绍的设计模式是工厂模式,这是一个比较常见的创建型模式。一般情况下,工厂模式分为三种:简单工厂、工厂方法和抽象工厂,下面慢慢举例介绍下。 简单工厂 考虑一个加密程序的应用场景,一个加密程序可能提供了AES,DES等加密方法,这些加密方式都实现了同一个接口ICipher,它有两个方法分别是 Enc ... »

golang 性能调优分析工具 pprof (上)

一、golang 程序性能调优 在 golang 程序中,有哪些内容需要调试优化? 一般常规内容: cpu:程序对cpu的使用情况 - 使用时长,占比等 内存:程序对cpu的使用情况 - 使用时长,占比,内存泄露等。如果在往里分,程序堆、栈使用情况 I/O:IO的使用情况 - 哪个程序IO占用时间比 ... »

[go-linq]-Go的.NET LINQ式查询方法

go在进行集合操作时,有很不舒服的地方,起初我真的是无力吐槽,又苦于找不到一个好的第三方库,只能每次写着重复代码。群里寻求大神帮助,混迹各大论坛,博客寻找有效信息。终于在老夫的不懈努力下,发现了一个库。它就是go-linq,使用它,能够解决我对集合大部分的需求,让编程更顺手,让工作更强经劲。 ... »

当红开发语言Go,真的是未来的技术主流吗?

摘要:文将详细介绍 Golang 的语言特点以及它的优缺点和适用场景,带着上述几个疑问,为读者分析 Go 语言的各个方面,以帮助初入 IT 行业的程序员以及对 Go 感兴趣的开发者进一步了解这个热门语言。 本文分享自华为云社区《大红大紫的 Golang 真的是后端开发中的万能药吗?》,原文作者:Ma ... »

go-ini入门教程

go-ini入门教程 go-ini简介 Package ini provides INI file read and write functionality in Go. 在实际开发时,配置信息一般不会在代码里硬编码,通常是放在配置文件里,或者数据库、缓存里。今天介绍的 go-ini 就是一个读写 ... »

在vscode中go编码发生的问题整理

使用VsCode进行Go程序开发,我们肯定会碰到一些问题,这些问题有些是IDE的配置问题,有些是下载包的版本不一致问题,本文主要针对在开发过程中碰到的问题做一个简单的回顾和整理。 ... »

写了一个 gorm 乐观锁插件

前言 最近在用 Go 写业务的时碰到了并发更新数据的场景,由于该业务并发度不高,只是为了防止出现并发时数据异常。 所以自然就想到了乐观锁的解决方案。 实现 乐观锁的实现比较简单,相信大部分有数据库使用经验的都能想到。 UPDATE `table` SET `amount`=100,`version` ... »

GoPath模式和GoMoudle模式的相爱相杀

相信看我文章的文章的童鞋,golang版本已经是1.3版本以上。如果你的版本还停留在1.3以下,那这篇文章可以做为你的提升之法。 go moudle的前世今生 前世-gopath gopath是什么 GOPATH 是什么,相信已经不用我再多说什么了。大家深受摧残多年,应该已经有所体会。在v.1.11 ... »

Prometheus时序数据库-数据的查询

Prometheus时序数据库-数据的查询 前言 在之前的博客里,笔者详细阐述了Prometheus数据的插入过程。但我们最常见的打交道的是数据的查询。Prometheus提供了强大的Promql来满足我们千变万化的查询需求。在这篇文章里面,笔者就以一个简单的Promql为例,讲述下Promethe ... »