突破!自然语言强化学习(NLRL):一个可处理语言反馈的强化学习框架
本论文由伦敦大学学院、上海交通大学、布朗大学、布里斯托大学、新加坡国立大学以及萨里大学的研究者合作完成。
冯熙栋是论文第一作者,即将毕业于伦敦大学学院。目前是Google DeepMind的Research Scientist,主要研究方向包括强化学习与生成模型。刘博是本推文作者,新加坡国立大学二年级博士生,研究强化学习、推理及机器学习系统在复杂现实环境中的应用。
在人工智能发展史上,强化学习 (RL) 凭借其严谨的数学框架解决了众多复杂的决策问题,从围棋、国际象棋到机器人控制等领域都取得了突破性进展。
然而,随着应用场景日益复杂,传统强化学习过度依赖单一数值奖励的局限性日益凸显。在现实世界中,反馈信号往往是多维度、多模态的,例如教练的口头指导、视觉示范,或是详细的文字说明。
来自伦敦大学学院、上海交通大学、布朗大学、新加坡国立大学和布里斯托大学的联合研究团队提出了全新的自然语言强化学习(Natural Language Reinforcement Learning, NLRL)范式,成功将强化学习的核心概念类比为基于自然语言的形式,开辟了一条通向更智能、更自然的 AI 决策学习的新道路。
-
论文题目: Natural Language Reinforcement Learning
-
论文链接: https://arxiv.org/abs/2411.14251
-
代码链接: https://github.com/waterhorse1/Natural-language-RL
从数值到语言:新范式的萌芽
随着大语言模型(LLM)在理解和生成自然语言方面的飞速发展,研究者们开始探索如何让 AI 系统像人类一样通过语言来理解任务、制定策略并解释决策过程。论文第一作者的早期工作 ChessGPT(https://arxiv.org/abs/2306.09200)尝试通过收集对局评论来训练语言模型并取得了一定成功。然而,这种基于人类数据的学习方式很快遇到了瓶颈:互联网数据质量参差不齐,高质量专家标注成本高昂,而对于全新任务更是无从获取相关经验数据。
这种困境促使研究团队开始探索一个更具突破性的方向:能否设计一个框架,让 AI 系统完全通过与环境的交互来学习,而不依赖任何人类标注数据?传统强化学习为这个问题提供了灵感,但其单一数值奖励的机制难以满足复杂场景的需求。团队意识到需要一个新范式,既要继承强化学习的数学严谨性,又要具备自然语言的表达丰富性。这个思路最终导向了 NLRL 的诞生。
自然语言强化学习
传统强化学习虽然在数学上严谨优雅,但其单一数值反馈机制与人类学习方式存在巨大差距。研究团队从象棋教练指导学生的场景获得启发:教练不会简单说 “这步棋的价值是 0.7”,而是会详细解释 “这个走法控制了中心,限制了对手的机动性,同时为王翼进攻创造了条件”。这种观察促使团队思考:能否将丰富的语言反馈信号整合进学习框架?
这个思路的关键突破来自对传统强化学习本质的重新思考:既然传统 RL 可以通过蒙特卡洛和时序差分等方法进行学习,这些方法是否可以扩展到语言空间?基于这一洞察,团队提出了 NLRL 框架,将传统 RL 中的数学概念类比为语言形式。以下是一个对应关系示意图。
具体而言,NLRL 引入 “语言任务指令”(T_L)替代抽象的奖励函数,并设计了度量函数 F 来评估轨迹描述 D_L (τ_π) 与任务指令的完成度。
语言化的决策框架
在 NLRL 中,MDP 的每个组成部分都被重新定义为文本形式。状态变为包含完整上下文的自然语言描述,动作空间转化为带有推理过程的语言决策,而环境反馈则扩展为包含原因分析的详细评估。例如,在迷宫环境中的状态描述会包含位置、周围环境、历史探索等完整信息。
语言策略与推理
NLRL 中的策略 π_L 被创新性地分解为两个部分:π_L (a,c|s) = π_L (c|s)π_L (a|c,s),其中 c 代表思维过程。这种分解使得决策过程变得完全透明。以国际象棋为例,系统会先分析局势(“白方控制中心点,黑方王翼薄弱”),提出计划(“开展王翼进攻,同时固守中心”),最后给出具体建议(“Nf3-e5,威胁 f7 并加强中心控制”)。
语言价值评估
NLRL 将传统的标量值函数 V (s) 和 Q (s,a) 扩展为语言价值函数 V^L_π 和 Q^L_π。这种扩展使得评估变得更加丰富和可解释。评估结果不仅包含胜率,还涵盖空间利用、子力配合等多个角度的分析,并提供具体的改进建议。
从理论到实践
将强化学习的数学概念转化为语言形式是一个优雅的构想,但如何在实践中实现这种转化却是一个巨大的挑战。研究团队意识到,近年来大语言模型在自然语言处理和推理能力方面的突破,为 NLRL 的实现提供了关键工具。通过深入研究大语言模型的能力边界,团队发现 LLM 不仅能够理解和生成自然语言,还具备 information synthesis(信息综合)、reasoning(推理)和 correlation analysis(相关性分析)等能力,这些能力恰好对应了传统强化学习中的期望计算、价值估计和策略改进等核心操作。
基于这一洞察,研究团队提出了三个关键技术创新,构建了完整的 NLRL 实现框架:
语言蒙特卡洛估计
在传统强化学习中,蒙特卡洛方法通过采样多条轨迹并取平均值来估计状态价值。但在语言空间中,我们无法直接对文本描述进行算术平均。研究团队利用大语言模型作为信息聚合器 (aggregator)。
具体来说,当系统需要评估某个状态时,它会:
1. 从该状态开始采样 K 条完整轨迹
2. 将每条轨迹转化为详细的文本描述
3. 使用专门设计的提示让 LLM 扮演 “专家评估员” 的角色
4.LLM 分析所有轨迹描述,提取关键模式和见解
5. 生成一个综合性的评估报告
例如,在国际象棋中,系统可能会分析说:“基于观察到的 20 个可能发展,此位置对白方有利。在 80% 的变化中,白方能够通过控制中心格和针对 f7 的战术威胁获得优势。但需要注意的是,如果黑方成功完成王翼城堡,局势可能趋于平衡。”
语言时序差分学习
传统的时序差分学习基于贝尔曼方程,将长期价值分解为即时奖励和未来状态的折扣价值。NLRL 创新性地提出了语言贝尔曼方程,将这种时序关系扩展到语言空间。
在 NLRL 中,语言时序差分学习包含三个关键组件:
1. 文本描述生成器 d:将状态转换 (s,a,r,s') 转化为自然语言描述
2. 信息聚合函数 G1:综合多个时间步的信息
3. 语言组合函数 G2:将即时反馈与未来评估结合
这三个组件协同工作的方式如下:
-
首先,d 将环境反馈转化为详细的文本描述,包括采取的动作、即时反馈和到达的新状态
-
G2(通常是一个经过特殊提示的 LLM)将即时描述与对未来状态的语言评估结合,生成一个整体性的分析
-
G1 聚合多个这样的分析,得出最终的状态评估
在实践中,这种方法表现出了独特的优势:
-
可以捕捉到难以量化的微妙因素
-
评估结果具有很强的可解释性
-
能够处理长期依赖关系
语言策略提升
在传统强化学习中,策略提升通常通过梯度上升来最大化期望回报。但在语言空间中,我们需要一个全新的策略提升机制。研究团队提出了基于语言相关性分析的策略提升方法。
这种提升机制的工作原理是:
1. 对当前状态收集多个候选动作
2. 获取每个动作的语言价值评估
3. 使用 LLM 分析这些评估与任务目标的相关性
4. 生成改进的决策链路,包括:
-
详细的推理过程
-
对不同选项的权衡分析
-
最终决策的依据
例如,在迷宫导航任务中,系统可能会这样分析:“向右移动是最优选择,因为:1)根据之前的探索经验,右侧路径更可能通向目标 2)即使这条路不是最短路径,也为我们保留了回退的选项 3)相比向上移动可能遇到的死胡同,这个选择风险更小。”
实验验证
研究团队在三个具有代表性的环境中系统地验证了 NLRL 的效果。这些实验不仅展示了 NLRL 的性能优势,更重要的是证明了该框架在不同类型任务中的普适性和可扩展性。
迷宫导航 - 基于 prompt 的自然语言策略迭代
在复杂的迷宫导航任务中,研究团队测试了纯基于 prompt 的自然语言策略迭代算法。研究团队选择了两种具有挑战性的迷宫环境进行测试:双 T 型迷宫和中等复杂度迷宫。在这些环境中,智能体需要从随机初始位置导航到目标位置,同时避免撞墙。通过语言 TD 估计,在双 T 型迷宫中实现了 - 11.19±2.86 的平均奖励,远优于基线方法的 - 27.29±4.43。但 NLRL 真正的优势不仅仅体现在数字上。系统能够清晰地解释每个决策的原因,例如:“选择向南移动,因为:1)北边是死胡同,我们之前已经探索过 2)南向路径似乎更接近目标位置 3)即使这条路不是最优解,我们仍保留了向东撤退的选项。” 实验还发现,增加变化数量和前瞻步数能进一步提升性能。
突破棋 (Breakthrough)- 自然语言价值函数
在 5x5 突破棋(状态空间达 10^8)这个几乎没有人类数据的任务中,NLRL 纯依靠环境反馈训练出了高质量的语言评估器。通过混合不同水平的 MCTS 策略数据构建训练集,评估器达到了 0.85 的准确率,显著超越 LLAMA-3.1-70b 的 0.61 以及 GPT-4o 的 0.58。更重要的是,这个评估器能提供专业级别的局势分析。例如:“黑方略占优势,原因有三:1)在 d4 和 e4 形成了稳固的双兵链 2)白方右翼的兵形成了薄弱点 3)黑方的推进速度比白方快半步。建议白方通过 c3-c4 来争夺中心控制权。”
井字棋 - 自然语言 Actor-Critic
在井字棋环境中,团队实现了完整的语言 Actor-Critic 系统。通过动作选择掩码防止幻觉、经验缓冲区解决遗忘问题、持续的迭代优化等创新,系统在随机对手下实现 90% 以上胜率,面对确定性策略甚至能保持 100% 的胜率,同时保持决策过程的清晰可解释性。
点击访问我的技术博客https://ai.weoknow.com/
相关文章:
突破!自然语言强化学习(NLRL):一个可处理语言反馈的强化学习框架
本论文由伦敦大学学院、上海交通大学、布朗大学、布里斯托大学、新加坡国立大学以及萨里大学的研究者合作完成。 冯熙栋是论文第一作者,即将毕业于伦敦大学学院。目前是Google DeepMind的Research Scientist,主要研究方向包括强化学习与生成模型。刘博是…...
core Webapi jwt 认证
core cookie 验证 Web API Jwt 》》》》用户信息 namespace WebAPI001.Coms {public class Account{public string UserName { get; set; }public string UserPassword { get; set; }public string UserRole { get; set; }} }》》》获取jwt类 using Microsoft.AspNetCore.Mvc…...
【Springboot知识】springboot基础-事件
文章目录 简介一、事件类型二、事件处理机制三、自定义事件和监听器四、异步事件处理五、条件事件监听 如何使用1. 自定义事件2. 发布事件3. 监听事件4. 测试事件机制 ApplicationEventPublisher接口使用的设计模式 简介 在Spring Boot中,事件机制是一种基于观察者…...
经典视觉神经网络1 CNN
一、概述 输入的图像都很大,使用全连接网络的话,计算的代价较高,图像也很难保留原本特征。 卷积神经网络(Convolutional Neural Network,CNN)是一种专门用于处理具有网格状结构数据的深度学习模型。主要应用…...
解决跨域问题方案
跨域问题在前后端分离架构下尤为常见,是每个 Web 开发者都会遇到的核心问题。本文将通过原理解析、场景剖析、解决方案详解以及最佳实践等多个维度,帮助开发者全面理解并有效应对跨域问题。 目录 **一、跨域的本质****1. 同源策略****2. 同源策略的限制范…...
【python自动化五】接口自动化基础--requests的使用
python的接口请求可以用requests库,这个介绍就不多说了,网上说得很详细。 接下来直接记录下如何使用(当然也不限于自动化的使用) 1.安装requests requests也需要安装一下 pip install requests2.requests请求 1.常用的请求方法…...
文本三剑客——grep命令
介绍 作用 Linux grep (global regular expression) 命令用于查找文件里符合条件的字符串或正则表达式。 常用选项 -i:忽略大小写进行匹配。-v:反向查找,只打印不匹配的行。-n:显示匹配行的行号。-r:递归查找子目录…...
ASP 实例:深入解析与实战应用
ASP 实例:深入解析与实战应用 引言 ASP(Active Server Pages)是一种由微软开发的服务器端脚本环境,用于动态网页设计和开发。它允许开发者创建和运行动态交互性网页,如访问数据库、发送电子邮件等。本文将深入探讨AS…...
文件的操作
什么是文件 如何是数据持久化——保存在硬盘上(文件,数据库)磁盘上的文件是文件在程序设计中,我们一般谈的文件有两种:程序文件、数据文件程序文件,比如源文件(.c文件)读a文件写到b文件里,此时a…...
【简单谈谈UCIE PHY LSM链路训练】
UCIE PHY LSM链路训练 1 UCIE PHY LSM1.1 RESET1.2 SBINT1.3 MBINT1.3.1 MBINT.PARAM1.3.2 MBINIT.CAL1.3.3 MBINIT.REPAIRCLK1.3.4 MBINIT.REPAIRVAL1.3.5 MBINIT.REVERSALMB1.3.6 MBINIT.REPAIRMB 1.4 MBTRAIN1.5 LINKINIT1.6 ACTIVE1.7 L1/L21.8 PHY.RETRAIN1.9 TRAIN.ERROR…...
数学二常用公式(高等数学+线性代数)
目录 高等数学第一章 函数、极限和连续第二章 一元函数微分学第三章 一元函数积分学第四章 多元函数微分学第五章 多元函数积分学第六章 常微分方程 线性代数线性代数篇章涉及的知识内容及常用公式第一章 行列式第二章 矩阵第三章 向量第四章 线性方程组第五章 矩阵的相似化简第…...
【Java计算机毕业设计】Springboot+vue动物保护协会管理系统【源代码+数据库+LW文档+开题报告+答辩稿+部署教程+代码讲解】
源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储:…...
鸿蒙面试---1208
HarmonyOS 三大技术理念 分布式架构:HarmonyOS 的分布式架构使得设备之间能够无缝协同工作。例如,它允许用户在不同的智能设备(如手机、平板、智能手表等)之间共享数据和功能。比如,用户可以在手机上开始编辑文档&…...
【论文阅读】一名系统研究者的攀登之路
作者:陈海波 陈海波是操作系统、系统结构、并行与分布式系统方向大牛,上海交通大学大牛团队 学习体会: 计算机系统论文准备周期较长,十有八九都是在解决新问题的路上~ 因此学习大佬的学习经验,少踩坑,把主…...
MySQL 索引(B+树)详解
MySQL 索引(B树)详解 MySQL逻辑架构对比InnoDB与MyISAM存储结构存储空间可移植性、备份及恢复事务支持AUTO_INCREMENT表锁差异全文索引表主键表的具体行数CRUD操作外键 sql优化简介什么情况下进行sql优化sql语句执行过程sql优化就是优化索引 索引索引的优…...
【不稳定的BUG】__scrt_is_managed_app()中断
【不稳定的BUG】__scrt_is_managed_app函数中断 参考问题详细的情况临时解决方案 参考 发现出现同样问题的文章: 代码运行完所有功能,仍然会中断 问题详细的情况 if (!__scrt_is_managed_app())exit(main_result);这里触发了一个断点很奇怪,这中断就发生了一次,代…...
护网蓝队日志分析
Windows日志分析 一、事件查看器 在「事件查看器」中,可以查看系统中记录的所有事件日志。操作步骤如下: 1、打开 Windows 事件查看器 1、使用Windows R快捷键打开「运行」对话框,输入eventvwr.msc,然后按回车键打开事件查看…...
滤波器设计(八)-McClellan-Parks design algorithm
步骤 Initialization: Choose an extremal set of frequences {ωi(0)}.Finite Set Approximation: Calculate the best Chebyshev approximation on the present extremal set, giving a value δ(m) for the min-max error on the present extremal set.Interpolation: Calc…...
ElasticSearch常见的索引_集群的备份与恢复方案
方案一:使用Elasticsearch的快照和恢复功能进行备份和恢复。该方案适用于集群整体备份与迁移,包括全量、增量备份和恢复。 方案二:通过reindex操作在集群内或跨集群同步数据。该方案适用于相同集群但不同索引层面的迁移,或者跨集…...
C#对Excel表csv文件的读写操作
C#对Excel表csv文件的读写 一、变量定义二、加载主窗口三、创建表头四、向表中添加数据五、从表中读取数据六、单击按钮向表中添加数据七、测试验证 一、变量定义 #region 变量定义 private string CurAppExeDir System.AppDomain.CurrentDomain.BaseDirectory; private strin…...
【MySQL】mysql服务器架构
目录 1、背景2、mysql服务器架构解释3、总结 1、背景 简单理解一下mysql的服务器架构。 2、mysql服务器架构解释 mysql的架构图如下: 主要分为三部分:客户端、服务端、存储引擎。接下来我们来解释一下各个部分: 客户端 用来连接mysql服务…...
Vue Web开发(三)
1. 添加el-menu样式 将Home.vue文件重新命名为Main.vue文件,本节涉及新的home目录和User目录下的index.js文件,因为侧边导航栏Aside和顶部Header是在每一个页面都存在的,所以重新命名为Main,而home文件夹下的index.js则对应系统首…...
Java项目实战II基于微信小程序的小区租拼车管理信息系统 (开发文档+数据库+源码)
目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着城市化进程的加速,小区居民对于出行方…...
云安全:云计算安全
目录 云安全的定义和重要性 云安全的关键组成部分 云安全技术实现 云安全最佳实践 云安全的定义和重要性 云安全是指在云计算环境中保护数据、应用程序和相关服务不受威胁的一系列策略、技术和控制措施。随着云计算的快速发展,云安全已成为企业和个人用户最关心…...
git clone加速(亲测好用)
用公司网git clone特别卡,本以为宿舍网会好一点,回来下的时候也只有几十kb. 然后找到了一种方法,就是在原始下载命令前加一个gitclone 比如 git clone https://github.com/infiniflow/ragflow.git替换成 git clone https://gitclone.com/gi…...
Python 网络爬虫进阶:突破数据采集的边界
在成功踏入 Python 网络爬虫的入门之境后,我们犹如初窥宝藏的探险家,领略到了数据采集世界的奇妙与潜力。而此刻,进阶之路在脚下徐徐展开,它将引领我们深入这片领域的更深处,挖掘出更为强大和精妙的爬虫技艺࿰…...
【网络安全】网站常见安全漏洞 - 网站基本组成及漏洞定义
文章目录 引言1. 一个网站的基本构成2. 一些我们经常听到的安全事件3. 网站攻击者及其意图3.1 网站攻击者的类型3.2 攻击者的意图 4. 漏洞的分类4.1 按来源分类4.2 按危害分类4.3 常见漏洞与OWASP Top 10 引言 在当今的数字化时代,安全问题已成为技术领域不可忽视的…...
[论文解读]Street Gaussians: Modeling Dynamic Urban Scenes with Gaussian Splatting
Street Gaussians是年初的一篇动态场景重建论文, 在当时是做到了SOTA,至今为止很多自动驾驶或者动态场景重建的文章都会将Street Gaussians作为实验的比较对象,这也表明了这篇文章的重要性,今天就一起来看看这篇文章; …...
在Github上上传大文件的办法(图文版)
在上一篇笔记中,笔者用图文的形式介绍了如何在GITHUB中上传文件夹。 可参考这篇笔记 在GITHUB上传本地文件指南(详细图文版)-CSDN博客 但接下来,笔者在继续上传别的文件的过程中,遇到了新的问题,gitbash…...
关于springBoot+vue项目中配置SSL证书问题
前端可以通过https进行访问 1.前端在访问后端接口时,使用https进行访问,在request.js配置文件中,这个文件是配置axios的基本请求的,在基础请求地址中改为https方式 2.需要在Linux中的nginx中配置ssl证书,具体请参考&…...
GitLab
Git服务器 一、概念 C/S 架构的 Git 服务端是存放代码的公用平台是多人并行协作的核心部分通常单独部署在一台独立的服务器上客户端可以通过网络访问服务器上的仓库 GitLab搭建 一、部署 1、安装依赖包 [rootGitLab ~]# yum -y install policycoreutils-python-utils.noarc…...
TCP客户端服务器端通信(线程池版)
1、什么是监听套接字,和UDP相比,TCP为什么文件描述符变多了? 在网络编程中,TCP和UDP是两种常见的传输协议,它们之间最大的不同之一在于连接的管理方式。为了更好地理解这个区别,我们可以用一个生动的比喻来…...
go语言的成神之路-标准库篇-fmt标准库
目录 一、三种类型的输出 print: println: printf: 总结: 代码展示: 二、格式化占位符 %s:用于格式化字符串。 %d:用于格式化整数。 %f:用于格式化浮点数。 %v࿱…...
高级java每日一道面试题-2024年12月08日-JVM篇-什么是类加载器?
如果有遗漏,评论区告诉我进行补充 面试官: 什么是类加载器? 我回答: 在Java高级面试中,类加载器(ClassLoader)是一个重要的概念,它涉及到Java类的加载和初始化机制。以下是对类加载器的详细解释: 定义与作用 类加…...
数据库之连接池Druid
Druid是一个由阿里巴巴开源的高性能数据库连接池组件,它在许多项目中都是首选的连接池实现。Druid不仅提供了高效的连接管理,还具备丰富的监控和统计功能,以及强大的安全特性。 一、功能介绍 1、高效连接管理 Druid采用了高效的连接管理机…...
【如何审稿】Notes on Constructive and Positive Reviewing
学习体会: 用chatgpt翻译的2005年审稿人如何审稿的一篇文章, 学着用审稿人的角度评审自己写的稿件~ 全文摘录: 作为审稿人,您代表的是您的社区,您的审稿意见应当是专业和建设性的。会议的质量取决于审稿的质量。审稿人的任务是选出高质量、创…...
1.文本方块方法(Spacy Text Splitter 方法)Can‘t find model ‘zh_core_web_sm‘
一、概述 执行如下: def split_spacy(text):import spacynlp spacy.load( "zh_core_web_sm" ) doc nlp(text) for s in doc.sents: print(s) # d:\programdata\anaconda3\envs\python310\lib\site-packages if __name__"__main__":text &q…...
IT类项目实施流程
一、项目启动准备阶段 (一)甲方组建项目委员会 **甲方委员会确立:**指定负责人,全权负责整个项目人员、启动及时间调配、需求确定及需求变更、项目节点的验收、项目款项的支付工作。 (二) 乙方组建项目实施工作组 **乙方实施工作组确立:**工作组主要包括项目经理、需…...
数据分析平台业务落地痛点分析
在当今数字化时代,数据已成为企业决策和运营的核心驱动力。数据分析平台作为数据处理和洞察的重要工具,其业务落地过程中的痛点分析对于企业的数据战略至关重要。本文将通过概述、功能点、背景、业务点、底层原理等多个方面,深入剖析数据分析…...
java语言学习(5)
第九章 目录 类变量和类方法 理解main方法语法 代码块 单列设计模式 final关键字 抽象类 接口 类变量/静态变量 该变量最大的特点就是会被本类的所有对象实例共享,类变量可以通过类名来访问 分析代码,探讨内存的分配 class Child{private Str…...
基于SSM框架点餐管理系统(计算机毕业设计)论文,Java
系统合集跳转 源码获取链接 一、系统环境 运行环境: 最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 IDE环境: Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以 tomcat环境: Tomcat 7.x,8.x,9.x版本均可 操作系统…...
独家首发 | 基于 KAN、KAN卷积的轴承故障诊断模型
往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 基于FFT CNN - BiGRU-Attention 时域、频域特征注意力融合的轴承故障识别模型-CSDN博客 基于FFT CNN - Transformer 时域、频域特征融合的轴承故障识别模型-CSDN博客 P…...
nginx-proxy-manager初次登录502 bad gateway
nginx-proxy-manager初次登录502 bad gateway 按照官方docker-compose安装后,页面如下: 默认账户密码: adminexample.com/changeme点击sign in,提示Bad Gateway 打开调试 重装后依然如此,最后查阅githup issue 找到答案 https://github.com/NginxProxyManager/nginx-proxy-…...
棋牌项目Go的日志打印问题
棋牌项目Go的日志打印问题 项目使用 go work 管理模块 github.com/spf13/viper 通过 application.yml 加载配置 $ tree . ├── README.md ├── common │ ├── application.yml │ ├── config │ │ └── config.go │ ├── go.mod │ ├── go.su…...
基于SpringBoot校园台球厅人员与设备管理系统设计与实现
1.1课题背景与意义 在Internet高速发展的今天,计算机的应用几乎完全覆盖我们生活的各个领域,互联网在经济,生活等方面有着举足轻重的地位,成为人们资源共享,信息快速传递的重要渠道。在中国,网上管理的兴起…...
样品前处理工作站自动化操作
样品前处理工作站通过集成多种技术和自动化模块,实现了对样品的高效、精准处理。以下是实现自动化操作的关键步骤和原理: 1、集成多种技术:工作站通常集成了液体处理、固相萃取、离心、过滤等多种技术。这些技术的结合使得工作站能够完成从样…...
在 Vue 3 中实现点击按钮后禁止浏览器前进或后退
在 Vue 3 中实现点击按钮后禁止浏览器前进或后退,我们可以通过 ref 和 watch 来管理状态,同时使用 onBeforeUnmount 来清理事件监听。 使用 Vue 3 实现: <template><div><button click"disableNavigation">点击…...
【Redis集群】使用docker compose创建docker集群,并暴露外部接口
使用 Docker Compose 创建一个 Redis 集群并暴露外部接口需要配置 docker-compose.yml 文件。以下是一个基本的步骤,包括 Redis 集群的创建和外部接口的暴露。 1、创建 docker-compose.yml 首先,您需要创建一个 docker-compose.yml 文件,配…...
RabbitMq 基础
文章目录 一、初识 MQ1.1 同步调用:1.2 异步调用: 二、RabbitMQ三、SpringAMQP3.1 依赖和配置文件3.2 消息发送和接收:3.2.1 消息发送:3.2.2 消息接收: 3.3 WorkQueues 模型:3.4 交换机类型:3.4…...
类文件结构详解
一、引言 Java 类文件是 Java 虚拟机执行的基本单元。它包含了 Java 程序的字节码以及其他重要的元数据信息。了解类文件结构可以帮助我们更好地理解 Java 程序的编译过程、运行机制以及如何进行优化。 二、类文件结构概述 Java 类文件采用一种紧凑的二进制格式,主…...