递归火山软件开发平台

标题: 关于服务器子平台类库封装建议 [打印本页]

作者: 飞扬工作室    时间: 2024-7-25 00:04
标题: 关于服务器子平台类库封装建议


现在服务器子平台的标准类库和gin框架类库已经封装完毕,下面还有哪些需要封装的类库欢迎大家提出建议,我们会考虑加入到后续类库封装计划中.

要求如下:
1. 目前优先封装以下几个方面的类库: web服务/网络传输/数据库/服务器端数据处理/便捷操作
2. 要求具有免费开源且成熟的go代码,且具有实用性.


谢谢大家,欢迎大家跟帖提出!

作者: urenai    时间: 2024-7-25 00:18
本帖最后由 urenai 于 2024-7-25 00:41 编辑

出界面库,支持的下面+1
作者: kanshijian    时间: 2024-7-25 00:28
出界面库,支持的下面+1
作者: 回忆菌    时间: 2024-7-25 00:39
先支持一下 go平台我还没用过
作者: a25926    时间: 2024-7-25 00:57
先出收费版行不 收了钱更有动力 我好像现在就买正版啊
作者: a25926    时间: 2024-7-25 01:02
最好找人出下教程,请求 渲染 鉴权 数据库读写 等基础教程啊!
作者: 折戟沉沙    时间: 2024-7-25 01:02
leaf
**大神开发的go分布式游戏服务端引擎,star很多
https://GITHUB.com/name5566/leaf

pitaya
国外某游戏**开源的基于网易pomelo协议实现的go分布式游戏服务端引擎,他们**有基于该框架实现休闲moba类手游产品,详见官网
https://GITHUB.com/topfreegames/pitaya

nano
**开发者基于网易pomelo协议实现的go游戏服务端引擎
https://GITHUB.com/lonng/nano

cherry
**开发者基于网易pomelo协议实现的go分布式游戏服务端引擎,默认支持pomelo,也可自定义通信格式。跨节点通信使用nats进行,增加了actor model组件充分压榨并发性能。
GITHUB - cherry-game/cherry: golang game server

golang热更新脚本
基于yaegi + gomonkey技术,在运行时支持热刷go脚本,可动态替换函数、属性,不需要繁琐的的生成so文件,支持windows、*nix操作系统。
GITHUB - cherry-game/hotfix: 在运行时支持热刷go脚本,可动态替换函数、属性。



作者: 折戟沉沙    时间: 2024-7-25 01:03
封个游戏服务端框架,吴总,这个很需要的!
作者: 折戟沉沙    时间: 2024-7-25 01:03
https://bbs.voldp.com/thread-21145-1-1.html
作者: 1980882096    时间: 2024-7-25 02:17
https://opensource.bytedance.com/projectDetail/1

CloudWeGo
CloudWeGo 的是一套由字节开源的、可快速构建企业级云原生 微服务架构的中间件集合。CloudWeGo 项目共同的特点是高性能、高扩展性、高可靠,专注于微服务通信与治理。项目支持主流云厂商服务对接,并构建了基于云原生微服务场景的完整开源生态。
目前项目已有近2万 GITHUB star ,全球近8万用户关注, 同时,小米、理想汽车、贪玩游戏、森马、禾多科技、华兴证券等超过20家企业用户均已落地使用。
CloudWeGo 包括 Kitex 、 Hertz 、Volo、Netpoll 等多个重点子项目,涵盖 Go 与 Rust 开发语言,上至框架下至网络库、编解码库、序列化库均是自研,各个项目既可独立使用也可搭配使用,并围绕这些项目,构建了完整的上下游生态。



这里面随便扣一个子项目都是牛逼库
作者: zqiz    时间: 2024-7-25 07:46
吴总上班挺早,先封装个界面库。
作者: 正版商业用户    时间: 2024-7-25 07:48
迫切需要一个支持 SQL Server 的连接池
作者: 老鼠哥    时间: 2024-7-25 07:52
MariaDB(MySQL的代替品,英文维基百科从MySQL转向MariaDB)、Percona Server(MySQL的代替品·)、这个数据库封装一个
作者: 老鼠哥    时间: 2024-7-25 08:05
MongoDB  封装一个
作者: 阿海    时间: 2024-7-25 08:11
MQTT的服务端、客户端、JT808协议
作者: amwji    时间: 2024-7-25 08:12
使用golang编写的OPCUA库,目前只实现Client功能

