一文速览DeepSeek-R1的本地部署——可联网、可实现本地知识库问答:包括671B满血版和各个蒸馏版的部署
前言
自从deepseek R1发布之后「详见《一文速览DeepSeek R1:如何通过纯RL训练大模型的推理能力以比肩甚至超越OpenAI o1(含Kimi K1.5的解读)》」,deepseek便爆火
爆火以后便应了“人红是非多”那句话,不但遭受各种大规模攻击,即便后来挡住了大部分攻击,但海内外大量闯入deepseek官网一探究竟的网友也把他们的服务器压得不堪重负
导致一提问,要么频繁显示:服务器繁忙,请稍后再试;要么回答了 但无法联网,致使我朋友圈内一些不知情的朋友说:看把媒体给能的,各种瞎吹,但其实不过尔尔..
怎么办呢?
- 一方面,微信上的好友老师木发圈表示
“ 这个春节有点特别,虽然没有休息一天,大家也没有怨言。看到DeepSeek创造的一个又一个奇迹,我很焦急但苦于没有资源,同事突发奇想:国产卡多,用国产卡吧 ”
于是,在25年的2.1日,硅基流动 x 华为云联合推出基于昇腾云的 DeepSeek R1 & V3 推理服务!
个人认为这是国产GPU替代英伟达GPU之路的里程碑时刻
虽然在此之前,华为以及不少国内公司在GPU国产化上做了很多工作、努力,而且在不少政务单位已经做了很多替代
但我们过去两年 对外接各种大模型项目的时候——我司「七月在线」除了开发一系列内部产品 也对外接各种项目,不论是客户还是我们内部,对国产GPU是否好适配、以及适配之后是否丝滑好用 始终存在着一定的担忧
我相信,这一情况会随着本次的「昇腾云的 DeepSeek R1 & V3 推理服务」而越来越好 - 二方面,我原本不想看什么本地部署的,也不得不关注下各种版本下的本地部署
本文便来重点探讨各种版本下、各种情况下的DeepSeek-R1的本地部署「当然,某乎上也有很多类似“ 如何在本地部署DeepSeek-R1模型?” 的帖子」
如此,本文来了,以下是本文的更新记录
- 2.3日下午,在我自己的iMac上本地部署了下R1 7B蒸馏版,详见下文的
2.1.1 Ollama下的终端命令行交互
2.1.2 Ollama下的open-webui交互:基于docker安装,且支持联网搜索 - 2.4日晚上,可能是自己早已习惯在博客中尽可能把所有细节一次性讲清楚
所以我自己又尝试了
2.1.3 通过 Ollama + chatboxai部署deepseek-r1:7b
2.1.4 基于Ollama + Page Assist搭建本地知识库问答系统:且支持联网搜索
且同时让同事文弱尝试了通过vLLM推理deepseek-r1:8b,也已更新在了下文的
2.2 通过vLLM推理deepseek-r1:8b:R1-Distill-Llama-8B
第一部分 本地部署之前的准备工作:各个版本、推理框架、硬件资源
1.1 DeepSeek-R1的多个版本:加上2个原装671B的,总计8个参数版本
在huggingface上总共有以下几种参数的deepseek R1
- DeepSeek-R1 671B
- DeepSeek-R1-Zero 671B
- DeepSeek-R1-Distill-Llama-70B
- DeepSeek-R1-Distill-Qwen-32B
- DeepSeek-R1-Distill-Qwen-14B
- DeepSeek-R1-Distill-Llama-8B
- DeepSeek-R1-Distill-Qwen-7B
- DeepSeek-R1-Distill-Qwen-1.5B
1.2 主流的大模型推理框架:分为PC端和Android端
首先,看推理框架,目前主流的大模型推理框架主要有以下5种:
- SGLang
完全支持 BF16 和 FP8 推理模式下的 DeepSeek-V3 模型 - Ollama,相对简单易用,大众用户首选
- vLLM,开发者首选,便于商业化诉求
支持 FP8 和 BF16 模式的 DeekSeek-V3 模型,用于张量并行和管道并行
详见:一文通透vLLM与其核心技术PagedAttention:减少KV Cache碎片、提高GPU显存利用率(推理加速利器) - LLaMA.cpp
- MNN-LLM,偏Android手机端
MNN-LLM展现了卓越的CPU性能,预填充速度相较于llama.cpp提高了8.6倍,相较于fastllm提升了20.5倍,解码速度分别快了2.3倍和8.9倍
更多详情,请参见论文《MNN-LLM: A Generic Inference Engine for Fast Large Language Model Deployment on Mobile Devices》
1.3 不同参数的模型所要求的硬件
其次,看硬件要求,很显然,不同参数的模型所要求的硬件各不相同(下表修改自微信好友杨老师整理的表格)
模型参数 | 最低GPU配置 | 最低CPU配置 | 建议内存 | 建议硬盘空间 |
---|---|---|---|---|
R1 or R1-Zero 满血版 | A/H100(80G) x 16-18 某乎上便有篇文章:16张H100部署模型DeepSeek-R1 值得一提的是,A100/A800原生并不支持FP8运算,如果A800要执行FP8精度计算,需要在指令层面进行模拟(存在精度转换计算) 如下图所示(图源) | Xeon 8核 | 192GB | 2TB固态 |
R1-distill-llama70B | RTX 4090(24GB) x 2 | i9-13900K | 64GB | 1TB固态 |
R1-distill-Qwen32B | RTX 4090(24GB) | i7-13700K | 64GB | 1TB固态 |
R1-distill-Qwen14B | RTX 4060S(16GB) | Ryzen 7 | 32GB | 500G固态 |
可以看到
- 完全开源的DeepSeek-R1 671B参数进行本地私有化部署的显卡资源要求极高
包括我司七月在线内部之前也最多用过8张80G的A100——通过1.5K条paper-review数据微调LLaMA2 70B「详见此文《七月论文审稿GPT第4.2版:通过15K条paper-review数据微调Llama2 70B(含各种坑)》」 - 由于 FP8 训练是Deepseek 的框架中原生采用的,故DeepSeek-R1/3均(DeepSeek-R1基于DeepSeek-V3-base后训练)均为FP8精度训练「详见此文《一文通透让Meta恐慌的DeepSeek-V3:在MoE、GRPO、MLA基础上提出Multi-Token预测(含FP8训练详解)》」,下图是各个精读的对比(图源)
因此提供的精度就是FP8(e4m3),占单个Byte空间
"quantization_config": {"activation_scheme": "dynamic""fmt": "e4m3","quant method": "fp8""weight_block_size": [128,128]}
- 模型分片163个,模型的文件总计约为642G,如果以FP3精度加载到显存,模型参数就需要642GB空间
按PagedAttention论文预估的KV-Cache+和激化值估计至少要占到30%左石 - 在推理场景下,输出大多是长文本,那就更多了,而且具体模型还要实测,或用Nvidia Nisight+分析显存占用。估计常规部署都需要800GB以上,10张A800打底
而大部分消费者或开发者拥有的硬件资源是有限的,故关于网上大多数人所谓部署的R1都是其蒸馏Llama/Qwen后的8B/32B/70B版本,本质是微调后的Llama或Qwen模型
1.4 蒸馏版和满血版的两类部署
最后,咱们下面有两种部署对象
- 一个是部署各种蒸馏版
也不要小看蒸馏版,虽然R1蒸馏llama/qwen的版本效果上不及R1 671B满血版,但还是挺能打的
详见下图,在与GPT-4o 0513、o1 mini、QwQ-32B preview PK的过程中,各个蒸馏版在六个榜单中的五个榜单 都拿到了第一
- 一个是部署R1 or R1-Zero 满血版
第二部分 通过Ollama、vLLM本地部署DeepSeek-R1蒸馏版:支持联网搜索
2.1 4种交互方式:终端、open-webui、chatbox、Page Assist知识库问答
2.1.1 Ollama下的终端命令行交互
首先,671B的R1光模型本身就有688G:
- huggingface.co/deepseek-ai/DeepSeek-R1,没有一定的GPU集群 确实不好弄
- 即便是量化版本,最极端的Q1量化,也要94G:huggingface.co/bartowski/DeepSeek-R1-GGUF/tree/main/DeepSeek-R1-IQ1_S
- Q4量化版,则大概360G,如果有5张 A100 80G,则可以试一下
huggingface.co/bartowski/DeepSeek-R1-GGUF/tree/main/DeepSeek-R1-IQ4_XS
所以,一般用户比较好跑的还是R1的蒸馏版
- 如果是10G显存
可以跑这个R1蒸馏Qwen 2.5 14b的IQ4_NL版本huggingface.co/bartowski/DeepSeek-R1-Distill-Qwen-14B-GGUF/blob/main/DeepSeek-R1-Distill-Qwen-14B-IQ4_NL.gguf - 如果是16G显存
一方面,可以试试蒸馏的Qwen 2.5 32b的版本,IQ3_M量化,不过,有人实测后,说损失有点严重——相当于Q4以下量化都不太推荐
二方面,我司七月的《DeepSeek项目实战营》提供的GPU预装了DeepSeek-R1-Distill-Llama-8B:https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Llama-8B,欢迎大伙体验
ollama目前支持部署多种模型,包括且不限于目前最流行的deepseek R1,也包括之前的llama 3.3等
我下午在我自己的iMac上本地部署了下R1 7B蒸馏版,还想办法支持了联网搜索,这一切确实比之前更平权了,速度可以的,效果的话 毕竟就7B嘛——和671B 满血版还是有很大差距的
具体怎么操作呢,进入Ollama页面
- Download Ollama,我个人电脑因为是iMac,故选择macOS版本——180M大小
- 在模型列表页面,下载deepseek R1模型:ollama.com/library/deepseek-r1,然后可以选择比如R1蒸馏qwen2 7B的蒸馏版
- 打开本地的命令提示符「我个人电脑是iMac,故在启动台的搜索框里:输入终端,即可打开」,输入以下命令后,回车键开始下载安装对应参数的模型:
下载完成后,可以通过ollama list指令查看所有本地模型占用的存储空间ollama pull deepseek-r1:7b
想看具体某一个模型的参数。可以使用ollama show指令:ollama list
具体如下图所示ollama show <模型名称>
- 然后再运行以下命令,便可以和deepseek R1对话了
ollama run deepseek-r1:7b
比如可以提问它:为何deepseek影响力这么大
2.1.2 Ollama下的open-webui交互:基于docker安装,且支持联网搜索
当然,如果你希望有更好的交互方式,则可以考虑用ollama的标配前端open-webui
- 首先通过docker的官网下载docker
docker.p2hp.com
我直接用的Google账号注册 - 安装好后在右下角点击Terminal,打开控制台
- 输入以下命令——等待安装完成
然后在docker页面可以看到如下呈现docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
- 点击上面的链接:http://localhost:3000/auth,创建相关管理员账号之后
即可开始和R1对话拉
可能有同学疑问,这个7B没法联网,有点弱智啊,好问题
- 巧的是,在管理员面板上:http://localhost:3000/admin/settings,可以打开联网搜索滴,如果有相应搜索引擎的API,则自行设置,否则可以选择免费的duckduckgo
- 然后点击聊天界面的左下角 + 按钮,选择联网搜索
- 则一切大功告成
2.1.3 基于Ollama + ChatBox部署deepseek-r1:7b
除了上面的open-webui之外,当然,也有人说,chatbox 是个很方便的图形界面,比open web-UI 好用
一不做二不休,那我们再试下这个chatbox
- 通过Ollama部署好deepseek-r1:7b之后,再通过chatbox官网下载对应的客户端:chatboxai
- 下载好chatbox之后,进行如下图所示的一系列设置「比如模型的提供方选择OLLAMA.API,且在下拉框处选择本地已经安装的模型deepseek-r1:7b」
- 接下来,便可以提问R1 7B拉
2.1.4 基于Ollama + Page Assist搭建本地知识库问答系统:且支持联网搜索
也有人称,Page Assist 直接提供了一个类似Open WebUI的交互界面来运行本地的大模型,故我们再试下这个Page Assist
在通过Ollama部署好deepseek-r1:7b之后,如果你想让DeepSeek R1不仅仅是一个问答机器人,而是一个具有专有知识的智能助手,那就需要搭建本地知识库了
实现也很简单——基于Page Assist即可
- 直接打开Chrome的插件市场,搜索并添加Page Assist插件
- 安装完插件后,点击插件图标,选择本地搭建的DeepSeek模型,进行配置,且支持联网搜索——背后还是基于免费的duckduckgo
- 且点击页面右上角的设置按钮,还可以进入RAG(RetrievalAugmented Generation)模式
- 上传你自己的知识库
2.2 通过vLLM推理deepseek-r1:8b:R1-Distill-Llama-8B
本2.2节基本为我司大模型项目组的文弱编写
- 首先,新建一个conda环境:
conda create -n vllm_test python=3.10
- 然后配置该conda环境:
conda activate vllm_testpip install vllm
- 配置好以后,启动vllm推理服务:
vllm serve path_to/DeepSeek-R1-Distill-Llama-8B --tensor-parallel-size 1 --max-model-len 32768 --enforce-eager --gpu_memory_utilization=0.98 --enable-chunked-prefill --port 6060
默认是8000端口,可以修改port里的参数来改变服务端口
vllm serve后面的模型路径改为本地下载好的模型的实际绝对路径 - 启动vllm服务后,便可以直接提问了,比如输入如下命令行:
curl http://localhost:6060/v1/chat/completions \-H "Content-Type: application/json" \-d '{"model": "path_to/DeepSeek-R1-Distill-Llama-8B ","messages": [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "题目:有五个人站成一排,每个人手中都拿着一顶帽子,帽子的颜色可以是红色、蓝色或绿色。每个人都能看到自己前面的人头上的帽子颜色,但看不见自己头上的帽子,且每个人只能看到前面人的帽子颜色,而无法看见自己的帽子和别人背后的帽子。每个人都可以听到别人说话的内容,但不能交换信息。规则:每个人都知道一共有三种颜色的帽子(红、蓝、绿),并且帽子是随机分配的,每种颜色可能有多个,但也可能没有。每个人会依次回答自己头上的帽子颜色,能正确猜出自己帽子颜色的人可以获得奖励。第一个人只能听到后面四个人的回答,无法知道任何自己的信息;第二个人只能听到后面三个人的回答,依此类推。第一个人可以先做一个声明,告知后面的人如何推理他们自己的帽子颜色。问题:如果所有人都能完美推理出自己头上的帽子颜色,问:第一个人应该如何开始,才能确保最多的人能够猜对自己帽子颜色?"}],"max_tokens": 2000,"temperature": 0.7,"top_p": 0.9}'
2.3(选读) 本地手机端部署DeepSeek-R1蒸馏Llama/Qwen后的版本
直接通过这个链接:mnn_llm_app_debug_0_1.apk,下载Android apk,安装之后,在应用内的模型列表最后一个,直接安装R1-1.5B-Qwen-MNN
// 待更
第三部分 无蒸馏前提下本地部署R1 or R1-Zero 671B满血版
本地部署R1 or R1-Zero 满血版又分为两种方式
- 一种是做了各种量化的,此乃属于追求满血版但资源还是有限不得不做的折中处理
- 一种是不做任何量化的,这种属于土豪路径,如果你是用的这个路线,请私我,原因很简单,我也想多一些土豪朋友
3.1 折中路径:无蒸馏但量化部署Deepseek-R1 671B满血版
3.1.1 本地CPU上运行 Deepseek-R1 的完整的硬件 + 软件设置
huggingface 的一工程师Matthew Carrigan展示了在本地CPU上运行 Deepseek-R1 的完整的硬件 + 软件设置「他使用的是 670B 模型,无蒸馏,Q8 量化,实现全质量,总成本 6,000 美元——GPU版本得10万美元+」
核心硬件方面
- 主板:技嘉 MZ73-LM0 或 MZ73-LM1。有 2 个 EPYC 插槽,以获得 24 个 DDR5 RAM 通道
- CPU:2x 任何 AMD EPYC 9004 或 9005 CPU
“LLM 一代的瓶颈在于内存带宽,因此您不需要高端产品。如果真的想降低成本,请购买 9115 甚至 9015” - RAM:24×32GB DDR5-RDIMM
因为需要 768GB(以适应模型)跨 24 个 RAM 通道(以获得足够快的带宽),故意味着 24 x 32GB DDR5-RDIMM 模块
关键组件方面
- 电源:该系统的功耗出奇地低!(<400W)
“但是,您需要大量的 CPU 电源线来为 2 个 EPYC CPU 供电。Corsair HX1000i 的功率足够了。” - 机箱:具有用于安装完整服务器主板的螺丝安装座
- 散热器:适合AMD EPYC 有 SP5 插槽的就行
系统调优方面
- 最后,SSD:任何适合 R1 的 1TB 或更大的 SSD 都可以。“推荐 NVMe,只是因为启动模型时你必须将 700GB 复制到 RAM 中
- 软件部分:安装 Linux,进入 BIOS 并将 NUMA 组数设置为 0。这将确保模型的每一层都交错在所有 RAM 芯片上,从而使我们的吞吐量加倍。安装 Llama。下载 700G 的DeepSeek-R1-Q8_0 版本
软件部署
- 安装llama.cpp:git clone https://github.com/ggerganov/llama.cpp
- 下载模型权重:HuggingFace Q8_0目录全量700GB(⚠️确保存储空间)
- 一切完成后,设置以下代码:
llama-cli -m ./DeepSeek-R1.Q8_0-00001-of-00015.gguf --temp 0.6 -no-cnv -c 16384 -p "<|User|>How many Rs are there in strawberry? <|Assistant|>"
这个版本没有 GPU,生成速度是每秒 6 到 8 个tokens,作者认为考虑到价格,这个非 GPU 硬件的方案可以接受。因为运行的是 Q8 量化的完整 670B 模型,因此质量应与 Deepseek API 无异
至于为什么不用GPU?
- 显存墙限制:保持Q8精度需700GB+显存,单张H100仅80GB → 需9张组集群 → 成本超10万美元
- 量化损耗困境:若降精度至FP16,8卡H100即可运行 → 但模型质量显著下降 ≈ 智商砍半
- 性价比暴击:本方案以1/20成本实现可用推理速度(对比GPU方案6-8tps vs 50-100tps)
3.1.2 GPU上跑无蒸馏但量化的Deepseek-R1 671B满血版
Unsloth AI 在 HuggingFace 上提供了 “动态量化” 版本来大幅缩减模型的体积
所谓“动态量化” 的核心思路是:对模型的少数关键层进行高质量的 4-6bit 量化,而对大部分相对没那么关键的混合专家层(MoE)进行大刀阔斧的 1-2bit 量化
为什么可以做呢,原因在于他们观察到,DeepSeek 的前 3 层是全连接层,而非 MoE 层
作为回顾,MoE(专家混合)层使得能够在不增加模型计算量(FLOPs)的情况下增加参数数量,因为他们动态地将大多数条目掩码为 0,因此实际上跳过了对这些零值条目的矩阵乘法运算「更多请参阅此条推文:x.com/danielhanchen/status/1868748998783517093」
- 总之,通过这种方法,DeepSeek R1 全量模型可压缩至最小 131GB(1.58-bit 量化),极大降低了本地部署门槛,甚至能在单台 Mac Studio 上运行
- Unsloth AI 提供了4 种动态量化模型(1.58 至 2.51 比特,文件体积为 131GB 至 212GB)
MoE Bits Disk Size Type Quality Link Down_proj 1.58-bit 131GB IQ1_S Fair huggingface.co/unsloth/DeepSeek-R1-GGUF/tree/main/DeepSeek-R1-UD-IQ1_S 2.06/1.56bit 1.73-bit 158GB IQ1_M Good huggingface.co/unsloth/DeepSeek-R1-GGUF/tree/main/DeepSeek-R1-UD-IQ1_M 2.06bit 2.22-bit 183GB IQ2_XXS Better huggingface.co/unsloth/DeepSeek-R1-GGUF/tree/main/DeepSeek-R1-UD-IQ2_XXS 2.5/2.06bit 2.51-bit 212GB Q2_K_XL Best huggingface.co/unsloth/DeepSeek-R1-GGUF/tree/main/DeepSeek-R1-UD-Q2_K_XL 3.5/2.5bit
部署此类大模型的主要瓶颈是内存+显存容量,建议配置如下:
- DeepSeek-R1-UD-IQ1_M:内存 + 显存 ≥ 200 GB
- DeepSeek-R1-Q4_K_M:内存 + 显存 ≥ 500 GB
若硬件条件有限,可尝试体积更小的 1.58-bit 量化版(131GB),可运行于:
- 单台 Mac Studio
192GB 统一内存,参考案例可见 X 上的 @ggerganov,成本约 5600 美元 - 2×Nvidia H100 80GB
参考案例可见 X 上的 @hokazuya,成本约 4~5 美元 / 小时
且在这些硬件上的运行速度可达到 10+ token / 秒
// 待更
3.2 土豪路径:无蒸馏不量化部署Deepseek-R1 671B满血版
// 待更
相关文章:
一文速览DeepSeek-R1的本地部署——可联网、可实现本地知识库问答:包括671B满血版和各个蒸馏版的部署
前言 自从deepseek R1发布之后「详见《一文速览DeepSeek R1:如何通过纯RL训练大模型的推理能力以比肩甚至超越OpenAI o1(含Kimi K1.5的解读)》」,deepseek便爆火 爆火以后便应了“人红是非多”那句话,不但遭受各种大规模攻击,即便…...
【Redis】主从模式,哨兵,集群
主从复制 单点问题: 在分布式系统中,如果某个服务器程序,只有一个节点(也就是一个物理服务器)来部署这个服务器程序的话,那么可能会出现以下问题: 1.可用性问题:如果这个机器挂了…...
结构体排序 C++ 蓝桥杯
成绩排序 #include<iostream> #include<algorithm> using namespace std; struct stu {string name;//名字int grade;//成绩 }; stu a[30]; bool cmp(stu l, stu r) {if (l.grade ! r.grade) return l.grade > r.grade;return l.name < r.name; } int main()…...
【通俗易懂说模型】线性回归(附深度学习、机器学习发展史)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀深度学习_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …...
Haproxy+keepalived高可用集群,haproxy宕机的解决方案
Haproxykeepalived高可用集群,允许keepalived宕机,允许后端真实服务器宕机,但是不允许haproxy宕机, 所以下面就是解决方案 keepalived配置高可用检测脚本 ,master和backup都要添加 配置脚本 # vim /etc/keepalived…...
python学opencv|读取图像(五十六)使用cv2.GaussianBlur()函数实现图像像素高斯滤波处理
【1】引言 前序学习了均值滤波和中值滤波,对图像的滤波处理有了基础认知,相关文章链接为: python学opencv|读取图像(五十四)使用cv2.blur()函数实现图像像素均值处理-CSDN博客 python学opencv|读取图像(…...
电梯系统的UML文档13
5.2.6 CarPositionControl 的状态图 图 24: CarPositionControl 的状态图 5.2.7 Dispatcher 的状态图 图 25: Dispatcher 的状态图 5.3 填补从需求到状态图鸿沟的实用方法 状态图能对类的行为,一个用例,或系统整体建模。在本文中,状态图…...
CSDN原力值提升秘籍:解锁社区活跃新姿势
在 CSDN 这个技术交流的大舞台上,原力值不仅是个人活跃度的象征,更是开启更多权益与福利的钥匙。最近,我出于自身需求,一头扎进了提升原力值的研究中,经过多方探索与资料整理,现在就迫不及待地把这些干货分…...
互联网行业常用12个数据分析指标和八大模型
本文目录 前言 一、互联网线上业务数据分析的12个指标 1. 用户数据(4个) (1) 存量(DAU/MAU) (2) 新增用户 (3) 健康程度(留存率) (4) 渠道来源 2. 用户行为数据(4个) (1) 次数/频率…...
gltf工具
gltf 在线工具 ONLINE 3D VIEWER 3dviewer.netgltf-viewer cos.3dzhanting.cnviewer www.niushifu.topglTF Viewer gltf-viewer.donmccurdy.comGLTF 在线编辑器 gltf.nsdt.cloudgltfeditor...
车载软件架构 --- 基于AUTOSAR软件架构的ECU开发流程小白篇
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活…...
Vue.js 如何选择合适的组件库
Vue.js 如何选择合适的组件库 大家在开发 Vue.js 项目的时候,都会面临一个问题:我该选择哪个组件库? 市面上有很多优秀的 Vue 组件库,比如 Element Plus、Vuetify、Quasar 等,它们各有特点。选择合适的组件库…...
JavaScript系列(58)--性能监控系统详解
JavaScript性能监控系统详解 📊 今天,让我们深入探讨JavaScript的性能监控系统。性能监控对于保证应用的稳定性和用户体验至关重要。 性能监控基础概念 🌟 💡 小知识:JavaScript性能监控是指通过收集和分析各种性能指…...
Flutter 与 React 前端框架对比:深入分析与实战示例
Flutter 与 React 前端框架对比:深入分析与实战示例 在现代前端开发中,Flutter 和 React 是两个非常流行的框架。Flutter 是 Google 推出的跨平台开发框架,支持从一个代码库生成 iOS、Android、Web 和桌面应用;React 则是 Facebo…...
AI-on-the-edge-device - 将“旧”设备接入智能世界
人工智能无处不在,从语音到图像识别。虽然大多数 AI 系统都依赖于强大的处理器或云计算,但**边缘计算**通过利用现代处理器的功能,使 AI 更接近最终用户。 本项目演示了使用 **ESP32**(一种低成本、支持 AI 的设备)进行…...
站在JavaScript的视角去看,HTML的DOM和GLTF的Json数据。
很多前端小伙伴没有见过、操作过gltf文件,对非常懵逼,本文从前端小伙伴最熟悉的dom模型为切入口,以类别的方式来学习一下gltf文件。 一、结构与组织形式 HTML DOM(文档对象模型): 树形结构:HT…...
js --- 获取时间戳
介绍 使用js获取当前时间戳 语法 Date.now()...
冰蝎v3.0 beta7来啦
我用了一台kali,一台centos,一台windows,做了一个文件上传和一个反弹shell实验,载荷是AES加密的,终于感受到了对加密流量的无可奈何~ kali(php8.1)centos(php7.1)window…...
将markdown文件和LaTex公式转为word
通义千问等大模型生成的回答多数是markdown类型的,需要将他们转为Word文件 一 pypandoc 介绍 1. 项目介绍 pypandoc 是一个用于 pandoc 的轻量级 Python 包装器。pandoc 是一个通用的文档转换工具,支持多种格式的文档转换,如 Markdown、HTM…...
Elasticsearch Kibana的下载与安装
1.下载Elasticsearch安装包 Elastic — 搜索 AI 公司 | Elastic Download Elasticsearch | Elastic 2.下载Kibana安装包 Download Kibana Free | Get Started Now | Elastic http://localhost:5601/?code708785...
WPS计算机二级•幻灯片的配色、美化与动画
听说这是目录哦 配色基础颜色语言❤️使用配色方案🩷更改PPT的颜色🧡PPT动画添加的原则💛PPT绘图工具💚自定义设置动画💙使用动画刷复制动画效果🩵制作文字打字机效果💜能量站😚 配色…...
高精度乘法(高×高)
高精度乘法(高高) 前言 ACWing算法基础课讲解了高低的乘法,这里高高作为一个进一步的补充,也是对闫总的板子做一个补充。 以下内容改编自《洛谷深入浅出》123页,我对代码进行了一点修改。 A*B Problem P1303 题目…...
出现 Can not find ‘Converter‘ support class Year 解决方法
目录 前言1. 问题所示2. 原理分析3. 解决方法前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 1. 问题所示 执行代码的时候,出现如下问题: 2025-02-03 19:16:23.638 |...
一表总结 Java 的3种设计模式与6大设计原则
设计模式通常分为三大类:创建型、结构型和行为型。 创建型模式:主要用于解决对象创建问题结构型模式:主要用于解决对象组合问题行为型模式:主要用于解决对象之间的交互问题 创建型模式 创建型模式关注于对象的创建机制…...
蓝桥与力扣刷题(141 环形链表)
题目:给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的…...
Cursor如何使用Google Gemini以及碰到的坑
Cursor如何使用Google Gemini以及碰到的坑 Cursor介绍下载安装Google Gemini介绍Google Gemini 官网申请Google Gemini API网址 配置Cursor使用Google Gemini打开Corsur设置 Cursor介绍 Cursor是一款基于人工智能的代码编辑器,旨在帮助开发者更高效地编写代码。…...
e2studio开发RA4M2(6)----GPIO外部中断(IRQ)配置
e2studio开发RA4M2.6--GPIO外部中断(IRQ)配置 概述视频教学样品申请硬件准备参考程序源码下载新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置SWD调试口设置GPIO口配置按键中断配置中断回调函数主程序 概述 GPIO(通用输入/输出&a…...
day38|leetcode 322零钱兑换,279.完全平方数,139.单词拆分
322. 零钱兑换 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是…...
Windsurf cursor vscode+cline 与Python快速开发指南
Windsurf简介 Windsurf是由Codeium推出的全球首个基于AI Flow范式的智能IDE,它通过强大的AI助手功能,显著提升开发效率。Windsurf集成了先进的代码补全、智能重构、代码生成等功能,特别适合Python开发者使用。 Python环境配置 1. Conda安装…...
使用shell命令安装virtualbox的虚拟机并导出到vagrant的Box
0. 安装virtualbox and vagrant [rootolx79vagrant ~]# cat /etc/resolv.conf #search 114.114.114.114 nameserver 180.76.76.76-- install VirtualBox yum install oraclelinux-developer-release-* wget https://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /etc/pki/rpm-g…...
【25考研】南开软件考研复试复习重点!
一、复试内容 复试采取现场复试的方式。复试分为笔试、机试和面试三部分。三部分合计100分,其中笔试成绩占30%、机试成绩占30%、面试成绩占40%。 1.笔试:专业综合基础测试 考核方式:闭卷考试,时长为90分钟。 笔试考查内容范围…...
设计模式 - 行为模式_Template Method Pattern模板方法模式在数据处理中的应用
文章目录 概述1. 核心思想2. 结构3. 示例代码4. 优点5. 缺点6. 适用场景7. 案例:模板方法模式在数据处理中的应用案例背景UML搭建抽象基类 - 数据处理的 “总指挥”子类定制 - 适配不同供应商供应商 A 的数据处理器供应商 B 的数据处理器 在业务代码中整合运用 8. 总…...
C++基础(2)
目录 1. 引用 1.1 引用的概念和定义 1.2 引用的特性 1.3 引用的使用 2. 常引用 3. 指针和引用的关系 4. 内联函数inline 5. nullptr 1. 引用 1.1 引用的概念和定义 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开…...
C#中的if判断语句详解
SEO Meta Description: 了解C#中的if判断语句,包括基本用法、嵌套使用、多条件判断以及最佳实践,全面掌握条件控制在C#编程中的应用。 介绍 在编程中,条件判断语句是控制程序流程的关键部分。C#提供了多种条件判断语句,其中 if语…...
PythonStyle MVC 开发框架
在 Python 中,MVC(Model - View - Controller,模型 - 视图 - 控制器)是一种常见的软件设计模式,它将应用程序分为三个主要部分,各自承担不同的职责,以提高代码的可维护性、可扩展性和可测试性。…...
excel实用问题:提取文字当中的数字进行运算
0、前言: 这里汇总在使用excel工作过程中遇到的问题,excel使用wps版本,小规模数据我们自己提取数据可行,大规模数据就有些难受了,因此就产生了如下处理办法。 需求:需要把所有文字当中的数字提取出来&…...
FFmpeg:多媒体处理的瑞士军刀
FFmpeg:多媒体处理的瑞士军刀 前言 FFmpeg 是一个功能强大且跨平台的开源多媒体框架,广泛应用于音视频处理领域。 它由多个库和工具组成,能够处理各种音视频格式,涵盖编码、解码、转码、流处理等多种操作。 无论是专业视频编辑…...
在K8S中,如何把某个worker节点设置为不可调度?
在Kubernetes中,如果你想要把一个worker节点设置为不可调度,意味着你不想让Kubernetes调度器在这个节点上调度新的Pod。这通常用于维护或升级节点,或者当节点遇到硬件故障或性能问题时,要将某个worker节点设置为不可调度。 方法1…...
雷赛LC2000
【一,概述】 这个是中型PLC 【二,外观】 网口编号: 【2】【3】 //默认ip:192.168.1.xxx 【0】【1】 可视化授权不如禾川Q系。 【三,总线轴】 因为本次带的轴是台达A2系列伺服 A2最快总线是【1ms】的倍数…...
Android学习20 -- 手搓App2(Gradle)
1 前言 昨天写了一个完全手搓的:Android学习19 -- 手搓App-CSDN博客 后面谷歌说不要用aapt,d8这些来搞。其实不想弄Gradle的,不过想着既然开始了,就多看一些。之前写过一篇Gradle,不过是最简单的编译,不涉…...
Mac M1 Comfyui 使用MMAudio遇到的问题解决?
问题1: AssertionError: Torch not compiled with CUDA enabled? 解决办法:修改代码以 CPU 运行 第一步:找到 /ComfyUI/custom_nodes/ComfyUI-MMAudio/mmaudio/ext/autoencoder/vae.py文件中的下面这两行代码 self.data_mean nn.Buffer(t…...
Vim的基础命令
移动光标 H(左) J(上) K(下) L(右) $ 表示移动到光标所在行的行尾, ^ 表示移动到光标所在行的行首的第一个非空白字符。 0 表示移动到光标所在行的行首。 W 光标向前跳转一个单词 w光标向前跳转一个单词 B光标向后跳转一个单词 b光标向后跳转一个单词 G 移动光标到…...
【后端面试总结】ES的_template与_index_template技术详解
在Elasticsearch(简称ES)中,索引模板(Index Template)和组件模板(Component Template)是两种用于预定义索引配置的强大工具。它们允许用户在索引创建时自动应用预设的设置、映射(Map…...
使用LightGlue进行图像配准并提取图像重叠区域
发表日期:2023年6月23日 项目地址:https://github.com/cvg/LightGlue https://github.com/cvg/glue-factory/ LightGlue是一个在精度上媲美Superglue,但在速度上比Superglue快一倍的模型。通过博主实测,LightGlue的配准效果比Su…...
RK3568使用QT搭建TCP服务器和客户端
文章目录 一、让RK3568开发板先连接上wifi二、客户端代码1. `widget.h` 文件2. `widget.cpp` 文件**详细讲解**1. **`Widget` 类构造函数 (`Widget::Widget`)**2. **UI 布局 (`setupUI`)**3. **连接按钮的槽函数 (`onConnectClicked`)**4. **发送消息按钮的槽函数 (`onSendMess…...
解释 Java 中的垃圾回收机制,以及如何优化垃圾回收性能?
Java中的垃圾回收机制是一种自动管理内存的机制,它负责在程序运行过程中检测和清除不再被引用的对象,从而释放其占用的内存空间。 垃圾回收机制通过标记-清除、复制、标记-整理等算法实现,能够有效避免内存泄漏,提高程序的性能和…...
读写锁: ReentrantReadWriteLock
在多线程编程场景中,对共享资源的访问控制极为关键。传统的锁机制在同一时刻只允许一个线程访问共享资源,这在读写操作频繁的场景下,会因为读操作相互不影响数据一致性,而造成不必要的性能损耗。ReentrantReadWriteLock࿰…...
2022ACMToG | 寻找快速的去马赛克算法
文章标题:Searching for Fast Demosaicking Algorithms 1. Abstract 本文提出了一种方法,用于在给定损失函数和训练数据的情况下,自动合成高效且高质量的去马赛克算法,涵盖各种计算开销。该方法执行多目标的离散-连续优化&#x…...
暴力破解与验证码安全
目录 前言 暴力破解:简单粗暴的黑客攻击手段 暴力破解的前提条件 暴力破解的定义与原理 常见的暴力破解工具 暴力破解的常见场景 暴力破解的危害 验证码:抵御暴力破解的第一道防线 验证码的定义与作用 验证码的工作原理 验证码的类型 验证码…...
基于区块链的数字身份认证:安全与隐私的未来
友友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将…...