大模型压缩技术详解(2025最新进展)
在2025年的AI技术格局中,像DeepSeek这样的顶尖模型开源已成为现实。那是否存在一种可行路径,让企业能够使用专注于自身领域的强力AI模型,同时大幅降低部署成本,仅需一张普通的4090显卡?本文将深入探讨两种主流的模型压缩技术——量化(Quantization)和蒸馏(Distillation),揭示如何以低成本部署高性能模型。
模型部署的成本挑战
大语言模型依赖GPU进行计算,这导致部署成本极高。以DeepSeek R1这样的671B超大模型为例,其私有化部署成本可达百万级别。
量化技术(Quantization)详解
量化的核心原理
量化是一种将高精度浮点数转换为低精度整数表示的技术,目的是减少模型存储空间和计算资源需求,同时尽可能保持模型性能。通过降低数值精度,量化能够显著减小模型体积并加速推理速度。
量化的发展历程
量化技术的演进与硬件计算资源密切相关:
- FP32:早期AI模型主要使用32位浮点数(FP32)进行训练和推理,保证计算精度但存储和计算开销巨大
- FP16:2017年英伟达开始支持FP16精度,标志着现代量化技术的开端
- INT8:随着Transformer模型参数量从亿级到达千亿级,INT8量化在2020年成为主流推理方案
- INT4:2022年发布的GPTQ模型首次实现INT4量化,将显存占用降低至原始FP32模型的1/8
- 最新进展(2024-2025):多种新型INT4量化技术出现,如FP4和MoFQ4,相比GPTQ实现了更快的量化速度和更小的性能损失
数据存储单位关系
最小存储单位:bit(位) → 8位 = 1字节(byte) → 1024字节 = 1KB
比较不同参数存储格式:
- FP32:需要4个字节存储
- FP16:需要2个字节存储
- INT8:需要1个字节存储
- INT4:需要0.5个字节存储
主流量化技术分类
目前主流的量化技术可分为三大类:
-
训练后量化(Post-Training Quantization):
- 代表:GPTQ和GGUF(Llama.cpp使用的格式)
- 原理:采用逐层校准原则,对每层神经网络权重进行动态范围分析,将FP32/FP16权重映射到INT4整数空间
- 优势:不需要重新训练模型,实施简单
- 最新进展:2025年AMD推出了针对ROCm优化的GPTQ实现,可高效支持INT4量化,为非英伟达GPU提供高效推理选项
-
量化感知训练(Quantization-Aware Training):
- 代表:AWQ
- 原理:识别不同权重通道对激活值分布的敏感性差异,对重要参数保持高精度,非关键参数进行激进压缩
- 最新进展:2025年发布的研究表明AWQ在Llama3系列模型上的表现优于GPTQ,特别是在保持模型推理质量方面
-
混合精度量化(Mixed-Precision Quantization):
- 原理:根据参数重要性采用不同精度,平衡模型性能和资源占用
- 最新进展:2025年的CrossBlock量化(CBQ)和SpinQuant等新方法在ICLR会议上展示了更优异的混合精度量化效果
-
高效KV缓存量化:
- 2024-2025年出现的新方向,如KVQuant和ZipCache,专注于减少推理过程中KV缓存的内存占用
- 使模型能够处理更长的上下文窗口(甚至达到1000万tokens)而不会大幅增加内存需求
GGUF格式解析
GGUF(GPT-Generated Unified Format)是Llama.cpp项目提出的模型存储格式规范。在选择GGUF格式模型时,命名规则通常包含以下信息:
- Qn:量化精度,如Q4表示INT4,Q8表示INT8
- _K:表示使用混合精度量化
- _S/M/L后缀:代表保留高精度权重的比例,分别为Small(10%)、Medium(20%)、Large(30%)
例如,对于一个标记为Q4_K_M
的模型:
- Q4:使用4位整数量化
- K:采用混合精度量化
- M:保留20%的权重使用高精度存储
量化方法的比较与选择
根据2025年初The Kaitchup发布的研究,对Llama 3和Qwen2.5系列模型测试结果显示:
- 在8位量化中,bitsandbytes方法表现最佳,几乎没有性能损失
- 在4位量化中,AWQ和GPTQ方法表现接近,但AWQ在大多数基准测试中略胜一筹
- 在3位及以下量化时,所有方法都会出现明显性能下降,但HQQ在超低位量化中展现出最好的性能保持
蒸馏技术(Distillation)详解
蒸馏的核心原理
知识蒸馏是一种将大型模型(教师模型)的知识转移到小型模型(学生模型)的技术,目标是让小型模型在资源消耗更低的情况下接近或达到大型模型的性能水平。
从软蒸馏到硬蒸馏
在传统NLP中,早期的知识蒸馏(软蒸馏)类似于教师教学生,让小模型(学生模型)学习大模型(教师模型)的输出概率分布。例如,2015年Hinton提出的经典方法就是让小模型模仿大模型的输出概率分布。
然而,在大语言模型时代,软蒸馏面临一个关键问题:不同模型使用不同的token词表,导致概率分布难以统一。例如DeepSeek和千问各自有各自的词表,即使进行映射也会工作量巨大。
因此,大语言模型时代主要采用硬蒸馏:
- 直接使用教师模型的问题和回答对(QA对)
- 通过监督微调(SFT)方式训练小模型
DeepSeek IE的蒸馏案例
DeepSeek论文中提到,他们提取了80万条DeepSeek R1的生成样本,并通过监督微调(SFT)而非软蒸馏来训练小模型。
蒸馏效果令人惊喜:蒸馏出的千问1.5B模型在AIME 2024数据集上获得28.9分,而参数量约175B的GPT-4o仅得9.3分。这表明在特定领域,蒸馏技术可以让小模型获得远超其参数规模的能力。
2025年蒸馏技术的最新进展
-
步骤式蒸馏(Distilling Step-by-Step):
- Google Research在2025年4月发布的研究表明,通过提取大模型的推理步骤(而非仅结果)进行蒸馏,可以显著提升小模型性能
- 这种方法在使用更少训练数据的情况下,使T5-770M模型在某些任务上超越了参数量是它700倍的PaLM-540B
-
分支-合并蒸馏(Branch-Merge Distillation):
- 这种技术通过并行训练多个专家模型分支,然后将它们合并成一个统一的小型模型
- 实现了更高的压缩率,同时保持了较好的性能
-
多教师蒸馏(Multi-teacher Distillation):
- 从多个不同的大型模型中提取知识,综合其优势
- 特别适用于构建多语言或多领域能力的小型模型
-
推测性解码蒸馏(Speculative Decoding Distillation):
- SambaNova Systems在2025年3月发布研究,专注于训练特定领域的草稿模型
- 通过与大模型协同工作,显著加速推理过程
-
GPT-4o mini的案例:
- OpenAI在2024-2025年发布的GPT-4o mini是蒸馏技术的典范
- 通过蒸馏保持了GPT-4o的大部分能力,但大幅降低了计算资源需求
蒸馏效果评估的进步
2025年2月,研究者提出了量化蒸馏效果的新框架,包括:
- 响应相似性评估(RSE):比较原始大模型和学生模型在各种提示下的输出相似度
- 身份一致性评估(ICE):评估蒸馏过程中不经意传递的模型自身信息
这些工具有助于更科学地衡量蒸馏的成功程度,指导开发更有效的蒸馏策略。
企业级低成本部署方案
基于量化和蒸馏技术的最新进展,企业可以采用以下路径低成本部署专业领域模型:
-
知识提取:
- 使用超级模型(如DeepSeek IE 671B)从企业知识库中提取问答对
- 同时获取模型的推理步骤,而非仅结果,提高小模型学习效率
-
质量筛选:
- 人工检查并筛选高质量QA对,形成训练数据集
- 使用自动化工具评估数据质量,确保覆盖关键业务场景
-
模型微调:
- 使用数据集对中等规模模型(如千问2.5 32B)进行监督微调
- 采用分支-合并方法训练多个专家模型,再合并为统一模型
-
模型量化:
- 根据具体场景选择最合适的量化方法
- 对于通用场景,AWQ通常表现最佳
- 对于极限压缩场景,考虑HQQ等新型量化方法
- 将微调后的模型量化至INT4精度,降低资源需求至约20GB显存
-
持续优化:
- 设计专用提示模板,最大化小型专业模型的性能
- 定期用新数据更新模型,保持知识的时效性
通过这一流程,企业可以在一张RTX 4090(24GB显存)上部署专业领域模型,大幅降低部署成本,同时保持较高性能。
数据准备与模型微调实践指南
在上述实际案例中,数据质量是模型压缩成功的关键因素。以下是一个基于Stanford S1研究的数据准备与模型微调实践指南,特别适合资源有限的中小企业:
高质量数据集的准备流程
S1研究证明,仅需1000条高质量数据,就能让千问2.5 32B模型在推理能力上有显著提升。其数据筛选过程包括三个关键步骤:
-
数据收集:从16个不同来源收集5.9万条原始数据,涵盖了数学、物理、化学等多个领域,确保数据的广泛多样性
-
数据过滤:
- 质量过滤:移除API生成错误、不完整的问答对
- 难度过滤:使用未微调的基础模型测试,过滤掉那些不需要特殊推理就能正确回答的简单问题
- 多样性过滤:对问题进行主题分类,从不同领域随机抽取问题,确保数据覆盖面广泛
-
数据构建:对每个问题生成完整的推理轨迹和答案,形成"问题-推理过程-答案"的三元组数据结构
企业实用的数据准备方法
针对不同资源条件的企业,可以采用以下几种方式准备数据:
- 已有问答对场景:直接使用问答对,通过大模型(如千问、DeepSeek)生成中间推理过程
- 仅有领域资料场景:编写Prompt指导大模型从资料中抽取问答对和推理过程,形成训练数据
- 仅有问题场景:使用大模型生成答案和推理过程,再进行人工筛选和质量评估
- 混合利用公开数据:可以复用S1等公开推理数据集作为基底,添加10-30%的专业领域数据进行混合训练
微调实施流程
实际微调过程包括以下关键步骤:
-
数据格式化:将准备好的数据转换为适合微调的格式,包括:
- 使用模型对应的tokenizer进行分词
- 将数据组织为"用户问题-助手思考过程-助手回答"的对话结构
-
微调参数设置:
- 对于千问2.5 32B模型,在16块H100 GPU上,仅需26分钟即可完成千问32B模型的微调
- 对于资源有限的企业,可以使用较小规模的模型,如千问2.5 7B版本,在单张RTX 4090上也能实现类似效果
-
质量评估:
- 针对性测试模型在推理任务上的表现改进
- 评估模型在特定领域问题上的回答质量变化
相关文章:
大模型压缩技术详解(2025最新进展)
在2025年的AI技术格局中,像DeepSeek这样的顶尖模型开源已成为现实。那是否存在一种可行路径,让企业能够使用专注于自身领域的强力AI模型,同时大幅降低部署成本,仅需一张普通的4090显卡?本文将深入探讨两种主流的模型压…...
第 5 篇:红黑树:工程实践中的平衡大师
上一篇我们探讨了为何有序表需要“平衡”机制来保证 O(log N) 的稳定性能。现在,我们要认识一位在实际工程中应用最广泛、久经考验的“平衡大师”——红黑树 (Red-Black Tree)。 如果你用过 Java 的 TreeMap 或 TreeSet,或者 C STL 中的 map 或 s…...
spring-- 事务失效原因及多线程事务失效解决方案
事务失效原因 类的自调用:直接调用本类的方法,没有通过代理对象来调用方法,代理对象内部的事务拦截器不会拦截到这次行为。则不可能开启事务 使用私有方法:因为spring的事务管理是基于AOP实现的,AOP代理无法拦截目标对…...
MLPerf基准测试工具链定制开发指南:构建领域特异性评估指标的实践方法
引言:基准测试的领域适配困局 MLPerf作为机器学习性能评估的"黄金标准",其通用基准集在实际科研中常面临领域适配鸿沟:医疗影像任务的Dice系数缺失、NLP场景的困惑度指标偏差等问题普遍存在。本文通过逆向工程MLPerf v3.1工具…...
深度理解linux系统—— 进程切换和调度
前言: 了解了进程的状态和进程的优先级,我们现在来看进程是如何被CPU调度执行的。 在单CPU的系统在,程序是并发执行的;也就是说在一段时间呢,进程是轮番执行的; 这也是说一个进程在运行时不会一直占用CPU直…...
【凑修电脑的小记录】vscode打不开
想把vscode的数据和环境从c盘移到d盘 大概操作和这篇里差不多 修改『Visual Studio Code(VS Code)』插件默认安装路径的方法 - 且行且思 - 博客园 在原地址保留了个指向新地址的链接文件。 重新安装vscode后双击 管理员身份运行均无法打开࿰…...
2025五一数学建模竞赛A题完整分析论文(共45页)(含模型、可运行代码、数据)
2025年五一数学建模竞赛A题完整分析论文 摘 要 一、问题分析 二、问题重述 三、模型假设 四、符号定义 五、 模型建立与求解 5.1问题1 5.1.1问题1思路分析 5.1.2问题1模型建立 5.1.3问题1参考代码 5.1.4问题1求解结果 5.2问题2 5.2.1问题2思路分析 …...
从0搭建Transformer
0. 架构总览: 1. 位置编码模块: import torch import torch.nn as nn import mathclass PositonalEncoding(nn.Module):def __init__ (self, d_model, dropout, max_len5000):super(PositionalEncoding, self).__init__()self.dropout nn.Dropout(pdrop…...
生物化学笔记:神经生物学概论07 躯体感受器 传入方式 自主神经系统
功能各异的躯体感受器 解释张力: 形形色色的传入方式 脑中的“倒立小人” 自主神经系统...
滑动窗口leetcode 209和76
一、leetcode 209. 长度最小的子数组 代码: class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {int n nums.size();int left 0;int sum 0;int res 100001;for(int right 0;right <n;right){sum nums[right];while(s…...
FPGA:介绍几款高速ADC及其接口形式
本文介绍了几款采样率至少为500Msps的高速ADC芯片,并详细介绍ADC与FPGA之间的常见接口形式,以及FPGA如何正确读取高速ADC的输出数据。以下内容基于当前的高速ADC技术趋势和常见的工程实践。 一、推荐的高速ADC芯片(采样率≥500Msps࿰…...
未使用连接池或配置不当的性能陷阱与优化实践
目录 前言一、传统连接管理的性能缺陷与风险1. 未使用连接池的致命代价2. 连接池配置不当的典型表现 二、高性能连接池选型与核心参数优化1. HikariCP:零开销连接池的标杆2. Druid:功能完备的国产连接池 三、连接池性能调优的黄金法则1. 科学设定最大连接…...
亚马逊云服务器性能深度优化方案(2025版)
亚马逊云服务器性能深度优化方案(2025版) 一、计算架构全面升级 1. 新一代AI算力引擎 • Trn2 UltraServer实例:搭载64颗第二代Trainium芯片,单节点FP8算力达83.2 PFlops,支持千亿参数大模型训练,训…...
【IPMV】图像处理与机器视觉:Lec9 Laplace Blending 拉普拉斯混合
【IPMV】图像处理与机器视觉 本系列为2025年同济大学自动化专业**图像处理与机器视觉**课程笔记 Lecturer: Rui Fan、Yanchao Dong Lec0 Course Description Lec3 Perspective Transformation Lec7 Image Filtering Lec8 Image Pyramid Lec9 Laplace Blending 持续更新中 …...
【东枫电子】AMD / Xilinx Alveo™ UL3422 加速器
AMD / Xilinx Alveo™ UL3422 加速器 AMD / Xilinx Alveo™ UL3422 加速器提供超低延迟网络和灵活应变的硬件,支持纳秒级交易策略。AMD Virtex™ UltraScale™ VU2P FPGA 为 AMD / Xilinx Alveo UL3422 加速器提供强大的支持。该加速器采用延迟优化的收发器技术&am…...
Linux架构篇、第一章_03安装部署nginx
Linux_基础篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:安装部署nginx 版本号: 1.0,0 作者: 老王要学习 日期: 2025.05.02 适用环境: Centos7 文档说明 本文档聚焦于 CentOS 7 环境下 Nginx 的安装部…...
Semantic Kernel 快速入门
文章目录 Semantic Kernel 快速入门一、什么是 Semantic Kernel?1.1 核心特性 二、安装和配置2.1 安装 .NET SDK2.2 创建新的 .NET 项目2.3 安装 Semantic Kernel 三、快速入门3.1 导入依赖包3.2 添加 AI 服务3.3 添加企业服务3.4 生成内核并检索服务3.5 添加插件创…...
MySQL进阶(一)
一、存储引擎 1. MySQL体系结构 连接层: 最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限 服务层: 第二层架构主要完成大多数的核心服务…...
ThreadLocal理解
1.thread是线程,threadLocal是对象? 在 Java 中: Thread 是线程类,其实例代表线程:Thread 类用于创建和管理线程,每个线程都是 Thread 类的一个实例,用于执行具体的任务,例如&…...
PyTorch、Flash-Attn、Transformers与Triton技术全景解析+环境包
PyTorch、Flash-Attn、Transformers与Triton技术全景解析 包好难找 这里是下载链接 添加链接描述 摘要 本文系统性地介绍了深度学习领域的四大关键技术框架:PyTorch、Flash-Attn、Hugging Face Transformers和Triton,分别从核心特性、技术优势、应用场…...
mindyolo填坑
1、按照gitee上的文档跑预测代码,跑不通 更改: 将predict.py复制到跟目录。如果是cpu(本地测试比较常见),那么正确的命令行是: python predict.py --device_targetCPU --config ./configs/yolov7/yolov7.…...
【C++】平衡二叉树(AVL树)迭代版
目录 前言: 一:判断一棵树是否为平衡二叉树 二:明确思路 1.为什么使用平衡二叉树 2.旋转 2.1 左旋 2.2 右旋 3.冲突节点 4.平衡因子 5.双旋 5.1 左右双旋(LR) 5.2 右左双旋(RL) 6.平衡因子的更新 7.冲突节点问题补充 三&…...
双链表详解
一、双向链表介绍 二、实现双向链表 1.定义双向链表的结构 2.双向链表的初始化 3.双向链表的尾插 4.双向链表的头插 5.双向链表的打印 6.双向链表的尾删 7.双向链表的头删 8.查找指定位置的数据 9.在指定位置之后插入数据 10.删除指定位置的数据 11.链表的销毁 三、…...
6.9.单源最短路径问题-BFS算法
一.前言: 问题1: 以上述图片为例,比如从G港到Y城,可以是G港->R城->Y城,也可以是G港->P城->Y城等,有很多条路径都可以实现从G港到Y城,但要从中找出G港到Y城距离最短的那一条路径&am…...
react js 查看字体效果
起因, 目的: 想查看某个字体,对中英文的支持情况。 效果图: 完整项目见这里, 需要积分下载,不然的话,显得太水了。 过程: AI 对话, 生成代码。我检查运行, 来回修改。写个博客,…...
GZIPInputStream 类详解
GZIPInputStream 类详解 GZIPInputStream 是 Java 中用于解压缩 GZIP 格式数据的流类,属于 java.util.zip 包。它是 InflaterInputStream 的子类,专门处理 GZIP 压缩格式(.gz 文件)。 1. 核心功能 解压 GZIP 格式数据(RFC 1952 标准)自动处理 GZIP 头尾信息(校验和、时…...
数字智慧方案6206丨智慧园区大数据整体解决方案(45页PPT)(文末有下载方式)
资料解读:智慧园区大数据整体解决方案 详细资料请看本解读文章的最后内容。 在数字化快速发展的当下,智慧园区成为推动产业升级和城市发展的关键力量。这份智慧园区大数据整体解决方案,融合前沿技术与创新理念,为园区的高效管理、…...
Linux系统常用命令、标准C库函数和系统调用
目录 一、常用命令 env echo $name 键值 export name unset name gcc -c xxx.c ar 命令 ar -r libxxx.a xxx1.o xxx2.o gcc -c -fpic xxx.c gcc -shared -fpic xxx1.c xxx2.c -o libxxx.so kill [-信号] PID kill -l 软链接:ln -s xxx yyy 硬链接&…...
【Linux】基础指令(2)
man linux中有很多指令,我们不可能全部记住,man是linux/unix系统中的手册页指令,当我们遇到不熟悉的命令可以用man来查看命令,函数,配置文件的详细使用说明。 man手册分为多个章节,详情如下: …...
“会话技术”——Cookie_(2/2)原理与使用细节
经过Cookie的快速入门与代码使用。如果想深入理解Cookie的技术实现,就得去理解它的原理。 且有些时候使用Cookie,还要根据需求设置存活期限以及确定Cookie获取范围等其他细节。最后,我们会总结Cookie这门客户端会话技术的作用。 一、原理 注…...
Linux操作系统--进程间通信(中)(命名管道)
目录 1.命名管道: 1.1创建一个命名管道 1.2匿名管道与命名管道的区别 1.3命名管道的打开规则 1.4例子1-用命名管道实现文件拷贝 1.5例子2-用命名管道实现server&client通信 1.命名管道: 毫不相关的进程进行进程间通信管道应用的一个限制就是只能…...
数据结构6 · BinaryTree二叉树模板
代码函数功能顺序如下: 1:destroy:递归删除树 2:copy:复制二叉树 3:preOrder:递归前序遍历 4:inOrder:递归中序遍历 5:postOrder:递归后续遍…...
ubuntu的libc 库被我 sudo apt-get --reinstall install libc6搞没了
我系统的libc 没了 今天为了运行一个开源的yuv 播放器,在运行的时候提醒 Inconsistency detected by ld.so: dl-call-libc-early-init.c: 37: _dl_call_libc_early_init: Assertion sym ! NULL failed!然后听从AI 的建议 当我去执行ls 时,系统提示 就这…...
cat file.tar.gz | tar -xzf - -C /target/dir两个减号之间为什么有个空格?是写错了吗?(管道命令后续)
在 tar 命令的参数 -xzf - -C 中,两个减号(-)之间的空格是故意保留的语法,没有写错。具体原因如下: 1. -xzf - 的语法解析 -xzf 是 tar 命令的组合参数: x:表示解压(extract&#x…...
手机的数据楚门世界是如何推送的
手机推送,也叫茧影算法,手机的数据“楚门世界”:信息推送机制的深度剖析与社会影响 在数字化时代,手机已然成为人们生活中不可或缺的伴侣。当我们沉醉于手机带来的便捷与娱乐时,或许未曾察觉,自己正置身于…...
体系结构论文(八十二):A Comprehensive Analysis of Transient Errors on Systolic Arrays
研究背景与动机 TPU架构(Tensor Processing Unit)广泛应用于DNN推理,其核心是脉动阵列,由大量的乘加单元(MAC)组成。 由于使用了纳米级CMOS技术,TPU对辐射引发的瞬态错误(SET&#…...
综合案例:使用vuex对购物车的商品数量和价格等公共数据进行状态管理
文章目录 0.实现需求1.新建购物车模块cart2.使用json-server模拟向后端请求数据3.在vuex请求获取并存入数据,并映射到组件中,在组件中渲染【重点】3.1.安装axios3.2.准备actions和mutations,获取和存入数据到vuex中3.3.动态渲染:用mapState映射 其他1.为什么在axios在项目中要局…...
二叉搜索树的判断(双指针解决)
98. 验证二叉搜索树 - 力扣(LeetCode) class Solution { public:TreeNode*preNULL;bool isValidBST(TreeNode* root) {if(rootNULL){return true;}bool leftisValidBST(root->left);if(pre!NULL&&pre->val>root->val){return fals…...
关于CSDN创作的常用模板内容
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 好文评论新文推送 📃文章前言 &…...
不小心误删了文件,找Windows数据恢复工具来帮忙
相信很多人都遇到过这样的情况:不小心在电脑上删除了一些重要的文件,等到想要找回来时,却感觉特别棘手。 今天我要给大家推荐一款超棒的Windows数据恢复工具,它能轻松帮你找回那些被误删的文件。 (文末附下载链接&…...
[Verilog]跨时钟域数据传输解决方案
跨时钟域数据传输解决方案 摘要:跨时钟域数据传输 (Clock Domain Crossing, CDC) 是 SoC 设计中常见且关键的问题,因为现代 SoC 通常包含多个时钟域,不同模块可能运行在不同频率或相位的时钟下。跨时钟域传输数据时,如果处理不当,可能会导致亚稳态 (Metastability)…...
Linux——进程终止/等待/替换
前言 本章主要对进程终止,进程等待,进程替换的详细认识,根据实验去理解其中的原理,干货满满! 1.进程终止 概念:进程终止就是释放进程申请的内核数据结构和对应的代码和数据 进程退出的三种状态 代码运行…...
数据结构与算法:图论——最短路径
最短路径 先给出一些leetcode算法题,以后遇见了相关题目再往上增加 最短路径的4个常用算法是Floyd、Bellman-Ford、SPFA、Dijkstra。不同应用场景下,应有选择地使用它们: 图的规模小,用Floyd。若边的权值有负数,需要…...
双指针(5)——有效三角形个数
题目: 这道题我们首先可能会想到暴力解法,三个for循环然后进行check()。时间复杂度肯定是不允许的。 同时,验证可以组成三角形的条件是任意两边之和大于第三边,这就意味着我们每组要进行三次比较。但也有捷…...
Qt QGraphicsScene 的用法
背景,为什么要写这篇博客 今天学习 model - view 模式的时候还看到有 scene - view 模式。不知道还有这个模式,所以学习了下。 学习后总体的感觉是:其实没有也是可以的,但有了方便许多。 从两种画图的方法开始说 以前有个项目也…...
使用 Tesseract 实现藏文OCR
要识别藏文,最常用且有效的方法是使用Tesseract OCR(谷歌开源的OCR工具),因为它拥有针对藏文的预训练模型支持。 🚀 一、安装 Tesseract OCR 软件: 下载链接:Tesseract OCR 下载页面 Windows用…...
数字智慧方案5873丨智慧交通设计方案(57页PPT)(文末有下载方式)
资料解读:智慧交通设计方案 详细资料请看本解读文章的最后内容。 智慧交通设计方案是一份详尽的交通规划文件,旨在通过科学的交通设计方法,优化交通系统,提升交通效率,确保交通安全,并促进可持续发展。该…...
【quantity】6 温度单位实现(temperature.rs)
一源码 以下代码实现了一个温度单位系统,支持开尔文(Kelvin)和摄氏度(Celsius)之间的转换和运算。 /// Temperature (kelvin) / 温度 (开尔文) use super::{Quantity, prefix::*}; use crate::unit::Kelvin; use derive_more::{Add, Sub, AddAssign, SubAssign};/…...
ARConv的复现流程
使用环境 Python 3.10.16 torch 2.1.1cu118 torchvision 0.16.1cu118 其它按照官方提供代码的requirements.txt安装 GitHub - WangXueyang-uestc/ARConv: Official repo for Adaptive Rectangular Convolution 数据准备 从官方主页下载pancollection数据集PanCollection…...
安卓游戏APK文件解密与编辑的完整攻略
在移动游戏开发中,保护游戏数据不被篡改是开发者的重要任务。然而,随着逆向工程技术的发展,破解游戏数据也变得可能。本文将详细介绍如何分析、解密和编辑APK安装包中的加密JSON文件,特别关注assets/task目录下的文件,并提供一种绕过checkfile.json中MD5校验的有效方法。通…...