官网地址:https://pkg.go.dev/GITHUB.com/gopcua/opcua#section-readme
GITHUB地址:https://GITHUB.com/gopcua/opcua
GO 要进军工业方面
作者: 老鼠哥    时间: 2024-7-25 08:13
封装一个web文章编辑器,支持网站发布文章内容编辑(功能性强),回帖功能
作者: hs999xl    时间: 2024-7-25 08:37
网络zhi fu,某V和某宝
作者: xrea    时间: 2024-7-25 08:37
建议吴总封装一个grom,现在火山go的sql数据库跟gin框架组合,好难用

作者: 精易大学士    时间: 2024-7-25 08:42
出界面库,支持的下面+1
作者: guo828587    时间: 2024-7-25 09:03
出界面库,支持的下面+1
作者: lxhabc123l    时间: 2024-7-25 09:30
加个gorm,如果可以再加个VUE前端,这样就齐活了
作者: 南湾    时间: 2024-7-25 09:43
封装游戏服务端框架
作者: fengyishen    时间: 2024-7-25 09:51
框架介绍(最新版本) - GoFrame (ZH)-Latest - GoFrame官网 - 类似PHP-Laravel, Java-SpringBoot的Go企业级开发框架
GoFrame是一款模块化、高性能、企业级的Go基础开发框架。GoFrame是一款通用性的基础开发框架,是Golang标准库的一个增强扩展级,包含通用核心的基础开发组件,优点是实战化、模块化、文档全面、模块丰富、易用性高、通用性强、面向团队。GoFrame既可用于开发完整的工程化项目,由于框架基础采用模块化解耦设计,因此也可以作为工具库使用。
如果您想使用Golang开发一个业务型项目,无论是小型还是中大型项目,GoFrame是您的不二之选。如果您想开发一个Golang组件库,GoFrame提供开箱即用、丰富强大的基础组件库也能助您的工作事半功倍。如果您是团队Leader,GoFrame丰富的资料文档、详尽的代码注释、活跃的社区成员将会极大降低您的指导成本,支持团队快速接入、语言转型与能力提升。
特点地址


有很多优秀的前后端的开源项目是基于此框架开发的,希望吴总能考虑一下。

作者: song13521    时间: 2024-7-25 10:00
建议出封装详细教程,一个人可能走得更快,但是一群人会走得更远。即使再NB,也只有那么几个人会封。1。建议出封装教程和视频。
2.尽可能的降低封装难度。
作者: 飞扬工作室    时间: 2024-7-25 11:47
xrea 发表于 2024-7-25 08:37
建议吴总封装一个grom,现在火山go的sql数据库跟gin框架组合,好难用

grom正在封装中

作者: 摘星揽月    时间: 2024-7-25 12:55
本帖最后由 摘星揽月 于 2024-7-25 13:39 编辑

jwt、oauth可以考虑封装一下
1.jwt
https://GITHUB.com/golang-jwt/jwt/v5https://GITHUB.com/golang-jwt/jwt/v4,前者是最新的
https://www.cnblogs.com/zichliang/p/17303759.html

2.oauth
https://blog.csdn.net/qq_21484461/article/details/137360639
https://blog.csdn.net/gitblog_00041/article/details/139112100

https://developers.google.cn/classroom/quickstart/go?hl=zh-cn
golang.org/x/oauth2
golang.org/x/oauth2/google



作者: 创世魂    时间: 2024-7-25 13:31
折戟沉沙 发表于 2024-7-25 01:02
leaf
**大神开发的go分布式游戏服务端引擎,star很多
https://GITHUB.com/name5566/leaf

都是游戏啊,暂时也用不到。
作者: 459943578    时间: 2024-7-25 13:32
本帖最后由 459943578 于 2024-7-25 13:33 编辑

验 证码库封装一个

