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

基于 DeepSeek LLM 本地知识库搭建开源方案(AnythingLLM、Cherry、Ragflow、Dify)认知

写在前面


  • 博文内容涉及 基于 Deepseek LLM 的本地知识库搭建
  • 使用 ollama 部署 Deepseek-R1 LLM
  • 知识库能力通过 Ragflow、Dify 、AnythingLLM、Cherry 提供
  • 理解不足小伙伴帮忙指正 😃,生活加油

我站在人潮中央,思考这日日重复的生活。我突然想,如果有一天,垂老和年轻都难以惊起心中涟漪,一潭死水的沉闷,鲜花和蛋糕也撼动不了。如果人开始不能为微小事物而感动,那么地震山洪的噩耗想必也惊闻不了。如果活着和死亡的本质无异,那便没有了存在的意义。我没有快乐,也没有痛苦,只是麻木的置身于平静的绝望之中,和世界一起下沉。我甚至病态的渴望,心中掀起一场风暴或是海啸,将我席卷撕裂。可那片黑洞里什么也没有,它吞噬万物,它带走了我的生命 情绪 活力,我眼睁睁的看着,我对此无能为力。 这一刻我明白了我看远山,远山悲悯。远山知道我的苦闷,却改变不了什么,只能悲悯,悲悯我的麻木,悲悯我的无奈

持续分享技术干货,感兴趣小伙伴可以关注下 _


本地 LLM 部署

LLM 本身只是一些 神经网络参数, 就拿 DeepSeek-R1 来讲,模型本身存储了 权重矩阵,以及 混合专家(MoE)架构, 实际运行起来需要行业级别的服务器配置, 消费级别的个人电脑不能直接运行,实际还涉及到硬件适配,需手动配置 CUDA/PyTorch 环境,编写分布式推理代码,处理量化与内存溢出问题

现在通过 ollama 可以在消费级别电脑部署,上面涉及到的问题 ollama 帮我们完成,同时还涉及模型的管理,推理服务构建

ollama 开源项目地址: https://github.com/ollama/ollama

它在项目中这样介绍自己:Get up and running with large language models.

ollama安装

下载 ollama:之后直接安装就可以,下载地址, https://ollama.com/download

ollama 专注于在本地设备(如个人电脑或服务器)快速部署和运行开源大语言模型(如 DeepSeek-R1),支持模型下载、环境配置及基础推理服务。

适用需本地化运行 LLM 的场景,强调数据隐私与低成本(无需高性能服务器),但是不提供知识库管理、RAG 或应用开发功能,需配合其他工具使用

安装成功会自动配置环境变量

PS C:\Users\Administrator> ollama -h
Large language model runnerUsage:ollama [flags]ollama [command]Available Commands:serve       Start ollamacreate      Create a model from a Modelfileshow        Show information for a modelrun         Run a modelstop        Stop a running modelpull        Pull a model from a registrypush        Push a model to a registrylist        List modelsps          List running modelscp          Copy a modelrm          Remove a modelhelp        Help about any command
。。。。。。

Ollama 采用 Client-Server(C/S)架构,C 端通过命令行(CLI)或桌面应用与用户交互,发起模型请求。S 端负责处理客户端请求,管理模型下载与元数据,推理引擎,负责加载模型并执行计算

Ollama 资源优化技术:

  • 权重量化:支持 INT8/INT4 量化,显存占用降低至原始模型的 1/2 至 1/4,使 65B 参数模型可在 16GB 内存设备运行
  • 分块加载:长文本分块处理,避免显存溢出
  • GPU/CPU 调度:优先调用 NVIDIA/AMD GPU 加速,无 GPU 时通过 Metal 或分布式计算优化 CPU 模式

模型管理机制:

  • 本地存储:模型文件(如 blobs 数据)和元数据(如 manifests)默认存储在 $HOME/.ollama,支持离线使用,数据无需上传云端,适合医疗、金融等隐私敏感场景。
  • 模型拉取:客户端通过 ollama run <模型名> 触发服务端从远程仓库下载并缓存模型

通过下面的地址选择对应的参数的模型即可:

https://ollama.com/library/deepseek-r1

在这里插入图片描述

deepseek R1 蒸馏模型部署

关于什么是蒸馏模型,小伙伴可以看我之前的文章

