边缘智能-大模型架构初探

news2024/9/21 12:32:01

R2Cloud接口

机器人注册

请求和应答

注册是一个简单的 HTTP 接口,根据机器人/用户信息注册,创建一个新机器人。

请求 URL

URLhttp://ip/robot/reg
TypePOST
HTTP Version1.1
Content-Typeapplication/json

请求参数

Param含义Rule是否必须缺省
robotid机器人唯一 IDmd 5 加密后的值必填NULL
robotPwd机器人密码md 5 加密后的值必填NULL
nickName昵称不超过 32 个字符可选NULL
email邮箱符合 email 规范可选NULL
userName用户名称不超过 32 个字符可选NULL
服务示例

返回结果参数

名称含义规则说明
code结果值0:成功
1:失败
2:机器人存在

调用接口

{
    "robotid":"ced165163e51e06e01dc44c35fea3eaf",
    "robotPwd":"3687f20fbdfab8dd7e645f1e2f95268b",
    "nickName":"jarvis",
    "email":"Jarvis@joysonrobot.com",
    "userName":"gv"
}

返回值

{
    "code":0
}
处理逻辑

客户端提交的密码需要使用 md5 加密,不能提供明文的密码。

机器人上线(登录)

请求和应答

登录,根据机器人的登录信息,连接到云平台。

请求URL
URLhttp://ip/robot/login
TypePOST
HTTP Version1.1
Content-Typeapplication/json
请求参数
Param含义Rule是否必须缺省
robotid机器人唯一 IDmd 5 加密后的值必填NULL
robotPwd机器人密码md 5 加密后的值必填NULL
服务示例

返回结果参数说明

名称含义规则说明
code结果值0:成功
1:失败
token令牌每次上线后,生成的token不一样,后续请求需要带上token

调用接口

http://ip/robot/login
参数
{
    "robotid":"ced165163e51e06e01dc44c35fea3eaf",
    "robotPwd":"3687f20fbdfab8dd7e645f1e2f95268b"
}
返回结果
{
    "code":0,
    "token":"3a58ca22317e637797f8bcad5c047446"
}
处理逻辑

Token验证

Token 的中文有人翻译成 “令牌”,意思就是,你拿着这个令牌,才能过一些关卡。

Token 是一个用户自定义的任意字符串。在成功提交了开发者自定义的这个字符串之后,Token 的值 会保存到服务器后台。只有服务器和客户端前端知道这个字符串,于是 Token 就成了这两者之间的 密钥,它可以让服务器确认请求是来自客户端还是恶意的第三方。

使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:

  1. 客户端使用用户名和密码请求登录;
  2. 服务器收到请求,验证用户名和密码;
  3. 验证成功后,服务端生成一个Token,这个Token可以存储在内存、磁盘、或者数据库里,再把这个Token发送给客户端;
  4. 客户端收到Token以后可以存储起来,比如放在Cookie或者Local Storage;
  5. 客户端每次向服务器请求资源时必须带着服务器签发的Token;
  6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回 请求的数据。

私有文件1

请求URL
URLhttp://ip/file/ownfile?cmd=count
TypePOST
HTTP Version1.1
Content-Typeapplication/json
请求参数
Param含义Rule是否必须缺省
tokentoken同上必填NULL
robotid机器人唯一 ID不超过32个字符必填NULL
服务示例

返回结果参数说明

名称含义规则说明
code结果值0:验证成功
1:验证失败
total文件数量

调用接口

http://ip/file/ownfile?cmd=count
参数
{
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "total":1,
    "code":0
}
没有文件返回
{
    "total":0,
    "code":0
}
处理逻辑

私有文件2

请求URL
URLhttp://ip/file/ownfile?cmd=normal
TypePOST
HTTP Version1.1
Content-Typeapplication/json
请求参数
Param含义Rule是否必须缺省
tokentoken同上必填NULL
robotid机器人唯一 ID不超过32个字符必填NULL
count文件个数私有文件数量>0必填NULL
start开始位置必填NULL
服务示例