GITHUB.com/dchest/captcha
是一个用于生成和验证验 证码的 Go 语言包。它提供了简单且灵活的 API,用于生成图形验 证码并对其进行验证。该包可以帮助开发者防止自动化表单提交和其他类型的滥用行为。
主要功能
作者: 创世魂    时间: 2024-7-25 13:41
正版商业用户 发表于 2024-7-25 07:48
迫切需要一个支持 SQL Server 的连接池


自带连接池。不需要额外的封装。

(, 下载次数: 21)

作者: 创世魂    时间: 2024-7-25 13:42
lxhabc123l 发表于 2024-7-25 09:30
加个gorm,如果可以再加个VUE前端,这样就齐活了

gorm再弄了,下次更新应该就有了。
作者: 创世魂    时间: 2024-7-25 13:50
老鼠哥 发表于 2024-7-25 07:52
MariaDB(MySQL的代替品,英文维基百科从MySQL转向MariaDB)、Percona Server(MySQL的代替品·)、这个数 ...


应该可以直接连接,连接的时候用mysql数据库驱动。如果你有这个数据库,可以试试看。

(, 下载次数: 25)

作者: Inverse    时间: 2024-7-25 13:58
smb协议相关的
作者: 1601682737    时间: 2024-7-25 14:00
https://goframe.org/pages/viewpage.action?pageId=1114119
GoFrame是一款模块化、高性能、企业级的Go基础开发框架。GoFrame是一款通用性的基础开发框架,是Golang标准库的一个增强扩展级,包含通用核心的基础开发组件,优点是实战化、模块化、文档全面、模块丰富、易用性高、通用性强、面向团队。GoFrame既可用于开发完整的工程化项目,由于框架基础采用模块化解耦设计,因此也可以作为工具库使用。

如果您想使用Golang开发一个业务型项目,无论是小型还是中大型项目,GoFrame是您的不二之选。如果您想开发一个Golang组件库,GoFrame提供开箱即用、丰富强大的基础组件库也能助您的工作事半功倍。如果您是团队Leader,GoFrame丰富的资料文档、详尽的代码注释、活跃的社区成员将会极大降低您的指导成本,支持团队快速接入、语言转型与能力提升。

这个库很不错,但是他是个带代码生成器的库,不知道火山是否能封装,
这个库功能组件非常全面,几乎能想到的组件都有,可以取官网 组件列表里看看,
极强大
作者: 创世魂    时间: 2024-7-25 14:32
老鼠哥 发表于 2024-7-25 08:05
MongoDB  封装一个

这个确实可以有。
作者: 创世魂    时间: 2024-7-25 14:33
阿海 发表于 2024-7-25 08:11
MQTT的服务端、客户端、JT808协议

mqtt也可以搞一个。
作者: 创世魂    时间: 2024-7-25 14:34
老鼠哥 发表于 2024-7-25 08:13
封装一个web文章编辑器,支持网站发布文章内容编辑(功能性强),回帖功能

这和go没关系了。这是h5前端的知识。
作者: 创世魂    时间: 2024-7-25 14:35
南湾 发表于 2024-7-25 09:43
封装游戏服务端框架

游戏暂时用不到吧。。
作者: 创世魂    时间: 2024-7-25 14:37
摘星揽月 发表于 2024-7-25 12:55
jwt、oauth可以考虑封装一下
1.jwt
https://GITHUB.com/golang-jwt/jwt/v5 或https://GITHUB.c ...

这个应该可以搞
作者: 阳光甜橙    时间: 2024-7-25 14:58
南湾 发表于 2024-7-25 09:43
封装游戏服务端框架

支持 封装游戏服务端框架:噜阿噜:噜阿噜
作者: yyk80238    时间: 2024-7-25 14:59
GO建议封  Rocksdb  数据库

另外能提个PC的封装建议不,封个PC的lua库吧 很多年了安卓都有lua PC还没有 第三方库质量不行
PC编译慢   用lua配合是最好的解决方案
作者: 飞扬工作室    时间: 2024-7-25 15:16
1601682737 发表于 2024-7-25 14:00
https://goframe.org/pages/viewpage.action?pageId=1114119
GoFrame是一款模块化、高性能、企业级的Go基础 ...