模型下载成功就可以用了,默认会自动下载 DeepSeek-R1-Distill-Qwen-7B 模型

PS C:\Users\Administrator> ollama run deepseek-r1
pulling manifest
pulling 96c415656d37... 100% ▕████████████████████████████████████████████████████████▏ 4.7 GB
pulling 369ca498f347... 100% ▕████████████████████████████████████████████████████████▏  387 B
pulling 6e4c38e1172f... 100% ▕████████████████████████████████████████████████████████▏ 1.1 KB
pulling f4d24e9138dd... 100% ▕████████████████████████████████████████████████████████▏  148 B
pulling 40fb844194b2... 100% ▕████████████████████████████████████████████████████████▏  487 B
verifying sha256 digest
writing manifest
success

直接命令行就可以交互了,算一道数学题

PS C:\Users\Administrator> ollama run deepseek-r1
>>> 1+2+3+4+54654+213=<think>
To solve the equation \(1 + 2 + 3 + 4 + 54654 + 213\), I will follow these steps:First, add the numbers from 1 to 4.Next, add the result to 54654.Finally, add this sum to 213 to get the final answer.
</think>To solve the equation \(1 + 2 + 3 + 4 + 54654 + 213\), follow these steps:1. **Add the numbers from 1 to 4:**\[1 + 2 + 3 + 4 = 10\]2. **Add this sum to 54654:**\[10 + 54654 = 54664\]3. **Finally, add the result to 213:**\[54664 + 213 = 54877\]**Final Answer:**\boxed{54877}>>> Send a message

这里通过命令行的方式启动服务端,配置,$env:OLLAMA_HOST="0.0.0.0" 的作用是 将 Ollama 服务绑定到所有网络接口,因为后面涉及到和其他工具交互。

PS C:\Users\Administrator> $env:OLLAMA_HOST="0.0.0.0"  # 设置环境变量

服务启动涉及到的环境变量在项目中位置:

https://github.com/ollama/ollama/blob/main/envconfig/config.go

PS C:\Users\Administrator> ollama serve                 # 启动服务
2025/02/20 08:47:44 routes.go:1187: INFO server config env="map[CUDA_VISIBLE_DEVICES: GPU_DEVICE_ORDINAL: HIP_VISIBLE_DEVICES: HSA_OVERRIDE_GFX_VERSION: HTTPS_PROXY: HTTP_PROXY: NO_PROXY: OLLAMA_DEBUG:false OLLAMA_FLASH_ATTENTION:false OLLAMA_GPU_OVERHEAD:0 OLLAMA_HOST:http://0.0.0.0:11434 OLLAMA_INTEL_GPU:false OLLAMA_KEEP_ALIVE:5m0s OLLAMA_KV_CACHE_TYPE: OLLAMA_LLM_LIBRARY: OLLAMA_LOAD_TIMEOUT:5m0s OLLAMA_MAX_LOADED_MODELS:0 OLLAMA_MAX_QUEUE:512 OLLAMA_MODELS:C:\\Users\\Administrator\\.ollama\\models OLLAMA_MULTIUSER_CACHE:false OLLAMA_NOHISTORY:false OLLAMA_NOPRUNE:false OLLAMA_NUM_PARALLEL:0 OLLAMA_ORIGINS:[http://localhost https://localhost http://localhost:* https://localhost:* http://127.0.0.1 https://127.0.0.1 http://127.0.0.1:* https://127.0.0.1:* http://0.0.0.0 https://0.0.0.0 http://0.0.0.0:* https://0.0.0.0:* app://* file://* tauri://* vscode-webview://*] OLLAMA_SCHED_SPREAD:false ROCR_VISIBLE_DEVICES:]"
time=2025-02-20T08:47:44.747+08:00 level=INFO source=images.go:432 msg="total blobs: 14"
time=2025-02-20T08:47:44.748+08:00 level=INFO source=images.go:439 msg="total unused blobs removed: 0"
time=2025-02-20T08:47:44.748+08:00 level=INFO source=routes.go:1238 msg="Listening on [::]:11434 (version 0.5.7)"
time=2025-02-20T08:47:44.749+08:00 level=INFO source=routes.go:1267 msg="Dynamic LLM libraries" runners="[cpu_avx cpu_avx2 cuda_v11_avx cuda_v12_avx rocm_avx cpu]"
time=2025-02-20T08:47:44.749+08:00 level=INFO source=gpu.go:226 msg="looking for compatible GPUs"
time=2025-02-20T08:47:44.749+08:00 level=INFO source=gpu_windows.go:167 msg=packages count=1
time=2025-02-20T08:47:44.749+08:00 level=INFO source=gpu_windows.go:183 msg="efficiency cores detected" maxEfficiencyClass=1
time=2025-02-20T08:47:44.749+08:00 level=INFO source=gpu_windows.go:214 msg="" package=0 cores=12 efficiency=4 threads=20
time=2025-02-20T08:47:44.872+08:00 level=INFO source=types.go:131 msg="inference compute" id=GPU-e65029a6-c2f9-44b1-bd76-c12e4083fa4c library=cuda variant=v12 compute=8.6 driver=12.8 name="NVIDIA GeForce RTX 3060" total="12.0 GiB" available="11.0 GiB"
[GIN] 2025/02/20 - 08:47:57 | 200 |            0s |     172.19.16.1 | GET      "/"
[GIN] 2025/02/20 - 08:47:57 | 404 |            0s |     172.19.16.1 | GET      "/favicon.ico"