返回结果参数说明

名称含义规则说明
files文件结果集“code”:0正常,1失败,
“count”:当前文件数量,
“total”:私有文件数量,
“robotid”:机器人唯一ID,
“md5”:md5的值,
“create_time”:创建时间,
“file_name”:文件名,
“share_status”:共享状态,
“pv”:使用次数,
“url”:URL,
“size”:文件大小,
“type”:文件类型

调用接口

http://ip/file/ownfile?cmd=normal
参数
{
    "count":2,
    "start":0,
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0,
    "total":2,
    "files":[
        {
            "robotid":"ced165163e51e06e01dc44c35fea3eaf",
            "md5":"6c5fa2864bb264c91167258b3e478fa0",
            "create_time":"2024-01-01 11:11:00",
            "file_name":"111.jpg",
            "share_status":0,
            "pv":1,
            "url":"http://ip/group1/M00/00/00/eBuDxWCfQHSATopyAAV8AJV_1mw866.111",
            "size":"1024",
            "type":"jpg"
        }
    ]
}
处理逻辑

私有文件3

请求URL
URLhttp://ip/file/ownfile?cmd=pvasc
TypePOST
HTTP Version1.1
Content-Typeapplication/json
请求参数
Param含义Rule是否必须缺省
tokentoken同上必填NULL
robotid机器人唯一 ID不超过32个字符必填NULL
count文件个数私有文件数量>0必填NULL
start开始位置必填NULL
服务示例

返回结果参数说明

名称含义规则说明
files文件结果集“code”:0正常,1失败,
“count”:当前文件数量,
“total”:私有文件数量,
“robotid”:机器人唯一ID,
“md5”:md5的值,
“create_time”:创建时间,
“file_name”:文件名,
“share_status”:共享状态,
“pv”:使用次数,
“url”:URL,
“size”:文件大小,
“type”:文件类型

调用接口

http://ip/file/ownfile?cmd=normal
参数
{
    "count":2,
    "start":0,
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0,
    "total":2,
    "files":[
        {
            "robotid":"ced165163e51e06e01dc44c35fea3eaf",
            "md5":"6c5fa2864bb264c91167258b3e478fa0",
            "create_time":"2024-01-01 11:11:00",
            "file_name":"111.jpg",
            "share_status":0,
            "pv":1,
            "url":"http://ip/group1/M00/00/00/eBuDxWCfQHSATopyAAV8AJV_1mw866.111",
            "size":"1024",
            "type":"jpg"
        }
    ]
}
处理逻辑

私有文件4

请求URL
URLhttp://ip/file/ownfile?cmd=pvdesc
TypePOST
HTTP Version1.1
Content-Typeapplication/json
请求参数
Param含义Rule是否必须缺省
tokentoken同上必填NULL
robotid机器人唯一 ID不超过32个字符必填NULL
count文件个数私有文件数量>0必填NULL
start开始位置必填NULL
服务示例

返回结果参数说明

名称含义规则说明
files文件结果集“code”:0正常,1失败,
“count”:当前文件数量,
“total”:私有文件数量,
“robotid”:机器人唯一ID,
“md5”:md5的值,
“create_time”:创建时间,
“file_name”:文件名,
“share_status”:共享状态,
“pv”:使用次数,
“url”:URL,
“size”:文件大小,
“type”:文件类型

调用接口

http://ip/file/ownfile?cmd=normal
参数
{
    "count":2,
    "start":0,
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0,
    "total":2,
    "files":[
        {
            "robotid":"ced165163e51e06e01dc44c35fea3eaf",
            "md5":"6c5fa2864bb264c91167258b3e478fa0",
            "create_time":"2024-01-01 11:11:00",
            "file_name":"111.jpg",
            "share_status":0,
            "pv":1,
            "url":"http://ip/group1/M00/00/00/eBuDxWCfQHSATopyAAV8AJV_1mw866.111",
            "size":"1024",
            "type":"jpg"
        }
    ]
}
处理逻辑