这个感觉是一个商业化运作的库吧?
作者: 1601682737    时间: 2024-7-25 15:20
飞扬工作室 发表于 2024-7-25 15:16
这个感觉是一个商业化运作的库吧?

不是的,也是免费开源的
作者: adm    时间: 2024-7-25 15:50

出界面库,支持的下面+1
作者: xupeng    时间: 2024-7-25 17:18
grom一定要封装的,封装完就可以发正式版了 应该
作者: zqiz    时间: 2024-7-25 17:43


出界面库,支持的下面+1
作者: 折戟沉沙    时间: 2024-7-25 19:48
创世魂 发表于 2024-7-25 14:35
游戏暂时用不到吧。。

这个需要啊,可以弄商业项目啊。
作者: 老鼠哥    时间: 2024-7-25 20:16
封装一个支 .付.宝,微.信,pay.pal 等
作者: 希希冉冉    时间: 2024-7-25 20:31
封库可以慢点也行,教程很重要啊,先出点教程让我们先入个门吧
作者: aycap    时间: 2024-7-25 22:21
弄点复杂点的WEB服务演示代码,资料太少,新手需要参考比对和摸索
作者: 唐兀    时间: 2024-7-26 08:01
好久搞H5呢
作者: 老鼠哥    时间: 2024-7-26 13:38
封装一个word  Excel  ppt,图片转码,比如把一个图片转换成excel表格。
作者: CPUCN    时间: 2024-7-26 20:13
archive/tar
archive/zip
bufio
builtin
bytes
compress/bzip2
compress/flate
compress/gzip
compress/lzw
compress/zlib
container/heap
container/list
container/ring
context
crypto
crypto/aes
crypto/cipher
crypto/des
crypto/dsa
crypto/ecdsa
crypto/elliptic
crypto/hmac
crypto/md5
crypto/rand
crypto/rc4
crypto/rsa
crypto/sha1
crypto/sha256
crypto/sha512
crypto/subtle
crypto/tls
crypto/x509
crypto/x509/pkix
database/sql
database/sql/driver
debug/dwarf
debug/elf
debug/gosym
debug/macho
debug/pe
debug/plan9obj
encoding
encoding/ascii85
encoding/asn1
encoding/base32
encoding/base64
encoding/binary
encoding/csv
encoding/gob
encoding/hex
encoding/json
encoding/pem
encoding/xml
errors
expvar
flag
fmt
go/ast
go/build
go/constant
go/doc
go/format
go/importer
go/parser
go/printer
go/scanner
go/token
go/types
hash
hash/adler32
hash/crc32
hash/crc64
hash/fnv
html
html/template
image
image/color
image/color/palette
image/draw
image/gif
image/jpeg
image/png
index/suffixarray
io
io/ioutil
log
log/syslog
math
math/big
math/cmplx
math/rand
mime
mime/multipart
mime/quotedprintable
net
net/http
net/http/cgi
net/http/cookiejar
net/http/fcgi
net/http/httptest
net/http/httptrace
net/http/httputil
net/http/pprof
net/mail
net/rpc
net/rpc/jsonrpc
net/smtp
net/textproto
net/url
os
os/exec
os/signal
os/user
path
path/filepath
plugin
reflect
regexp
regexp/syntax
runtime
runtime/cgo
runtime/debug
runtime/pprof
runtime/race
runtime/trace
sort
strconv
strings
sync
sync/atomic
syscall
testing
testing/iotest
testing/quick
text/scanner
text/tabwriter
text/template
text/template/parse
time
unicode
unicode/utf16
unicode/utf8
unsafe
作者: CPUCN    时间: 2024-7-26 20:15
beego
作者: 飞扬工作室    时间: 2024-7-26 20:25
CPUCN 发表于 2024-7-26 20:13
archive/tar
archive/zip
bufio

标准库列出来干嘛? 这些全部封装好了
作者: 创世魂    时间: 2024-7-26 21:47
老鼠哥 发表于 2024-7-26 13:38
封装一个word  Excel  ppt,图片转码,比如把一个图片转换成excel表格。

图片转换成excel表格,这种都不现实,这种都需要 ai 大模型运算的。不然你以为为啥这些功能都是收费的。
作者: 529827    时间: 2024-7-26 23:03
出界面库,支持的下面+1
作者: 创世魂    时间: 2024-7-27 00:23
1601682737 发表于 2024-7-25 15:20
不是的,也是免费开源的

