RabbitMQ 入门 (Go) - 5. 使用 Fanout Exchange 做服务发现(下) - yangxu-pro
到目前为止,我一直专注于如何让消息进出消息代理,也就是RabbitMQ。
实际上,我们可以继续使用 RabbitMQ 和它的 Exchanges 来连接这个应用程序的其他部分,但是我想探索一个稍微不同的模型:我想使用协调器来跟踪哪些类型的消费...[2021/4/6]
golang中时区设置
关于我
文章首发 | 我的博客 | 欢迎关注
go语言的time.Now()返回的是当地时区时间
time.Now().Format("2006-01-02 15:04:05")
time设置自定义时区
var cstSh, _ = time.LoadLocation("Asia/S...[2021/3/29]
开机自启+延迟运行
目录前言AutoStart配置文件使用方法
前言
大家应该都不喜欢一大堆开机自启程序运行吧,不仅拖慢开机速度,而且有些软件也不能刚开机就运行。
例如某些需要网络等环境的软件,这时候等待一段时间再运行是个不错的选择。
有些软件运行需要管理员权限,做成开机自启也稍微会有点麻烦。
因此我写...[2021/3/29]
RabbitMQ 入门 (Go) - 1. 简介和安装 - yangxu-pro
Me age Broker(消息代理)
维基百科对 Me age Broker 的定义是:Me age broker 是一种中介程序模块,它把消息从发送方的正式消息传递协议转化为接收方的正式消息传递协议。
这个定义略繁琐,下面看看 RabbitMQ 官网对 Me age broker 的定义...[2021/3/29]
[go-linq]-Go的.NET LINQ式查询方法
关于我
我的博客|文章首发
开发者的福音,go也支持linq了
坑爹的集合
go在进行集合操作时,有很不舒服的地方,起初我真的是无力吐槽,又苦于找不到一个好的第三方库,只能每次写着重复代码。举个栗子
类 学生{
姓名
年龄
性别
}
1、现在有10个学生的数组,如果我要统计所有年龄大于...[2021/3/29]
网站整改公告 团队网站整改公告 团队
为了遵守相关法律法规,合法合规运营,网站进行全面整改,整改工作于2021年3月18日12:00开始,预计于3月25日11:59结束,整改期间全站无法发布任何内容,之前发布的内容重新审核后才能访问,由此给您带来很大的麻烦,请您谅解。
原文链接:http: www.cnblogs.com/mu...[2021/3/24]
GoPath模式和GoMoudle模式的相爱相杀
相信看我文章的文章的童鞋,golang版本已经是1.3版本以上。如果你的版本还停留在1.3以下,那这篇文章可以做为你的提升之法。
go moudle的前世今生
前世-gopath
gopath是什么
GOPATH 是什么,相信已经不用我再多说什么了。大家深受摧残多年,应该已经有所体会。在v.1...[2021/3/24]
在vscode中go编码发生的问题整理
引言
使用VsCode进行Go程序开发,我们肯定会碰到一些问题,这些问题有些是IDE的配置问题,有些是下载包的版本不一致问题,本文主要针对在开发过程中碰到的问题做一个简单的回顾和整理。
前期准备,必看
在进行问题纠错前,先确保自己正确下载了golang的官方工具集go-tool,如果不确定,就...[2021/3/24]
还在用crontab? 分布式定时任务了解一下
前言
日常任务开放中,我们会有很多异步、批量、定时、延迟任务要处理,go-zero中有 go-queue,推荐使用 go-queue 去处理,go-queue 本身也是基于 go-zero 开发的,其本身是有两种模式:
dq:依赖于 beanstalkd ,适合延时、定时任务执行;
kq:依赖...[2021/3/8]
使用Prometheus搞定微服务监控
最近对服务进行监控,而当前监控最流行的数据库就是 Prometheus,同时 go-zero 默认接入也是这款数据库。今天就对 go-zero 是如何接入 Prometheus ,以及开发者如何自己定义自己监控指标。
监控接入
go-zero 框架中集成了基于 prometheus 的服务指标...[2021/3/1]
golang实现微信支付v3版本的方法
一、准备阶段
获取私钥
官方文档 https: kf.qq.com/faq/161222N...
获取私钥证书的序列号 https: pay.weixin.qq.com/wik...
open l x509 -in 1900009191_20180326_cert...[2021/3/1]
Go语言实现布谷鸟过滤器的方法Go语言实现布谷鸟过滤器的方法
转载请声明出处哦~,本篇文章发布于luozhiyun的博客: https: www.luozhiyun.com/archive 453
介绍
在我们工作中,如果遇到如网页 URL 去重、垃圾邮件识别、大集合中重复元素的判断一般想到的是将集合中所有元素保存起来,然后通过比较确定。如果通过性能最...[2021/3/1]
now-go时间百宝箱now-go时间百宝箱
golang不像C#,Java这种高级语言,有丰富的语法糖供开发者很方便的调用。所以这便催生出很多的开源组件,通过使用这些第三方组件能够帮助我们在开发过程中少踩很多的坑。
时间处理是所有语言都要面对的一个问题,parse根据字符串转为date类型,tostring()将date类型转为定制化的...[2021/3/1]
go get下载包失败问题
由于某些不可抗力的原因,国内使用go get命令安装包时会经常会出现timeout的问题。本文介绍几个常用的解决办法。
从github克隆
golang在github上建立了一个镜像库,如https: github.com/golang/net就对应是 https: golang.org/x/...[2021/3/1]
关于 signal.Notify 的一个小问题
前些天,给同事 review 一个 MR。MR 本身没什么问题,merge 完之后突发奇想跑了一下 golangci-lint 看看有没有啥问题。看到一个 i ue 如下所示:
main.go:102:16: SA1017: the channel used with signal.Notif...[2021/3/1]
cobra-强大的CLI应用程序库
cobra介绍
Cobra是一个用于创建强大的现代CLI应用程序的库,也是一个用于生成应用程序和命令文件的程序。
Cobra用于许多Go项目,如Kubernetes、Hugo和Github CLI等。此列表包含了使用Cobra的更广泛的项目列表。
GitHub地址
https: githu...[2021/3/1]
[Go]Golang 1.16 中 Modules的主要变化更新
本文转载,目的方便查阅
01介绍
Golang 1.16 已经正式发布了,其中 Modules 有一些变化:
默认开启 Modules。
不自动修改 go.mod 和 go.sum。
通过指定 @version 后缀安装特定版本可执行文件。...[2021/3/1]
记一个 aliyun tablestore go client 的大坑记一个 aliyun tablestore go client 的大坑
有个项目年前要做最后一次上线。项目中有用到 aliyun tablestore 的一个模块我做了一次重构。
这个模块的主要功能为从 Kafka 订阅消息,做一个的格式化处理之后存储到 aliyun 的 TableStore。并且提供接口根据查询参数从 aliyun tablestore 查询相...[2021/3/1]
【吐血整理】超全golang面试题合集+golang学习指南+golang知识图谱+成长路线 一份涵盖大部分golang程序员所需要掌握的核心知识。
脑图持续不断更新中,在线查看地址
后续文章和内容会不断更新到 github项目 中,欢迎关注。
目录(善用Ctrl+F)
基础入门
新手
Golang开发新手常犯的50个错误
数据类型
连nil切片和空切片一不一样都不清楚?那BAT面试官只好让你回去等通知了。
go...[2021/3/1]
协程
协程
又叫微线程
协程的本质
协程是编译器进行的工作,他通过插入相关的代码段能够实现分段式的执行,重新开始的地方是yield关键字指定的,一次一定会跑到一个yield对应的地方。
协程的原理是将事件回调进行了隐藏封装,本质上还是异步非阻塞。利用同步的思想进行异步编程。
协程的工作
协程...[2021/3/1]
golang学习笔记——基础知识(1)
观看B站李文周老师的视频学习golang整理的笔记
变量
定义
var 变量名 变量类型
多个
var(
a int
...[2021/3/1]
Go | Go 结合 Consul 实现动态反向代理
Go 结合 Consul 实现动态反向代理
代理的核心功能可以用一句话概括:接受客户端的请求,转发到后端服务器,获得应答之后返回给客户端。
Table of Contents
反向代理
实现逻辑
Go 语言实现
原生代码
httputil.ReverseProxy 工具实现
接入...[2021/3/1]
golang学习笔记——面向对象(接口)
接口
定义及使用
package main
import (
"fmt"
)
定义一个接口
type Human interface {
sayHello()
}
t...[2021/3/1]
Go - 代码生成工具
分享两个常用的代码生成工具:
gormgen
handlergen
gormgen
基于 MySQL 数据表结构进行生成 3 个文件:
生成表的 struct 结构体
生成表的 Markdown 文档
生成表的 CURD 方法
场景
在进行业务需求开发时,创建完数据表后,执行代码生成...[2021/3/1]
go-admin在线开发平台学习-4[细节解析]
紧接着上一期的内容,继续对go-admin的一些细节进行解析。
通用的增删改查方法
在go-admin/common/actions下封装了通用的增删改查方法。在对这些方法进行说明前,先移步到另一个文件夹下go-admin/common/dto/generate.go&type...[2021/2/22]
源码读起来,Go源码共读计划
由来
随着云原生的越来越成熟,Go语言也顺其自然的被各大公司采用。
相信越来越多的人,或多或少的都了解或接触都一点点的GO。
同时,也有越多越多的应用,从其他的语言转到了Go语言的怀抱。
Go语法及其的精炼。
如果,你是有一定编程经验,那么上手Go,并开始用Go做一个简单的应用,...[2021/2/22]
golang的强制类型转换实现
golang是一种强类型语言,虽然在代码中经常看到这种写法,i:=10这其实这是编译器自动做了类型推断在编译期间。编译器会对数据进行类型检查。不同类型的数据不能赋值,不能在函数中传参。强类型语言有一些优势,很多的错误会在编译期间被检查出来,不想php和python等弱类型语言,很多错误只有运行到才...[2021/2/22]
golang 字符串比较是否相等的方法示例golang 字符串比较是否相等的方法示例
golang字符串比较的三种常见方法
fmt.Println("go"=="go")
fmt.Println("GO"=="go")
fmt.Println(strings.Compare("GO","go"))
fmt.Println(strings.Compare("go...[2021/2/22]
Golang使用WebSocket通信的实现
使用Golang能够创建WebSocket通信,只需要使用golang.org/x/net/websocket包即可,该包有可能被墙,无法使用go get下载,但是我们可以从golang中国提供的地址下载,然后将包放在对应的路径下。
WebSocket是一种通信协议,旨在改善HTTP作为无状态...[2021/2/22]
Golang 之区分类型别名与类型定义的方法
一、类型别名(Type Alias)、类型定义是什么?
类型别名 是 Go 1.9 版本添加的新功能。主要应用于代码升级、工程重构、迁移中类型的兼容性问题。C/C++ 语言中,代码的重构升级可以使用宏快速定义新的代码。Go 语言中并未选择通过宏,而是选择通过类型别名解决重构中最复杂的类型名变...[2021/2/22]
golang 中string和int类型相互转换
总结了golang中字符串和各种int类型之间的相互转换方式:
string转成int:
int, err := strconv.Atoi(string)
string转成int64:
int64, err := strconv.ParseInt(st...[2021/2/22]
Golang中的自定义类型之间的转换的实现(type conversion)Golang中的自定义类型之间的转换的实现(type conversion)
这里不讨论数值与字符串之间、或者整型与浮点型之间的转换。这里要讨论的是自定义类型之间的转换,这个转换与其他语言都不一样,而且在go的源码中也被大量使用。
这里列举两个实用的例子。
转换成实现了某个(些)接口的自定义类型
比如:sort包里面的IntSlice,是一个[]int的自定义...[2021/2/22]
[GO]使用go-smtp发送邮件通知
直接使用go-smtp包 ,为了防止乱码 , 主题subject进行了base64编码
import (
"encoding/base64"
"github.com/emersion/go-sasl"
"github.com/emersion/go...[2021/2/19]
go好用的类型转换第三方组件
Cast介绍
开源地址
https: github.com pf13/cast
Cast是什么?
Cast是一个库,以一致和简单的方式在不同的go类型之间转换。
Cast提供了简单的函数,可以轻松地将数字转换为字符串,将接口转换为bool类型等等。当一个明显的转换是可能的时,Cast...[2021/2/19]
golang官方嵌入文件到可执行程序
目录前言示例程序嵌入文件直接访问嵌入文件列表总结
前言
在go官方出嵌入文件的方法前我在网上找过,并且自己还研究过,虽然没有问题,但是既然官方支持还是用起来吧。
看了下go源码embed/embed.go很简单,并且看embed/internal/embedtest/embed_...[2021/2/18]
go-admin在线开发平台学习-3[细节解析]
本章节主要的内容是对go-admin中的一些有趣编码进行分析,为自己以后提供一些借鉴
使用cli方式启动项目
使用cobra[眼镜蛇]完成强壮cli的工具,确保稳定。
使用cli的方式启动项目的好处显而易见,可以在进行配置的自定义化,而不是固定的使用某个配置文件中的信息。在一些需要频...[2021/2/18]
Go并发处理Go并发处理
写了一个web接口,想高并发的请求这个接口,进行压力测试,所以服务端就实现了一个线程池。
代码从网上理解了之后写的。代码实例
简单的介绍:
首先实现一个Job接口,只要有方法实现了Do方法即可
定义个分发器结构体,主要是WorkPool线程池,用于存储Worker的Job...[2021/2/18]
Go - 实现项目内链路追踪
为什么项目内需要链路追踪?当一个请求中,请求了多个服务单元,如果请求出现了错误或异常,很难去定位是哪个服务出了问题,这时就需要链路追踪。
从图中可以清晰的看出他们之间的调用关系,通过一个例子说明下链路的重要性,比如对方调我们一个接口,反馈在某个时间段这接口太慢了,在排查代码发现逻辑...[2021/2/18]
模块一 GO语言基础知识-程序实体的那些事(上)
我已经为你打开了 Go 语言编程之门,并向你展示了“程序从初建到拆分,再到模块化”的基本演化路径。
一个编程老手让程序完成基本演化,可能也就需要几十分钟甚至十几分钟,因为他们一开始就会把车开到模块化编程的道路上。我相信,等你真正理解了这个过程之后,也会驾轻就熟的。
上述套路是通用的,...[2021/2/18]
go-zero解读与最佳实践(上)
本文有『Go开源说』第三期 go-zero 直播内容修改整理而成,视频内容较长,拆分成上下篇,本文内容有所删减和重构。
大家好,很高兴来到“GO开源说” 跟大家分享开源项目背后的一些故事、设计思想以及使用方法,今天分享的项目是 go-zero,一个集成了各种工程实践的 web 和 ...[2021/2/18]
缓存设计的好,服务基本不会倒缓存设计的好,服务基本不会倒
本文由『Go开源说』第四期 go-zero 直播内容修改整理而成,视频内容较长,拆分成上下篇,本文内容有所删减和重构。
大家好,很高兴来到“GO开源说” 跟大家分享开源项目背后的一些故事、设计思想以及使用方法,今天分享的项目是 go-zero,一个集成了各种工程实践的 web 和 ...[2021/2/18]
graphql请求中的数据保护(illuminant)graphql请求中的数据保护(illuminant)
概述
通过 graphql 请求数据时, where条件是自己写在graphql请求字符串中的, 所以获取多少数据后端无法控制, 比如
{
blogs(where: {user_id: {_eq: "xxxxxx"}}){
id
title
content
...[2021/2/18]
go-admin在线开发平台学习-1[安装、配置、启动]
项目介绍
go-admin 是一个中后台管理系统,基于(gin, gorm, Casbin, Vue, Element UI)实现。主要目的是为了让开发者更专注业务,减少重复代码的编写,节省时间,提升人效,缩短项目周期,提升软件的开发效率以及质量。
下载项目
git clone h...[2021/2/18]
Go - 实现项目内链路追踪(二)
上篇文章 Go - 实现项目内链路追踪 分享了,通过 链路 ID 可以将 请求信息、响应信息、调用第三方接口的信息、调试信息、执行的 SQL 信息、执行的 Redis 信息 串起来,记录的具体参数在文件中都有介绍。
这篇文章在上面的基础上,新增 2 个功能点:
新增将 调用 gRPC...[2021/2/18]
Go string 一清二楚
前言
字符串(string) 作为 go 语言的基本数据类型,在开发中必不可少,我们务必深入学习一下,做到一清二楚。
本文假设读者已经知道切片(slice)的使用,如不了解,可阅读 Go 切片 基本知识点
为了更好的理解后文,推荐先阅读 Unicode 字符集,UTF-8 编码
...[2021/2/18]
golang1.16新特性速览
今天是假期最后一天,明天起大家也要陆续复工了。golang1.16也在今天正式发布了。
原定计划是2月1号年前发布的,不过迟到也是golang的老传统了,正好也趁着最后的假期快速预览一下golang1.16的新特性吧。
本文索引
语言內建的资源嵌入支持
支持...[2021/2/18]
go-admin在线开发平台学习-2[程序结构分析]
紧接着上一篇,本文我们对go-admin下载后的源码进行分析。
首先对项目所使用的第三方库进行分析,了解作者使用的库是否是通用的官方库可以有助于我们更快地阅读程序。接着对项目的main()方法进行分析,因为程序使用cli的方式启动,对cli不同的命令进行分析。基于此俩点开始工作。
go...[2021/2/18]
Go - httpclient 常用操作
httpclient
模块介绍
httpclient 是基于 net/http 封装的 Go HTTP 客户端请求包,支持常用的请求方式、常用设置,比如:
支持设置 Mock 信息
支持设置失败时告警
支持设置失败时重试
支持设置项目内部的 Trace
支持设置超时时间、H...[2021/2/1]
模块一 Go语言基础知识-命令源码文件模块一 Go语言基础知识-命令源码文件
我们已经知道,环境变量 GOPATH 指向的是一个或多个工作区,每个工作区中都会有以代码包为基本组织形式的源码文件。
这里的源码文件又分为三种,即:命令源码文件、库源码文件和测试源码文件,它们都有着不同的用途和编写规则。
今天,我们就沿着命令源码文...[2021/2/1]
模块一 GO语言基础知识-库源码文件
你已经使用过 Go 语言编写了小命令(或者说微型程序)吗?
当你在编写“Hello, world”的时候,一个源码文件就足够了,虽然这种小玩意儿没什么用,最多能给你一点点莫名的成就感。如果你对这一点点并不满足,别着急,跟着学,我肯定你也可以写出很厉害的程序。
我们在上一篇的文章中学到...[2021/2/1]