【DeepSeek系列】04 DeepSeek-R1:带有冷启动的强化学习
文章目录
- 1、简介
- 2、主要改进点
- 3、两个重要观点
- 4、四阶段后训练详细步骤
- 4.1 冷启动
- 4.2 推理导向的强化学习
- 4.3 拒绝采样和有监督微调
- 4.4 针对所有场景的强化学习
- 5、蒸馏与强化学习对比
- 6、评估
- 6.1 DeepSeek-R1 评估
- 6.2 蒸馏模型评估
- 7、结论
- 8、局限性与未来方向
1、简介
DeepSeek-R1-Zero的提出,展现了其强大的推理能力,但是它也有一些缺点,例如可读性差和语言混用。为了解决这些问题并进一步提升推理性能,进一步推出了 DeepSeek-R1,它在 RL 之前引入了多阶段训练和冷启动数据。DeepSeek-R1 在推理任务上的表现与 OpenAI-o1-1217 相当。为了支持研究社区,团队开源了 DeepSeek-R1-Zero、DeepSeek-R1 以及基于 Qwen 和 Llama 从 DeepSeek-R1 蒸馏出的六个密集模型(1.5B、7B、8B、14B、32B、70B)。
2、主要改进点
DeepSeek-R1结合了少量冷启动数据和多阶段训练流程。具体而言:
- 首先收集数千条冷启动数据(长链式思考CoT示例)以微调 DeepSeek-V3-Base 模型。
- 随后,像 DeepSeek-R1-Zero 一样进行推理导向的 RL 训练。
- 在 RL 训练接近收敛时,通过拒绝采样在 RL 权重文件上生成新的 SFT 数据,并结合 DeepSeek-V3 在写作、事实问答和自我认知等领域的监督数据,然后重新训练 DeepSeek-V3-Base 模型。
- 经过新数据的微调后,模型权重会经历一个额外的 RL 过程,涵盖所有场景的提示。经过这些步骤,得到了一个称为 DeepSeek-R1 的模型,其表现与 OpenAI-o1-1217 相当。
团队进一步探索了从 DeepSeek-R1 到更小密集模型的知识蒸馏。使用 Qwen2.532B(Qwen, 2024b)作为基础模型,直接从 DeepSeek-R1 进行蒸馏的表现优于在其上应用 RL。这表明,大型基础模型发现的推理模式对于提升推理能力至关重要。团队开源了基于 Qwen 和 Llama(Dubey et al., 2024)系列的蒸馏模型。值得注意的是,蒸馏出的 14B 模型大幅超越了当前最先进的开源模型 QwQ-32B-Preview(Qwen, 2024a),而蒸馏出的 32B 和 70B 模型在密集模型的推理基准测试中创下了新的记录。
3、两个重要观点
后训练:在基础模型上进行大规模强化学习
- 直接在基础模型上应用 RL,而不依赖于有监督的微调(SFT)作为初步步骤。这种方法允许模型探索解决复杂问题的链式思考(CoT),从而开发出 DeepSeek-R1-Zero。DeepSeek-R1-Zero 展示了自我验证、反思和生成长链式思考的能力,这标志着研究社区的一个重要里程碑。值得注意的是,这是首次公开研究验证 LLMs 的推理能力可以通过纯 RL 激励,而无需 SFT。这一突破为该领域的未来发展铺平了道路。
- 介绍了开发 DeepSeek-R1 的流程。该流程包含两个 RL 阶段,旨在发现改进的推理模式并与人类偏好对齐,以及两个 SFT 阶段,作为模型推理和非推理能力的种子。我们相信这一流程将有助于行业开发更好的模型。
蒸馏:小模型也可以很强大
- 证明了大型模型的推理模式可以被蒸馏到小模型中,其表现优于通过在小模型上应用 RL 发现的推理模式。开源的 DeepSeek-R1 及其 API 将有助于研究社区在未来蒸馏出更好的小模型。
- 使用 DeepSeek-R1 生成的推理数据,我们微调了研究社区广泛使用的几种密集模型。评估结果表明,蒸馏后的小型密集模型在基准测试中表现出色。例如,DeepSeek-R1-Distill-Qwen-7B 在 AIME 2024 上达到了 55.5%,超过了 QwQ-32B-Preview。此外,DeepSeek-R1-Distill-Qwen-32B 在 AIME 2024 上达到了 72.6%,在 MATH-500 上达到了 94.3%,在 LiveCodeBench 上达到了 57.2%。这些结果显著优于之前的开源模型,并且与 o1-mini 相当。我们开源了基于 Qwen2.5 和 Llama3 系列的 1.5B、7B、8B、14B、32B 和 70B 检查点,供社区使用。
4、四阶段后训练详细步骤
受 DeepSeek-R1-Zero 令人鼓舞的结果启发,自然会提出两个问题:
- 1)通过引入少量高质量数据作为冷启动,是否可以进一步提升推理性能或加速收敛?
- 2)如何训练一个用户友好的模型,使其不仅能够生成清晰连贯的推理过程(Chain-of-Thought, CoT),还能展现出强大的通用能力?
为了解决这些问题,我们设计了训练 DeepSeek-R1 的流程。该流程包含四个阶段,具体如下。
4.1 冷启动
与 DeepSeek-R1-Zero 不同,为了避免从基础模型开始的 RL 训练在早期不稳定,DeepSeek-R1构建并收集了少量长链式思考(CoT)数据,用于微调模型作为初始的 RL 。为了收集这些数据,我们探索了多种方法:
- 使用长 CoT 示例作为少样本提示,直接提示模型生成带有反思和验证的详细答案,收集 DeepSeek-R1-Zero 输出并将其格式化为可读格式;
- 以及通过人类标注者对结果进行后处理以优化结果。
在本工作中,我们收集了数千条冷启动数据,用于微调 DeepSeek-V3-Base 作为 RL 的起点。与 DeepSeek-R1-Zero 相比,冷启动数据的优势包括:
- 可读性:DeepSeek-R1-Zero 的一个关键限制是其内容往往不适合阅读。回答可能会混用多种语言,或者缺乏用于突出显示答案的 Markdown 格式。相比之下,在为 DeepSeek-R1 创建冷启动数据时,我们设计了一种可读的模式,包括在每条回答的末尾添加总结,并过滤掉对读者不友好的回答。在这里,我们定义输出格式为 |特殊标记|<推理过程>|特殊标记|<总结>,其中推理过程是查询的 CoT,总结用于概括推理结果。
- 潜力:通过精心设计冷启动数据的模式并引入人类先验知识,我们观察到与 DeepSeek-R1-Zero 相比,模型表现更好。我们相信迭代训练是推理模型的更好方式。
4.2 推理导向的强化学习
在使用冷启动数据对 DeepSeek-V3-Base 进行微调后,我们应用了与 DeepSeek-R1-Zero 中相同的强化学习训练过程。这一阶段专注于提升模型在推理密集型任务(如编程、数学、科学和逻辑推理)中的推理能力,这些任务涉及定义明确且有明确答案的问题。
在训练过程中,我们观察到 CoT 经常出现语言混用,尤其是在涉及多种语言的 RL 提示时。为了缓解 CoT 中的语言混用问题,我们在 RL 训练中引入了语言一致性奖励,该奖励计算为 CoT 中目标语言单词的比例。尽管消融实验表明,这种对齐会导致模型性能略有下降,但这种奖励与人类偏好一致,使输出更具可读性。
最后,我们将推理任务的准确性奖励和语言一致性奖励直接相加,形成最终的奖励。然后我们在推理任务上对微调后的模型进行强化学习训练,直到模型收敛。
4.3 拒绝采样和有监督微调
当推理导向的强化学习收敛时,我们利用上述训练阶段得到的模型来收集下一轮的有监督微调(SFT)数据。与初始的冷启动数据(主要关注推理)不同,这一阶段结合了其他领域的数据,以增强模型在写作、角色扮演和其他通用任务中的能力。具体来说,我们按照以下方式生成数据并微调模型:
推理数据
- 我们策划了推理提示,并通过拒绝采样从上述强化学习训练阶段得到的模型生成推理轨迹。在前一阶段,我们仅包含可以使用基于规则的奖励进行评估的数据。然而,在这一阶段,我们通过扩展数据集,引入了一些额外的数据,其中一些使用生成式奖励模型,通过将真实答案和模型预测输入 DeepSeek-V3 进行判断。此外,由于模型输出有时会显得混乱且难以阅读,我们过滤掉了混用语言、长段落和代码块的 CoT。对于每个提示,我们采样多个回答,并仅保留正确的回答。总共收集了约 60 万条与推理相关的训练样本。
非推理数据
- 对于非推理数据(如写作、事实问答、自我认知和翻译),我们采用了 DeepSeek-V3 的流程,并重用了 DeepSeek-V3 SFT 数据集的部分内容。对于某些非推理任务,我们通过提示 DeepSeek-V3 生成潜在的 CoT,然后回答问题。然而,对于更简单的问题(如“你好”),我们不会提供 CoT 回答。最终,我们总共收集了约 20 万条与推理无关的训练样本。
我们使用上述策划的约 80 万样本数据集对 DeepSeek-V3-Base 进行了两个周期的微调。
4.4 针对所有场景的强化学习
为了进一步使模型与人类偏好对齐,我们实施了第二个强化学习阶段,旨在提升模型的有用性和无害性,同时优化其推理能力。具体来说,我们使用组合的奖励信号和多样化的提示分布来训练模型。
- 对于推理数据,我们遵循 DeepSeek-R1-Zero 中描述的方法,使用基于规则的奖励来指导数学、编程和逻辑推理领域的学习过程。
- 对于通用数据,我们则依赖于奖励模型来捕捉复杂且微妙场景中的人类偏好。我们基于 DeepSeek-V3 流程,采用了类似的偏好对和训练提示分布。
- 在有用性方面,我们仅关注最终总结,确保评估侧重于回答对用户的实用性和相关性,同时尽量减少对底层推理过程的干扰。
- 在无害性方面,我们评估模型的整个回答,包括推理过程和总结,以识别和减轻在生成过程中可能出现的任何潜在风险、偏见或有害内容。
最终,通过整合奖励信号和多样化的数据分布,我们训练出的模型不仅在推理方面表现出色,还优先考虑了有用性和无害性。
5、蒸馏与强化学习对比
作者在 Qwen-32B-Base 模型上进行了大规模强化学习训练,使用数学、编程和 STEM 相关数据,训练了超过 10,000 步,最终得到了 DeepSeek-R1-Zero-Qwen-32B。实验结果如表 6 所示,经过大规模强化学习训练的 32B 基础模型,其性能与 QwQ-32B-Preview 相当。然而,通过 DeepSeek-R1 蒸馏得到的 DeepSeek-R1-Distill-Qwen-32B 在所有基准测试中均显著优于 DeepSeek-R1-Zero-Qwen-32B。
因此,我们可以得出以下两个结论:
- 蒸馏的优势:将更强大的模型能力蒸馏到小型模型中能够取得优异的结果,而小型模型仅依靠本文提到的大规模强化学习,需要巨大的计算资源,并且可能无法达到蒸馏的效果。
- 超越的挑战:尽管蒸馏策略既经济又高效,但要突破智能的边界,可能仍需要更强大的基础模型和更大规模的强化学习
简而言之:小模型+蒸馏(使用DeepSeek-R1生成的数据)> 小模型 + 大规模强化学习训练的效果
6、评估
6.1 DeepSeek-R1 评估
表 4 展示了 DeepSeek-R1 与其他代表性模型在多个基准测试上的对比结果。在教育导向的知识基准测试(如 MMLU、MMLU-Pro 和 GPQA Diamond)中,DeepSeek-R1 相较于 DeepSeek-V3 展现出更优的性能。这一改进主要归因于在 STEM 相关问题上的准确率提升,而这些提升得益于大规模强化学习的应用。此外,DeepSeek-R1 在 FRAMES(一个依赖长文本上下文的问答任务)上表现出色,展现了其强大的文档分析能力。这突显了推理模型在 AI 驱动的搜索和数据分析任务中的潜力。在事实基准测试 SimpleQA 上,DeepSeek-R1 优于 DeepSeek-V3,显示出其处理基于事实查询的能力。在这一基准测试中,OpenAI-o1 同样超越了 GPT-4o。
然而,在中文 SimpleQA 基准测试中,DeepSeek-R1 的表现不如 DeepSeek-V3,主要原因在于经过安全性强化学习后,DeepSeek-R1 倾向于拒绝回答某些查询。在不进行安全性强化学习的情况下,DeepSeek-R1 的准确率可以超过 70%。
在 IF-Eval(一个用于评估模型遵循格式指令能力的基准测试)上,DeepSeek-R1 也取得了显著的成果。这些改进与在最终阶段的有监督微调(SFT)和强化学习训练中引入的指令遵循数据密切相关。此外,在 AlpacaEval 2.0 和 ArenaHard 上,DeepSeek-R1 的表现尤为突出,表明其在写作任务和开放域问答中的优势。其显著优于 DeepSeek-V3 的表现进一步证明了大规模强化学习的泛化优势,这不仅提升了推理能力,还改善了模型在多样化领域的表现。此外,DeepSeek-R1 生成的总结长度较为简洁,在 ArenaHard 上平均为 689 个标记,在 AlpacaEval 2.0 上为 2218 个字符。这表明 DeepSeek-R1 在基于 GPT 的评估中避免了引入长度偏差,进一步巩固了其在多任务中的稳健性。
在数学任务上,DeepSeek-R1 的表现与 OpenAI-o1-1217 相当,在多数基准测试中大幅领先于其他模型。在编程算法任务(如 LiveCodeBench 和 Codeforces)上,以推理为导向的模型主导了这些基准测试。在工程导向的编程任务上,OpenAI-o1-1217 在 Aider 上的表现优于 DeepSeek-R1,但在 SWE Verified 上表现相当。我们相信,随着相关强化学习训练数据量的增加,DeepSeek-R1 在工程任务上的表现将在下一个版本中得到提升,因为目前这一领域的数据量仍然非常有限。
6.2 蒸馏模型评估
如 表 5 所示,仅通过对 DeepSeek-R1 的输出进行蒸馏,高效的小型模型 DeepSeek-R1-7B(即 DeepSeek-R1-Distill-Qwen-7B,以下简写为类似形式)在各项指标上均优于不具推理能力的模型,例如 GPT-4o-0513。DeepSeek-R1-14B 在所有评估指标上均超越了 QwQ-32B-Preview,而 DeepSeek-R1-32B 和 DeepSeek-R1-70B 在大多数基准测试中显著优于 o1-mini。这些结果表明了蒸馏方法的强大潜力。此外,我们发现对这些蒸馏模型应用强化学习(RL)可以带来显著的进一步提升。我们相信这一方向值得进一步探索,因此在此仅展示了简单通过有监督微调(SFT)蒸馏的模型结果。
7、结论
在本研究中,我们分享了通过强化学习提升模型推理能力的探索过程。DeepSeek-R1-Zero 代表了一种纯粹的强化学习方法,不依赖于冷启动数据,却在各项任务中展现出强大的性能。而 DeepSeek-R1 更为强大,它借助冷启动数据以及迭代式的强化学习微调,最终在一系列任务上的表现与 OpenAI-o1-1217 相当。
我们进一步探索了将推理能力蒸馏到小型密集模型的可能性。我们以 DeepSeek-R1 作为教师模型,生成了 800K 条训练样本,并用于微调多个小型密集模型。结果令人鼓舞:例如,DeepSeek-R1-Distill-Qwen-1.5B 在数学基准测试 AIME 上达到了 28.9% 的准确率,在 MATH-500 上达到了 83.9% 的准确率,显著优于基于相同底层模型微调的其他指令模型。其他密集模型也在各项基准测试中取得了令人印象深刻的成绩,大幅超越了其他指令微调模型。
8、局限性与未来方向
在未来的研究中,计划在以下方向上投入更多精力:
- 通用能力提升:目前,DeepSeek-R1 在某些任务上的表现仍不如 DeepSeek-V3,例如函数调用、多轮对话、复杂角色扮演和 JSON 输出。未来,我们将探索如何利用长链式思考(CoT)来增强这些领域的表现。
- 语言混用问题:DeepSeek-R1 当前主要针对中文和英文进行了优化,这可能导致在处理其他语言的查询时出现语言混用问题。例如,即使查询语言不是中文或英文,DeepSeek-R1 也可能使用英文进行推理和回答。我们计划在未来版本中解决这一局限性。
- 提示工程:在评估 DeepSeek-R1 时,我们发现模型对提示非常敏感,少样本提示往往会降低其性能。因此,我们建议用户直接描述问题,并在零样本设置中指定输出格式,以获得最佳结果。
- 软件工程任务:由于长时评估会影响强化学习的效率,大规模强化学习尚未广泛应用于软件工程任务。因此,DeepSeek-R1 在软件工程基准测试上的表现尚未显著优于 DeepSeek-V3。未来版本将通过在软件工程数据上实施拒绝采样,或在强化学习过程中引入异步评估来提高效率,从而解决这一问题。
因本人水平有限,欢迎大家评论区批评指正!一起交流学习!
相关文章:
【DeepSeek系列】04 DeepSeek-R1:带有冷启动的强化学习
文章目录 1、简介2、主要改进点3、两个重要观点4、四阶段后训练详细步骤4.1 冷启动4.2 推理导向的强化学习4.3 拒绝采样和有监督微调4.4 针对所有场景的强化学习 5、蒸馏与强化学习对比6、评估6.1 DeepSeek-R1 评估6.2 蒸馏模型评估 7、结论8、局限性与未来方向 1、简介 DeepS…...
深入理解 Spring Bean 生命周期的执行流程
在 Java 开发领域,Spring 框架无疑是一颗璀璨的明星,它极大地简化了企业级应用的开发过程。而 Spring Bean 的生命周期,作为 Spring 框架的核心概念之一,对于理解 Spring 框架的运行机制和进行高效开发至关重要。本文将详细剖析 S…...
毕业设计—基于Spring Boot的社区居民健康管理平台的设计与实现
🎓 毕业设计大揭秘!想要源码和文章?快来私信我吧! Hey小伙伴们~ 👋 毕业季又来啦!是不是都在为毕业设计忙得团团转呢?🤔 别担心,我这里有个小小的福利要分享给你们哦&…...
捷米特 JM - RTU - TCP 网关应用 F - net 协议转 Modbus TCP 实现电脑控制流量计
一、项目背景 在某工业生产园区的供水系统中,为了精确监测和控制各个生产环节的用水流量,需要对分布在不同区域的多个流量计进行集中管理。这些流量计原本采用 F - net 协议进行数据传输,但园区的监控系统基于 Modbus TCP 协议进行数据交互&…...
深入解析 iOS 视频录制(三):完整录制流程的实现与整合
深入解析 iOS 视频录制(一):录制管理核心MWRecordingController 类的设计与实现 深入解析iOS视频录制(二):自定义UI的实现 深入解析 iOS 视频录制(三):完…...
Python基于Flask的豆瓣Top250电影数据可视化分析与评分预测系统(附源码,技术说明)
博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇dz…...
AStar低代码平台RpcServiceBase的应用:客户端事务管理
由于AStar平台是基于RPC协议与AStar后端服务进行通讯,而又非常接近常规BS的编码方式,直接写SQL即可对数据库进行操作,那么如果有若干个访问需要在同一事务中进行的,如何处理?比如先生成临时表,再对临时表进…...
Postman如何流畅使用DeepSeek
上次写了一篇文章是用chatBox调用api的方式使用DeepSeek,但是实际只能请求少数几次就不再能给回响应。这回我干脆用最原生的方法Postman调用接口请求好了。 1. 通过下载安装Postman软件 postman下载(https://pan.quark.cn/s/c8d1c7d526f3),包含7.0和10…...
RocketMQ - 常见问题
RocketMQ常见问题 文章目录 RocketMQ常见问题一:消息幂等问题1:什么是消费幂等2:消息重复的场景分析2.1:发送时消息重复2.2:消费时消息重复2.3:Rebalance时消息重复 3:通用解决方案3.1ÿ…...
YOLOv12推理详解及部署实现
目录 前言一、YOLOv12推理(Python)1. YOLOv12预测2. YOLOv12预处理3. YOLOv12后处理4. YOLOv12推理 二、YOLOv12推理(C)1. ONNX导出2. YOLOv12预处理3. YOLOv12后处理4. YOLOv12推理 三、YOLOv12部署1. 源码下载2. 环境配置2.1 配置CMakeLists.txt2.2 配置Makefile 3. ONNX导出…...
docker 安装的open-webui链接ollama出现网络错误
# 故事背景 部署完ollama以后,使用谷歌浏览器的插件Page Assist - 本地 AI 模型的 Web UI 可以比较流畅的使用DeepSeek,但是只局限于个人使用,想分享给更多的小伙伴使用,于是打算使用open-webui 来管理用户,经官网推荐…...
【大模型】DeepSeek 的人工智能发展之路
【大模型】DeepSeek 的人工智能发展之路 初出茅庐:成立与奠基(2023 年)崭露头角:大模型的初步发布(2024 年)首个大模型 DeepSeek LLM 发布(2024 年 1 月 5 日)开源第二代 MoE 大模型…...
关于Unity的一些基础知识点汇总
1.Prefab实例化后,哪些资源是共用的?哪些资源是拷贝的? 共用资源 脚本组件:实例化后的 Prefab 共享脚本组件的代码。若脚本中无状态数据,多个实例对脚本方法的调用会有相同逻辑。比如一个控制物体移动的脚本࿰…...
Java 大视界 -- 企业数字化转型中的 Java 大数据战略与实践(93)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
Compose常用UI组件
Compose常用UI组件 概述Modifier 修饰符常用Modifier修饰符作用域限定Modifier Modifier 实现原理Modifier.Element链的构建链的解析 常用基础组件文字组件图片组件按钮组件选择器对话框进度条 常用布局组件线性布局帧布局 列表组件 概述 Compose 预置了很多基础组件ÿ…...
【EndNote】WPS 导入EndNote 21
写在前面:有没有人有激活码,跪求! EndNote,在文献管理和文献引用方面很好用。写文章的时候,使用EndNote引入需要的文献会很方便。我目前用的WPS,想把EndNote的CWYW(Cite While You Write&#…...
【Spring详解三】默认标签的解析
三、默认标签的解析 Spring的标签中有 默认标签和 自定义标签,两者的解析有着很大的不同,这次重点说默认标签的解析过程。 DefaultBeanDefinitionDocumentReader.class 默认标签的解析是在 DefaultBeanDefinitionDocumentReader.parseDefaultElement()函…...
leetcode 2585. 获得分数的方法数
题目如下 数据范围 莫要被困难的外衣骗了,本题就是有数量限制的完全背包问题。显然我们可以令 f(x,y)为当有x种题目时分数为y时的方法数 令某种题目的数量为k 那么方法数应该是 f(x,y) f(x - 1,y - k * (分值))其中(0 < k < 题目数量)通过代码 class So…...
Java Spring boot 篇:常用注解
Configuration 作用 Configuration 注解的核心作用是把一个类标记为 Spring 应用上下文里的配置类。配置类就像一个 Java 版的 XML 配置文件,能够在其中定义 Bean 定义和 Bean 之间的依赖关系。当 Spring 容器启动时,会扫描这些配置类,解析其…...
检索增强生成(RAG)技术应用方案设计
检索增强生成(RAG)技术应用方案设计 目录 引言背景分析核心技术原理应用领域与案例分析设计方案 5.1 设计目标5.2 技术路线5.3 实施步骤 风险评估与应对措施预期效果与长远展望总结 1. 引言 随着人工智能技术的飞速发展,大型语言模型&…...
【JavaEE进阶】数据库连接池
目录 🌴数据库连接池 🎋数据库连接池的使用 🌲MySQL企业开发规范 🌴数据库连接池 数据库连接池负责分配、管理和释放数据库连接,它允许应⽤程序重复使⽤⼀个现有的数据库连接,⽽不是再重新建⽴⼀个. 没…...
意图识别概述
在当今的人工智能领域,意图识别技术是自然语言处理(NLP)中的一个重要分支,它使得机器能够理解人类语言背后的目的或意图。对于鸿蒙操作系统而言,掌握意图识别技术可以极大地提升用户体验,使设备能更好地响应…...
istio实现灰度发布,A/B发布, Kiali网格可视化(二)
代码发布是软件开发生命周期中的一个重要环节,确保新功能和修复能够顺利上线。以下是几种常见的代码发布流程。在学习灰度发布之前。我们首先回忆下代码发布常用的几种方法。 A/B(蓝绿)发布: 蓝绿部署是一种通过维护两套独立的环…...
python-leetcode 36.二叉树的最大深度
题目: 给定一个二叉树root,返回其最大深度 二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数 方法一:深度优先搜索 知道了左子树和右子树的最大深度l和r,那么该二叉树的最大深度即为:max(l,r)1 而左子树和右子树的最大深…...
在 Ubuntu 22.04 中修改主机名称(hostname)
在 Ubuntu 22.04 中修改主机名称(hostname)可以通过以下两种方法实现,一种是临时修改(重启后失效),另一种是永久修改。以下是详细步骤: 方法 1:使用 hostnamectl 永久修改 查看当前主…...
解锁机器学习核心算法 | 随机森林算法:机器学习的超强武器
一、引言 在机器学习的广阔领域中,算法的选择犹如为一场冒险挑选趁手的武器,至关重要。面对海量的数据和复杂的任务,合适的算法能够化繁为简,精准地挖掘出数据背后隐藏的模式与价值。机器学习领域有十大核心算法,而随…...
JAVA学习第五天
接口的变量定义固定为静态变量 接口里面只能有抽象方法,且不能有构造方法 如果不重写tostring方法,会打印没有价值的信息...
【CUDA 】第4章 全局内存——4.4 核函数可达到的带宽(4对角转置)
CUDA C编程笔记 第四章 全局内存4.4 核函数可达到的带宽4.4.2.4 对角转置【让DRAM访问更均匀,提高性能】 待解决的问题: 第四章 全局内存 4.4 核函数可达到的带宽 4.4.2.4 对角转置【让DRAM访问更均匀,提高性能】 前置条件场景࿱…...
深入理解 lua_KFunction 和 lua_CFunction
在 Lua C API 中,lua_KFunction 和 lua_CFunction 是两个核心概念,尤其在处理协程和 C 函数扩展时扮演着至关重要的角色。lua_CFunction 作为一种 C 函数类型,允许开发者将 C 函数注册到 Lua 环境中,使得这些 C 函数可以在 Lua 脚本中被调用,进而实现 Lua 的功能扩展。而 …...
Nacos Derby 远程命令执行漏洞修复建议
由于Nacos < 2.4.0 BETA 存在 Derby 远程命令执行漏洞,恶意攻击者利用此漏洞可以未授权执行SQL语句,最终导致任意代码执行。目前该漏洞PoC和技术细节已在互联网上公开。 一、漏洞情况分析 Nacos 是一个功能强大的服务注册与发现、配置管理平台&#…...
MySQL(1)基础篇
执行一条 select 语句,期间发生了什么? | 小林coding 目录 1、连接MySQL服务器 2、查询缓存 3、解析SQL语句 4、执行SQL语句 5、MySQL一行记录的存储结构 Server 层负责建立连接、分析和执行 SQL存储引擎层负责数据的存储和提取。支持InnoDB、MyIS…...
java每日精进 2.13 MySql迁移人大金仓
1.迁移数据库 1. 数据库创建语句 MySQL: CREATE DATABASE dbname; 人大金仓(Kingbase): 在人大金仓中,CREATE DATABASE 的语法通常相同,但可能需要特别注意字符集的指定(如果涉及到多语言支持…...
Java开发实习面试笔试题(含答案)
在广州一家中大公司面试(BOSS标注是1000-9999人,薪资2-3k),招聘上写着Java开发,基本没有标注前端要求,但是到场知道是前后端分离人不分离。开始先让你做笔试(12道问答4道SQL题)&…...
C语言流程控制学习笔记
1. 顺序结构 顺序结构是程序中最基本的控制结构,代码按从上到下的顺序依次执行。大多数C语言程序都是由顺序结构组成的。 2. 选择结构 选择结构根据条件的真假来决定执行哪一段代码。在C语言中,选择结构主要有以下几种: 2.1 if 语句 if语…...
解析DrugBank数据库数据|Python
一、DrugBank 数据库简介 DrugBank 是一个综合性的生物信息学和化学信息学数据库,专门收录药物和靶点的详细信息。它由加拿大阿尔伯塔大学的 Wishart 研究组 维护,提供化学、药理学、相互作用、代谢、靶点等多方面的药物数据。DrugBank 结合了实验数据和…...
排序算法:冒泡排序
冒泡排序标准代码(C语言) c复制代码 #include <stdio.h>// 冒泡排序函数 void bubbleSort(int arr[], int n) {// 外层循环:控制排序轮数for (int i 0; i < n - 1; i) {// 内层循环:控制每轮比较次数for (int j 0; j…...
网络爬虫学习:借助DeepSeek完善爬虫软件,实现模拟鼠标右键点击,将链接另存为本地文件
一、前言 最近几个月里,我一直在学习网络爬虫方面的知识,每有收获都会将所得整理成文发布,不知不觉已经发了7篇日志了: 网络爬虫学习:从百度搜索结果抓取标题、链接、内容,并保存到xlsx文件中 网络爬虫学…...
[原创](Modern C++)现代C++的关键性概念: 妙用std::reference_wrapper, 让std::list容器具有随机访问功能.
[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse…...
智享AI直播三代系统,马斯克旗下AI人工智能直播工具,媲美DeepSeek!
智享AI直播三代系统,马斯克旗下AI人工智能直播工具,媲美DeepSeek! 在科技飞速发展的当下,人工智能正以前所未有的态势重塑着各个行业的格局。直播领域,作为信息传播与商业交互的前沿阵地,也在AI技术的赋能下迎来了颠覆…...
2.19学习记录
Web easyupload3.0 这是一道构造.htaccess文件的传马 如下: <FilesMatch "jpg">SetHandler application/x-httpd-php </FilesMatch>.htaccess文件可以作为一个解释器,可以将传进去的图片马改为php马上传之后再传个图片马&#…...
RT-Thread+STM32L475VET6实现呼吸灯
文章目录 前言一、板载资源资源说明二、具体步骤1.新建rt_thread项目2. 打开PWM设备驱动3. 在Stm32CubeMX配置定时器3.1打开Stm32CubeMX3.2 使用外部高速时钟,并修改时钟树3.3打开定时器1,并配置通道一为PWM输出模式(定时器根据自己需求调整)3.4 打开串口…...
SpringBoot 项目配置动态数据源
目录 一、前言二、操作1、引入依赖2、配置默认数据库 13、定义数据源实体和 Repository4、定义动态数据源5、配置数据源6、定义切换数据源注解7、定义切面类8、使用注解切换数据源 一、前言 通过切面注解方式根据不同业务动态切换数据库 二、操作 1、引入依赖 <dependen…...
动态订阅kafka mq实现(消费者组动态上下线)
和上篇文章 动态订阅rocket mq实现(消费者组动态上下线) 目的一致,直接上代码 /*** Kafka topic container集合*/private static final Map<String, ConcurrentMessageListenerContainer<String, String>> topics new HashMap<>();public void r…...
Coze扣子怎么使用更强大doubao1.5模型
最近,豆包刚刚发布了最新的doubao1.5系列模型,并且加量不加价。 在性能极大进步的情况下,价格还与之前一致。真是业界良心了。 在同样的价格下,肯定要使用性能更强大的模型嘛 于是我准备把所有的智能体和工作流切换到doubao1.5…...
Zookeeper 和 Redis 哪种更好?
目录 前言 : 什么是Zookeeper 和 Redis ? 1. 核心定位与功能 2. 关键差异点 (1) 一致性模型 (2) 性能 (3) 数据容量 (4) 高可用性 3. 适用场景 使用 Zookeeper 的场景 使用 Redis 的场景 4. 替代方案 5. 如何选择? 6. 常见误区 7. 总结 前言…...
22.4.3.2 TCP/UDP连接信息
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 通过IPGlobalProperties的方法可以获得有关TCP和UDP连接的信息: GetActiveTcpConnections方法获得所有的TCP连接的信息…...
【Node.js】express框架
目录 1初识express框架 2 初步使用 2.1 安装 2.2 创建基本的Web服务器 2.3 监听方法 2.3.1 监听get请求 2.3.2 监听post请求 2.4 响应客户端 2.5 获取url中的参数(get) 2.5.1 获取查询参数 2.5.2 获取动态参数 2.6 托管静态资源 2.6.1 挂载路径前缀 2.6.2 托管多…...
拦截器VS过滤器:Spring Boot中请求处理的艺术!
目录 一、拦截器(Interceptor)和过滤器(Filter):都是“守门员”!二、如何实现拦截器和过滤器?三、拦截器和过滤器的区别四、执行顺序五、真实的应用场景六、总结 🌟如果喜欢作者的讲…...
分布式架构与XXL-JOB
目录 先了解什么是任务调度? 什么是分布式任务调度? 了解XXL-JOB分布式任务调度平台 如何搭建XXL-JOB? 分片广播 作业分片方案 最近学习在项目的媒资管理模块如何高效处理大量视频,上传单个视频可能涉及到转码,…...
6121A 音频分析仪
6121A 音频分析仪 音频信号产生 音频信号分析 国产 6121A是具有音频信号产生和音频信号分析功能的测试仪器,适用于语音性能测试和音频功放测试等领域,满足电台、移动通信、音响设备和水声通信设备对频响、谐波失真和信噪比等指标的测试需求ÿ…...