这就是一个便捷的功能框架库,目前来说和现有的库都重复。
要封装库,肯定优先考虑现在没有的库,这个库后面肯定也会考虑封,不过这种库都比较大,完整封完需要不少时间。
作者: 老鼠哥    时间: 2024-7-27 06:07
有部分封装的库是英文名字,如果能改成中文就好了知道做什么用途。
作者: 老鼠哥    时间: 2024-7-27 06:32
现在市面上有很多ai大模型开源,封装一个
作者: 老鼠哥    时间: 2024-7-27 12:12
本帖最后由 老鼠哥 于 2024-7-27 12:14 编辑
创世魂 发表于 2024-7-26 21:47
图片转换成excel表格,这种都不现实,这种都需要 ai 大模型运算的。不然你以为为啥这些功能都是收费的。 ...

ORC图文识别就可以了,网上很多离线软件都支持,而且也就几m大小。比如wps就支持,或者其他转换器软件也都支持
作者: ywl    时间: 2024-7-27 23:59
老总发话,直接炸出这么多人啊:噜阿噜:噜阿噜
作者: 摘星揽月    时间: 2024-7-28 01:43
gws:https://GITHUB.com/lxzan/gws |GITHUB ???? 1.2k,高性能的 websocket 库,代码双语注释,适合有开发经验的同学进阶学习。
作者: Coco    时间: 2024-7-29 09:23

出界面库,支持的下面+1
作者: 摘星揽月    时间: 2024-7-29 12:24
Lambda-Go:将函数式编程引入 Go

https://mp.weixin.qq.com/s/nh3ahfrtsm-d8J1H2Penpw
作者: hcwanz    时间: 2024-7-29 14:49
摘星揽月 发表于 2024-7-29 12:24
Lambda-Go:将函数式编程引入 Go

https://mp.weixin.qq.com/s/nh3ahfrtsm-d8J1H2Penpw

函数式是一种代码风格, 既不是特性, 也不是类库.
而且基于火山对静态公开成员的语法糖, 就可以实现函数式编程了吧.
作者: yb1984724    时间: 2024-7-29 14:53
先支持一下 go平台我还没用过
作者: 摘星揽月    时间: 2024-7-29 19:08
hcwanz 发表于 2024-7-29 14:49
函数式是一种代码风格, 既不是特性, 也不是类库.
而且基于火山对静态公开成员的语法糖, 就可以实现函数式 ...

怎么搞
作者: hcwanz    时间: 2024-7-29 19:20
摘星揽月 发表于 2024-7-29 19:08
怎么搞

我之前搞的这个类库, 就是函数式编程的
[7.13][完善翻译][终端界面库]留档 - 火山平台俱乐部 - 递归火山软件开发平台 - Powered by Discuz! (voldp.com)

大致的实现就是,  把整个库的所有对外代码, 封装成一个个函数, 外部操作的时候, 只需调用全局的接口函数, 而不需要其它东西.

我个人的评价是, 函数式编程相当吃架构设计, 需要从里到外环环相扣.

作者: 山梦    时间: 2024-7-29 19:37
其实都重要。最基础的最重要
作者: yh2393105053    时间: 2024-7-29 20:35
webui,中文版
作者: 99101617    时间: 2024-7-30 00:15
静等H5!哈哈
作者: CPUCN    时间: 2024-7-30 06:03
gorm
作者: 创世魂    时间: 2024-7-30 09:11
CPUCN 发表于 2024-7-30 06:03
gorm

这个应该已经在弄了。
作者: 创世魂    时间: 2024-7-30 09:12
老鼠哥 发表于 2024-7-27 12:12
ORC图文识别就可以了,网上很多离线软件都支持,而且也就几m大小。比如wps就支持,或者其他转换器软件也都 ...

……没有想的那么简单。。而且go这边不一定有这样的开源库可以用。
作者: 创世魂    时间: 2024-7-30 09:19
hcwanz 发表于 2024-7-29 14:49
函数式是一种代码风格, 既不是特性, 也不是类库.
而且基于火山对静态公开成员的语法糖, 就可以实现函数式 ...