上传文件md5

用于秒传文件的请求。

文件上传的时候:

  • 先调用md5接口判断服务器是否有该文件,如果md5成功则说明服务器有该文件,不需要upload;
  • 如果不成功则调用upload。
请求URL
URLhttp://ip/file/md5
TypePOST
HTTP Version1.1
Content-Typeapplication/json
请求参数
Param含义Rule是否必须缺省
tokentoken同上必填NULL
robotid机器人唯一 ID不超过32个字符必填NULL
md5md5值不超过32个字符必填NULL
filename文件名称不超过128个字符必填NULL
服务示例

返回结果参数说明

名称含义规则说明
code结果值0: 秒传成功
1: 秒传失败
4: token 校验失败
5:文件已存在

调用接口

http://ip/file/md5
参数
{
    "filename":"ui_bottongroup.h",
    "md5":"a89390d867d5da18c8b1a95908d7c653",
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0
}
处理逻辑

每个文件都有一个唯一的 MD5 值(比如 2bf8170b42cc7124b04a8886c83a9c6f),就好比每个人的指 纹都是唯一的一样,效验 MD5 就是用来确保文件在传输过程中未被修改过。

  • 客户端在上传文件之前先将文件的md5码上传到服务器;
  • 服务器判断是否存在这个md5码,如果存在,说明文件存在,则此文件无需再次上传,在此文件的计数器上加1,说明文件多了一个用户共用;
  • 如果服务器没有这个md5码,则说明。传的是新文件,需要上传

上传文件upload

请求URL
URLhttp://ip/file/upload
TypePOST
HTTP Version1.1
Content-Typeapplication/json
返回结果参数说明
名称含义规则说明
code结果值0: 秒传成功
1: 上传失败
处理逻辑

共享/删除1

请求 URL
URLhttp://ip/file/dealfile?cmd=share
TypePOST
HTTP Version1.1
Content-Typeapplication/json
请求参数
Param含义Rule是否必须缺省
tokentoken同上必填NULL
robotid机器人唯一 ID不超过32个字符必填NULL
md5md5值不超过32个字符必填NULL
filename文件名称不超过128个字符必填NULL
服务示例

返回结果参数说明

名称含义规则说明
code结果值0: 成功
1: 失败
3: 另外的机器人已经共享
4: token 验证失败

调用接口

http://ip/file/dealfile?cmd=pv
参数
{
	"filename":"Makefile",
	"md5":"602fdf30db2aacf517badf4565124f51",
	"token":"3a58ca22317e637797f8bcad5c047446",
	"robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
	"code":0
}
处理逻辑

image.png

共享/删除文件2

请求URL
URLhttp://ip/file/dealfile?cmd=del
TypePOST
HTTP Version1.1
Content-Typeapplication/json
请求参数
Param含义Rule是否必须缺省
tokentoken同上必填NULL
robotid机器人唯一 ID不超过32个字符必填NULL
md5md5值不超过32个字符必填NULL
filename文件名称不超过128个字符必填NULL
服务示例

返回结果参数说明

名称含义规则说明
code结果值0: 成功
1: 失败

调用接口

http://ip/file/dealfile?cmd=del
参数
{
    "filename":"Makefile",
    "md5":"602fdf30db2aacf517badf4565124f51",
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0
}
处理逻辑

  • 先判断此文件是否已经分享
  • 判断集合有没有这个文件,如果有,说明别人已经分享此文件(RDS操作)
  • 如果集合没有此元素,可能因为 redis 中没有记录,再从 SQL中查询,如果 SQL也没有,说 明真没有(SQL操作)
  • 如果 SQL有记录,而 RDS没有记录,那么分享文件处理只需要处理 SQL(SQL操作)
  • 如果 RDS有记录,SQL和 RDS都需要处理,删除相关记录

取消共享

