本地化智能运维助手:基于 LangChain 数据增强 和 DeepSeek-R1 的K8s运维文档检索与问答系统 Demo

写在前面


  • 博文内容为基于 LangChain 数据增强 和 Ollams 本地部署 DeepSeek-R1
  • 实现 K8s运维文档检索与问答系统 Demo
  • 通过 Demo 对 LEDVR 工作流语义检索有基本认知
  • 理解不足小伙伴帮忙指正 😃,生活加油

我看远山,远山悲悯

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


Ollama 部署 DeepSeek-R1

Ollama 在本地部署 DeepSeek-R1 蒸馏模型,通过 langChain 调用,下载模型,启动 Ollama 服务

PS C:\Users\Administrator> ollama list
NAME                  ID              SIZE      MODIFIED
deepseek-r1:latest    0a8c26691023    4.7 GB    3 seconds ago
deepseek-r1:32b       38056bbcbb2d    19 GB     2 weeks ago
deepseek-r1:14b       ea35dfe18182    9.0 GB    2 weeks ago
deepseek-r1:8b        28f8fd6cdc67    4.9 GB    2 weeks ago
bge-m3:latest         790764642607    1.2 GB    2 weeks ago
PS C:\Users\Administrator> ollama serve
Error: listen tcp 127.0.0.1:11434: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
PS C:\Users\Administrator> ollama serve
2025/03/09 01:22:39 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://127.0.0.1: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-03-09T01:22:39.303+08:00 level=INFO source=images.go:432 msg="total blobs: 14"
。。。。。。。。。。。。。。。。。。。。。。。。。。。。
time=2025-03-09T01:22:39.448+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"

LangChain 数据增强模块

LangChain 的数据增强模块是构建大语言模型(LLM)应用的核心组件,专注于整合、优化外部数据以提升模型输入的精准度与效率。

该模块通过文档加载器​(Document Loaders)多源数据(如PDF、数据库、网页)提取内容并标准化为结构化文档。针对长文本或复杂格式问题,内置的文档转换器​(Document Transformers)支持切割、合并、过滤等操作。

同时,模块还通过向量存储​(Vector Stores)和检索器​(Retrievers)实现数据的高效管理,利用嵌入模型将文本转换为向量,构建语义检索能力,从而在用户提问时快速定位相关片段作为上下文注入提示词模板

LLM的协作流程形成检索增强生成(RAG)​范式:外部数据经加载、转换、存储后,结合用户问题生成动态提示词,通过模型包装器调用底层API并解析输出。其典型应用包括长文本摘要(如法律条款分析)、知识库问答(精准召回专业内容)以及实时数据更新(定期抓取网页信息并同步向量库)。通过模块化设计,LangChain大幅简化了异构数据处理复杂度,为开发者提供灵活、可扩展的LLM应用支持。

LEDVR 工作流

数据增强模块是一个多功能的数据增强集成工具,一般称作 LEDVR 其中:

  • L代表加载器(Loader)
  • E代表嵌人模型包装器(Text EmbeddingModcl)
  • D代表文档转换器( Document Transformers)
  • V代表向量存储库( VectorStore )
  • R代表检索器(Retriever)

加载器

负责从各种来源加载数据作为文档,其中文档是由文本和相关元数据组成的。无论是简单的.txt 文件,还是任何网页文本内容,加载器都可以将它们加载为文档。

嵌人模型包装器

一个专为与各种文本嵌人模型(如 OpenAI、Coherc、HuggingFace 等)交互而设计的类。它的作用与模型 I/O 模块LLM 模型包装器聊天模型包装器一样,用于通过嵌入模型生成向量

文档转换器

主要用来对文档进行切割、组合、过滤等各种转换文本切割器(RecursiveCharacterTcxtSplitter)是最常见的文档转换工具。文档转换器的目的是将加载的文档转换为可被嵌入模型包装器操作的文档数据格式

向量存储库

是用于存储和检索嵌入向量的工具,处理的数据是通过模型平台的文本嵌人模型(Text Embedding Mode1)转换的向量数据,这是处理非结构化数据的-种常见方法。向量存储库负责存储嵌入数据并执行向量检索。在检索时,可以嵌入非结构化查询,以检索与嵌入数据“最相似”的嵌入向量。

检索器

是一个接口,返回非结构化查询的文档。它比向量存储库更通用。检索器无须存储文档,只需要返回(或检索)文档

K8s运维文档检索与问答系统 Demo