看了一下,这里面的这个库就是个便携性的功能库。可以实现一些便捷操作。
作者: 创世魂    时间: 2024-7-30 09:20
摘星揽月 发表于 2024-7-28 01:43
gws:https://GITHUB.com/lxzan/gws |GITHUB ???? 1.2k,高性能的 websocket 库,代码双语注 ...

ws已经有了,重复的库就暂时不考虑
作者: 唐兀    时间: 2024-7-30 09:43
先把H5与GO搞好吧,就解决了大部分问题了,别的慢慢封:噜阿噜
作者: 雅婷    时间: 2024-7-30 10:36
折戟沉沙 发表于 2024-7-25 01:02
leaf
**大神开发的go分布式游戏服务端引擎,star很多
https://GITHUB.com/name5566/leaf

一个也打不开
作者: 折戟沉沙    时间: 2024-7-30 10:48
protobuf类库,go封不封?
作者: 老鼠哥    时间: 2024-7-30 14:49
https://GITHUB.com/n ... rowser-requirements   封装一个vnc开源库
作者: 晴空    时间: 2024-7-30 20:16
ollvm混淆编译有没有考虑封装一下
作者: 创世魂    时间: 2024-7-30 23:36
老鼠哥 发表于 2024-7-30 14:49
https://GITHUB.com/novnc/noVNC?tab=readme-ov-file#browser-requirements   封装一个vnc开源库 ...

这不是go库
作者: 创世魂    时间: 2024-7-30 23:39
折戟沉沙 发表于 2024-7-30 10:48
protobuf类库,go封不封?

这种序列化的库,要全平台封才好用。单独封某一个没有特别大的意义。
作者: 创世魂    时间: 2024-7-30 23:39
晴空 发表于 2024-7-30 20:16
ollvm混淆编译有没有考虑封装一下

这样不是go库啊。
作者: 折戟沉沙    时间: 2024-7-31 09:23
创世魂 发表于 2024-7-30 23:39
这种序列化的库,要全平台封才好用。单独封某一个没有特别大的意义。

秒懂,所以GO不打算封。
作者: hackxm    时间: 2024-7-31 23:15
出界面库,支持的下面+1
作者: nurjay    时间: 2024-8-1 19:22
从哪学习比较好一点
作者: 创世魂    时间: 2024-8-1 23:54
折戟沉沙 发表于 2024-7-31 09:23
秒懂,所以GO不打算封。

需要有大佬出手,一次性封三个才好用。。
go自带序列化,也不需要封这个。如果只是go用的话,不需要弄这个。
作者: 摘星揽月    时间: 2024-8-3 08:42
lancet是一个功能强大、全面、高效、可复用的go语言工具函数库。lancet受到了java apache common包和lodash.js的启发。
https://GITHUB.com/duke-git/lancet
作者: wsb197209    时间: 2024-8-3 21:29
1980882096 发表于 2024-7-25 02:17
https://opensource.bytedance.com/projectDetail/1

CloudWeGo

支持:噜阿噜
作者: 摘星揽月    时间: 2024-8-3 21:58
限流工具
使用 golang.org/x/time/rate 包实现令牌桶算法

import (
"fmt"
"net/http"
"time"

"golang.org/x/time/rate"
)

func main() {
// 创建一个限流器,每秒允许 10 个请求,最大可存储 100 个令牌
limiter := rate.NewLimiter(10, 100)

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
  // 尝试获取令牌,如果获取失败,则返回 429 Too Many Requests 错误
  if !limiter.Allow() {
   http.Error(w, "Too Many Requests", http.StatusTooManyRequests)
   return
  }

  // 处理请求
  fmt.Fprintln(w, "Hello, Gopher!")
})