同时项目启动之后会输出当前推理服务的环境变量

2025/02/20 08:47:44 routes.go:1187: INFO server config env="map[CUDA_VISIBLE_DEVICES: GPU_DEVICE_ORDINAL: HIP_VISIBLE_DEVICES: HSA_OVERRIDE_GFX_VERSION: HTTPS_PROXY: HTTP_PROXY: NO_PROXY: OLLAMA_DEBUG:false OLLAMA_FLASH_ATTENTION:false OLLAMA_GPU_OVERHEAD:0 OLLAMA_HOST:http://0.0.0.0:11434 OLLAMA_INTEL_GPU:false OLLAMA_KEEP_ALIVE:5m0s OLLAMA_KV_CACHE_TYPE: OLLAMA_LLM_LIBRARY: OLLAMA_LOAD_TIMEOUT:5m0s OLLAMA_MAX_LOADED_MODELS:0 OLLAMA_MAX_QUEUE:512 OLLAMA_MODELS:C:\\Users\\Administrator\\.ollama\\models OLLAMA_MULTIUSER_CACHE:false OLLAMA_NOHISTORY:false OLLAMA_NOPRUNE:false OLLAMA_NUM_PARALLEL:0 OLLAMA_ORIGINS:[http://localhost https://localhost http://localhost:* https://localhost:* http://127.0.0.1 https://127.0.0.1 http://127.0.0.1:* https://127.0.0.1:* http://0.0.0.0 https://0.0.0.0 http://0.0.0.0:* https://0.0.0.0:* app://* file://* tauri://* vscode-webview://*] OLLAMA_SCHED_SPREAD:false ROCR_VISIBLE_DEVICES:]"

如果有需要部署生产级别的小伙伴需要详细了解,这里简单看几个常用的:

OLLAMA_HOST

  • 作用:指定服务器监听的 IP 地址和端口。它定义了客户端可以访问服务器的地址。
  • 当前值:http://0.0.0.0:11434,表示服务器将监听所有可用的网络接口,端口为 11434,使用 HTTP 协议。

OLLAMA_KEEP_ALIVE

  • 作用:设置模型在内存中保持加载的时间。如果在这个时间内没有新的请求,模型可能会被卸载以释放内存。
  • 当前值:5m0s,即 5 分钟,意味着模型在 5 分钟内没有被使用就可能会被卸载。

OLLAMA_LOAD_TIMEOUT

  • 作用:设置模型加载的超时时间。如果模型在这个时间内没有加载完成,服务器可能会放弃加载操作。
  • 当前值:5m0s,表示模型加载的最长时间为 5 分钟。

OLLAMA_MAX_LOADED_MODELS

  • 作用:限制每个 GPU 上最多可以加载的模型数量。这有助于控制 GPU 的资源使用。
  • 当前值:0,表示没有对每个 GPU 加载的模型数量进行限制。

