【DeepSeek-R1背后的技术】系列十一:RAG原理介绍和本地部署(DeepSeek+RAGFlow构建个人知识库)
【DeepSeek-R1背后的技术】系列博文:
第1篇:混合专家模型(MoE)
第2篇:大模型知识蒸馏(Knowledge Distillation)
第3篇:强化学习(Reinforcement Learning, RL)
第4篇:本地部署DeepSeek,断网也能畅聊!
第5篇:DeepSeek-R1微调指南
第6篇:思维链(CoT)
第7篇:冷启动
第8篇:位置编码介绍(绝对位置编码、RoPE、ALiBi、YaRN)
第9篇:MLA(Multi-Head Latent Attention,多头潜在注意力)
第10篇:PEFT(参数高效微调——Adapter、Prefix Tuning、LoRA)
第11篇:RAG原理介绍和本地部署(DeepSeek+RAGFlow构建个人知识库)
目录
- 1 前言
- 2 方法
- 3 RAG和SFT的区别
- 3.1 核心目标不同
- 3.2 数据使用方式
- 3.3 实时性对比
- 3.4 资源消耗
- 3.5 可解释性
- 3.6 典型应用场景
- 3.7 协同使用策略
- 3.8 选择建议
- 4 本地部署(DeepSeek+RAGFlow构建个人知识库)
- 4.1 Embedding模型
- 4.2 Ollama部署DeepSeek-R1模型
- 4.2.1 安装和部署
- 4.2.2 配置环境变量
- 4.3 部署RAGFlow
- 4.3.1 安装Docker
- 4.3.2 安装RAGFlow
- 4.3.3 注册登录
- 4.4 构建个人知识库并实现对话问答
- 4.4.1 配置模型
- 4.4.2 创建知识库
- 4.4.3 创建聊天助理
- 5 本地部署RAGFlow+调用API
1 前言
RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合了信息检索技术与语言生成模型的人工智能技术,该技术通过从外部知识库中检索相关信息,并将其作为提示(Prompt)输入给大型语言模型(LLMs),以增强模型处理知识密集型任务的能力,如问答、文本摘要、内容生成等。
RAG模型由Facebook AI Research(FAIR)团队于2020年首次提出,并迅速成为大模型应用中的热门方案。
大型语言模型(LLM)通常面临两个问题:
-
知识截止:每个基础模型都有知识截止,这意味着其知识仅限于训练时可用的数据。
-
幻觉:当模型自信地做出错误反应时,就会发生幻觉。
RAG)摆脱了知识限制,整合了外部数据,从外部知识库中检索相关信息,增强模型的生成能力。
顾名思义,RAG的主要包括检索、增强和生成这三个步骤:
-
检索:检索是RAG流程的第一步,从预先建立的知识库中检索与问题相关的信息。这一步的目的是为后续的生成过程提供有用的上下文信息和知识支撑。
-
增强:RAG中增强是将检索到的信息用作生成模型(即大语言模型)的上下文输入,以增强模型对特定问题的理解和回答能力。这一步的目的是将外部知识融入生成过程中,使生成的文本内容更加丰富、准确和符合用户需求。通过增强步骤,LLM模型能够充分利用外部知识库中的信息。
-
生成:生成是RAG流程的最后一步,这一步的目的是结合LLM生成符合用户需求的回答。生成器会利用检索到的信息作为上下文输入,并结合大语言模型来生成文本内容。
简而言之,就是从知识库中检索到的问答对,增强了LLM的提示词(prompt),LLM拿着增强后的Prompt生成了问题答案。
2 方法
用RAG搭建知识库的流程如下:
- 数据准备与知识库构建
-
收集数据: 首先,需要收集与问答系统相关的各种数据,这些数据可以来自文档、网页、数据库等多种来源。
-
数据清洗: 对收集到的数据进行清洗,去除噪声、重复项和无关信息,确保数据的质量和准确性。
-
知识库构建: 将清洗后的数据构建成知识库。这通常包括将文本分割成较小的片段(chunks),使用文本嵌入模型(如GLM)将这些片段转换成向量,并将这些向量存储在向量数据库(如FAISS、Milvus等)中。
- 检索模块设计
-
问题向量化: 当用户输入查询问题时,使用相同的文本嵌入模型将问题转换成向量。
-
相似度检索: 在向量数据库中检索与问题向量最相似的知识库片段(chunks)。这通常通过计算向量之间的相似度(如余弦相似度)来实现。
-
结果排序: 根据相似度得分对检索到的结果进行排序,选择最相关的片段作为后续生成的输入。
- 生成模块设计
-
上下文融合:将检索到的相关片段与原始问题合并,形成更丰富的上下文信息。
-
大语言模型生成:使用大语言模型(如DeepSeek-R1)基于上述上下文信息生成回答。大语言模型会学习如何根据检索到的信息来生成准确、有用的回答。
3 RAG和SFT的区别
检索增强生成(RAG)和监督微调(SFT)是两种提升大模型性能的主流技术,但核心思路和应用场景存在显著差异。
3.1 核心目标不同
-
RAG
通过动态检索外部知识库增强生成能力,解决模型「知识固化」问题。适用于需要实时性、事实性准确或超出训练数据范围的场景(如最新事件、私有数据查询)。
示例:用企业内部文档实时回答业务问题。 -
SFT
通过调整模型参数使其适配特定任务格式或领域知识。旨在提升模型对特定任务(如法律文书生成、医疗问答)的指令遵循能力和专业性,但无法突破训练数据的时间或知识范围。
示例:微调模型生成符合法律规范的合同文本。
3.2 数据使用方式
-
RAG
- 推理阶段动态检索:每次生成时从外部数据库/文档中实时检索相关内容。
- 知识可更新:仅需更新检索库即可扩展模型知识,无需重新训练模型。
-
SFT
- 训练阶段静态学习:使用标注数据调整模型权重,学习固定知识或任务模式。
- 知识固化:模型学到的知识截止于训练数据时间点,更新需重新微调。
3.3 实时性对比
- RAG
优势在于零延迟知识更新。例如接入新闻API后,可立即回答当天事件。 - SFT
依赖训练数据时效性。若数据过时(如用2022年数据微调),模型无法感知新信息。
3.4 资源消耗
-
RAG
- 推理成本较高:需维护检索系统(如向量数据库),且每次生成需检索+生成两步计算。
- 训练成本低:通常直接使用预训练模型,无需额外训练。
-
SFT
- 训练成本高:需准备标注数据并进行微调(GPU资源消耗大)。
- 推理成本低:微调后模型可直接生成结果,无需额外系统。
3.5 可解释性
- RAG
生成结果可追溯检索到的文档,方便验证信息来源(如显示引用文献)。 - SFT
生成过程为黑箱,难以直接追踪知识来源。
3.6 典型应用场景
技术 | 适用场景 | 典型案例 |
---|---|---|
RAG | 实时问答、私有数据查询、事实核查 | 客服系统接入产品手册回答用户问题 |
SFT | 垂直领域深度适配、复杂指令遵循 | 微调模型生成符合金融规范的财报分析 |
3.7 协同使用策略
实际应用中常将二者结合:
- SFT微调模型:使其掌握领域术语和任务格式(如生成结构化报告)。
- RAG增强知识:动态补充最新或私有数据,提升回答准确性。
示例:医疗问答系统中,先微调模型理解医学术语,再通过RAG接入最新医学论文库。
3.8 选择建议
- 选RAG 若:需处理动态知识、响应实时查询、或无法获取足够微调数据。
- 选SFT 若:任务高度专业化(如代码生成)、或需严格遵循特定输出格式。
- 最佳实践:RAG+SFT联合使用,兼顾知识更新与任务适配性。
4 本地部署(DeepSeek+RAGFlow构建个人知识库)
接下来我们本地化部署DeepSeek-R1和RAGFlow,搭建个人知识库。
4.1 Embedding模型
什么是Embedding?为什么需要Embedding模型?
我们准备好外部知识库(可能来自本地的文件、搜索引擎结果、API等等)之后,需要通过Embedding(嵌入)模型,对知识库文件进行解析:Embedding的主要作用是将自然语言转化为机器可以理解的高维向量,并且通过这一过程捕获到文本背后的语义信息(例如不同文本之间的相似度关系等)。
此外,我们也需要通过Embedding模型,对用户的提问进行处理:用户的输入同样会经过Embedding处理,生成一个高维向量。
然后,拿用户的提问去匹配本地知识库:使用用户输入生成的高维向量,去查询知识库中相关的文档片段,在这个过程中,系统会利用某些相似度度量(如余弦相似度)去判断相似度。
简而言之,Embedding模型是用来对你上传的附件进行解析的。
在Ollama网站上,我们可以在Models页面看到不同的Chat模型和Embedding模型。
接下来我们开始本地部署。
4.2 Ollama部署DeepSeek-R1模型
首先,我们需要通过Ollama将DeepSeek-R1模型部署到本地运行。
4.2.1 安装和部署
详细的部署步骤请参考这篇博文:【DeepSeek-R1背后的技术】系列四:本地部署DeepSeek-R1,断网也能畅聊!
操作起来还是很方便的。
4.2.2 配置环境变量
- OLLAMA_HOST - 0.0.0.0:11434
- 作用:让虚拟机里的RAGFlow能够访问本机上的Ollama;
- 如果配置后虚拟机无法访问,可能是本机防火墙拦截了端口11434;
- 不想直接暴露11434端口的话,可以通过SSH端口转发来实现;
- 更新完两个环境变量后记得重启电脑。
环境变量配置方法:系统→系统信息→高级系统设置→环境变量
配置系统变量:
- OLLAMA_MODELS - 自定义模型存放位置
- 作用:Ollama会默认把模型下载到C盘,如果希望下载到其他盘需要进行配置。
重启电脑。
运行DeepSeek-R1 1.5B模型:(有时候会对话失败,退出对话,重新运行模型之后就正常了)
4.3 部署RAGFlow
接着,我们需要下载RAGFlow源代码和Docker镜像,通过Docker来本地部署RAGFlow。
硬件要求:
- CPU >= 4 cores
- RAM >= 16 GB
- Disk >= 50 GB
- Docker >= 24.0.0 & Docker Compose >= v2.26.1
4.3.1 安装Docker
对于Windows系统,我们需要先安装Docker。通过Docker页面 下载安装包安装即可。
双击后,点击确认安装即可,安装后需要重启电脑。
首次打开Docker Desktop时,需要登录账号,配置时可能会报以下错误
需要在终端输入以下命令更新wsl。
wsl --update
4.3.2 安装RAGFlow
- 将RAGFlow clone到本地
git clone https://github.com/infiniflow/ragflow.git
- 启动Docker服务器
Docker镜像是一个封装好的环境,包含了所有运行RAGFlow所需的依赖、库和配置。
我们需要先进入./docker文件夹,修改.env文件,因为默认的配置是轻量版的,没有Embedding模型。
注释掉84行,取消注释87行,修改后记得保存文件:
运行:
cd ragflow/docker
docker compose -f docker-compose.yml up -d
会帮我们自动下载RAGFlow镜像并启动服务。
注意:在下载镜像的时候,其中的minio和ragflow可能会下载很慢或者失败,需要配置Docker镜像源,打开配置文件:C:\Program Files\Docker\Docker\resources\windows-daemon-options.json,修改镜像源如下:
"registry-mirrors": ["registry|redacted","https://docker.hpcloud.cloud","https://docker.m.daocloud.io","https://docker.unsee.tech","https://docker.1panel.live","http://mirrors.ustc.edu.cn","https://docker.chenby.cn","http://mirror.azure.cn","https://dockerpull.org","https://dockerhub.icu","https://hub.rat.dev","https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn"],"insecure-registries" : ["registry.docker-cn.com","docker.mirrors.ustc.edu.cn"],
保存后再运行“docker compose -f docker-compose.yml up -d”命令即可。需要等待较长时间。
可以在终端输入以下命令查看服务是否已经启动
docker logs -f ragflow-server
显示下面的内容即已经成功启动:
4.3.3 注册登录
在浏览器中输入
http://localhost:80
会自动跳转到登录页面:
注册登录后:
4.4 构建个人知识库并实现对话问答
最后,我们在RAGFlow中构建个人知识库并实现基于个人知识库的对话问答。
Docker成功启动之后,浏览器输入 localhost:80 来访问RAGFlow。
4.4.1 配置模型
可以设置页面语言,点击右上角图像后,再点击左侧的“模型供应商”,添加我们本地部署的 deepseek-r1:1.5b模型。
填入参数如下:
其中,在cmd终端输入 ollama list查看本地模型名称,把完整的模型名称粘贴进去:
再在cmd终端输入 ipconfig 查看IPv4地址,输入到 基础Url 框中,格式是:http://IPv4:11434,11434是前面我们提到的端口。
配置好之后,点击确定即可。
接下来配置系统模型,点击右边 系统模型设置,把Chat模型和Embedding模型配置好:
4.4.2 创建知识库
点击上方的 知识库,再点击右侧创建知识库,输入知识库名称:
语言选择中文,可以选择不同的嵌入模型,解析方法包括了通用、简历、表格等,此处我们选择General,其他配置不用修改,使用默认值。保存配置。
然后上传本地文件,将知识库所需的所有文件都上传上来。注意:上传后一定要点击“解析”按钮!
4.4.3 创建聊天助理
点击上方 聊天,创建助理,选择刚才创建的知识库,其他配置可以使用默认:
新建聊天:
大功告成!
5 本地部署RAGFlow+调用API
当然,我们可以只搭建个人知识库,而不本地部署模型,通过调用企业大模型的API来对话。
我们可以按照第4章节,不安装Ollama,也不下载运行DeepSeek-R1 1.5B模型,只执行本地部署RAGFlow相关的流程。
还是回到模型供应商这里,例如我们选择通义千问模型,点击右侧 API-Key,在通义千问网站上申请API调用,将Key输入进去,就能直接调用企业模型服务了。
其他的企业模型的添加方式也是一样的,只不过是调用API可能需要收费,但是可以避免本地部署硬件带来的限制。
相关文章:
【DeepSeek-R1背后的技术】系列十一:RAG原理介绍和本地部署(DeepSeek+RAGFlow构建个人知识库)
【DeepSeek-R1背后的技术】系列博文: 第1篇:混合专家模型(MoE) 第2篇:大模型知识蒸馏(Knowledge Distillation) 第3篇:强化学习(Reinforcement Learning, RL)…...
[python脚本]论文1.(一)CPU/内存数据分析和分组
CPU 收集到的CPU数据,格式如下: 由于这里6个数据为一组来收集latency的数据以及各个分位值的数据,而本质上每一行都是一次完整的测试,因此这里将这个csv文件分为两个文件,第一个是和latency相关的,将6条数…...
git - 从一个远端git库只下载一个文件的方法
文章目录 git - 从一个远端git库只下载一个文件的方法概述笔记写一个bash脚本来自动下载get_github_raw_file_from_url.shreanme_file.shfind_key_value.sh执行命令 END git - 从一个远端git库只下载一个文件的方法 概述 github上有很多大佬上传了电子书库,如果只…...
【C++】list 链表的使用+模拟实现
目录 文章目录 前言 一、list的简介 二、list的使用方法 三、list的模拟实现 1.基本框架: 2.迭代器实现 3.常用接口实现 四、完整代码 总结 前言 本文主要介绍C【STL】容器中的 list,包括接口说明和模拟实现。其中讲解了迭代器功能上的分类&am…...
@Configuration与 @Component的差异
继承关系 Configuration确实可以视为Component的派生注解。从源码层面来看,Configuration本身通过元注解方式标记了Component,这意味着所有被Configuration注解的类本质上也会被Spring识别为组件(Component)。这种设计使得Config…...
c++第一课(基础c)
目录 1.开场白 2.char(字符) 3.字符数组 4.ASCII码 1.开场白 OK,咱们也是亿(不是作者故意的)天没见,话不多说,直接开始! 2.char(字符) 众所不周知&…...
element ui的time时间和table表格
<el-date-picker v-model"value1" align"right" type"date" placeholder"选择日期" value-format"yyyy-MM-dd" change"changeDate"></el-date-picker><el-date-picker v-model"datetime"…...
安装 tensorflow 遇到的问题
Q1: 没发现满足需求的版本 ERROR: Could not find a version that satisfies the requirement keras-nightly~2.5.0.dev (from tensorflow) (from versions: none) ERROR: No matching distribution found for keras-nightly~2.5.0.dev 按照官方文档Installation — TensorFl…...
音视频封装格式:多媒体世界的“容器”与“桥梁”
一、音视频封装格式的核心概念 音视频封装格式(容器)是一种将编码后的视频、音频、字幕等数据按规则整合的文件格式,其本质是多媒体数据容器,核心作用包含: 同步多轨道数据:通过时间戳(PTS/DTS)实现音画同步。组织数据流:统一管理视频流、音频流、字幕流等,并存储元…...
【学习资料】嵌入式人工智能Embedded AI
图片来源: Embedded Artificial Intelligence for Business Purposes | DAC.digital 随着AI在设备端的应用,我们看到越来越多的可穿戴设备出现以及自动驾驶汽车的发展,可以看到嵌入式人工智能是新的发展方向。我为大家介绍嵌入式人工智能的…...
Linux命令大全完整版
1. linux 系统管理命令 adduser 功能说明:新增用户帐号。语 法:adduser补充说明:在 Slackware 中,adduser 指令是个 script 程序,利用交谈的方式取得输入的用户帐号资料,然后再交由真正建立帐号的 use…...
红队内网攻防渗透:内网渗透之内网对抗:实战项目VPC2打靶父子域三层路由某绒免杀下载突破约束委派域控提权
红队内网攻防渗透 实战网络攻防靶场记录1.靶机配置信息讲解2.靶场渗透完整流程2.1 入口点:192.168.139.130(win2008 R2)2.1.1 tomcat后台war包获取权限2.1.2 tomcat使用后门上线CS平台2.1.3 信息收集获取数据库密码2.2 入口点横向:192.168.10.11 (win2012 SQL)2.2.1 SQLs…...
always和assign语法区别
always语句可以带时钟, 也可以不带时钟。 一,assign和always区别 assign 语句使用时不能带时钟。 assign a=1; assign b=2; 在always不带时钟时,逻辑功能和assign完全一致,都是只产生组合逻辑。比较简单的组合逻辑推荐使用assign语句,比较复杂的组合逻辑推荐使用 al…...
深入了解ThreadLocal底层原理-高并发架构
目录 什么是ThreadLocal应用场景需求实现 ThreadLocal核心源码解读Thread 、ThreadLocal、ThreadLocalMap 三者的关系 四大引用-强软弱虚类型ThreadLocal内存泄漏ThreadLocal为什么需要设计成弱引用?并且ThreadLocal用完需要remove呢?原因 什么是ThreadL…...
《AI与NLP:开启元宇宙社交互动新纪元》
在科技飞速发展的当下,元宇宙正从概念逐步走向现实,成为人们关注的焦点。而在元宇宙诸多令人瞩目的特性中,社交互动体验是其核心魅力之一。人工智能(AI)与自然语言处理(NLP)技术的迅猛发展&…...
基于vue和微信小程序的校园自助打印系统(springboot论文源码调试讲解)
第3章 系统设计 3.1系统功能结构设计 本系统的结构分为管理员和用户、店长。本系统的功能结构图如下图3.1所示: 图3.1系统功能结构图 3.2数据库设计 本系统为小程序类的预约平台,所以对信息的安全和稳定要求非常高。为了解决本问题,采用前端…...
电脑开机一段时间就断网,只有重启才能恢复网络(就算插网线都不行),本篇文章直接解决,不要再看别人的垃圾方法啦
下面的是我解决问题的心路历程,不想看的可以直接跳到解决方法上面! 内心思路: w11电脑更新过系统后,我的电脑是常年不关机的,但是一天突然断网,试了很多方法都连不上,重启电脑就会好࿰…...
go-zero学习笔记(五)
api自定义中间件 1. 修改.api文件 syntax"v1"type (GetInfoReq {IDs []string json:"IDs"}GetInfoData {ID string json:"ID"Name string json:"Name"MD5 string json:"md5"Size int64 json:"Size"Up…...
DeepSeek技术全景解析:架构创新与行业差异化竞争力
一、DeepSeek技术体系的核心突破 架构设计:效率与性能的双重革新 Multi-head Latent Attention (MLA):通过将注意力头维度与隐藏层解耦,实现显存占用降低30%的同时支持4096超长上下文窗口。深度优化的MoE架构:结合256个路由专家…...
函数中的形参和实参(吐槽)
def greet_user(user_name):print(f"Hello,{user_name.title()}!")greet_user("zhangsan") 在以上函数中,user_name是形参, 在greet_user("zhangsan")中,值“zhangsan”是实参。这本身没什么大问题。 但是这…...
使用 Promptic 进行对话管理需要具备python技术中的那些编程能力?
使用 Promptic 进行对话管理时,需要掌握一些基础的编程知识和技能,以下是详细说明: 1. Python 编程基础 Promptic 是一个基于 Python 的开发框架,因此需要具备一定的 Python 编程能力,包括: 函数定义与使用:了解如何定义函数、使用参数和返回值。类型注解:熟悉 Python…...
【模块】 ASFF 模块
ASFF (Adaptively Spatial Feature Fusion) 方法针对单次射击物体检测器的特征金字塔中存在的不同特征尺度之间的不一致性问题,提出了一种新颖的数据驱动策略进行金字塔特征融合。通过学习空间上筛选冲突信息的方法,减少了特征之间的不一致性,…...
第二十四周:OpenPose:使用部分亲和场的实时多人2D姿态估计
OpenPose 摘要Abstract文章信息引言方法同时进行检测和关联关键部位检测的置信图PAF使用PAF进行多人解析 关键代码实验结果创新与不足总结 摘要 本篇博客介绍了一种实时多人2D姿态估计框架——OpenPose,其核心思想是通过自底向上的全局关联策略,解决传统…...
ReACT agent和FC agent
rag系列文章目录 文章目录 rag系列文章目录前言一、简介二、示例说明三、对比总结 前言 大模型时代llm正在改变我们的生活,它可以帮助人类写作,写代码,翻译等等,但是llm的知识在训练时被冻结,无法直接使用api接入外部…...
大数据之常用Linux操作
一、 修改文件夹的所有者和所属组均为test用户 chown test:test /opt/文件夹名称二、使用rsync同步文件 rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。 rsync -av $pdir/$fname $user$host:$pdir/$fname三、配置环境变…...
计算机视觉行业洞察--影像行业系列第一期
计算机视觉行业产业链的上下游构成相对清晰,从基础技术研发到具体应用场景的多个环节相对成熟。 以下是我结合VisionChina经历和行业龙头企业对计算机视觉行业产业链上下游的拆解总结。 上下游总结 上游产业链分为软硬件两类,视觉的硬件主要指芯片、…...
自定义实现简版状态机
状态机(State Machine)是一种用于描述系统行为的数学模型,广泛应用于计算机科学、工程和自动化等领域。它通过定义系统的状态、事件和转移来模拟系统的动态行为。 基本概念 状态(State):系统在某一时刻的特…...
【Deepseek】Linux 本地部署 Deepseek
前言 本文介绍在 Linux 系统上部署 Deepseek AI。本文教程是面向所有想体验 AI 玩家的一个简易教程,因此即使是小白也可以轻松完成体验,话不多说立马着手去干。 [注]:笔者使用的系统为 Ubuntu 24.10 1. 关于 ollama Ollama 是一款开源应用…...
JavaScript系列(83)--正则表达式高级详解
JavaScript 正则表达式高级详解 🎯 正则表达式是处理文本的强大工具,掌握其高级特性可以让我们更高效地处理复杂的文本匹配和处理任务。让我们深入探讨JavaScript中正则表达式的高级应用。 正则表达式基础回顾 🌟 💡 小知识&…...
【行业解决方案篇九】【DeepSeek能源勘探:地震波数据智能解释】
第一章 先导课:给地球做CT的百年难题 各位老铁,今天咱们要聊的这个话题绝对硬核——给地球做CT还要用人工智能,这事儿到底有多刺激?想象一下你拿着医院CT报告单,但扫描对象换成深埋地下5000米的油气层,扫描仪换成总长300公里的地震波阵列,这操作难度直接飙升到地狱级。…...
密度提升30%!Intel 18A工艺正式开放代工
快科技2月23日消息,Intel官方网站悄然更新了对于18A(1.8nm级)工艺节点的描述,称已经做好了迎接客户项目的准备,将在今年上半年开始流片,有需求的客户可以随时联系。 Intel宣称,这是在北美地区率先量产的2nm以下工艺节…...
ESP32S3:参考官方提供的led_strip组件使用 SPI + DMA 方式驱动WS2812 RGB灯的实现思路 (实现各个平台移植使用该方式)
目录 引言使用SPI + DMA 方式实现思路分析1. 查看WS2812的datasheet手册2. 根据官方的led_strip组件的方式,自己手把手实现一遍3.完整的程序(实现霓虹灯效果)引言 参考官方提供的led_strip组件使用 SPI + DMA 方式驱动WS2812 RGB灯的实现思路,只有明白实现的思路,方能将其…...
java实现多图合成mp4和视频附件下载
java实现多图合成mp4和视频附件下载 在wutool中,封装了视频处理工具类,基于javacv和ffmpeg库,实现多图合成mp4、视频http附件下载等。 关于wutool wutool是一个java代码片段收集库,针对特定场景提供轻量解决方案,只…...
VulnOSv2 靶机渗透测试
春秋蝉鸣少年归~ arp发现靶机ip地址 发现开放80端口那先去访问一下 问题不大,没有什么有用的提示那就上dirb跑一下 这里给了一个版本号 通过searchsploit搜索了一下没有这个版本的poc/exp去网上搜搜看 这个也试了一下也利用不了回到页面上发现有个website可以点 然后…...
【STM32】内存管理
【STM32】内存管理 文章目录 【STM32】内存管理1、内存管理简介疑问:为啥不用标准的 C 库自带的内存管理算法?2、分块式内存管理(掌握)分配方向分配原理释放原理分块内存管理 管理内存情况 3、内存管理使用(掌握&#…...
【环境配置】maven,mysql,node.js,vue的快速配置与上手
【环境配置】maven,mysql,node.js,vue的快速配置与上手 我们在利用springbootvue来进行全栈项目开发时,需要做很多的准备工作,其中maven,mysql,node,js和vue的配置是必不可少的。 本期我们尽可能精简地介绍它们的配置以及快速上手。 1.maven 1.1.下载…...
前端实现socket 中断重连
前端代码 let ws;let reconnectAttempts 0;const maxReconnectAttempts 5;let reconnectTimer null;// 初始化连接function connect() {ws new WebSocket(ws://localhost:3001);ws.onopen () > {console.log(✅ 连接成功);reconnectAttempts 0; // 重置重连计数器docu…...
【深度学习】Transformer 的常见的位置编码有哪些
Transformer 位置编码(Positional Encoding)主要用于弥补 自注意力机制(Self-Attention) 对位置信息的忽略,常见的方案有以下几种: 1. 绝对位置编码(Absolute Positional Encoding) …...
HybridCLR+Adressable+Springboot热更
本文章会手把手教大家如何搭建HybridCLRAdressableSpringboot热更。 创作不易,动动发财的小手点个赞。 安装华佗 首先我们按照官网的快速上手指南搭建一个简易的项目: 快速上手 | HybridCLR 注意在热更的代码里添加程序集。把用到的工具放到程序集里…...
收到线上服务器出现cpu告警一般怎么排查?
当线上服务器出现CPU告警时,可以按照以下步骤进行系统性排查,逐步定位问题根源: 1. 快速确认CPU使用情况 命令工具:top # 实时查看CPU占用(按P排序进程) htop …...
买股票的最佳时机 - 2
买卖股票的最佳时机 III 题目描述: 提示: 1 < prices.length < 1050 < prices[i] < 105 分析过程: 写动态规划,我们需要考虑一下问题: 定义状态状态转移方程初始条件 遍历顺序 4种状态: …...
pytorch入门级项目--基于卷积神经网络的数字识别
文章目录 前言1.数据集的介绍2.数据集的准备3.数据集的加载4.自定义网络模型4.1卷积操作4.2池化操作4.3模型搭建 5.模型训练5.1选择损失函数和优化器5.2训练 6.模型的保存7.模型的验证结语 前言 本篇博客主要针对pytorch入门级的教程,实现了一个基于卷积神经网络&a…...
【Java】求绝对值
目录 引言基础方法Math.abs()适用类型与语法代码示例 特殊数值处理复数绝对值(模)大整数与高精度小数 底层实现与性能优化位运算技巧(仅限int类型)最小值溢出与 Math.absExact()解决方案1:手动判断解决方案2࿰…...
简单爬虫:东方财富网股票数据爬取(20231230)
目标网站:https://quote.eastmoney.com/center/gridlist.html#hs_a_board 需求:将东方财富网行情中心不同板块的股票数据爬取下来 目标是将各个选项卡的股票数据全部爬取并以excel文件保存在本地。 查看网页源代码发现并没有目标数据,因此需…...
Vue学习教程-14内置指令
文章目录 前言一、v-text指令二、v-html指令三、v-cloak指令四、v-once指令五、v-pre指令六、其他指令 前言 Vue.js 提供了许多内置指令(Directives),这些指令用于在模板中添加特殊功能。内置指令以 v- 前缀开始。 v-text : 更新元素的 tex…...
Java——抽象类
在Java中,抽象类(Abstract Class) 是一种特殊的类,用于定义部分实现的类结构,同时允许子类提供具体的实现。抽象类通常用于定义通用的行为或属性,而将具体的实现细节留给子类。 1. 抽象类的定义 语法&…...
js数据类型检测
JavaScript的数据类型检测 typeof操作符 适用场景 基本数据类型快速判断:适用于快速判断变量是否为number、string、boolean、undefined、function等基本数据类型。比如在函数参数检查中,若要求传入数字参数,可用typeof来初步判断。函数类型…...
Maven+SSM+SpringBoot+Mybatis-Plus
SSM技术栈:spring6、springmvc、mybatis、springboot3、mybatis-plus、druid; 前端: node、npm、vue 快速掌握:全新SSMSpring BootMyBatis-Plus实战精讲...
【爬虫】request库
文章目录 发送请求响应对象响应数据的方式中文乱码问题响应对象的其他属性或方法 发送带参数的请求headers和查询参数 Requests——发送http请求,获取响应数据 首先,请确保: 已安装 RequestsRequests 是最新的 让我们从一些简单的示例开始…...
Docker内存芭蕾:优雅调整容器内存的极限艺术
title: “💾 Docker内存芭蕾:优雅调整容器内存的极限艺术” author: “Cjs” date: “2025-2-23” emoji: “🩰💥📊” 当你的容器变成内存吸血鬼时… 🚀 完美内存编排示范 📜 智能内存管家脚本…...