http.ListenAndServe(":8080", nil)
}
作者: 摘星揽月    时间: 2024-8-4 08:08
Viper 是一个功能强大的 Go 配置库,它提供了全面的配置解决方案,包括 12-Factor 应用。它旨在应用程序内部运行,可以处理所有类型的配置需求和格式。
https://mp.weixin.qq.com/s?chksm ... KHA&wx_header=3
作者: 摘星揽月    时间: 2024-8-4 08:08
Viper 是一个功能强大的 Go 配置库,它提供了全面的配置解决方案,包括 12-Factor 应用。它旨在应用程序内部运行,可以处理所有类型的配置需求和格式。
作者: 4463424    时间: 2024-8-4 10:24
封个FTP库吧!
作者: 摘星揽月    时间: 2024-8-5 00:32
beego ORM 是一个强大的 Go 语言 ORM 框架。她的灵感主要来自

Django ORM 和 SQLAlchemy。



已支持的数据库驱动有MySQL、PostgreSQL 和 Sqlite3。



beego v2.x 和 beego v1.x 在 ORM 上的区别是,beego v2.x 的 ORM 对象被设计为无状态的,它是线程安全的,建议大家在使用时,一个数据库只对应一个 ORM 对象。
作者: 459943578    时间: 2024-8-5 23:01
摘星揽月 发表于 2024-8-5 00:32
beego ORM 是一个强大的 Go 语言 ORM 框架。她的灵感主要来自

Django ORM 和 SQLAlchemy。

操作多个数据库数据会混乱,用事务可以解决:噜阿噜,我目前就是这样搞的
作者: 459943578    时间: 2024-8-5 23:03
摘星揽月 发表于 2024-8-3 21:58
限流工具
使用 golang.org/x/time/rate 包实现令牌桶算法

正好有这个库

<火山程序 类型 = "通常" 版本 = 1 />