请求URL
URLhttp://ip/file/dealsharefile?cmd=cancel
TypePOST
HTTP Version1.1
Content-Typeapplication/json
请求参数
Param含义Rule是否必须缺省
robotid机器人唯一 ID不超过32个字符必填NULL
md5md5值不超过32个字符必填NULL
filename文件名称不超过128个字符必填NULL
服务示例

返回结果参数说明

名称含义规则说明
code结果值0: 成功
1: 失败

调用接口

http://ip/file/dealsharefile?cmd=cancel
参数
{
    "filename":"ui_buttongroup.h"
    "md5":"a89390d867d5da18c8b1a95908d7c653",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0
}
处理逻辑

  • 查询共享文件的数量;
  • 如果共享文件数量为1则删除共享文件数量对应的行
  • 如果共享文件数量>1,则更新共享数量文件-1。

转存文件

请求URL
URLhttp://ip/file/dealsharefile?cmd=save
TypePOST
HTTP Version1.1
Content-Typeapplication/json
请求参数
Param含义Rule是否必须缺省
robotid机器人唯一 ID不超过32个字符必填NULL
md5md5值不超过32个字符必填NULL
filename文件名称不超过128个字符必填NULL
服务示例

返回结果参数说明

名称含义规则说明
code结果值0: 成功
1: 失败
5: 文件存在
http://ip/file/dealsharefile?cmd=save
参数
{
    "filename":"ui_buttongroup.h"
    "md5":"a89390d867d5da18c8b1a95908d7c653",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0
}
处理逻辑

  • 先查询是个人文件列表是否已经存在该文件;
  • 增加 file_info 表的 count 计数,表是多一个人保存了该文件;
  • 个人的 user_file_list 增加一条文件记录;
  • 更新个人的 user_file_count。

更新共享文件下载计数

请求URL
URLhttp://ip/file/dealsharefile?cmd=save
TypePOST
HTTP Version1.1
Content-Typeapplication/json
请求参数
Param含义Rule是否必须缺省
robotid机器人唯一 ID不超过32个字符必填NULL
md5md5值不超过32个字符必填NULL
filename文件名称不超过128个字符必填NULL
服务示例

返回结果参数说明

名称含义规则说明
code结果值0: 成功
1: 失败
5: 文件存在
http://ip/file/dealsharefile?cmd=pv
参数
{
    "filename":"ui_buttongroup.h"
    "md5":"a89390d867d5da18c8b1a95908d7c653",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0
}
处理逻辑

  • 更新share_file_list的pv值;
  • 更新RDS的FILE_PUBLIC_ZSET。

分享文件

请求URL
URLhttp://ip/file/sharefile?cmd=share
TypePOST
HTTP Version1.1
Content-Typeapplication/json
请求参数
Param含义Rule是否必须缺省
tokentoken同上必填NULL
robotid机器人唯一 ID不超过32个字符必填NULL
md5md5值不超过32个字符必填NULL
filename文件名称不超过128个字符必填NULL
服务示例

返回结果参数说明

名称含义规则说明
code结果值0: 成功
1: 失败
4: token验证失败
urlmd5分享文件标识取消也要

调用接口

http://ip/file/sharefile?cmd=share
参数
{
    "filename":"ui_buttongroup.h"
    "md5":"a89390d867d5da18c8b1a95908d7c653",
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf"
}
返回结果
{
    "code":0,
    "urlmd5":"602fdf30db2aacf517badf4565121234"
}
处理逻辑

新建分组

新建一个MQTT的Topic,用于协作。

请求URL
URLhttp://ip/msg/newgroup
TypePOST
HTTP Version1.1
Content-Typeapplication/json
请求参数
Param含义Rule是否必须缺省
tokentoken同上必填NULL
robotid机器人唯一 ID不超过32个字符必填NULL
maxsize同组最大数量>=1必填NULL
服务示例

返回结果参数说明

名称含义规则说明
code结果值0: 成功
1: 失败
4: token验证失败
topic加密后的topic失败为空

调用接口