OLLAMA_MAX_QUEUE

  • 作用:设置请求队列的最大长度。当请求数量超过这个值时,新的请求可能会被拒绝。
  • 当前值:512,表示请求队列最多可以容纳 512 个请求。

OLLAMA_MODELS

  • 作用:指定模型文件存储的目录。服务器会从这个目录中加载模型。
  • 当前值:C:\Users\Administrator.ollama\models,表示模型文件存储在该 Windows 用户目录下的 .
    ollama\models 文件夹中。

OLLAMA_NUM_PARALLEL

  • 作用:设置服务器可以同时处理的并行模型请求数量
  • 当前值:0,表示没有对并行请求数量进行限制。

知识库搭建

在知识库搭建的时候,我们还需要一个基本的嵌入模型,用于理解分析已有的知识库内容

嵌入模型

这里我们使用的是 BGE-M3 ,嵌入模型是什么,通俗的话讲,它把文本信息翻译成计算机能够理解和处理的数字形式,也就是向量。它就像是给每一段文本生成了一个独一无二的 “数字指纹”,凭借这个 “指纹”,计算机就能对文本进行各种分析和操作。

有了嵌入模型分析知识库的文本内容,那么是如何和问答结合的,这就需要 RAG

RAG

检索增强生成(RAG)是一种将外部知识检索与大语言模型(LLM)相结合的技术。传统的大语言模型虽然拥有丰富的知识,但知识更新可能不及时,或者在特定领域的知识储备不足。RAG 通过在生成回答之前,先从外部知识源(如文档数据库、网页等)中检索相关信息,然后将这些信息与用户的问题一起输入到大语言模型中,从而生成更准确、更具时效性的回答。

需要注意的事项

知识库的搭建部分使用的是容器的方式,所以调用 ollama 提供的推理能力的时候,通过 127.0.0.0:11434 访问是访问不通的,所以需要一个能代表宿主机但是IP地址或者域名不是 127.0.0.0或localhost 的地址。

在windos 上面会有这个一个虚拟交换设备, 在其他服务调用 ollama 的时候,需要本地ID:11434 的方式访问,这里我们选用这个 IP , 172.29.176.1:11434,至于这个 设备如何创建的,一般开启虚拟化 Hyper - V 的时候会自动创建

以太网适配器 vEthernet (Default Switch):连接特定的 DNS 后缀 . . . . . . . :本地链接 IPv6 地址. . . . . . . . : fe80::c872:92b3:b00a:6ce0%25IPv4 地址 . . . . . . . . . . . . : 172.29.176.1子网掩码  . . . . . . . . . . . . : 255.255.240.0默认网关. . . . . . . . . . . . . :

对于通过客户端的方式直接部署的,我们可以之间使用 127.0.0.0:11434 或者 localhost 来访问推理服务

Ragflow + DeepSeek

RAGFlow 是一款基于深度文档理解构建的开源 RAG(Retrieval-Augmented Generation,检索增强生成)引擎。RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程,结合大语言模型(LLM)针对用户各类不同的复杂格式数据提供可靠的问答以及有理有据的引用。

官网地址:https://ragflow.io

项目地址: https://github.com/infiniflow/ragflow

这里需要使用 docker 来部署,安装dockr, 克隆项目,执行 docker-compose 就可以了

git clone https://github.com/infiniflow/ragflow.git

在这里插入图片描述

然后参考 readme 部署即可

$ cd ragflow/docker
$ docker compose -f docker-compose.yml up -d

这里需要说明一下,有些 docker-compose 维护不及时,可能部署有问题,所以我们用 readme 推荐的方式

在这里插入图片描述

上面截图中 GPU 版本的 我尝试了好久,server 启动链接 es 报错,未果,用了默认的 compose。

在这里插入图片描述

部署成功之后可以在docker 桌面版中看到容器,核心服务是一个 server

在这里插入图片描述

默认 80 端口,需要注册账号登陆

在这里插入图片描述

需要先配置基础模型,需要注意这里的地址不能写 127.0.0.1

在这里插入图片描述

选择本地模型 LLM 模型

在这里插入图片描述

选择嵌入模型

在这里插入图片描述

在系统模型设置添加对应的模型

在这里插入图片描述

选择知识库

在这里插入图片描述

创建知识库

在这里插入图片描述

在配置中配置需要的数据