类 速率限制器类 <公开 注释 = "是 Go 语言中一个用于限制频率的库,主要用于实现速率限制和限流的功能。它是 Go 语言标准库 time/rate 的一个扩展版本,提供了更灵活的速率限制机制。" 折叠
        @服务器.导入 = "golang.org/x/time/rate" @文档 = "category = \"速率限制器\"" @别名 = "*rate.Limiter"
        @别名类型 = 本地非数值基本类型>
{
    方法 初始化 <公开 静态 折叠 @嵌入式方法 = "">
    参数 欲操作本对象 <类型 = 速率限制器类>
    参数 每秒令牌数 <类型 = 整数 注释 = "这是速率限制器的速率,表示每秒允许生成的令牌数。"
            注释 = "每秒钟生成的令牌数量是固定的,不会受到之前秒内消耗的令牌数量的影响。每秒开始时,都会生成新的令牌,以满足该秒内的生成速率设定。">
    参数 突发令牌数 <类型 = 整数 注释 = "这是令牌桶的容量,表示桶中可以容纳的最大令牌数。桶容量决定了在短时间内可以允许的突发流量。"
            注释 = "恢复时间 = 突发令牌数 (b) / 每秒令牌数 (r)" "">
    {
        @ @<欲操作本对象>  = rate.NewLimiter(@<每秒令牌数>, @<突发令牌数>)
    }

    方法 等待令牌 <公开 静态 类型 = 错误接口 注释 = "等待令牌:会阻塞当前协程,直到令牌桶中有足够的令牌。如果令牌桶中已经有令牌,方法会立即返回;如果没有足够的令牌,方法会一直阻塞直到令牌可用。"
            注释 = "消耗令牌:在方法返回时,它会消耗一个令牌。这样可以确保在执行操作之前已经获得了一个令牌,从而控制操作的速率。" 注释 = "" 注释 = "适用场景"
            注释 = "限流:在需要限制请求速率的场景中,使用 Wait() 方法可以确保操作不会超过设定的速率。"
            注释 = "控制并发:在高并发的情况下,Wait() 方法可以控制并发的操作数量,防止系统过载。" 注释 = "" 注释 = "注意事项"
            注释 = "阻塞:由于 Wait() 方法会阻塞当前协程,因此在高负载场景下,可能会导致线程或协程阻塞。如果需要非阻塞的限流控制,可以考虑使用其他方法或库。"
            返回值注释 = "尝试获取一个令牌,如果失败则返回错误" 折叠 折叠2 @嵌入式方法 = "">
    参数 欲操作本对象 <类型 = 速率限制器类>
    {
        @ @<欲操作本对象>.Wait(context.Background())

    }

    方法 等待多个令牌 <公开 静态 类型 = 错误接口 注释 = "方法会阻塞直到可以获得 n 个令牌。如果令牌桶中没有足够的令牌,它会等待直到令牌足够为止。如果上下文被取消或超时,也会返回一个错误。"
            注释 = "" 注释 = "适用场景" 注释 = "限流:在需要限制请求速率的场景中,使用 Wait() 方法可以确保操作不会超过设定的速率。"
            注释 = "控制并发:在高并发的情况下,Wait() 方法可以控制并发的操作数量,防止系统过载。" 注释 = "" 注释 = "注意事项"
            注释 = "阻塞:由于 Wait() 方法会阻塞当前协程,因此在高负载场景下,可能会导致线程或协程阻塞。如果需要非阻塞的限流控制,可以考虑使用其他方法或库。"
            返回值注释 = "如果请求被取消或超时,将返回一个错误;如果没有问题则返回 nil。" 折叠 折叠2 @嵌入式方法 = "">
    参数 欲操作本对象 <类型 = 速率限制器类>
    参数 获取令牌个数 <类型 = 整数 注释 = "需要的令牌数量。">
    {
        @ @<欲操作本对象>.WaitN(context.Background(), @<获取令牌个数>)

    }

    方法 取令牌 <公开 静态 类型 = 逻辑型 注释 = "适用于不希望阻塞当前操作的场景。它允许你在限流器中检查令牌而不等待,从而实现非阻塞的速率控制" 注释 = ""
            返回值注释 = "true 表示当前操作可以在速率限制下执行,false 表示操作被速率限制阻止。" 折叠 折叠2 @嵌入式方法 = "">
    参数 欲操作本对象 <类型 = 速率限制器类>
    {
        @ @<欲操作本对象>.Allow()
    }

    方法 取多个令牌 <公开 静态 类型 = 逻辑型 注释 = "它用于检查在指定的时间点是否可以允许 n 个请求,而不会阻塞。如果令牌桶中有足够的令牌,它会返回 true,否则返回 false。"
            注释 = "" 返回值注释 = "如果在指定的时间点可以允许 n 个请求,则返回 true;否则返回 false。" 折叠 折叠2 @嵌入式方法 = "">
    参数 欲操作本对象 <类型 = 速率限制器类>
    参数 获取令牌个数 <类型 = 整数 注释 = "需要的令牌数量。">
    {
        @ @<欲操作本对象>.AllowN(time.Now(), @<获取令牌个数>)
    }

    方法 取突发数 <公开 静态 类型 = 整数 折叠 @嵌入式方法 = "">
    参数 欲操作本对象 <类型 = 速率限制器类>
    {
        @ @<欲操作本对象>.Burst()
    }

    方法 设置突发数 <公开 静态 折叠 @嵌入式方法 = "">
    参数 欲操作本对象 <类型 = 速率限制器类>
    参数 突发数 <类型 = 整数>
    {
        @ @<欲操作本对象>.SetBurst(@<突发数>)
    }

    方法 设置速率 <公开 静态 折叠 @嵌入式方法 = "">
    参数 欲操作本对象 <类型 = 速率限制器类>
    参数 每秒令牌数 <类型 = 整数 注释 = "表示新的速率限制(每秒生成的令牌数)">
    {
        @ @<欲操作本对象>.SetLimit(@<每秒令牌数>)
    }

    方法 取可用令牌数 <公开 静态 类型 = 小数 折叠 @嵌入式方法 = "">
    参数 欲操作本对象 <类型 = 速率限制器类>
    {
        @ @<欲操作本对象>.Tokens()
    }

    方法 取速率 <公开 静态 类型 = 小数 折叠 @嵌入式方法 = "">
    参数 欲操作本对象 <类型 = 速率限制器类>
    {
        @ @<欲操作本对象>.Limit()
    }

    #
    #
}

作者: 创世魂    时间: 2024-8-5 23:30
摘星揽月 发表于 2024-8-3 21:58
限流工具
使用 golang.org/x/time/rate 包实现令牌桶算法

这个可以有
作者: 希希冉冉    时间: 2024-8-7 09:08
GO的标准库都封完了,建议出个入门教程让我们先入入门吧!




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4