http://ip/file/msg/newgroup
参数
{
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf",
    "maxsize":10
}
返回结果
{
    "code":0,
    "topic":"614b0c23f5f4cd3a68ba5581e2169df3"
}
处理逻辑

image.png

释放分组

请求 URL
URLhttp://ip/msg/freegroup
TypePOST
HTTP Version1.1
Content-Typeapplication/json
请求参数
Param含义Rule是否必须缺省
tokentoken同上必填NULL
robotid机器人唯一 ID不超过32个字符必填NULL
topic加密后的topic不超过32个字符必填NULL
服务示例

返回结果参数说明

名称含义规则说明
code结果值0: 成功
1: 失败
4: token 验证失败
5: 非topic管理员

调用接口

http://ip/file/msg/freegroup
参数
{
    "token":"3a58ca22317e637797f8bcad5c047446",
    "robotid":"ced165163e51e06e01dc44c35fea3eaf",
    "topic":"614b0c23f5f4cd3a68ba5581e2169df3"
}
返回结果
{
    "code":0,
}
处理逻辑

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2145348.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

活动系统开发之采用设计模式与非设计模式的区别-后台功能总结

1、数据库ER图 2、后台功能字段 题目功能字段 数据列表 编号题目名称选项数量状态 1启用0禁用创建时间修改时间保存 题目名称选项集 选项内容是否正确答案 1正确0错误启禁用删除素材图库功能字段 数据列表 编号原文件名称文件类型文件大小加密后文件名文件具体路径上传类型状态…

为您的任意模型赋能——RAG

随着大语言模型的参数规模越来越大,微调模型的代价越来越大,于是知识检索增强的方式成为越来越主流的选择。通过提前准备好的知识库,在模型进行推理之前进行知识检索作为上下文一同交给大模型进行推理,从而提升大模型对领域知识的…

kafka 一步步探究消费者组与分区分配策略

本期主要聊聊kafka消费者组与分区 消费者组 & 消费者 每个消费者都需要归属每个消费者组,每个分区只能被消费者组中一个消费者消费 上面这段话还不够直观,我们举个例子来说明。 订单系统 订单消息通过 order_topic 发送,该topic 有 5个分区 结算系…

Cursor免费 GPT-4 IDE 工具的保姆级使用教程

Cursor免费 GPT-4 IDE 工具的保姆级使用教程 简介 Cursor 是一款基于人工智能技术的代码生成工具。 它利用先进的自然语言处理和深度学习算法,可根据用户的输入或需求,自动生成高质量代码。 不管是初学者,还是资深开发者,Curs…

网络爬虫到底难在哪里?

如果你是自己做爬虫脚本开发,那确实难,因为你需要掌握Python、HTML、JS、xpath、database等技术,而且还要处理反爬、动态网页、逆向等情况,不然压根不知道怎么去写代码,这些技术和经验储备起码得要个三五年。 比如这几…

Qt5详细安装教程(包含导入pycharm)

1.自行下载Qt 2.双击进行安装 3.设置完成后勾选接受,跳转下一步 4.可选择安装位置,比较习惯安装在D盘 5.根据需求勾选对应组件安装 6.安装完成后,打开pycharm,进入settings—>选择ExternalTools,根据以下步骤进行配…

python怎么读json文件

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人…

LeetCode004-两个有序数组的中位数-最优算法代码讲解

最有帮助的视频讲解 【LeetCode004-两个有序数组的中位数-最优算法代码讲解】 https://www.bilibili.com/video/BV1H5411c7oC/?share_sourcecopy_web&vd_sourceafbacdc02063c57e7a2ef256a4db9d2a 时间复杂度 O ( l o g ( m i n ( m , n ) ) ) O(log(min(m,n))) O(log(min(…

将flux1画图API封装为Dify工作流