在这里插入图片描述

上传本地的知识库内容

在这里插入图片描述

全选,解析启用

在这里插入图片描述

之后在聊天配置中选择对应的知识库

在这里插入图片描述

模型参数调整

在这里插入图片描述

简单测试

在这里插入图片描述

每次提问会显示对应的文本内容

在这里插入图片描述

Dify + DeepSeek

Dify 是一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等,可以快速从原型到生产。

官网地址: https://dify.ai/zh

项目地址: https://github.com/langgenius/dify/blob/main/README_CN.md

和上面的部署一眼,克隆项目,然后通过 docker 部署

git clone  https://github.com/langgenius/dify.git

在这里插入图片描述

运行项目中的 docker-compose.yml

在这里插入图片描述

这里直接通过 vs code 运行

在这里插入图片描述

docker 中观察容器运行情况

在这里插入图片描述

同样是 80 端口,需要注册一个账号

在这里插入图片描述

用注册的账号登陆即可

在这里插入图片描述

选择知识库

在这里插入图片描述

在用户中心设置中配置模型相关配置

在这里插入图片描述

配置本地模型,需要注意这里的地址

在这里插入图片描述

配置嵌入模型

在这里插入图片描述

然后中模型配置中添加

在这里插入图片描述

选择创建知识库

在这里插入图片描述

导入本地知识库

在这里插入图片描述

分段相关配置

在这里插入图片描述

保存设置

在这里插入图片描述

等待文档解析完成

在这里插入图片描述

知识库创建完成

在这里插入图片描述

创建聊天助手

在这里插入图片描述

上下文选择之前创建的知识库

在这里插入图片描述

做简单的问答测试,可以看到最下面引用的文档

在这里插入图片描述

点击发布,知识库机器人创建完成

在这里插入图片描述

Cherry Studio + DeepSeek

Cherry Studio 是一款开源、跨平台(支持 Windows/macOS/Linux)的 AI 桌面客户端,专注于聚合多模型服务并提供本地化 AI 应用开发支持。

官网地址: https://cherry-ai.com/

下载地址: https://cherry-ai.com/download

项目地址: https://github.com/CherryHQ/cherry-studio

它的这样介绍自己: Cherry Studio 是一款支持多个大语言模型(LLM)服务商的桌面客户端,兼容 Windows、Mac 和 Linux 系统。

在这里插入图片描述

以下是其核心功能与使用要点:

  • 多模型集成:支持 300+ 主流大语言模型,包括 DeepSeek、OpenAI、Gemini、Claude 等,通过 API 密钥接入云端服务,也支持本地部署模型(如 Ollama)
  • 知识库管理:可上传 PDF、Word、Excel、网页链接等文件,构建本地结构化数据库,通过 RAG 技术实现智能检索,支持向量化处理和来源标注
  • 预置智能体: 内置 300+ 行业助手(如翻译、编程、营销),支持自定义提示词(Prompt)创建专属 AI 应用
  • 多模态处理: 支持文本生成、图像生成(集成硅基流动等平台)、代码高亮、Markdown 渲染及文件格式转换

下面我们看看如何搭建

下载安装

在这里插入图片描述

设置图标选择模型服务,选择本地的 ollama 服务,

在这里插入图片描述

模型配置

在这里插入图片描述

选择我们之前 pull 的模型

在这里插入图片描述

然后在默认助手中作简单测试

在这里插入图片描述

选择知识库图标,创建知识库,添加嵌入模型

在这里插入图片描述

然后上传要创建知识库的文件,可以通过搜索知识库简单测试

在这里插入图片描述

然后就可以提问了,选择一开始添加的本地模型,提问的时候选择知识库

在这里插入图片描述

文档中的内容做简单问答测试

在这里插入图片描述

引用知识库中的内容

AnythingLLM + DeepSeek

AnythingLLM 同样是一个全栈应用程序,可以使用现成的商业大语言模型或流行的开源大语言模型,再结合向量数据库解决方案构建一个私有ChatGPT,不再受制于人:您可以本地运行,也可以远程托管,并能够与您提供的任何文档智能聊天。

官网下载地址: https://anythingllm.com/

文档地址: https://docs.anythingllm.com/

项目地址: https://github.com/Mintplex-Labs/anything-llm/blob/master/locales/README.zh-CN.md

