打破AI黑盒,拥抱开源力量:基于openGauss+DeepSeek的本地知识库,打造你的专属AI助手!
引言:什么是RAG和LLM?
LLM (Large Language Model,大语言模型): 就像 ChatGPT 这样的 AI 模型,拥有强大的语言理解和生成能力,但它们的知识局限于训练数据,且可能产生“幻觉”(即生成不准确的信息)。
RAG (Retrieval-Augmented Generation,检索增强生成): 一种将信息检索与 LLM 结合的框架,可以实时从外部知识库中检索相关信息,并利用 LLM 生成更准确、可靠的回答。
当前,以 ChatGPT 为代表的外部 AI 助手暴露出诸多问题,回答内容的准确性存疑,数据安全存在隐患,访问过程中也时常出现不稳定的状况。
这篇教程,将手把手教你基于openGauss开源数据库和DeepSeek,在本地部署一个专属的AI知识库,拥有一个更懂你、更安全、更可控的AI助手!
为什么选择openGauss + DeepSeek?
- 开源开放,透明可信:告别AI“黑盒”,代码完全开放,数据随心掌控,安全可靠。
- 性能强劲,稳定高效:openGauss作为国产数据库佼佼者,性能优异且更加安全稳定,DeepSeek的RAG模型更是能精准理解你的需求。
- 灵活定制,无限可能:本地部署意味着你可以根据自身需求,自由定制知识库内容和功能,打造更懂你的AI助手。
为什么要本地部署?
- 数据安全,隐私保障:敏感数据不出本地,杜绝信息泄露风险,安心使用无顾虑。
- 离线可用,稳定可靠:无需依赖网络,随时随地访问你的知识库,稳定流畅不卡顿。
- 成本可控,长期受益:一次部署,长期使用,无需持续支付高昂的云服务费用。
实践准备:搭建基础环境
操作系统与 Python 环境配置
本文实践所采用的操作系统为 openEuler 22.03 LTS(x86_64)。为了确保各个组件之间能够实现无缝兼容并顺利运行,我们选择使用 python3.11。
DeepSeek推理模型部署:解锁强大文本生成能力
安装Ollama服务
首先,我们需要下载 ollama 的 pypi 包,以便后续访问 ollama 服务:
[test@localhost ~]$ pip3 install ollama
然后,我们可以使用官网提供的一键式部署脚本来部署 ollama 服务:
curl -fsSL https://ollama.com/install.sh | sh
如果遇到网络问题无法直接安装,我们可以考虑采用手动方案:
[test@localhost ~]$ wget https://ollama.com/download/ollama-linux-amd64.tgz
[test@localhost ~]$ tar -zxvf ollama-linux-amd64.tgz -C /usr/
[test@localhost ~]$ which ollama
/usr/bin/ollama
注:arm 架构的下载地址为 https://ollama.com/download/ollama-linux-arm64.tgz
安装成功后,我们可以启动 ollama 服务:
[test@localhost ~]$ ollama serve &
选择关键模型:DeepSeek与nomic-embed-text的协同
在RAG应用中,文本嵌入模型和文本生成模型是至关重要的组成部分。在本次实践中,我们着重引入了DeepSeek家族中的deepseek-r1模型来承担文本生成这一核心任务。
deepseek-r1 模型是基于先进的深度学习技术开发的,它具有独特的架构和训练方式,能够更好地捕捉文本中的语义信息,从而为文本生成带来更出色的效果。同时,我们选用nomic-embed-text模型用于嵌入任务,该模型能够将文本转换为高维向量表示,为后续的检索和匹配提供了强有力的支持。二者协同工作,共同助力我们基于DeepSeek与openGauss打造的本地AI知识库,使其能够更高效、更精准地为用户提供服务。
[test@localhost ~]$ ollama --version
ollama version is 0.5.6
[test@localhost ~]$ ollama pull deepseek-r1
[test@localhost ~]$ ollama pull nomic-embed-text
openGauss安装部署:构建可靠数据存储基石
通过openGauss向量数据库存储本地私域知识,在快速检索的同时提供更加稳定、更加安全的数据防护。
下载依赖
首先,我们需要下载 psycopg2 依赖:
[test@localhost ~]$ pip3 install psycopg2
获取镜像
通过如下命令获取 openGauss 镜像:
[root@localhost ~]$ wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/x86_openEuler/openGauss-Docker-7.0.0-RC1.tar
[root@localhost ~]$ docker load -i openGauss-Docker-7.0.0-RC1.tar
注:arm 架构的获取方式为 https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/arm/openGauss-Docker-7.0.0-RC1.tar
启动服务
镜像拉取完成后,我们可以启动openGauss服务:
[root@localhost ~]$ docker run --name opengauss --privileged=true -d -e GS_PASSWORD=Test@123 -p 8888:5432 -v /home/test/opengauss:/var/lib/opengauss opengauss:7.0.0-RC1
至此,openGauss已经成功安装部署,我们可以通过psycopg2连接openGauss查看版本信息:
import psycopg2conn = psycopg2.connect(database="postgres",user="gaussdb",password="Test@123",host="127.0.0.1",port="8888"
)
cur = conn.cursor()
cur.execute("select version();")
rows = cur.fetchall()
print(rows)
[('(openGauss 7.0.0-RC1 build 3fb58c89) compiled at 2025-01-20 00:24:26 commit 0 last mr on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 10.3.0, 64-bit',)]
构建RAG实例:实现知识的高效检索与生成
我们以openGauss基础语料知识为例,通过deepseek-r1,做一个基础版的数据库智能问答小助手。
准备数据
以 openGauss 部分语料数据作为私域知识,下载文件:
[test@localhost ~]$ wget https://gitee.com/opengauss/website/raw/v2/app/zh/faq/index.md
对语料进行预处理:
file_path = '/home/test/index.md'with open(file_path, 'r', encoding='utf-8') as file: content = file.read()paragraphs = content.split('##')for i, paragraph in enumerate(paragraphs):print(f'段落 {i + 1}:\n{paragraph}\n')print('-' * 20)
语料嵌入
在前述章节里,我们已经准备好了nomic-embed-text嵌入模型。这里进行简单测试如下:
import ollamadef embedding(text):vector = ollama.embeddings(model="nomic-embed-text", prompt=text)return vector["embedding"]text = "openGauss 是一款开源数据库"
emb = embedding(text)
dimensions = len(emb)
print("text : {}, embedding dim : {}, enbedding : {} ...".format(text, dimensions, emb[:10]))
text : openGauss 是一款开源数据库, embedding dim : 768, enbedding : [-0.5359194278717041, 1.3424185514450073, -3.524909734725952, -1.0017194747924805, -0.1950572431087494, 0.28160029649734497, -0.473337858915329, 0.08056074380874634, -0.22012852132320404, -0.9982725977897644] ...
数据导入
根据事先启动的openGauss docker服务连接信息建立连接:
import psycopg2table_name = "opengauss_data"conn = psycopg2.connect(database="postgres",user="gaussdb",password="Test@123",host="127.0.0.1",port="8888"
)
创建包含文本数据和向量数据的table:
# 建表
cur = conn.cursor()
cur.execute("DROP TABLE IF EXISTS {};".format(table_name))
cur.execute("CREATE TABLE {} (id INT PRIMARY KEY, content TEXT, emb vector({}));".format(table_name, dimensions))
conn.commit()
将处理好的语料数据向量化后导入到openGauss数据库中,并创建索引:
# 插入数据
for i, paragraph in enumerate(paragraphs): emb = embedding(paragraph)insert_data_sql = f'''INSERT INTO {table_name} (id, content, emb) VALUES (%s, %s, %s);'''cur.execute(insert_data_sql, (i, paragraph, emb))conn.commit()# 创建索引
cur.execute("CREATE INDEX ON {} USING hnsw (emb vector_l2_ops);".format(table_name))
conn.commit()
查询检索
我们尝试询问如下问题:
question = "openGauss 发布了哪些版本?"
在openGauss中检索该问题以获取之前导入数据库中的相关文档:
emb_data = embedding(question)
dimensions = len(emb_data)cur = conn.cursor()
cur.execute("select content from {} order by emb <-> '{}' limit 1;".format(table_name, emb_data))conn.commit()
rows = cur.fetchall()
print(rows)cur.close()
conn.close()
查询结果如下:
[(' 3. openGauss 有哪些版本?\n\nopenGauss 社区每两年发布一个 LTS 版本,LTS 版本作为长期支持版本,可规模上线使用。半年发布一个创新版本,创新版本供用户联创测试使用;涉及重大问题修复时,会按需发布补丁版本。同时按照不同场景分为以下版本:\n\n1. openGauss 企业版:具备更齐全的集群管理功能,适合企业用户;\n2. openGauss 极简版:安装配置简单,解压可用,适合个人开发者;\n3. openGauss 轻量版:精简功能,缩减安装包大小,内存占用更少;\n4. openGauss 分布式镜像:基于 ShardingSphere 和 k8s 的分布式容器化镜像。\n\n详情参考 openGauss 官网[“学习”->“文档”](https://docs-opengauss.osinfra.cn)区域。\n\n',)]
结合LLM实现RAG
首先,为对比RAG前后效果,我们直接询问大模型得到如下答案,结果并不理想:
嗯,我现在想了解一下 openGauss 有哪些发布版本。我之前对这个软件不太熟悉,但听说它是一个用于关系型数据库的高可用性云原生解决方案,可能和 PostgreSQL 类似。首先,我应该确认一下什么是 openGauss,它的主要用途是什么,以及它在市场上的地位。
借助openGauss检索结果作为上下文,将文档进行格式化处理,并为大模型制定PROMPT:
context = "\n".join(row[0] for row in rows)SYSTEM_PROMPT = "你作为一个对话 AI 助手,结合上下文信息简练高效的回答用户提出的问题
"USER_PROMPT = f"请结合{context}信息来回答{question}的问题,不需要额外的无用回答"
基于ollama平台,我们采用deepseek-r1大模型进行知识问答:
response: ChatResponse = chat(model="deepseek-r1",messages=[
{"role": "user", "content": SYSTEM_PROMPT},
{"role": "user", "content": USER_PROMPT} ],
)print(response["message"]["content"])
<think>好的,我现在要解决用户关于openGauss发布版本的问题。根据提供的上下文信息,openGauss每两年发布一个LTS版本,并且半年发布创新版本,当有重大问题修复时会发布补丁版本。
首先,我需要整理已知的版本类型:
1. **企业版**:面向企业用户,功能齐全。2. **极简版**:适合个人开发者,安装配置简单,解压即可使用。3. **轻量版**:精简功能,安装包小,占用内存少。4. **分布式镜像**:基于ShardingSphere和k8s的分布式容器化镜像。
接下来,LTS版本是长期支持版本,创新版本供联创测试。此外,还有补丁版本用于修复问题。
用户的问题是询问openGauss发布了哪些版本?因此,我需要总结这些信息,列出所有已知版本类型,并说明每个版本的目标用户和功能特点。
最后,确保回答简练、高效,避免任何无用内容。</think>openGauss 社区发布的主要版本类型包括:
1. **企业版**:适合企业用户,提供全面的集群管理功能。2. **极简版**:适用于个人开发者,安装配置简单且解压即可使用。3. **轻量版**:精简功能,适合需要小而精的应用场景。4. **分布式镜像**:基于 ShardingSphere 和 k8s 的分布式容器化镜像。
这些版本根据不同的应用场景提供定制化的解决方案。LTS 版本作为长期支持版本,创新版本则供用户进行联创测试使用。当出现重大问题时,会发布补丁版本进行修复。更多信息可参考 openGauss 官网。
可见,使用 deepseek 结合 openGauss 搭建的 RAG 应用,不仅能借助 deepseek 强大的文本生成能力和精准的文本嵌入功能,还能依托 openGauss 出色的向量数据库高效存储和快速检索向量数据,从而显著提升答案的准确性、可靠性,有效避免大语言模型的幻觉问题,为企业提供更优质的本地化知识服务。
结语
最后,我们基于ollama,成功利用openGauss和DeepSeek从零搭建起了简易的 RAG 应用,如愿获取到了所需的知识数据。在这个过程中,我们对 RAG 技术有了更深入的理解,也切实体会到了它在解决 LLM 实际应用问题上的作用。这个简易应用只是一个开端,你可以依据自身需求对相关环节进行灵活调整和优化,以更好地满足不同场景的需要。希望本文能帮助你加深对 RAG 技术应用实践的认识。
相关文章:
打破AI黑盒,拥抱开源力量:基于openGauss+DeepSeek的本地知识库,打造你的专属AI助手!
引言:什么是RAG和LLM? LLM (Large Language Model,大语言模型): 就像 ChatGPT 这样的 AI 模型,拥有强大的语言理解和生成能力,但它们的知识局限于训练数据,且可能产生“幻觉”(即生成不准确的信…...
如何在 IntelliJ IDEA 中使用 Bito AI 插件
如何在 IntelliJ IDEA 中使用 Bito AI 插件 Bito: On-Demand AI Code Reviews Bito AI 插件是一个智能开发工具,能够帮助开发者提升编码效率,自动化生成代码、注释、单元测试等。本文将详细介绍 Bito AI 插件在 IntelliJ IDEA 中的使用方法,…...
用xml配置spring, bean标签有哪些属性?
用xml配置spring, bean标签有哪些属性? 在Spring框架中,使用XML配置文件时,<bean>标签用于定义一个Bean。以下是一些常用的<bean>标签属性: 1. class 描述:指定Bean的类名。示例:<bean id"myBe…...
微信小程序中缓存数据全方位解惑
微信小程序中缓存数据全方位解惑 微信小程序中的数据缓存是提升用户体验和优化性能的重要手段,跟电脑浏览器中的Local Storage的性质一样。以下是关于微信小程序数据缓存的相关知识点和示例的详细介绍: 1. 数据缓存的类型 微信小程序提供了两种数据缓…...
物联网平台-分布式的设备接入与管理系统
乐吾乐物联网平台是由乐吾乐自主研发的一款分布式的设备接入与管理系统,专为满足不断增长的设备接入和数据处理需求而设计。平台集数据采集、分析、监控、告警和通知等功能于一体,并融合了乐吾乐大屏可视化和乐吾乐3D数字孪生技术,帮助用户快…...
ABP - 事件总线之分布式事件总线
ABP - 事件总线之分布式事件总线 1. 分布式事件总线的集成1.2 基于 RabbitMQ 的分布式事件总线 2. 分布式事件总线的使用2.1 发布2.2 订阅2.3 事务和异常处理 3. 自己扩展的分布式事件总线实现 事件总线可以实现代码逻辑的解耦,使代码模块之间功能职责更清晰。而分布…...
ComfyUI流程图生图原理详解
一、引言 ComfyUI 是一款功能强大的工具,在图像生成等领域有着广泛应用。本文补充一点ComfyUI 的安装与配置过程遇到的问题,并深入剖析图生图过程及相关参数,帮助读者快速入门并深入理解其原理。 二、ComfyUI 的安装与配置中遇到的问题 &a…...
洛谷 P3660 USACO17FEB Why Did the Cow Cross the Road III 题解
题意 有一个圆,圆周上按顺时针方向给出 2 n 2n 2n个点。第 i i i个点的颜色是 c o l o r i color_i colori,其中数据保证 1 ≤ c o l o r i ≤ n 1\le color_i\le n 1≤colori≤n,而且每种不同的颜色有且只有两个点。不存在位置重叠的点…...
kubekey一键部署k8s高可用与kubesphere
kubekey一键安装k8s与kubesphere还是蛮方便的,kubesphere官网上面也提到了高可用安装的一些事宜,但是没有涉及到kubesphere资深的redis的系统的部署问题,本文简单给出对应配置,其实这个配置在kubephere的cluster-configuration.ya…...
SwiftUI 5.0 中宝藏视图修改器 containerRelativeFrame 趣谈(下)
概览 小伙伴们都知道,为了将 SwiftUI 中多如牛毛的视图井然有序、有条不紊的组织起来,我们必须借助容器(Container)伏虎降龙般地威力。而如何最大限度的让容器中的子视图能根据容器尺寸安排自己的空间,则需要一些技术手段来洞幽察微。 在过去,我们往往使用 GeometryRead…...
ElasticSearch基础和使用
ElasticSearch基础 1 初识ES相关组件 (1)Elasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。Elasticsearch结合kibana、Logstash、Beats组件 也就是elastic stack(ELK) 广泛应…...
我用 Cursor 开发了一款个人小记系统
https://note.iiter.cn 项目背景 在日常工作和学习中,我们经常需要快速记录一些想法、收藏一些有用的链接或者保存一些重要的文本、图片内容。虽然市面上已经有很多笔记软件,但我想要一个更轻量、更简单的工具,专注于快速记录和智能检索。于是我开发了这款个人小记系统。 系统…...
如何使用Three.js制作3D月球与星空效果
目录 1. 基本设置2. 创建星空效果3. 创建月球模型4. 添加中文3D文字5. 光照与相机配置6. 动画与控制7. 响应式布局8. 结语 在本文中,我们将一起学习如何利用Three.js实现一个3D月球与星空的效果,并添加一些有趣的元素,比如中文3D文字和互动功…...
DeepSeek接入网络安全领域,AI高效驱动,重新定义网络防御边界!
DeepSeek新一代模型的发布,标志着AI大模型的应用将逐步走向普及,并加速AI技术在各行业的赋能与全面落地。在科技日新月异的今天,AI技术凭借其强大的数据处理与分析能力,已成为推动社会进步的核心动力。 在网络安全领域࿰…...
【动态规划】斐波那契数列模型
目录 动态规划 动态规划的基本步骤 1137. 第 N 个泰波那契数 - 力扣(LeetCode) 算法分析 算法代码 算法代码 面试题 08.01. 三步问题 - 力扣(LeetCode) 算法分析 算法代码 优化 746. 使用最小花费爬楼梯 - 力扣&#x…...
Spring中的IOC详解
文章目录 IOC IOC容器的工作原理Bean的生命周期Bean的自动装配 AutowiredResourceInject 使用Spring底层组件 IOC Spring的核心之一是IOC,IOC全称为Inversion of Control,中文译为控制反转,是面向对象编程中的一种设计原则,可…...
深挖vue3基本原理之七 —— 功能模块的深度技术解析
Vue 3 四个核心功能模块的深度技术解析 一、Effect 调度系统:同步/异步任务队列 实现原理 // runtime-core/src/scheduler.ts const queue: (EffectJob | null)[] [] let isFlushing false const resolvedPromise Promise.resolve()function queueJob(job: Ef…...
数据结构 day 07
数据结构 day07 7. 树7.3. 层次遍历代码实现 8. 查询算法8.1. 顺序查找 seqSearch代码实现 8.2. 二分法查找 binarySearch代码实现 8.2. 分块查找 blockSearch代码实现 8.3. 哈希表 hash 9. 排序算法9.1. 冒泡排序 bubSort代码实现 9.2. 选择排序 selSort代码实现 9.3. 插入排序…...
《代码随想录》刷题笔记——回溯篇【java实现】
文章目录 组合组合总和 III电话号码的字母组合组合总和组合总和II思路代码实现 分割回文串※思路字符串分割回文串判断效率优化※ 复原 IP 地址优化版本 子集子集 II使用usedArr辅助去重不使用usedArr辅助去重 递增子序列※全排列全排列 II重新安排行程题意代码 N 皇后解数独直…...
React:初识React
React是什么? React是由Meta公司研发,也就是Facebook的公司(马克扎克伯格这个见人)研发的构建Web和原生交互界面的库 不仅可以写网页,还可以写苹果和安卓上面的app React的优势: React也是前端里最流行的…...
全面理解-c++中的内存布局
在 C 中,程序的内存布局指的是程序运行时,代码和数据在内存中的组织和分布方式。一般来说,C 程序的内存可以划分为以下几个主要区域: 1. 代码段(Text Segment,也称为 .text 段) 存储内容&…...
百度沈抖:传统云计算不再是主角,智能计算呼唤新一代“操作系统”
Create 2024 百度AI开发者大会 4月16日,Create 2024 百度AI开发者大会在深圳召开。期间,百度集团执行副总裁、百度智能云事业群总裁沈抖正式发布新一代智能计算操作系统——万源,通过对AI原生时代的智能计算平台进行抽象与封装设计ÿ…...
【银河麒麟高级服务器操作系统】服务器卡死后恢复系统日志丢失-分析及处理全过程
了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://document.kylinos.cn 服务器环境以及配置 【机型】 处理器ÿ…...
VSCode Error Lens插件介绍(代码静态检查与提示工具)(vscode插件)
文章目录 VSCode Error Lens 插件介绍**功能概述****开发背景****使用方法****适用场景** VSCode Error Lens 插件介绍 功能概述 Error Lens 是一款增强 VS Code 错误提示的扩展工具,通过 内联显示错误和警告信息,直接定位代码问题,提升开发…...
ffmpeg configure 研究1-命令行参数的分析
author: hjjdebug date: 2025年 02月 14日 星期五 17:16:12 CST description: ffmpeg configure 研究1 ./configure 命令行参数的分析 文章目录 1 configure 对命令行参数的分析,在4019行1.1 函数名称: is_in1.2. 函数名称: enable1.3. 函数名称: set_all 2 执行退出判断的关键…...
如何调整 Nginx工作进程数以提升性能
🏡作者主页:点击! Nginx-从零开始的服务器之旅专栏:点击! 🐧Linux高级管理防护和群集专栏:点击! ⏰️创作时间:2025年2月15日14点20分 Nginx 的工作进程数࿰…...
分布式 NewSQL 数据库(TiDB)
TiDB 是一个分布式 NewSQL 数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景还适合 OLAP 场景的混合数据库。 TiDB是 PingCAP公司自主设计、研发的开源分布式关系型数据…...
try learning-git-branching
文章目录 mergerebase分离 HEAD相对引用利用父节点branch -f 撤销变更cherry-pick交互式 rebase只取一个提交记录提交的技巧rebase 在上一次提交上amendcherry-pick 在上一次提交上 amend tag多分支 rebase两个parent节点纠缠不清的分支偏离的提交历史锁定的Main推送主分支合并…...
【kafka系列】Kafka事务的实现原理
目录 1. 事务核心组件 1.1 幂等性生产者(Idempotent Producer) 1.2 事务协调器(TransactionCoordinator) 1.3 事务日志(Transaction Log) 2. 事务执行流程 2.1 事务初始化 2.2 发送消息 2.3 事务提…...
数据结构6
一、哈希散列--通讯录查找 #include "hash.h" #include <stdio.h> #include <stdlib.h> #include <string.h>//int *a[10];int hash_function(char key) {if (key > a && key < z){return key - a;}else if (key > A && …...
Flutter 的 Widget Key 提议大调整?深入聊一聊 Key 的作用
Flutter 的 Widget Key 提议大调整?深入聊一聊 Key 的作用 在 Flutter 里,Key 对象存在的目的主要是区分和维持 Widget 的状态,它是控件在渲染树里的「复用」标识之一,这一点在之前的《深入 Flutter 和 Compose 在 UI 渲染刷新时…...
src和href区别
src和href区别 (1)请求资源类型不同(2)作用结果不同(3)解析方式不同 (1)请求资源类型不同 href 用来建立文档和元素之间的链接(是引用),常用的有a、linksrc 在请求src资源时候会将指向的资源下载并且应用到文档中(引入),常用的有script、iframe、image。 (2)作用结果不同 hr…...
STM32之SG90舵机控制
目录 前言: 一、硬件准备与接线 1.1 硬件清单 1.2 接线 二、 SG90舵机简介 1.1 外观 1.2 基本参数 1.3 引脚说明 1.4 控制原理 1.5 特点 1.6 常见问题 三、 单片机简介 四、 程序设计 4.1 定时器配置 4.2 角度控制函数 4.3 主函数调用 五、 总结 …...
尚硅谷课程【笔记】——大数据之Hadoop【一】
课程视频链接:尚硅谷Hadoop3.x教程 一、大数据概论 1)大数据概念 大数据(Big Data):指无法再一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发…...
QEMU 搭建 Ubuntu x86 虚拟机
1. 安装 QEMU 在 Ubuntu 系统中,可以通过以下命令安装 QEMU: sudo apt-get update sudo apt-get install qemu-system-x86_64 qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager2. 创建虚拟硬盘镜像 qemu-img create -f raw ubuntu…...
mac 意外退出移动硬盘后再次插入移动硬盘不显示怎么办
第一步:sudo ps aux | grep fsck 打开mac控制台输入如下指令,我们看到会出现两个进程,看进程是root的这个 sudo ps aux|grep fsck 第二步:杀死进程 在第一步基础上我们知道不显示u盘的进程是:62319,我们…...
Acwing-基础算法课笔记之基础算法(双指针)
Acwing-基础算法课笔记之基础算法(双指针) 一、双指针算法概念二、关于双指针的一个问题三、模板 一、双指针算法概念 双指针(又称尺取法)是一个常用的优化技巧,用来解决序列的区间问题。 两个指针i,j&am…...
PCIE基础学习
PCIE PIO模式: 一个CPU传输一个32bit给PCIE(IP)。CPU直接与PCIE做数据传输。 DMA模式: CPU通过PCIE bridge 与多个PCIE设备连接,CPU发送命令给桥,桥控制PCIE与memory直接数据连接。 tlp报文 读报文 …...
架构——Nginx功能、职责、原理、配置示例、应用场景
以下是关于 Nginx 的功能、职责、原理、配置示例、应用场景及其高性能原因的详细说明: 一、Nginx 的核心功能 1. 静态资源服务 功能:直接返回静态文件(如 HTML、CSS、JS、图片、视频等)。配置示例:server {listen 80…...
【教程】比亚迪车机接入AI大模型语音助手
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 更新说明: v1.1.0.2 1、新增长按音量键触发,不再需要迪加 (需设置modelisten)。 2、新增kimi、豆包、ChatGPT等多个GPT接口。 3…...
ios中常见的设计原则和设计模式
七大设计原则 1:开闭原则 对扩展开放,对修改关闭,在设计模块的时候,使模块在不被修改的前提下可以扩展功能 2:依赖倒置原则 实现尽量依赖抽象,不依赖具体实现 (1)高层模块不应该依赖底层模…...
WSL Ubuntu 安装 CUDA 教程
WSL Ubuntu 安装 CUDA 教程 1. 概述2. 准备工作3. 删除旧的 GPG 密钥4. 安装 CUDA Toolkit4.1 使用 WSL-Ubuntu 包安装(推荐) 5. 设置环境变量6. 注意事项7. 参考链接8. 总结 1. 概述 随着 WSL 2 的推出,Windows 用户现在可以在 Windows 子系…...
案例-02.部门管理-查询
一.查询部门-需求 二.查询部门-思路 API接口文档 三.代码实现 1.controller层:负责与前端进行交互,接收前端所发来的请求 注:Slf4j用于记录日志使用,可以省略private static Logger log LoggerFactory.getLogger(DeptControlle…...
【ARM】解决ArmDS Fast Models 中部分内核无法上电的问题
1、 文档目标 解决ArmDS Fast Models 中部分内核无法上电的问题。 2、 问题场景 在调用ArmDS的Fast Models中的Cortex-A55的模型,只有Core 0是上电状态,而Core 1处于掉电状态,如图2-1所示: 图2-1 3、软硬件环境 1)…...
docker 基础命令使用(ubuntu)
docker 状态查询 docker ps docker ps -adocker --version docker info docker --help docker run --help docker ps --help ...docker 操作镜像命令 docker imagesdocker rmi 镜像id/镜像名docker 操作容器命令 docker ps docker ps -adocker run 命令 # 端口映射 -p 参数…...
WEB安全--SQL注入--二次注入
一、原理: 二次注入的关键在于攻击者的输入并不立即执行,而是经过某些存储或处理后,在后续某个步骤中再触发注入攻击 二、示例: 2.1、sqli-labs-master/less-24: admin# 第一次在网页注册账号和密码时没有漏洞&#x…...
c++中什么时候应该使用final关键字?
在C中,final关键字是自C11标准引入的重要特性,主要用于类继承和虚函数重写机制的约束。下面从技术原理、使用场景和最佳实践三个维度进行系统分析,并给出工业级代码示例。 目录 一、技术原理深度解析 二、关键使用场景分析 1. 类级别的fi…...
DeepSeek学术秘籍:如何让DeepSeek辅助论证?
随着人工智能技术的飞速发展,AIGC技术在学术领域的应用逐渐引起了广泛关注。其中最近大火的DeepSeek作为一款基于大语言模型的应用,其出现标志着学术论文写作中研究方法的一次重大变革。 辅助论证 在学术论文写作中,借助DeepSeek优化辅助论证…...
Atlassian工具集:Jira与Confluence集成优势、使用技巧、更新功能等
本文由Atlassian全球白金合作伙伴-龙智翻译整理,深入探讨了Jira和Confluence最受欢迎的集成功能与技巧,期待为您新一年的团队协作开个好头。 此前,来自K15t 的Customer Advocate Matt Reiner 和Atlassian副产品经理David Olive在一场学习会议…...
传输层协议TCP ( 下 )
文章目录 前言序号与确认序号超时重传RTOJacobson算法内核中超时时间的计算 滑动窗口滑动窗口延迟应答流量控制 拥塞控制慢启动拥塞避免快重传快速恢复 保活机制参考资料 前言 TCP(Transmission Control Protocol,传输控制协议)是互联网最重要…...