本文主要介绍将公开的 flux1 画图 API(https://api-flux1.api4gpt.com/)封装为 Dify 工作流。 1.构建工作流 新建一个"聊天助手-> 工作流编排"的"flux1 工作流": 总共使用了开始、HTTP 请求和直接回复 3 个节点。如…

【2025】基于微信小程序的网上点餐系统设计与实现、基于微信小程序的智能网上点餐系统、微信小程序点餐系统设计、智能点餐系统开发、微信小程序网上点餐平台设计

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

根据 IP 地址进行 VPN 分流(详细,亲测,通用)

根据 IP 地址进行 VPN 分流(详细,亲测,通用) 背景 不在学校的时候需要使用实验室的服务器,但是实验室的服务器只能在校园网内访问,因此在校外就需要使用学校的 VPN,但是打开 VPN 以后会默认将…

除了 SEO 之外,HTML 语义化还有什么用?

每次碰到 HTML 语义化的话题,几乎 99% 的前端都会想到 SEO。那除了 SEO,你还会想到什么呢?好像没有了。。。 确实,当我们要做 SEO 的时候,往往第一时间都会想到优化 HTML 语义化,久而久之,大家…

Linux下rpm方式部署mysql(国产化生产环境无联网服务器部署实操)

请放心观看,已在正式环境部署验证,流程无问题! 所用系统为国产化麒麟银河 aarch64系统,部署时间2024年9月份! #查看服务器信息 #涉及生产服务器,所以输出信息隐藏了一部分[rootecs-xxxxx hdata]# uname -…

五、CAN总线

目录 一、基础知识 1、can介绍 2、CAN硬件电路 3、CAN电平标准 4、CAN收发器芯片介绍 5、CAN帧格式 ① CAN帧种类 ② CAN数据帧 ③ CAN遥控帧​编辑 ④ 位填充 ⑤ 波形实例 6、接收方数据采样 ① 接收方数据采样遇到的问题 ② 位时序 ③ 硬同步 ④ 再同步 ⑤ 波…

【Delphi】实现接收系统拖动文件

在 Delphi 中,可以通过以下步骤来实现将文件夹中的文件拖动到 Form 上,并在拖动时显示文件类型的光标。我们可以利用 VCL 中的 Drag and Drop 机制来处理拖动操作,以及自定义光标显示。 以下是详细的步骤和代码示例: 实现步骤&a…

MATLAB系列05:自定义函数

MATLAB系列05:自定义函数 5. 自定义函数5.1 MATLAB函数简介5.2 在MATLAB中传递变量:按值传递机制5.3 选择性参数5.4 用全局内存分享数据5.5 在函数两次调用之间本地数据的存储5.6 函数的函数(function functions)5.7 子函数和私有函数5.8 总结 5. 自定义…

问题:WINCC 7.5 结构变量只能是内部变量吗?

问题:WINCC 7.5 结构变量只能是内部变量吗? 答案:不是的呢,你创建结构的时候可以选择外部变量的 如图:工控人加入PLC工业自动化精英社群 #WINCC 7.5##变量##结构##西门子工业支持中心#

css五种定位总结

在 CSS 中,定位(Positioning)主要有五种模式,每种模式的行为和特点不同,以下是 static、relative、absolute、fixed 和 sticky 五种定位方式的对比总结: 1. static(默认定位) 特性…

基于SpringBoot+Vue+MySQL的在线招投标系统

系统展示 用户前台界面 管理员后台界面 系统背景 在当今商业环境中,招投标活动是企业获取项目、资源及合作伙伴的重要途径。然而,传统招投标过程往往繁琐复杂,涉及众多文件交换、信息审核与沟通环节,不仅效率低下,还易…

【强化学习系列】Gym库使用——创建自己的强化学习环境2:拆解官方标准模型源码/规范自定义类+打包自定义环境

目录 一、 官方标准环境的获取与理解 二、根据官方环境源码修改自定义 1.初始化__init__() 2.重置环境 reset() 三、打包环境 1.注册与创建自定义环境 2.环境规范化 在本文的早些时候,曾尝试按照自己的想法搭建自定义的基于gym强化学习环境。 【强化学习系列】Gy…