当前位置: 首页 > news >正文

使用Ollama(自定义安装位置)与RagFlow构建本地知识库

目录

  • 1. 为什么不直接使用网页版DeepSeek?
  • 2. 如何实现网页版DeepSeek不能实现的需求?
  • 3. 目标效果预览
  • 4. 为什么要使用RAG技术?RAG和模型微调的区别?
  • 5. 什么是Embedding?为什么需要“Embedding模型”?
  • 6. 本地部署全流程
    • 6.1 下载ollama,通过olama将DeepSeek模型下载到本地运行
      • 6.1.1 Ollama介绍
      • 6.1.2 下载ollama平台
      • 6.1.3 window 默认安装
      • 6.1.4 自定义的安装路径
      • 6.1.5 环境配置
      • 6.1.6 通过ollama下载模型
    • 6.2 下载RAGflow源代码和Docker,通过Docker来本地部署RAGflow;
      • 6.2.1 下载 [RAGflow](https://github.com/ollama/ollama)源码
      • 6.2.2 下载[Docker](https://www.docker.com/)
      • 6.2.3 配置修改
      • 6.2.4 RAGflow镜像下载
    • 6.3 在RAGflow中构建个人知识库并实现基于个人知识库的对话问答
      • 6.3.1 docker成功启动后,浏览器输入localhost:80来访问RAGFlow;
      • 6.3.2 在“模型提供商”中添加我们本地部署的 deepseek-r1:1.5b 模型;
      • 6.3.3 在“系统模型设置”中配置Chat模型(deepseek-r1:1.5b)和Embedding模型(用RAGFlow自带的即可)
      • 6.3.4 创建知识库,上传文件,解析文件
      • 6.3.5开始对话
  • 7. 只想迅速搭建个人知识库,可以不本地部署吗?

安装详细步骤在第6节

1. 为什么不直接使用网页版DeepSeek?

  • 我们的需求:绝对的隐私保护个性化知识库构建
  • 场景:如果你希望大模型能根据你们企业的规章制度来回答问题,那么你一般需要上传企业规章制度的附件;但你仍然可能面临的问题有:
    1. 数据隐私问题:联网使用大模型数据隐私性无法得到绝对保证;
    2. 上传文件的限制问题:网页版AI对于文件上传的数量、大小一般有限制并且通常需要付费方;
    3. 仅通过附件扩展上下文功能有限:每次在新对话中提问相关问题时,仍需要重新上传附件;修改删除对话中已有的附件困难;

2. 如何实现网页版DeepSeek不能实现的需求?

  • 隐私保护:
    • 通过对话大模型(如Deepseek)的本地部署解决隐私问题;
  • 个性化知识库构建
    • 使用RAG技术(Retrieval-Auqmented Generation,检索增强生成)构建个人知识库。为此我们需要
      1. 本地部署RAG技术所需要的开源框架RAGFlow;
      2. 本地部署Embedding大模型(或者直接部署自带Embedding模型的RAGFlow版本);

3. 目标效果预览

4. 为什么要使用RAG技术?RAG和模型微调的区别?

  • 大模型的幻觉问题;
  • 微调技术RAG技术:
    • 微调:在已有的预训练模型基础上,再结合特定任务的数据集进一步对其进行训练,使得模型在这一领域中表现更好(考前复习);
    • RAG:在生成回答之前,通过信息检索从外部知识库中查找与问题相关的知识,增强生成过程中的信息来源,从而提升生成的质量和准确性(考试带小抄);
    • 共同点:都是为了赋予模型某个领域的特定知识,解决大模型的幻觉问题。
  • RAG(Retrieval-Auqmented Generation)的原理:
    • 检索(Retrieval):当用户提出问题时,系统会从外部的知识库中检索出与用户输入相关的内容。
    • 增强(Augmentation):系统将检索到的信息与用户的输入结合,扩展模型的上下文。然后再传给生成模型(也就是Deepseek);
    • 生成(Generation):生成模型基于增强后的输入生成最终的回答。由于这一回答参考了外部知识库中的内容
      因此更加准确可读。

5. 什么是Embedding?为什么需要“Embedding模型”?

  • 检索(Retrieval)的详细过程:
    • 准备外部知识库:外部知识库可能来自本地的文件、搜索引擎结果、API等等。
    • 通过 Embedding (嵌入)模型,对知识库文件进行解析:Embedding 的主要作用是将自然语言转化为机器可以理解的高维向量,并且通过这一过程捕获到文本背后的语义信息(比如不同文本之间的相似度关系);
    • 通过 Embedding (嵌入)模型,对用户的提问进行处理:用户的输入同样会经过嵌入(Embedding)处理,生成一个高维向量
    • 拿用户的提问去匹配本地知识库:使用这个用户输入生成的这个高纬向量,去查询知识库中相关的文档片段。在这个过程中,系统会利用某些相似度度量(如余弦相似度)去判断相似度
  • 模型的分类:Chat模型、Embedding模型;
  • 简而言之:Embedding模型是用来对你上传的附件进行解析的;

在这里插入图片描述
ollama官网上可以选择不用的chat和Embedding大模型
在这里插入图片描述
在这里插入图片描述

6. 本地部署全流程

一共分为3步:

  1. 下载ollama,通过olama将DeepSeek模型下载到本地运行;
  2. 下载RAGflow源代码和Docker,通过Docker来本地部署RAGflow;
  3. 在RAGflow中构建个人知识库并实现基于个人知识库的对话问答。

前置条件

  • CPU >= 4 核
  • RAM >= 16 GB(16貌似不够用)
  • Disk >= 50 GB
  • Docker >= 24.0.0 & Docker Compose >= v2.26.1

下面详细讲解
需要先安装CUDA Toolkit
https://www.bilibili.com/opus/1031430460507422720

6.1 下载ollama,通过olama将DeepSeek模型下载到本地运行

6.1.1 Ollama介绍

Ollama是一个支持在Windows、Linux和MacOS上本地运行大语言模型的工具。它允许用户非常方便地运行和使用各种大语言模型,比如Qwen模型等。用户只需一行命令就可以启动模型。

主要特点包括:

  • 跨平台支持Windows、Linux、MacOS系统。
  • 提供了丰富的模型库,包括Qwen、Llama等1700+大语言模型,可以在官网model library中直接下载使用。
  • 支持用户上传自己的模型。用户可以将huggingface等地方的ggml格式模型导入到ollama中使用。也可以将基于pytorch等格式的模型转换为ggml格式后导入。
  • 允许用户通过编写modelfile配置文件来自定义模型的推理参数,如temperature、top_p等,从而调节模型生成效果。
  • 支持多GPU并行推理加速。在多卡环境下,可以设置环境变量来指定特定GPU。
  • 强大的技术团队支持,很多模型开源不到24小时就能获得支持。

总的来说,Ollama降低了普通开发者使用大语言模型的门槛,使得本地部署体验大模型变得简单易行。对于想要搭建自己的AI应用,或者针对特定任务调优模型的开发者来说,是一个非常有用的工具。它的一些特性,如允许用户自定义模型参数,对模型进行个性化适配提供了支持。

6.1.2 下载ollama平台

Ollama 官方主页:https://ollama.com/
Ollama 下载:https://ollama.com/download
Ollama 官方 GitHub 源代码仓库:https://github.com/ollama/ollama/

在这里插入图片描述

6.1.3 window 默认安装

直接从下载页面下载相对应系统的安装程序,Windows安装程序选择Windows的安装包,点击“Download for Windows”

如果要下载到c盘,默认安装即可
在这里插入图片描述

双击 下载好的exe文件,然后点击install即可
在这里插入图片描述
默认安装位置如下:
在这里插入图片描述

6.1.4 自定义的安装路径

  1. 下载完成后,不要直接双击运行安装程序,否则不给你选择的机会,直接装C盘。而是需要在安装包所在的目录下打开命令提示符(在文件夹地址栏输入cmd并按回车即可快速打开)。

在这里插入图片描述

  1. 在命令提示符中,输入以下命令来指定安装路径(将D:\Your\Path替换为你希望的安装路径):

    OllamaSetup.exe /DIR="D:\Your\Path"
    

回车后,安装程序将按照你指定的路径进行安装。

6.1.5 环境配置

  1. 此电脑,属性,系统,高级系统设置
  2. 在“系统属性”窗口中,点击“环境变量”按钮。
  3. 在“环境变量”窗口中,点击“新建”按钮。
  4. 修改Ollama模型的存储路径
    在“新建系统变量”窗口中,输入变量名OLLAMA_MODELS,变量值为你希望的模型存储路径(例如D:\Ollama\Models),然后点击“确定”。
  5. 让虚拟机里的RAGFlow能够访问到本机上的 Ollama
    在“新建系统变量”窗口中,输入变量名OLLAMA_HOST,变量值0.0.0.0:11434
  6. 点击“确定”保存环境变量设置。
  7. 再用ollama run deepseek-r1:1.5b 时,模型就会下载到你指定的目录。
    在这里插入图片描述

6.1.6 通过ollama下载模型

建议电脑配置低的从最小的开始
在这里插入图片描述
从ollama网页中打开deepseek模型,选择合适大小的模型,将ollama run deepseek-r1复制 到命令行中回车,可以看到下面的内容

在这里插入图片描述
现在已经实现了deepseek的本地化

6.2 下载RAGflow源代码和Docker,通过Docker来本地部署RAGflow;

6.2.1 下载 RAGflow源码

直接下载 zip解压即可
在这里插入图片描述
在这里插入图片描述

6.2.2 下载Docker

Docker 镜像是一个封装好的环境,包含了所有运行 RAGFlow 所需的依赖、库和配置。这里可以直接下载安装,也可以手动安装,自定义位置。这里可以参考

  1. Windows10docker安装D盘,更改docker镜像默认保存路径

  2. Windows安装Docker Desktop的两种方式,命令行安装Docker Desktop,DockerDesktop汉化,Docker Desktop更换磁盘镜像存放目录及报错解决
    这两个链接说明了更改路径的办法和解决错误的办法

在这里插入图片描述

注意:但是我这里直接把路径设置为E盘才修改成功,如果是E盘下的子文件的话就会报错。
在这里插入图片描述

6.2.3 配置修改

路径:E:\RAG\ragflow-main\ragflow-main\docker
文件:.env
在这里插入图片描述

找到84行RAGFLOW_IMAGE=infiniflow/ragflow:v0.17.2-slim并注释掉
找到87行 RAGFLOW_IMAGE=infiniflow/ragflow:v0.17.2取消注释
在这里插入图片描述
如下图,因为 轻量版的不支包含 embedding model,完整版才包含,否则需要后续自己另外在进行embedding 操作
官网git说明
在这里插入图片描述

6.2.4 RAGflow镜像下载

进入 docker 文件夹,利用提前编译好的 Docker 镜像启动服务器:
这个路径
在这里插入图片描述
直接在这里输入cmd打开 命令行,输入下面的内容

docker compose -f docker-compose-gpu.yml up -d

然后就会开始拉镜像,这里不翻会报错,就是网络原因
在这里插入图片描述
安装成功后
在这里插入图片描述

6.3 在RAGflow中构建个人知识库并实现基于个人知识库的对话问答

6.3.1 docker成功启动后,浏览器输入localhost:80来访问RAGFlow;

在浏览器中输入

localhost:80

显示下面的页面,注册登录
在这里插入图片描述

6.3.2 在“模型提供商”中添加我们本地部署的 deepseek-r1:1.5b 模型;

点击右上角头像,再点击左侧的模型提供商
在这里插入图片描述
然后再点击下面的ollama选择配置

6.3.3 在“系统模型设置”中配置Chat模型(deepseek-r1:1.5b)和Embedding模型(用RAGFlow自带的即可)

选择chat和下载的deepseek模型,这里可以在cmd中查看一下模型的全称
url地址输入的是:http://host.docker.internal:11434
api这里要随便输入一串字符
当上述过程全部设置好直接点击OK连接时,右上角出现了102报错,重启电脑后再连就没问题了
在这里插入图片描述
在这里插入图片描述
然后点击右侧的系统模型设置,选择chat和embedding模型
在这里插入图片描述

6.3.4 创建知识库,上传文件,解析文件

在这里插入图片描述
在这里插入图片描述
天选5p的初始配置使用7b的模型在解析文件时 cpu直接占满,内容爆了,解析失败

6.3.5开始对话

点击聊天,新建助理
在这里插入图片描述
设置配置
在这里插入图片描述

16g内存不够用,报错如下,等新内存条回来了再试试。
在这里插入图片描述

7. 只想迅速搭建个人知识库,可以不本地部署吗?

具体步骤:

  1. 下载RAGFlow源代码和docker,通过docker本地部署RAGFow(RAGFlow目前没有官方的网页版):
  2. 在RAGflow中配置任意的Chat模型和Embedding模型(你需要到这些模型对应的官网去付费申请apikey);

优点:

  • 不用本地部署大模型,简单易操作;
  • 企业大模型性能一般更优越;

缺点:

  • 隐私安全问题;
  • 调用企业大模型API的成本;

参考:
https://www.bilibili.com/video/BV1WiP2ezE5a/?spm_id_from=333.337.search-card.all.click&vd_source=d4e1261efd87c5ce017b4129586b6763

相关文章:

使用Ollama(自定义安装位置)与RagFlow构建本地知识库

目录 1. 为什么不直接使用网页版DeepSeek?2. 如何实现网页版DeepSeek不能实现的需求?3. 目标效果预览4. 为什么要使用RAG技术?RAG和模型微调的区别?5. 什么是Embedding?为什么需要“Embedding模型”?6. 本地部署全流程6.1 下载ollama,通过olama将DeepSeek模型…...

基于ssm的医院预约挂号系统

一、系统架构 前端:jsp | bootstrap | jquery | css | ajax 后端:spring | springmvc | mybatis 环境:jdk1.8 | mysql | maven | tomcat 二、代码及数据 三、功能介绍 01. 注册 02. 登录 03. 首页 04. 医院挂号 05. …...

如何通过less在vue2中达到切换皮肤的目的

先装less npm install less less-loader --save-dev 然后将该 loader 添加到 webpack 的配置中去,例如: webpack.config.js module.exports {module: {rules: [{test: /\.less$/i,use: [// compiles Less to CSSstyle-loader,css-loader,less-loade…...

DeepSeek概述

一、DeepSeek概述 1.1 DeepSeek是什么 DeepSeek是一家专注 通用人工智能(AGI,Artificial General Intelligence)的中国科技公司,主攻大数据研发与应用。DeepSeek-R1是其开源的推理模型,擅长处理复杂任务且可免费商用…...

生成模型速通(Diffusion,VAE,GAN)

基本概念 参考视频https://www.bilibili.com/video/BV1re4y1m7gb/?spm_id_from333.337.search-card.all.click&vd_sourcef04f16dd6fd058b8328c67a3e064abd5 生成模型其实是主要是依赖概率分布,对输入特征的概率密度函数建模 隐空间(latent space)…...

linux/android 如何获取当前系统启动时长

uptime 指令获取 trinket:/ # uptime12:03:31 up 3 min, 0 users, load average: 1.02, 0.68, 0.29...

Elasticsearch客户端工具初探--kibana

1 Kibana简介 Kibana是Elastic Stack(ELK)中的可视化工具,用于对Elasticsearch中存储的数据进行搜索、分析和可视化展示。它提供了直观的Web界面,支持日志分析、业务监控、数据探索等功能,广泛应用于运维监控、安全分析…...

深克隆和浅克隆(建造者模式,内含简版)

让我们来看一个例子: 设计一个客户类Customer,其中客户地址存储在地址类Address中,用浅克隆和深克隆分别实现Customer对象的复制并比较这两种克隆方式的异同。 代码实现 Customer类和Address类都是实现的Java 内置的 java.lang.Cloneable …...

吴恩达机器学习笔记复盘(十二)逻辑回归的梯度下降和拟合问题

梯度下降算法推导过程 一、逻辑回归模型基础 逻辑回归用于二分类问题,其假设函数为sigmoid函数: 其中,是模型参数向量,是特征向量。输出表示样本属于正类的概率。 二、损失函数 逻辑回归的损失函数采用 对数损失(交…...

OSPF五种报文分析(仅部分比较重要的)

OSPF五种报文分别是: hello报文,DBD数据库描述报文,LSR链路状态请求报文,LSU链路状态更新报文,LSACK链路状态确认包 以下是这五种报文的详细解读: 1. Hello报文 作用: 用于邻居的发现、建立和…...

Ubuntu 22.04 二进制安装单节点 MySQL

Ubuntu 22.04 二进制安装 MySQL LTS(长期支持版)完整教程 MySQL LTS 版本选择: 目前 MySQL 8.4.4 是长期支持(LTS)版本,持续更新并保持稳定。 下载版本: 你也可以在 MySQL 官方网站确认最新稳…...

python处理音频相关的库

1 音频信号采集与播放 pyaudio import sys import pyaudio import wave import timeCHUNK 1024 FORMAT pyaudio.paInt16 CHANNELS 1#仅支持单声道 RATE 16000 RECORD_SECONDS 3#更改录音时长#录音函数,生成wav文件 def record(file_name):try:os.close(file_…...

python+ffmpeg给音频添加背景音乐

说明: 我希望用python,将name.mp3这段录音文件,添加背景音乐,bg.mp3,然后生成新的文件 step1: 添加依赖 pip install pydubstep2:下载ffmpeg 1.打开windows powershell ,管理员运行 2.winget install ff…...

《TypeScript 面试八股:高频考点与核心知识点详解》

“你好啊!能把那天没唱的歌再唱给我听吗? ” 前言 因为主包还是主要学习js,ts浅浅的学习了一下,在简历中我也只会写了解,所以我写一些比较基础的八股,如果是想要更深入的八股的话还是建议找别人的。 Ts基…...

鸡生蛋还是蛋生鸡? 基于python的CCM因果关系计算

文章目录 前言一、安装二、代码1.全部代码2.结果展示总结前言 因果推断在科学研究中起着重要的作用,尤其是在复杂系统中,例如生态学、气候学、经济学等领域。在这些领域中,了解变量之间的因果关系可以帮助我们更好地理解系统的动态行为和相互作用。传统的相关性分析并不足以…...

PyBluez2 的详细介绍、安装指南、使用方法及配置说明

PyBluez2:Python 蓝牙开发的核心库 一、PyBluez2 简介 PyBluez2 是 Python 的开源蓝牙编程库,支持蓝牙 2.0、BLE(低功耗蓝牙)和传统蓝牙协议栈的开发。它提供了对蓝牙硬件适配器的底层控制,适用于设备发现、配对、数…...

鸿蒙HarmonyOS NEXT之无感监听

鸿蒙中存在一些无感监听,这些监听经过系统API封装使用很简单,但是对实际业务开发中有很重要,例如埋点业务、数据统计、行为上报、切面拦截等。 Navigation的页面切换 在鸿蒙中Navigation被用来作为路由栈进行页面跳转,如果你想知…...

质检LIMS系统在食品生产加工企业的应用 如何保证食品生产企业的安全

在食品生产加工领域,质量安全是贯穿全产业链的生命线。随着《食品安全法》对全过程追溯要求的深化,传统实验室管理模式已难以满足高效、精准的质量管控需求。质检实验室信息管理系统(LIMS)作为数字化升级的核心工具,正…...

linux中如何获取其他进程的退出状态

进程的退出状态至关重要,用wait系列函数,父进程可以捕捉到子进程的退出状态,若给定任意进程,其父进程已经确定,无法改变,自己如何获取到其退出状态呢。 可以用ptrace系统api attach到相应的进程&#xff0c…...

【android】补充

3.3 常用布局 本节介绍常见的几种布局用法,包括在某个方向上顺序排列的线性布局,参照其他视图的位置相对排列的相对布局,像表格那样分行分列显示的网格布局,以及支持通过滑动操作拉出更多内容的滚动视图。 3.3.1 线性布局Linea…...

Unix Domain Socket、IPC、RPC与gRPC的深度解析与实战

Unix Domain Socket、IPC、RPC与gRPC的深度解析与实战 引言 在分布式系统和本地服务通信中,进程间通信(IPC)与远程过程调用(RPC)是核心能力。本文将深入剖析 Unix Domain Socket(UDS)、IPC、RP…...

从 MySQL 到时序数据库 TDengine:Zendure 如何实现高效储能数据管理?

小T导读:TDengine 助力广州疆海科技有限公司高效完成储能业务的数据分析任务,轻松应对海量功率、电能及输入输出数据的实时统计与分析,并以接近 1 : 20 的数据文件压缩率大幅降低存储成本。此外,taosX 强大的 transform 功能帮助用…...

华为OD机试A卷 - 积木最远距离(C++ Java JavaScript Python )

最新华为OD机试 真题目录:点击查看目录 华为OD面试真题精选:点击立即查看 题目描述 小华和小薇一起通过玩积木游戏学习数学。 他们有很多积木,每个积木块上都有一个数字,积木块上的数字可能相同。 小华随机拿一些积木挨着排成一排,请小薇找到这排积木中数字相同且所处…...

Zerotier虚拟局域网在树莓派的应用和Syncthing配合Zerotier实现端到端文件同步

一、Zerotier的部署 1、官网注册账号 https://my.zerotier.com/i 2、选择linux系统,执行安装Zerotier curl -s https://install.zerotier.com | sudo bash3、将树莓派网络加入Zerotier zerotier-cli join DB62228FEDF6CE55DB62228FEDF6CE55 为你的Zerotier IP 需…...

C++设计模式-桥梁模式:从基本介绍,内部原理、应用场景、使用方法,常见问题和解决方案进行深度解析

一、桥梁模式基本介绍 桥梁模式(Bridge Pattern)是一种结构型设计模式,又叫桥接模式,其核心思想是将抽象部分与实现部分分离,使它们可以独立变化。这种模式通过组合代替继承,有效解决了多层继承导致的类爆…...

系统转换、系统维护、净室软件工程、构件软件工程(高软51)

系列文章目录 系统转换、系统维护、净室软件工程、构件软件工程 文章目录 系列文章目录前言一、系统转换二、系统维护三、净室软件工程四、基于构件的软件工程总结 前言 本节讲明遗留系统的系统转换、系统维护、净室软件工程、基于构件软件工程相关知识。 一、系统转换 就是讲…...

自然语言处理(13:RNN的实现)

系列文章目录 第一章 1:同义词词典和基于计数方法语料库预处理 第一章 2:基于计数方法的分布式表示和假设,共现矩阵,向量相似度 第一章 3:基于计数方法的改进以及总结 第二章 1:word2vec 第二章 2:word2vec和CBOW模型的初步实现 第二章 3:CBOW模型…...

Docker镜像迁移方案

Docker镜像迁移方案 文章目录 Docker镜像迁移方案一:背景二:操作方式三:异常原因参考: 一:背景 比如机器上已经有先有的容器,但是docker pull的时候是失败的二:操作方式 1、停止正在运行的容器…...

深度学习框架PyTorch——从入门到精通(10)PyTorch张量简介

这部分是 PyTorch介绍——YouTube系列的内容,每一节都对应一个youtube视频。(可能跟之前的有一定的重复) 创建张量随机张量和种子张量形状张量数据类型 使用PyTorch张量进行数学与逻辑运算简单介绍——张量广播关于张量更多的数学操作原地修改…...

Springboot 集成 Flowable 6.8.0

1. 创建 Spring Boot 项目 通过 Spring Initializr(https://start.spring.io/ )创建一个基础的 Spring Boot 项目,添加以下依赖: Spring WebSpring Data JPAMySQL DriverLombok(可选,用于简化代码&#x…...

Vue3 项目通过 docxtemplater 插件动态渲染 .docx 文档(带图片)预览,并导出

Vue3 项目通过 docxtemplater 插件动态渲染 .docx 文档(带图片)预览,并导出 预览安装插件示例代码项目目录结构截图实际效果截图 动态渲染 .docx 文档(带图片),预览、导出安装插件docx 模板文件内容完整代码…...

实验一、Linux环境下实现进度条小程序:深入解析核心实现与关键技术细节

目录 引言:为什么需要进度条?环境准备与项目结构分析原理剖析:从终端输出到动态刷新代码逐行解析(附完整代码) 4.1 头文件与宏定义4.2 进度条的动态构建逻辑4.3 关键转义字符:\r与\n的深度对比4.4 缓冲机制…...

生活电子常识——cmd不能使用anaconda的python环境,导致输入python打开应用商店

前言 电脑已经安装了anaconda,从自带的Anaconda Prompt (Anaconda3)中是可以识别python环境的,然而切换到cmd时,突然发现cmd中无法识别anaconda的python环境,竟然打开了应用商店让我安装Python,这当然是不对的。 解决 这是因为…...

TypeScript中的声明合并:与JavaScript的对比与实践指南

引言 在大型项目开发中,代码的可维护性和可扩展性至关重要。TypeScript作为JavaScript的超集,通过静态类型系统带来了更强大的代码组织能力。其中声明合并(Declaration Merging) 是TypeScript独有的重要特性,本文将深…...

数据结构初阶-二叉树链式

目录 1.概念与结构 2.二叉数链式的实现 2.1遍历规则 2.2申请内存空间 2.3手动构建一棵二叉树 2.4二叉树结点的个数 2.5二叉树叶子结点的个数 2.6二叉树第K层结点个数 2.7二叉树的高度 2.8二叉树中查找值为x的结点 2.9二叉树的销毁 3.层序遍历 3.1概念 3.2层序遍历…...

2024年认证杯SPSSPRO杯数学建模B题(第二阶段)神经外科手术的定位与导航全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 B题 神经外科手术的定位与导航 原题再现: 人的大脑结构非常复杂,内部交织密布着神经和血管,所以在大脑内做手术具有非常高的精细和复杂程度。例如神经外科的肿瘤切除手术或血肿清除手术,通常需要…...

Linux程序性能分析

为什么程序会慢? 在深入工具和方法之前,我们先来聊聊为什么程序会慢。一个程序主要在三个方面消耗资源: CPU时间 - 计算太多、算法效率低 内存使用 - 内存泄漏、频繁申请释放内存 I/O操作 - 文件读写、网络通信太频繁 今天我们主要聚焦C…...

【开题报告+论文+源码】基于SpringBoot的智能安全与急救知识科普系统设计与实现

项目背景与意义 在全球范围内,安全与急救知识的普及已成为提升公众安全素养、减少意外伤害发生率、提高突发事件应对能力的重要举措。尤其是在当今社会,人们面临的生活、工作环境日益复杂,交通事故、火灾、溺水、突发疾病等各种意外事件的发生…...

Linux shift 命令使用详解

简介 在 Bash 脚本中,shift 命令用于将命令行参数向左移动,有效地丢弃第一个参数并将其他参数向下移动。 基础语法 shift [N]N(可选)→ 要移动的位置数。默认值为 1 示例用法 移动参数 #!/bin/bash echo "Before shift…...

【C++网络编程】第5篇:UDP与广播通信

一、UDP协议核心特性 1. UDP vs TCP ​特性 ​UDP​TCP连接方式无连接面向连接(三次握手)可靠性不保证数据到达或顺序可靠传输(超时重传、顺序控制)传输效率低延迟,高吞吐相对较低(因握手和确认机制&…...

C++11QT复习 (五)

文章目录 **Day6-2 成员访问运算符重载(2025.03.25)****1. 复习****2. 成员访问运算符重载****2.1 箭头运算符 (->) 重载****(1) 语法** **2.2 解引用运算符 (*) 重载****(1) 语法** **3. 代码分析****3.1 代码结构****3.2 代码解析****(1) Data 类**…...

Python项目-基于Python的网络爬虫与数据可视化系统

1. 项目简介 在当今数据驱动的时代,网络爬虫和数据可视化已成为获取、分析和展示信息的重要工具。本文将详细介绍如何使用Python构建一个完整的网络爬虫与数据可视化系统,该系统能够自动从互联网收集数据,进行处理分析,并通过直观…...

SpringCloud Zuul 使用教程

SpringCloud Zuul 使用教程 目录 Zuul 简介环境准备搭建 Zuul 网关 • 3.1 Maven 依赖 • 3.2 配置文件 • 3.3 启动类注解基本路由配置 • 4.1 简单路由 • 4.2 基于路径的路由 • 4.3 基于服务的路由Zuul 高级配置 • 5.1 过滤器配置 • 5.2 限流与熔断 • 5.3 负载均衡 •…...

介绍一款基于MinerU的PDF翻译工具

一。简介 Fast pdf translate是一款pdf翻译软件,基于MinerU实现pdf转markdown的功能,接着对markdown进行分割, 送给大模型翻译,最后组装翻译结果并由pypandoc生成结果pdf。 git地址: https://github.com/kv1830/fast…...

轻量级TLS反向代理工具TLS-reverse-proxy:打造安全通信桥梁

在数字化浪潮席卷全球的今天,数据隐私与传输安全已成为企业及个人的核心关切。TLS(传输层安全协议)作为互联网通信的"隐形卫士",承担着保护数据在传输过程中不被窃取或篡改的重要使命。然而,对于许多传统服务…...

SQL问题分析与诊断(8)——前提

8.1. 前提 与其他关系库类似,SQL Server中,当我们对存在性能问题的SQL语句进行分析和诊断时,除了获取该SQL语句本身外,还需要获取SQL语句相应的查询计划及其相关的数据环境。这里,所谓数据环境,具体是指SQ…...

关于cmd中出现无法识别某某指令的问题

今天来解决以下这个比较常见的问题,安装各种软件都可能会发生,一般是安装时没勾选注册环境变量,导致cmd无法识别该指令。例如mysql,git等,一般初学者可能不太清楚。 解决这类问题最主要的是了解环境变量的概念&#x…...

如何处理不同输入类型(例如邮箱、电话号码)的验证?

处理不同输入类型(如邮箱、电话号码)的验证可以通过多种方法实现,包括使用 HTML5 内置验证、JavaScript/jQuery 自定义验证和正则表达式。以下是一些常用的验证方法和示例。 1. 使用 HTML5 内置验证 HTML5 提供了一些内置的输入类型,可以自动处理基本的验证。 示例 <…...

Redis集群哨兵相关面试题

目录 1.Redis 主从复制的实现原理是什么? 详解 补充增量同步 replication buffer repl backlog buffer 2.Redis 主从复制的常见拓扑结构有哪些? 3.Redis 复制延迟的常见原因有哪些? 4.Redis 的哨兵机制是什么? 主观下线和客观下线 哨兵leader如何选出来的&#x…...

【CXX-Qt】4.1 extern “RustQt“

QObjects Properties Methods Signals #[cxx_qt::bridge] mod ffi {extern "RustQt" {} }extern “RustQt” 部分是 CXX-Qt 桥接的核心&#xff0c;用于声明 Rust 类型和签名&#xff0c;使其可用于 Qt 和 C。 CXX-Qt 代码生成器使用你的 extern “RustQt” 部…...