下面为一个基于 LEDVR 工作流(Loader → Embedding → Document Transformers → VectorStore → Retriever)与本地部署 Ollama 的完整代码示例
Demo

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
@File    :   demo_LEDVR.py
@Time    :   2025/03/15 04:30:36
@Author  :   Li Ruilong
@Version :   1.0
@Contact :   liruilonger@gmail.com
@Desc    :   None
"""# here put the import lib
#pip install langchain langchain-community ollama -i https://pypi.tuna.tsinghua.edu.cn/simple
#pip install faiss-cpu
#pip install pypdf
#pip install "unstructured[md]"import nltk
#nltk.download('averaged_perceptron_tagger')from langchain.prompts import PromptTemplate
from langchain_community.document_loaders import UnstructuredMarkdownLoader
from langchain_text_splitters import TokenTextSplitter
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_community.llms import Ollama
from langchain.chains import RetrievalQA
import warningswarnings.filterwarnings("ignore")  # 忽略嵌入模型警告#### 1. 加载md文档 L 加载器
print("=============开始加载md文档")
loader = UnstructuredMarkdownLoader("K8s面试系列:K8s常用API资源总结速记 .md")
documents = loader.load()print(len(documents))#### 2. 文档转换器 (Document Transformers) 
# 2. 按token分块
print("=============按token分块")
text_splitter = TokenTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = text_splitter.split_documents(documents)
print(f"有效分块数: {len(chunks)}")  # 应大于0if not chunks:raise ValueError("文档分块失败!请检查原始文件内容和分块参数。")print(len(chunks)) #### 3. 嵌入模型 (Embedding)
print("=============嵌入模型")
embeddings = OllamaEmbeddings(model="bge-m3",  # 支持的模型包括bge-m3base_url="http://localhost:11434"  # 默认端口11434
)#### 4. 向量存储库 (VectorStore)
# 构建本地 FAISS 向量数据库
vector_db = FAISS.from_documents(chunks, embeddings)#### 5. 检索器 (Retriever)
# 配置 Top-3 相似度检索
retriever = vector_db.as_retriever(search_kwargs={"k": 3})### **集成 Ollama 本地模型**
# 配置本地 DeepSeek R1 模型(需提前通过 Ollama 下载)
llm = Ollama(base_url='http://localhost:11434',model="deepseek-r1:latest"
)prompt_template = """基于以下上下文回答问题:
{context}
问题:{question}
答案(不超过4句话):"""# 构建问答链
qa_chain = RetrievalQA.from_chain_type(llm=llm,chain_type="stuff",retriever=retriever,chain_type_kwargs={"prompt": PromptTemplate.from_template(prompt_template)},return_source_documents=True
)# 执行查询
question = "K8s 中准入控制器资源有哪些?"
response = qa_chain.invoke({"query": question})# 输出结果
print("回答:", response["result"])
print("参考来源:")
for doc in response["source_documents"]:print(f"- {doc.page_content[:80]}...")

下面为实际的输出示例


PS C:\Users\Administrator\Documents\GitHub\LangChainDemo> & C:/Users/Administrator/AppData/Local/Programs/Python/Python310/python.exe c:/Users/Administrator/Documents/GitHub/LangChainDemo/demo/demo_LEDVR.py
[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data]     C:\Users\Administrator\AppData\Roaming\nltk_data...
[nltk_data]   Package averaged_perceptron_tagger is already up-to-
[nltk_data]       date!
=============开始加载md文档
1
=============按token分块
有效分块数: 86
86
=============嵌入模型
回答: <think>
嗯,我现在要回答关于K8s中准入控制器资源的问题。根据提供的上下文,我看到有几种不同的准入控制器,比如ValidatingAdmissionPolicy、ValidatingWebhookConfiguration和NetworkPolicy。
首先,ValidatingAdmissionPolicy是在K8s 1.30版本中发布的,用于在资源被创建、更新或删除时执行验证逻辑。它应用到apps/v1组中的deployment资源,并且拒绝请求如果副本数超过5。
然后是ValidatingWebhookConfiguration,这个结构包含一个配置和一个认证,允许从服务或其他地方发送钩子调用到容器注册表中。这意味着当服务发布到K8s的时候,会自动触发这些钩子,这在扩展性方面很有帮助。
接下来是NetworkPolicy,这是一组策略,可以定义网络的白名单规则。比如,允许特定IP范围和端口下的流量通过。虽然Flannel不支持它,但其他插件如Calico、Cilium等支持,并且这些插件可以集成到K8s中使用。
还有ResourceQuota,用于限制命名空间中的资源使用。这是一种策略,可以在集群级别限制CPU、内存等资源的使用,有助于确保资源分配公平。        
总结一下,准入控制器资源包括ValidatingAdmissionPolicy、ValidatingWebhookConfiguration和NetworkPolicy,这些都是用来控制和管理K8s资源的工 具。
</think>在K8s中,准入控制器资源主要用于控制和验证API请求。以下是一些常见的准入控制器资源及其用途:1. **ValidatingAdmissionPolicy**:- **版本信息**:发布于K8s 1.30。- **用途**:应用于特定的资源类型(如Deployments),在资源被创建、更新或删除时执行验证逻辑。- **示例策略**:限制部署的副本数不超过5个。2. **ValidatingWebhookConfiguration**:- **结构**:包含一个配置和一个认证,用于允许从服务或其他位置发送钩子调用到容器注册表中。- **用途**:简化服务发布流程,自动触发钩子调用。3. **NetworkPolicy**:- **支持的工具**:Calico、Cilium、Weave Net等插件支持,并可集成到K8s中。- **用途**:定义网络的白名单规则,允许特定IP范围和端口下的流量通过。4. **ResourceQuota**:- **功能**:限制命名空间中的资源使用,如CPU和内存,确保资源分配公平。这些资源共同作用,帮助实施集群级别的安全和管理策略。参考来源:
- 个新的准入控制器,定义自定义的验证逻辑,在资源被创建、更新或删除时执行。K8s 1.30 发布正式版本yaml apiVersion: admissionr...
- .1.0/24 - namespaceSelector: #命名空间限制 matchLabels: project: myproject - podSelect...
- title: K8s面试系列:K8s常用 API 资源总结速记 tags: - Kubernetes categories: - Kubernetes toc:...
PS C:\Users\Administrator\Documents\GitHub\LangChainDemo> 

可以看到答案对于这本地运行的蒸馏模型,并且只有几十行代码来实现的功能来说以及很不错了。

下面部分为加载的文档中的内容的简单摘要,这是我之前写的一篇博文,可以看到通过一个简单的Demo检索的答案很接近



–#### ValidatingAdmissionPolicy
一种类似 Admission Webhook 的声明式配置方式。ValidatingAdmissionPolicyK8s 1.26 版本引入的一个新的准入控制器,定义自定义的验证逻辑,在资源被创建、更新或删除时执行。K8s 1.30 发布正式版本

apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionPolicy
metadata:name: "demo-policy.example.com"
spec:failurePolicy: Fail # Fail表示如果验证失败,则拒绝请求。matchConstraints: #定义哪些API请求应该被此策略验证。resourceRules:- apiGroups:   ["apps"]apiVersions: ["v1"]operations:  ["CREATE", "UPDATE"]resources:   ["deployments"]validations: # 具体的验证规则- expression: "object.spec.replicas <= 5" # 验证部署(Deployment)对象的副本数(replicas)是否小于或等于5。

这个策略将应用于所有对apps/v1组中deployments资源的CREATE和UPDATE操作,并且会拒绝任何副本数超过5的部署请求。

前面讲到的 ValidatingWebhookConfigurationValidatingAdmissionPolicy 都是 Kubernetes 中的准入控制机制,但它们在设计和使用方式上有一些重要区别:


关于上面的关键组件做说明

模块技术实现优势说明
LoaderUnstructuredMarkdownLoader md 格式文档加载统一处理 md 格式
Document Transformers递归字符分块法保留上下文语义解决长文本 token 限制问题
Embeddingbge-m3 轻量化模型本地部署无需 API 密钥
VectorStoreFAISS 高效向量检索支持毫秒级相似度匹配
OllamaDeepSeek R1 7B 量化版消费级 GPU 即可运行

这里我们在看一个有报错信息的 Demo

.............................
loader = UnstructuredMarkdownLoader("Kubernetes 触发 OOMKilled(内存杀手)如何排除故障.md")
...................
# 执行查询
question =  """```bash
┌──[root@vms100.liruilongs.github.io]-[~/ansible/oomkiller]
└─$kubectl apply  -f oom-killer-pod.yaml
pod/oom-killer-pod created
┌──[root@vms100.liruilongs.github.io]-[~/ansible/oomkiller]
└─$kubectl get pods oom-killer-pod -w
NAME             READY   STATUS              RESTARTS   AGE
oom-killer-pod   0/1     ContainerCreating   0          7s
oom-killer-pod   1/1     Running             0          25s
oom-killer-pod   0/1     OOMKilled           0          28s
oom-killer-pod   0/1     OOMKilled           1 (18s ago)   45s
oom-killer-pod   0/1     CrashLoopBackOff    1 (13s ago)   57s
oom-killer-pod   0/1     OOMKilled           2 (29s ago)   73s
/```
上面的报错是什么原因?如何解决?
"""
response = qa_chain.invoke({"query": question})# 输出结果
print("回答:", response["result"])
print("参考来源:")
for doc in response["source_documents"]:print(f"- {doc.page_content[:180]}...")

PS C:\Users\Administrator\Documents\GitHub\LangChainDemo>  c:; cd 'c:\Users\Administrator\Documents\GitHub\LangChainDemo'; & 'c:\Users\Administrator\AppData\Local\Programs\Python\Python310\python.exe' 'c:\Users\Administrator\.vscode\extensions\ms-python.debugpy-2025.4.1-win32-x64\bundled\libs\debugpy\launcher' '55098' '--' 'C:\Users\Administrator\Documents\GitHub\LangChainDemo\demo\demo_LEDVR.py'
[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data]     C:\Users\Administrator\AppData\Roaming\nltk_data...
[nltk_data]   Package averaged_perceptron_tagger is already up-to-
[nltk_data]       date!
=============开始加载md文档
1
=============按token分块
有效分块数: 21
21
=============嵌入模型
回答: <think>
好吧,我现在要解决这个Kubernetes中的OOMKilled错误问题。让我先理清楚发生了什么。首先,用户运行了一个Pod,里面装有一个叫bigmem的应用程序,这通常会模拟内存不回收的情况。当他们运行这个Pod时,发现出现了oom-killer-pod的Pod状态,其中有两个OOMKilled日志。根据提供的上下文,这可能是因为内存不足导致系统调用内核中的OOMKiller来终止进程。
我看到用户提到他们使用了_ansible任务,并且在yaml文件中装了一个 bigmem 包。这个包通常会让容器保持大段内存,导致内存泄漏。当Pod的内存消耗超过限制时,Kubernetes会通 过CrashLoopBackOff机制调用OOMKiller来终止进程。
问题是如何解决这个问题。首先,我需要理解为什么会触发OOM错误。这可能是因为内存管理不善,或者Pod的资源设置不当。例如,没有正确设置 pod resource limits 或 container resources limit。
接下来,我应该检查用户生成的 YAML 文件,看看是否正确限制了pod或容器的内存。确保 bigmem 包被正确卸载,并且资源限制足够。
此外,调整容器和pod的资源限制也是一个好方法。比如,为每个容器添加一个适当的 resource Limits,或者将 pod 的资源限制提高到足以运行所有容器,但又不超出系统处理能力。
如果资源限制不足以应对内存泄漏的问题,可能需要重新审视 bigmem 包的配置,看看是否可以适当卸载或优化其内存使用情况。
最后,如果调整资源限制后问题仍然存在,可能需要进一步检查是否有其他进程占用过多内存,或者系统中的内存分配策略是否有问题。此外,确保容器调度器(如Podman)已经正确设置,并且没有其他潜在的内存消耗因素。
总之,解决这个问题的关键在于识别导致OOM错误的根本原因,可能是资源限制不当或内存泄漏,然后相应地调整配置以避免这种情况。
</think>
上面的情况是由于容器内存不回收(bigmem 包的存在)导致系统调用 Kubernetes 的 OOMKiller 功能。OOMKiller 通过终止进程来释放内存。解决方法:
1. 在 pod.yaml 中卸载 bigmem 包:/```yamlresources:bigmem-7.0-1.r29766.x86_64.rpm: null/```
2. 调整 container resource limits,限制每个容器的内存使用:/```yamlcontainers:- image=bigmem-7.0-1.r29766.x86_64.rpmresources:memory: '512MiB'/```
3. 确保 pod resource limits 足够大,以支持所有容器同时运行。通过这些调整,可以避免因内存泄漏导致的 OOMKilled 错误。参考来源:
- ms100.liruilongs.github.io]-[~/ansible/oomkiller] └─$kubectl get pods oom-killer-pod -w NAME READY STATUS RESTARTS AGE oom-killer-pod 0/1 ContainerCreating 0 7s oom-killer-pod 1/1 ...
- /ansible/oomkiller] └─$
对于在生产环境的 Pod ,OOMKilled 常常 伴随这 CrashLoopBackOff,触发 OOM 之后,被 Kill 掉,之后由于 Pod 重启机制,会陷入 CrashLoopBackOff
什么是 OOMKilled K8s 错误
当 Kubernetes 集群中的容器超出其内存限制时,Ku...
- o wide No resources found in resources namespace. ┌──[root@vms81.liruilongs.github.io]-[~/ansible/resources] └─$vim pod-demo.yaml ┌──[root@vms81.liruilongs.github.io]-[~/ansible/re...
PS C:\Users\Administrator\Documents\GitHub\LangChainDemo>

博文部分内容参考

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


《LangChain 入门指南构建高可复用、可扩展的 LLM 应用程序》

书籍获取有条件小伙伴可以支持一下原书作者,pdf 版本获取:https://pan.quark.cn/s/2bf8697bf0d2


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin when 表达式完全指南:从基础到高级的12种实战用法

掌握 when 的灵活运用&#xff0c;告别繁琐的 if-else 链 以下是 Kotlin 中 when 表达式的 12种核心用法 的全面总结&#xff0c;涵盖基础到高级场景&#xff0c;并附带实用示例&#xff1a; 一、基础用法 1. 替代 Java 的 switch-case when (x) {1 -> println("一&qu…

新加坡 PSB 认证:安全标准、证书特点及申请注意事项

目录 什么是PSB认证&#xff1f; 涉及产品范围 强制性认证产品类别 自愿性认证产品 认证项目与测试标准 1. 安全测试 2. 电磁兼容性&#xff08;EMC&#xff09;测试 3. 能效测试&#xff08;特定产品&#xff09; 认证流程详解 第一步&#xff1a;准备阶段 第二步&a…

UE4学习笔记 FPS游戏制作26 UE中的UI

文章目录 几个概念创建一个UI蓝图添加UI获取UI的引用 切换设计器和UI蓝图将UI添加到游戏场景锚点轴点slotSizeToContent三种UI数据更新方式函数绑定属性绑定事件绑定 九宫格分割图片 几个概念 UMG&#xff1a;UE的UI编辑器 slate UI: UE的UI的编辑语言 创建一个UI蓝图 右键用…

HttpRunner v4.x 远程调用实践指南

一、基于 SSH 的远程执行方案 1. 环境准备流程 在目标服务器部署 HttpRunner 运行时环境&#xff1a; # 远程服务器执行&#xff08;需 Golang 1.18 和 Python 3.8&#xff09; curl -ksSL https://httprunner.com/script/install.sh | bash配置免密登录&#xff08;本地机器…

头条项目的文章延迟发布功能

最近做的头条项目其中有个功能是创作者发表的文章可以设置在未来某个时间发表&#xff0c;在实现这个功能的时候就在想该怎么实现呢&#xff1f;刚开始想的是利用Spring的定时任务定时的去数据库中查询&#xff0c;可以这个查询频率该怎么设置&#xff0c;每次从数据库中需要查…

Celery 全面指南:Python 分布式任务队列详解

Celery 全面指南&#xff1a;Python 分布式任务队列详解 Celery 是一个强大的分布式任务队列/异步任务队列系统&#xff0c;基于分布式消息传递&#xff0c;专注于实时处理&#xff0c;同时也支持任务调度。本文将全面介绍 Celery 的核心功能、应用场景&#xff0c;并通过丰富…

OpenHarmony NativeC++应用开发speexdsp噪声消除案例

随着5.0的版本的迭代升级&#xff0c;笔者感受到了开源鸿蒙前所未有大的版本更替速度。5.0出现了越来越多的C API可以调用&#xff0c;极大的方便了native c应用的开发。笔者先将speexdsp噪声消除的案例分享&#xff0c;老规矩&#xff0c;还是开源&#xff01;&#xff01;&am…

nuxt3 seo优化

在 Nuxt3 中&#xff0c;通过 nuxtjs/seo、nuxtjs/sitemap 和 nuxtjs/robots 模块可以生成包含动态链接的站点地图&#xff08;sitemap.xml&#xff09;&#xff0c;但具体是“实时生成”还是“部署时生成”&#xff0c;取决于你的配置方式和数据更新频率。以下是具体分析&…

es6的100个问题

基础概念 解释 let、const 和 var 的区别。什么是块级作用域&#xff1f;ES6 如何实现它&#xff1f;箭头函数和普通函数的主要区别是什么&#xff1f;解释模板字符串&#xff08;Template Literals&#xff09;的用途&#xff0c;并举例嵌套变量的写法。解构赋值的语法是什么…

【机器学习】什么是决策树?

什么是决策树&#xff1f; 决策树是一种用于分类和回归问题的模型。它通过一系列的“决策”将数据逐步分裂&#xff0c;最终得出预测结果。可以把它看作是一个“树”&#xff0c;每个节点表示一个特征的判断&#xff0c;而每个分支代表了可能的判断结果&#xff0c;最终的叶子…

Java面试黄金宝典15

1. 请找出增序排列中一个数字第一次和最后一次出现的数组下标 定义 由于数组是增序排列的&#xff0c;我们可以利用二分查找的特性来高效地定位目标数字。对于查找第一次出现的位置&#xff0c;当中间元素等于目标数字时&#xff0c;我们需要继续向左搜索&#xff0c;以确保找…

CentOS 7安装 mysql

CentOS 7安装 mysql 1. yum 安装 mysql 配置mysql源 yum -y install mysql57-community-release-el7-10.noarch.rpm安装MySQL服务器 yum -y install mysql-community-server启动MySQL systemctl start mysqld.service查看MySQL运行状态&#xff0c;运行状态如图&#xff…

科软25机试

题目: 2025科软复试上机题&#xff08;回忆版&#xff09;题解_哔哩哔哩_bilibili 1. 字符串反转 #include<bits/stdc.h> using namespace std;void solve(string& a, int CurN) {if (!(CurN % 2)) {int right a.size() - 1;int left 0;while (left < right)…

Oracle相关的面试题

以下是150道Oracle相关的面试题&#xff0c;涵盖了Oracle的基础概念、架构、SQL与PL/SQL、性能调优、高可用性、备份与恢复、安全、分区与索引、存储与内存管理、网络与连接、版本与升级等方面&#xff0c;希望对你有所帮助。 Oracle基础概念 1. 什么是Oracle数据库&#xff1…

docker安装,镜像,常用命令,Docker容器卷,Docker应用部署,自定义镜像,Docker服务编排,创建私有仓库

1.为什么使用docker 如果开发环境和测试环境的允许软件版本不一致&#xff0c;可能会导致项目无法正常启动 把环境和项目一起打包发送给测试环境 1.1docker的概念 开源的应用容器引擎&#xff0c;完全使用沙箱机制&#xff0c;相互隔离&#xff0c;容器性能开销极低 一种容…

ES 字段的映射定义了字段的类型及其行为

在 Elasticsearch 中&#xff0c;字段的映射定义了字段的类型及其行为。你提供的 content_answer 字段映射如下&#xff1a; Json 深色版本 "content_answer": { "type": "text", "fields": { "keyword": { …

Manus的开源替代者之一:OpenManus通用AI智能体框架解析及产品试用

引言 在AI智能体领域&#xff0c;Monica团队近期发布的Manus被誉为全球首个通用型AI智能体。该项目推出后迅速爆红&#xff0c;邀请码一号难求&#xff0c;随之而来的是各路开发者快速构建了众多类似的开源替代方案。其中&#xff0c;MetaGPT团队的5位工程师仅用3小时就开发完…

Linux MariaDB部署

1&#xff1a;查看Linux系统版本 cat /etc/os-release#返回结果&#xff1a; NAME"CentOS Linux" VERSION"7 (Core)" ID"centos" ID_LIKE"rhel fedora" VERSION_ID"7" PRETTY_NAME"CentOS Linux 7 (Core)" ANSI…

PHP MySQL 预处理语句

PHP MySQL 预处理语句 引言 在PHP中与MySQL数据库进行交互时,预处理语句是一种非常安全和高效的方法。预处理语句不仅可以防止SQL注入攻击,还可以提高数据库查询的效率。本文将详细介绍PHP中预处理语句的用法,包括其基本概念、语法、优势以及在实际开发中的应用。 预处理…

算法 | 2024最新算法:鳑鲏鱼优化算法原理,公式,应用,算法改进研究综述,matlab代码

2024最新鳑鲏鱼优化算法(BFO)研究综述 鳑鲏鱼优化算法(Bitterling Fish Optimization, BFO)是2024年提出的一种新型群智能优化算法,受鳑鲏鱼独特的繁殖行为启发,通过模拟其交配、产卵和竞争机制进行全局优化。该算法在多个领域展现出优越性能,尤其在解决复杂非线性问题中…