大模型监督微调(SFT)技术解析
大模型监督微调(SFT
)技术深度解析
一、基本知识介绍
监督微调(Supervised Fine-Tuning
)是连接预训练与具体应用的关键技术层。其本质是通过特定任务的标注数据,在保持预训练模型核心能力的前提下,调整模型参数使其适应目标领域的分布特征。从信息论视角看,SFT实质是通过有监督信号压缩模型输出的熵空间,引导其聚焦于特定响应模式。
核心理论框架
1. 语义空间重构
-
Special Token
机制:通过引入对话角色标识符(如[USER]/[BOT
])和知识标记符,重构模型的语义解析空间 -
注意力权重再分配:微调过程实质是对各
Transformer
层中注意力头权重的定向调整 -
知识激发原理:基于梯度信号强化预训练阶段习得的相关知识节点间的连接权重
2. 训练动力学特性
-
灾难性遗忘边界:存在临界学习率
η_c
,当η>η_c
时预训练知识快速衰减 -
多任务博弈平衡:各任务梯度方向夹角
θ
与数据占比呈反相关(cosθ∝1/p_i
) -
响应模式收敛:通过KL散度约束确保输出分布稳定在人类可接受区间
关键优势与局限
优势维度
-
计算效率:相比预训练降低3个数量级的算力需求
-
领域适应:在医疗/法律等专业领域可使准确率提升40-60%
-
格式控制:响应结构标准差降低至0.7以下(原始模型约2.3)
固有局限
-
知识注入瓶颈:新知识记忆效率<3%(对比预训练阶段的85%)
-
任务干扰现象:当任务数N≥5时,任务间负迁移概率超65%
-
幻觉放大风险:错误标注数据可能使幻觉率提升2-4倍
典型应用场景
1. 垂直领域适配
-
医疗诊断场景:通过症状-诊断对数据微调,提升
ICD
编码准确率 -
金融合规场景:强化监管话术模板的响应稳定性
2. 交互模式塑形
-
客服对话流:将多轮对话轨迹编码为状态转移矩阵
-
代码生成:约束输出符合
AST
(抽象语法树)规范
3. 安全边界控制
-
价值观对齐:构建拒绝响应模板库
-
事实核查:建立可信知识检索索引
前沿发展方向
1. 动态微调架构
-
SortedNet
范式:通过嵌套子模型实现动态计算分配 -
MoE-SFT
:专家混合架构下的任务路由机制
2. 数据效用优化
-
IFD
准则:基于互信息的数据筛选框架 -
LESS
算法:通过潜在空间聚类实现数据蒸馏
3. 对齐理论突破
-
AfD
框架:基于示教对齐的逆向强化学习 -
C-RLFT
架构:条件化奖励建模实现混合数据利用
实践启示
在具体实施中需注意:训练数据质量应满足QCD
准则(Quality≥0.85, Coverage≥3σ, Diversity≥0.6
),学习率建议采用余弦退火配合周期性重启策略,模型评估需同时关注Path@1和Path@10指标差异。当观察到任务干扰系数β>0.4时,建议采用多模型集成或引入任务特定适配器。
理论研究表明,SFT
的终极效能受限于预训练阶段构建的假设空间。未来的突破方向可能在于构建预训练-SFT的联合优化框架,以及发展基于认知科学的渐进式微调理论。
二、技术本质与理论定位的深化认知
2.1 监督微调的技术定位
监督微调(Supervised Fine-Tuning
)处于大模型技术栈的中间层,承担着通用能力向专用能力转化的关键职能。从技术演进视角看,其发展经历了三个阶段:
- 参数冻结阶段(2018-2020):仅调整分类器层参数,冻结底层
Transformer
参数 - 分层解冻阶段(2021-2022):采用渐进式解冻策略,按网络深度分阶段开放参数更新
- 动态路由阶段(2023至今):基于门控机制动态选择参与微调的参数子集
2.2 信息论视角的再诠释
在香农信息论框架下,SFT可建模为信道编码优化过程:
H(Y|X) = H(Y) - I(X;Y)
其中:
H(Y|X)
表示模型的条件熵I(X;Y)
为输入输出的互信息
微调过程实质是通过标注数据约束,将互信息I(X;Y)
提升约2-3个数量级
2.3 知识蒸馏的双向流动
与传统知识蒸馏不同,SFT
中的知识流动呈现双向特征:
- 显性知识传递:通过Loss函数直接约束输出分布
- 隐性知识激活:利用预训练阶段形成的潜在知识关联
实验数据显示,7B参数模型经过SFT后,知识节点激活率从预训练阶段的32%提升至68%
三、核心理论框架的体系化构建
3.1 语义空间重构机制
3.1.1 Special Token动力学
对话角色标识符的引入改变了位置编码的效用函数:
E_pos' = E_pos + W_r * E_role
其中W_r
为可学习的角色权重矩阵。当处理医疗对话时,[DOCTOR]
标记可使相关领域术语的激活概率提升47%
3.1.2 注意力重分配理论
在微调过程中,各Transformer
层的注意力模式发生定向偏移:
- 底层(1-6层):注意力聚焦领域相关词汇
- 中层(7-18层):建立任务逻辑关联
- 高层(19-24层):优化输出生成策略
实验显示第12层注意力头的方差值下降至预训练阶段的1/5
3.2 训练动力学深度解析
3.2.1 遗忘临界点公式
通过二阶导数分析可得临界学习率公式:
η_c = (2λ)/(σ_max^2 * ||▽L||)
其中λ
为正则化系数,σ_max
为Hessian
矩阵最大特征值。当学习率超过η_c
时,预训练知识遗忘速率呈指数增长
3.2.2 多任务博弈方程
定义任务梯度方向向量g_i
,任务间冲突系数:
β = (1/N^2)Σ_{i≠j}(1 - cosθ_{ij})
当β>0.4
时建议采用分层优化策略。实际应用中,法律文本微调时β
值常达到0.6-0.8
四、优势局限的量化分析
4.1 计算效率的突破性提升
对比实验数据(基于LLAMA2-13B
):
指标 | 预训练 | SFT |
---|---|---|
GPU小时 | 12,000 | 40 |
能耗(kW·h) | 9,600 | 32 |
CO2排放(kg) | 4,800 | 16 |
4.2 知识注入瓶颈的成因
记忆效率公式揭示根本限制:
ME = (I(X;Y)_SFT - I(X;Y)_PT)/H(Y)
其中PT
表示预训练阶段。当领域知识复杂度超过预训练覆盖范围时,ME
值将快速衰减
五、应用场景的工程实现
5.1 医疗诊断系统的构建
典型实现架构:
class MedicalSFT(nn.Module):def __init__(self, base_model):super().__init__()self.encoder = base_modelself.diagnosis_head = nn.Linear(768, 5000) # ICD-11编码def forward(self, input_ids):hidden_states = self.encoder(input_ids)[0]logits = self.diagnosis_head(hidden_states[:,0,:])return logits
关键参数配置:
- 学习率:3e-5(底层),1e-4(诊断头)
- 批尺寸:16(受限于医疗数据长度)
- 正则化:Dropout 0.3 + L2 1e-4
5.2 安全对齐的实现路径
价值观对齐的三层防御体系:
- 语义防火墙:实时检测违规词频
- 知识验证器:交叉核对权威数据库
- 逻辑校验器:验证推理链合理性
六、前沿方向的系统化突破
6.1 动态微调架构创新
6.1.1 SortedNet
实现原理
该架构可使计算消耗降低40%,同时保持97%的模型性能
6.2 数据效用的理论突破
IFD
(互信息筛选)准则的数学表达:
max Σ_{x∈D} I(y;x) - λH(x|y)
通过求解该优化问题,可筛选出信息增益最大的top-K
样本
七、工程实践的黄金法则
7.1 数据质量的QCD
三角
三维评估体系:
- 质量(
Quality
):标注一致性>0.9 - 覆盖(
Coverage
):关键场景覆盖率>95% - 多样性(
Diversity
):熵值>4.2 bits
7.2 学习率调度策略
推荐采用CLR
(周期性线性变化)策略:
η_t = η_min + 0.5*(η_max - η_min)(1 + cos(T_cur/T * π))
实验表明该策略可使收敛速度提升2倍
八、未来发展路径展望
8.1 预训练-SFT联合优化
提出新型JOSS
(Joint Optimization of Supervised and Self-supervised
)框架:
- 共享底层编码器
- 动态分配训练信号
- 混合损失函数设计
8.2 神经符号融合架构
结合符号逻辑的Hybrid-SFT
架构:
生成过程 = 神经生成 + 符号约束↓SAT求解器验证↓修正重生成
该架构在代码生成任务中将语法错误率从12%降至0.7%
九、结语:通向通用智能的必由之路
监督微调技术正在经历从"精调工具"到"认知引擎"的范式转变。未来五年,随着自适应微调(Adaptive SFT
)和元微调(Meta-SFT
)技术的发展,我们有望看到大模型在保持通用性的同时,获得与人类专家相媲美的领域专精能力。这要求研究者深入理解语言模型的认知架构,在保持模型可解释性的前提下突破现有技术边界。
相关文章:
大模型监督微调(SFT)技术解析
大模型监督微调(SFT)技术深度解析 一、基本知识介绍 监督微调(Supervised Fine-Tuning)是连接预训练与具体应用的关键技术层。其本质是通过特定任务的标注数据,在保持预训练模型核心能力的前提下,调整模型…...
PTA: 有序顺序表的合并
请设计一个能够将有序顺序表LA,LB进行合并的算法,要求合并后的顺序表LC依然有序。 例如: LA的元素 1 3 5 7 LB的元素 2 4 LC的元素 1 2 3 4 5 7 其中,LA和LB的长度不超过1000,当中的元素为非递减排序。 输入格式: 第…...
Vuetify解决与旧版浏览器(如Internet Explorer 11)的兼容性问题
简介 由于Vuetify使用了ES2015/2017的特性,这些特性在旧版浏览器中可能不被支持,因此需要通过配置来确保这些特性能够被正确转换。 配置1 在项目项目根目录下的vue.config.js文件,或nuxt.config.ts中,添加 transpileDependencies …...
android,flutter 混合开发,pigeon通信,传参
文章目录 app效果native和flutter通信的基础知识1. 编解码器 一致性和完整性,安全性,性能优化2. android代码3. dart代码 1. 创建flutter_module2.修改 Android 项目的 settings.gradle,添加 Flutter module3. 在 Android app 的 build.gradl…...
Shell文档归档、压缩与解压
Shell文档归档、压缩与解压 1、文件归档与压缩2、zip、gzip与tar指令2.1、zip指令2.2、gzip指令2.3、tar指令 1、文件归档与压缩 归档文件是指将一组文件或目录保存到一个文件中;压缩文件是指将一组文件或目录按照某种存储格式保存到一个文件中,所占磁盘…...
【Bluedroid】AVRCP 连接源码分析(一)
一、AVRCP协议简介 AVRCP(Audio/Video Remote Control Profile)是蓝牙协议栈中的一个重要部分,它定义了蓝牙设备之间的音视频传输控制的流程和特点。AVRCP使得用户可以通过一个蓝牙设备(如手机)远程控制另一个蓝牙设备(如蓝牙耳机或音箱)上的音视频播放,如播放、暂停、…...
CMake入门
1.什么是CMake Makefile想必大家都不陌生吧,它能够解决我们的自动化编译问题,大多是IDE软件都集成了make,譬如 Visual C的 nmake、linux 下的 GNU make、Qt 的 qmake 等等。 不同的IDE所集成的make工具所遵循的规范和标准都不同,也…...
基于vite6创建项目
pnpm create vue vite已自动配置路径,在.config.js jsconfig.json 中 按需引用element-plus 官网中有 pnpm install element-plus npm install -D unplugin-vue-components unplugin-auto-import // vite.config.ts import { defineConfig } from vite import Aut…...
简单封装一个websocket构造函数
问题描述 最近维护一个老项目,发现项目中有大量重复代码,特别是websocket的调用这一块,同样的代码复制了十几个页面,于是自己封装了一个websocket调用的构造函数。 export default class CreateWebSocket {constructor(url) {//…...
大模型产品Deepseek(八)、数据嵌入+知识库管理+联网搜索,实现精准的知识查询
如何将数据嵌入到DeepSeek中以实现精准的知识查询 1. 目标 DeepSeek是一个强大的基于大模型的知识查询工具,能够通过数据嵌入和智能查询功能提供精确的答案。本文将详细介绍如何在DeepSeek中进行数据嵌入,以便最大化其在实际应用中的价值。 2. 推荐使用的Page Assist插件 …...
探索Vue:数字翻滚动画的实现与优化
在前端开发中,动画效果总能为用户界面增添一抹生动与趣味。今天,我们将深入剖析一个基于Vue 3实现的数字翻滚动画组件,从代码结构到功能实现,再到性能优化,一步步揭开它的神秘面纱。 组件概述 这个Vue组件名为Number…...
POI pptx转图片
前言 ppt页面预览一直是个问题,office本身虽然有预览功能但是收费,一些开源的项目的预览又不太好用,例如开源的:kkfileview pptx转图片 1. 引入pom依赖 我这个项目比较老,使用版本较旧 <dependency><gro…...
力扣LeetCode: 2506 统计相似字符串对的数目
题目: 给你一个下标从 0 开始的字符串数组 words 。 如果两个字符串由相同的字符组成,则认为这两个字符串 相似 。 例如,"abca" 和 "cba" 相似,因为它们都由字符 a、b、c 组成。然而,"aba…...
DeepSeek模型量化
技术背景 大语言模型(Large Language Model,LLM),可以通过量化(Quantization)操作来节约内存/显存的使用,并且降低了通讯开销,进而达到加速模型推理的效果。常见的就是把Float16的浮…...
如何调整CAN位宽容忍度?
CAN位宽容忍度是指在控制器局域网络(CAN, Controller Area Network)中允许时钟同步的误差范围。这是CAN网络正常通信时的关键因素之一,因为CAN协议依赖位同步来确保多个节点在总线上正确解码数据。CAN位宽容忍度确保节点之间由于时钟偏差或抖…...
Versal - 基础6(Linux 开发 AIE-ML + 自动化脚本解析)
目录 1. 简介 2. 步骤解析 2.1 概览 2.1.1 步骤依赖关系 2.1.2 总目录结构 2.2 Vitis XPFM 2.2.1 Dir 2.2.2 Makefile 2.2.3 vitis_pfm.py 2.3 Kernels 2.3.1 Dir 2.3.2 Makefile 2.3.3 config 文件 2.4 AIE_app 2.4.1 Dir 2.4.2 Makefile 2.4.3 aie 要点 2.…...
乐享数科:供应链金融—三个不同阶段的融资模式
供应链金融是与产业链紧密结合的融资模式,它主要体现在订单采购、存货保管、销售回款这三个不同的业务阶段,并针对这些阶段提供了相应的金融服务。以下是这三个阶段中主要的融资模式及其特点: 供应链金融融资模式主要分为以下几种࿱…...
vmware虚拟机Ubuntu Desktop系统怎么和我的电脑相互复制文件、内容
1、先安装vmware workstation 17 player,然后再安装Ubuntu Desktop虚拟机,然后再安装vmware tools,具体可以参考如下视频: VMware虚拟机与主机实现文件共享,其实一点也不难_哔哩哔哩_bilibili 2、本人亲自试过了&…...
【React】React 基础(2)
JSX 是什么 JSX是一种 JavaScript 的语法扩展(extension), 也在很多地方称之为 JavaScript XML, 因为看起就是一段XML语法。它用于描述我们的Ul界面,并且其完成可以和 JavaScript 融合在一起使用; 为什么 React 选择使用 jsx? React 认为渲…...
DeepSeek接入Siri(已升级支持苹果手表)完整版硅基流动DeepSeek-R1部署
DeepSeek接入Siri(已升级支持苹果手表)完整版硅基流动DeepSeek-R1部署 **DeepSeek** 是一款专注于深度学习和人工智能的工具或平台,通常与人工智能、机器学习、自动化分析等领域有关。它的主要功能可能包括:深度学习模型搜索&…...
ASP.NET MVC AJAX 文件上传
如何使用 MVC 5 和 AJAX(.NET Framework)上传文件。 使用AJAX和ASP.NET MVC 上传文件 再简单不过了。对于最纯粹的人来说,这不需要使用jQuery。此代码实际上允许上传多个文件。 注意:以下代码示例支持 ASP.NET MVC 5。如果使用 .…...
npm使用了代理,但是代理软件已经关闭导致创建失败
如果在关闭前打开了vscode,此时vscode中的终端没有刷新,就会出现这个问题,最开始会一直转圈圈,直到超时,然后出现该报错 ❯ npm create vuelatest npm error code ECONNREFUSED npm error syscall connect npm error …...
Spring Boot定时任务原理
Spring Boot定时任务原理 在现代应用中,定时任务的调度是实现周期性操作的关键机制。Spring Boot 提供了强大的定时任务支持,通过注解驱动的方式,开发者可以轻松地为方法添加定时任务功能。本文将深入探讨 Spring Boot 中定时任务的实现原理…...
公文派2025:免费社区版重大安装更新!
大家好,感谢对「公文派」的支持。 距离上一次更新已经过去了将近一年的时间,今天我们带来了全新的免费2025社区版,该版本也是目前最新的版本,无需授权即可使用所有的功能。 我们先来看下本版本的更新及特色功能 聚合多个AI功能…...
Ubuntu24.04LTS的下载安装超细图文教程(VMware虚拟机及正常安装)
😸个人主页👉:神兽汤姆猫 📖系列专栏:开发语言环境配置 、 Java学习 、Java面试 、Markdown等 学习上的每一次进步,均来自于平时的努力与坚持。 💕如果此篇文章对您有帮助的话,请点…...
ES6相关操作
一.JavaScript的基础语法 1.Demo1.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>JavaScrip…...
【运维】源码编译安装cmake
背景: 已经在本地源码编译安装gcc/g,现在源码安装cmake 下载源码 下载地址:CMake - Upgrade Your Software Build System 安装步骤: ./bootstrap --prefix/usr/local/cmake make make install 错误处理 1、提示找不到libmpc.…...
代码随想录_回溯
代码随想录_回溯 回溯 77.组合 77. 组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 思路: 回溯 优化: 剪枝 注意代码中i,就是for循环里选择的起始位置。 for (int i startIndex; i <…...
tauri2实现监听记住窗口大小变化,重启回复之前的窗口大小
要想实现记住窗口大小的功能,整体逻辑就是要监听窗口大小变化,将窗口大小保存下来,重启之后,读取保存的大小,然后恢复。这里可以使用rust层实现,也可以在前端实现。我这里就纯rust层实现了。 监听窗口变化…...
番茄工作法html实现
对比了deepseek-r1-online和本地部署的14b的版本,输出的输出的html页面。 在线满血版的功能比较强大,可以一次完成所有要求。14b版本的功能有一些欠缺,但是基本功能也是写了出来了。 input write a html named Pomodoro-clock which “hel…...
C++:dfs,bfs各两则
1.木棒 167. 木棒 - AcWing题库 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过 5050 个长度单位。 然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。 请你设计一个程序…...
【ORB-SLAM3】鲁棒核函数的阈值设置
问题背景 阈值 δ \delta δ 是 Huber 鲁棒核函数的重要参数。首先给出结论,在ORB-SLAM系列中,该阈值选取的原则为: 单目情况下,根据95%置信水平下两自由度卡方检验的临界值, δ \delta δ 设置为 5.991 \sqrt{5.9…...
四种常见图形库GLUT,SDL,SFML和GLFW简介
GLUT、SDL、SFML 和 GLFW 是四种常用的库,用于管理窗口、输入和上下文创建,通常与 OpenGL 结合使用以实现图形渲染。以下是它们的详细介绍、常用应用场合和具体案例。 1. GLUT(OpenGL Utility Toolkit) 简介 GLUT 是一个用于创建…...
C++类和对象进阶:初始化列表和static成员深度详解
C类和对象:初始化列表和static成员深度详解 1. 前言2. 构造函数初始化成员变量的方式2.1 构造函数体内赋值2.2 初始化列表2.2.1 初始化列表的注意事项 2.3 初始化列表的初始化顺序 3. 类的静态成员3.1 引入3.2 静态成员变量3.3 静态成员函数3.4 静态成员的注意事项3…...
[C#]C# winform部署yolov12目标检测的onnx模型
yolov12官方框架:github.com/sunsmarterjie/yolov12 【测试环境】 vs2019 netframework4.7.2 opencvsharp4.8.0 onnxruntime1.16.3 【效果展示】 【调用代码】 using System; using System.Collections.Generic; using System.ComponentModel; using System.…...
阿里云k8s服务部署操作一指禅
文章目录 DockerFile镜像操作阿里云k8s服务部署 DockerFile # 使用 JDK 17 官方镜像 # linux架构:FROM --platformlinux/amd64 openjdk:17-jdk-slim # arm架构:openjdk:17-jdk-slim FROM --platformlinux/amd64 openjdk:17-jdk-slim# 设置工作目录 WORK…...
Transformer LLaMA
一、Transformer Transformer:一种基于自注意力机制的神经网络结构,通过并行计算和多层特征抽取,有效解决了长序列依赖问题,实现了在自然语言处理等领域的突破。 Transformer 架构摆脱了RNNs,完全依靠 Attention的优…...
球队训练信息管理系统设计与实现(代码+数据库+LW)
摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装球队训练信息管理系统软件来发挥其高效地信息处理的作用&a…...
【存储中间件API】MySQL、Redis、MongoDB、ES常见api操作及性能比较
常见中间件api操作及性能比较 ☝️ MySQL crud操作✌️ maven依赖✌️ 配置✌️ 定义实体类✌️ 常用api ☝️ Redis crud操作✌️ maven依赖✌️ 配置✌️ 常用api ☝️ MongoDB crud操作✌️ maven依赖✌️ 配置文件✌️ 定义实体类✌️ MongoDB常用api ☝️ ES crud操作 ⭐️…...
UE_C++ —— Gameplay Classes
目录 一,Adding Classes 二,Class Headers Class Declaration Class Specifiers Metadata Specifiers 三,Class Implementation Class Constructor 引擎中每个游戏类都由一个类头文件(.h)和一个类源文件&#x…...
windows上vscode cmake工程搭建
安装vscode插件: 1.按装fastc(主要是安装MinGW\mingw64比较方便) 2.安装C,cmake,cmake tools插件 3.准备工作完成之后,按F1,选择cmake:Quick Start就可以创建一个cmake工程。 4.设置Cmake: G…...
软件测试:1、单元测试
1. 单元测试的基本概念 单元(Unit):软件系统的基本组成单位,可以是函数、模块、方法或类。 单元测试(Unit Testing):对软件单元进行的测试,验证代码的正确性、规范性、安全性和性能…...
如果后台的Long类型的数据返回是null,那么Android客户端的数据bean的kotlin的Long类型的字段接受到数据后是null空指针吗?
如果后台的Long类型的数据返回是null,那么Android客户端的数据bean的kotlin的Long类型的字段接受到数据后是null空指针吗? DeepSeek R1 思考 35 秒 思考过程 好的,用户的问题是关于在Android客户端使用Kotlin处理后台返回的Long类型数据为n…...
Vue3 打造 Windows 桌面个性高效组件工具
软件介绍 Widgets 这款基于 Vue3 构建的开源 Windows 桌面小部件工具超实用。 其多样化组件库涵盖超 20 种,从倒计时、打工进度等实用工具,到抖音热榜等实时资讯组件应有尽有,各组件独立运行,满足多场景需求。 高度自定义布局支持…...
学习笔记-沁恒第四讲-米醋
一, 语音模块:数据包发送 刷卡模块:数据包接收 AS608:数据包发送接收 二,第三讲文件夹改成第四讲,工程也改成第四讲 三,目前在内存里面。保存新值,掉电会丢失 u8 password[6]{1,…...
epoll_event的概念和使用案例
epoll_event 是 Linux 下 epoll I/O 多路复用机制的核心数据结构,用于描述文件描述符(File Descriptor, FD)上发生的事件及其关联的用户数据。通过 epoll,可以高效地监控多个文件描述符的状态变化(如可读、可写、错误等…...
容器和虚拟机选择对比
1. 概述 如果主要需求是学习和测试 Ubuntu 下的命令行工具或服务型应用,推荐使用 Docker Docker 更轻量、更高效,适合快速搭建和销毁环境。 启用 WSL 2,Docker Desktop 是一个非常好的选择。 如果需要完整的桌面环境或进行复杂的系统级开…...
C++17中std::chrono::duration和std::chrono::time_point的舍入函数
文章目录 1. std::chrono::duration的舍入函数1.1 floor1.2 ceil1.3 round 2. std::chrono::time_point的舍入函数2.1 示例 3. 舍入函数的应用场景3.1 时间测量3.2 数据记录3.3 时间同步 4. 总结 在C17中, std::chrono库提供了一组强大的时间处理工具,包…...
基于SpringBoot的线上汽车租赁系统的设计与实现(源码+SQL脚本+LW+部署讲解等)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
基于Dancing Links的精确覆盖算法(解决NP难问题)和量子计算机模拟中的Shor算法(涉及数论与量子叠加态模拟)
一、Dancing Links算法实现数独求解(NP难问题) 算法方案 数独可转化为精确覆盖问题,使用Knuth提出的DLX算法实现高效求解。该算法通过双向十字循环链表实现快速回溯,时间复杂度可达O(n^k)(k为常数) #include <iostream> #include <vector> #include <c…...