下载安装包:

在这里插入图片描述

直接安装即可,安装完后会有如下的界面

在这里插入图片描述

选择本地的模型

在这里插入图片描述

之后一直下一步,创建工作区

在这里插入图片描述

然后在新工作区,选择下面的箭头

在这里插入图片描述

导入知识库文档

在这里插入图片描述

添加到工作区

在这里插入图片描述

选择启用

在这里插入图片描述

问一个知识库相关的问题测试

在这里插入图片描述

最下面会列出引用的文档

在这里插入图片描述

LLM 相关配置可以在设置中设置

在这里插入图片描述

AnythingLLMCherry Studio 都是客户端,所以 ollama 的推理模型直接设置 本地回环地址就可以


整体来看,Ragflow 相对专业一点,其次是 Dify ,Cherry Studio ,AnythingLLM ,但是前两个相对部署较重,后两个客户端,可以直接客户端部署。

博文部分内容参考

© 文中涉及参考链接内容版权归原作者所有,如有侵权请告知 😃


https://ragflow.io

https://dify.ai/zh

https://cherry-ai.com/

https://anythingllm.com/


© 2018-至今 liruilonger@gmail.com, 保持署名-非商用-相同方式共享(CC BY-NC-SA 4.0)

相关文章:

基于 DeepSeek LLM 本地知识库搭建开源方案(AnythingLLM、Cherry、Ragflow、Dify)认知

写在前面 博文内容涉及 基于 Deepseek LLM 的本地知识库搭建使用 ollama 部署 Deepseek-R1 LLM知识库能力通过 Ragflow、Dify 、AnythingLLM、Cherry 提供理解不足小伙伴帮忙指正 &#x1f603;,生活加油 我站在人潮中央&#xff0c;思考这日日重复的生活。我突然想&#xff0c…...

Could not initialize class io.netty.util.internal.Platfor...

异常信息&#xff1a; Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class io.netty.util.internal.PlatformDependent0 Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.reflect.InaccessibleObjec…...

【书生大模型实战营】玩转HF/魔搭/魔乐社区-L0G4000

本文是书生大模型实战营系列的第4篇&#xff0c;本文的主题是&#xff1a;玩转HF/魔搭/魔乐社区。 1.开源大模型社区总览 开源不仅仅是一种技术模式&#xff0c;更是一种精神的体现。它打破了知识的壁垒&#xff0c;让技术平权成为可能。近年来&#xff0c;开源大模型社区蓬勃…...

2025年华为手机解锁BL的方法

注&#xff1a;本文是我用老机型测试的&#xff0c;新机型可能不适用 背景 华为官方已经在2018年关闭了申请BL解锁码的通道&#xff0c;所以华为手机已经无法通过官方获取解锁码。最近翻出了一部家里的老手机华为畅玩5X&#xff0c;想着能不能刷个系统玩玩&#xff0c;但是卡…...

了解 RAG 第二部分:经典 RAG 的工作原理

在本系列的第一篇文章中&#xff0c;我们介绍了检索增强生成 (RAG) &#xff0c;解释了扩展传统大型语言模型 (LLM)功能的必要性。我们还简要概述了 RAG 的核心思想&#xff1a;从外部知识库检索上下文相关的信息&#xff0c;以确保 LLM 生成准确且最新的信息&#xff0c;而不会…...

50周学习go语言:第四周 函数与错误处理深度解析

第四周 函数与错误处理深度解析 以下是第4周函数基础的深度教程&#xff0c;包含两个完整案例和详细实现细节&#xff1a; 第四周&#xff1a;函数与错误处理深度解析 一、函数定义与参数传递 1. 基础函数结构 // 基本语法 func 函数名(参数列表) 返回值类型 {// 函数体 }// …...

debian 12安装 postgresql 17

按照官方文档安装&#xff0c;即可安装成功 https://www.postgresql.org/download/linux/debian/ 添加存储库 #添加存储库 sudo apt install -y postgresql-common#执行 存储库内 命令&#xff0c;自动处理某些东西 sudo /usr/share/postgresql-common/pgdg/apt.postgresql.o…...

C++....................4

