Asynq 实现 Go 异步任务处理
目录Asynq 实现 Go 异步任务处理一、概述二、快速开始1. 准备工作2. 安装asynq软件包3. 创建项目asynq_task2. Redis连接项4. Task任务5. 编写程序6. 运行查看结果三、细节1. 关于asynq的优雅退出2. client中 client.Enqueue 的使用四、监控和管理工具
Asynq 实现 Go 异步任务处理
一、概述
今天为大家介绍一个Go处理异步任 ...
Go规则引擎:Gengine
gengine是一款基于golang和AST(抽象语法树)开发的规则引擎,使用一套自定义的简单语法来定义规则来实现语言无关,并且还执行规则执行的各种模式,功能也很强大。
核心API
对于gengine的使用,我们先掌握几个核心的API。
DataContext:用于注入规则中需要使用的数据或者API。
RuleBuilder:接收DataContext作为参数,并将用 ...
ORM哪家强?java,c#,php,python,go 逐一对比, 网友直呼:全面客观
前言
最近一段时间,我使用golang开发了一个新的ORM库。
为了让这个库更好用,我比较研究了各语言的主流ORM库,发现有一些语言的ORM库确实很好用,而有另外一些语言的库那不是一般的难用。
然后我总结了他们呢的一些共性和差异点,于是形成了本文的主要内容。
本文会先说明什么是SQL编写难题,以及探讨一下 code first 和 d ...
go 环境搭建
SDK下载
下载地址:
https://golang.google.cn/dl/
https://studygolang.com/dl
这两个那个下载快 用那个 都是镜像 ,官网被墙了(你懂得)官网地址
https://golang.org/dl/
然后下载对应平台的安装包,例如我这里就是 win平台
安装
下载完成后,双击安装包,一路下一步即可,这里使用的是1.19.5版本
设置安装位置
...
go mod和go vendor的区别
这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天
背景
在家安装的环境可能路径和环境变量配的有些问题,导致项目import的包全部标红,go mod tidy显示导入包不在路径,怎么可能不在路径呢。
这就好比我们写cpp程序,我们从官方库里include一个.h,而后自己图方便也写了个.h,但是程序并不能识别出我们自己写的.h, ...
Three.js 进阶之旅:新春特典-Rabbit craft go 🐇
声明:本文涉及图文和模型素材仅用于个人学习、研究和欣赏,请勿二次修改、非法传播、转载、出版、商用、及进行其他获利行为。
摘要
兔年到了,祝大家身体健康,万事顺利。本文内容作为兔年新春纪念页面,将使用 Three.js 及 其他前端开发知识,创建一个以兔子为主题的 3D 简单的趣味页面 Rabbit craft go。本文内容包括使 ...
像go 一样 打造.NET 单文件应用程序的编译器项目bflat 发布 7.0版本
现代.NET和C#在低级/系统程序以及与C/C++/Rust等互操作方面的能力完全令各位刮目相看了,有人用C#开发的64位操作系统: GitHub - nifanfa/MOOS: C# x64 operating system pro...,截图要介绍的是一个结合Roslyn和NativeAOT的实验性编译器bflat :https://github.com/bflattened/bflat。一年前的公众号文章 打造史上最小尺寸. ...
Go--cron定时任务
Cron是Go中用于设置定时任务的一个库,需要注意的是,Cron库分两个大版本,v1.2和v3.0,其功能和go get地址都是不同的,注意区分。
v1.2官方文档:https://pkg.go.dev/github.com/robfig/cron
v3官方文档:https://pkg.go.dev/github.com/robfig/cron/v3
区别:
v1.2版本默认支持精确到秒的cron表达式
v3版本默认不再是支 ...
GO安装及 mod vendor使用
软件下载
https://golang.google.cn/https://dl.google.com/go/go1.19.3.linux-amd64.tar.gz
环境变量设置
export GOWKS=/data/wks/tpf
export GOROOT=$GOWKS/app/go
export GOBIN=$GOWKS/bin
export GOPATH=$GOWKS
export PATH=$GOROOT/binGOBINPATH
GOWKS是自定义的GO工作空间,GO软件安装在其app/go目录下,GOWKS ...
GO生成UUID
uuid简介
通用唯一识别码(英语:universally unique identifier,简称uuid)是一种软件建构的标准,亦为自由软件基金会组织在分散式计算环境领域的一部份。
uuid的目的,是让分散式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。
如此一来,每个人都可以创建不与其它人冲突的uuid。 ...
Go map 竟然也会发生内存泄漏?
Go 程序运行时,有些场景下会导致进程进入某个“高点”,然后就再也下不来了。
比如,多年前曹大写过的一篇文章讲过,在做活动时线上涌入的大流量把 goroutine 数抬升了不少,流量恢复之后 goroutine 数也没降下来,导致 GC 的压力升高,总体的 CPU 消耗也较平时上升了 2 个点左右。
有一个 issue 讨论为什么 allgs(runtim ...
.NET 7 AOT 的使用以及 .NET 与 Go 互相调用
目录背景C# 部分环境要求创建一个控制台项目体验 AOT 编译C# 调用库函数减少体积C# 导出函数C# 调用 C# 生成的 AOTGolang 部分安装 GCCGolang 导出函数.NET C# 和 Golang 互调C# 调用 GolangGolang 调用 C#其他
背景
其实,规划这篇文章有一段时间了,但是比较懒,所以一直拖着没写。
最近时总更新太快了,太卷了,所以借着 ...
写在Go语言招生之际 - 学相伴 - 狂神说
写在Go语言招生之际,谈谈这两年所见所想,希望能对你有启发。
前两天看视频看到一个评论,先生愿教我不愿学,时也!命也!
作为一名讲师深有感触。
1 那个时候有几十万的Java观众,很多朋友劝我开些Java课,还有很多机构找我合作,如果随便做点课招生,估计就是几百万的收入,但是我拒绝了,有人说我蠢,有钱不 ...
Go 每日一库之 go-cache 缓存
什么是 go-cache
go-cache 是一个轻量级的基于内存的 K-V 储存组件,内部实现了一个线程安全的 map[string]interface{},适用于单机应用。具备如下功能:
线程安全,多 goroutine 并发安全访问;
每个 item 可以设置过期时间(或无过期时间);
自动定期清理过期的 item;
可以自定义清理回调函数;
这里的 i ...
利用Kafka的Assign模式实现超大群组(10万+)消息推送
引言
IM即时通信场景下,最重要的一个能力就是推送:在线的直接通过长连接网关服务转发,离线的通过APNS或者极光等系统进行推送。
本文主要是针对在线用户推送场景来进行总结和探讨:如何利用Kafka的Assign模式,解决百万级长链接海量消息的路由广播问题?如何解决超大聊天室成员(超过10万)的消息推送问题?
问题 ...
我的Go gRPC之旅、01 初识gRPC,感受gRPC的强大魅力
微服务架构
微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的API 进行通信的小型独立服务组成。 这些服务由各个小型独立团队负责。 微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间。
将软件应用程序构建为一组独立、自治(独立开发、部署和扩展)、松耦合、面向业务能力 ...
go protoc-gen-go 安装详解
首先是安装官方的protoc工具,可以从其GitHub官方网站下载
https://github.com/protocolbuffers/protobuf/releases
我下载的win-64版本
下载完成后解压把bin下面的protoc.exe 拷贝到GOPATH下面
然后是安装针对Go语言的代码生成插件go get github.com/golang/protobuf/protoc-gen-go
报 ...
Go 语言图片处理简明教程
虽然 Go 语言主要用于 Web 后端以及各类中间件和基础设施开发,也难免遇到一些图像处理的需求。Go 语言提供的 image 标准库提供了基本的图片加载、裁剪、绘制等能力,可以帮助我们实现一些绘图需求。
加载图片
image.Decode(io.Reader) 会从 reader 获取数据,并根据文件开头的 Magic Number 来选择合适的解码器:
import ( ...
go-redis
golang redis快速入门教程
redis是目前流行的高性能key/value缓存,基本上在各种项目都经常出现,后续教程针对golang如何操作redis进行展开。
本教程是使用的是go-redis/redis包操作redis。 github: https://github.com/go-redis/redis
1.安装依赖包
go get -u github.com/go-redis/redis
2.golang连接redis
// 根据redis配 ...
[go-redis] go操作redis数据库
先上命令速查网站,菜鸟yyds
https://www.runoob.com/redis/redis-strings.html
操作redis的包是go-redis/redis
官方文档 https://redis.uptrace.dev/guide/
github https://github.com/go-redis/redis
创建项目
创建test文件夹
创建 Redis_test.go 文件
直接上代码,代码解释全写在注释里
package test
import (
"contex ...