1. using namespace std; class mystring { private:char* p;int len;// 辅助函数&#xff1a;复制字符串void copy(const char* source) {len strlen(source);p new char[len 1];strcpy(p, source);}// 辅助函数&#xff1a;释放内存void release() {if (…...

图书馆系统源码详解

本项目是一个基于Scala语言开发的图书馆管理系统。系统主要由以下几个部分组成&#xff1a;数据访问层&#xff08;DAO&#xff09;、数据模型层&#xff08;Models&#xff09;、服务层&#xff08;Service&#xff09;以及用户界面层&#xff08;UI&#xff09;。以下是对项目…...

Node.js中如何修改全局变量的几种方式

Node.js中如何修改全局变量。我需要先理解他们的需求。可能他们是在开发过程中遇到了需要跨模块共享数据的情况&#xff0c;或者想要配置一些全局可访问的设置。不过&#xff0c;使用全局变量可能存在一些问题&#xff0c;比如命名冲突、难以维护和测试困难&#xff0c;所以我得…...

基于javaweb的SpringBoot个人博客系统设计和实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...

厦大团队:DeepSeek大模型概念、技术与应用实践 140页PDF完整版下载

DeepSeek使用教程系列&#xff1a; 厦门大学&#xff1a; DeepSeek大模型概念、技术与应用实践 140页PDF完整版文件 厦大团队&#xff1a;DeepSeek大模型概念、技术与应用实践&#xff08;140页PPT读懂大模型&#xff09;.pdf https://pan.baidu.com/s/1de4UIxqPsvMBIYcpen_M-…...

【Blender】二、建模篇--05,阵列修改器与晶格形变

阵列修改器是bender里面一个比较常用的修改器,所以我们单独开口来讲,我们会先从几片树叶出发,然后我们用阵列修改器把这几片树叶变成这样的造型和这样的造型。这两个造型分别就代表着阵列修改器最常用的两种偏移方法,我们现在就开始我们先来做几个树叶。 1.树叶建模 首先…...

#渗透测试#批量漏洞挖掘#畅捷通T+远程命令执行漏洞

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。 目录 一、漏洞概况 二、攻击特征 三、应急处置…...

【Python爬虫(23)】探秘Python爬虫数据存储:MongoDB实战指南

【Python爬虫】专栏简介&#xff1a;本专栏是 Python 爬虫领域的集大成之作&#xff0c;共 100 章节。从 Python 基础语法、爬虫入门知识讲起&#xff0c;深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑&#xff0c;覆盖网页、图片、音频等各类数据爬取&#xff…...

Pytorch使用手册-音频数据增强(专题二十)

音频数据增强 torchaudio 提供了多种方式来增强音频数据。 在本教程中,我们将介绍一种应用效果、滤波器、RIR(房间脉冲响应)和编解码器的方法。 最后,我们将从干净的语音合成带噪声的电话语音。 import torch import torchaudio import torchaudio.functional as Fprin…...

Linux 命令大全完整版(04)

1. 用户信息相关命令 who 功能说明&#xff1a;显示目前登入系统的用户信息。语  法&#xff1a;who [-Himqsw][--help][--version][am i][记录文件]补充说明&#xff1a;执行这项指令可得知目前有哪些用户登入系统&#xff0c;单独执行 who 指令会列出登入帐号、使用的终端…...

嵌入式Linux内核底层调试技术Kprobes

大家好&#xff0c;我是bug菌~ Kprobes 是 Linux 内核中一种动态插桩&#xff08;Dynamic Instrumentation&#xff09;技术&#xff0c;允许在不修改内核源码或重启系统的前提下&#xff0c;动态监控内核函数的执行。它是内核调试、性能分析和安全监控的重要工具。以下从技术…...

leetcode 119. 杨辉三角 II

给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: rowIndex 3 输出: [1,3,3,1]示例 2: 输入: rowIndex 0 输出: [1]示例 3: 输入: rowIndex 1 输出: [1,1]提示…...

内网网络安全的解决之道

本文简要分析了企业内部网络所面临的主要分析&#xff0c;阐述了安全管理人员针对不同威胁的主要技术应对措施。进一步介绍了业界各种技术措施的现状&#xff0c;并提出了未来可能的发展趋势。 内网网络安全问题的提出 网络安全对于绝大多数人而言指的都是互联网安全&#xff…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...