大模型项目整体规划、技术选型和案例分析经验分享

news2025/1/18 20:19:47

项目整体规划

1.1 明确场景

  1. toB or toC(面向企业还是面向消费者)

    • toB(面向企业):指的是产品或服务主要面向其他企业或组织。这类产品通常需要解决特定的商业问题,强调效率和集成性,并且可能需要定制化服务。
    • toC(面向消费者):指的是产品或服务直接面向最终用户。这类产品通常更加注重用户体验、易用性和娱乐性。
  2. 准确度要求,合规性要求

    • 准确度要求:根据应用场景的不同,对AI的输出结果的准确性要求也会有所不同。例如,在医疗诊断领域,准确度要求极高,而在推荐系统中,准确度要求相对较低。
    • 合规性要求:某些行业(如金融、医疗等)有严格的法律法规要求,AI系统必须遵守这些规定,确保数据处理、隐私保护等方面的合规性。
  3. 替代人还是辅助人

    • 替代人:指的是AI系统能够完全取代人类的工作,如自动化流水线上的机器人。
    • 辅助人:指的是AI系统作为人类的助手,帮助提高工作效率或完成某些任务,如智能助手、推荐系统等。
  4. 一次交付 vs 反复迭代

    • 一次交付:在某些项目中,客户可能希望一次性交付一个完整的AI系统,后续不需要频繁更新或迭代。
    • 反复迭代:在许多情况下,AI系统需要不断地更新和优化,以适应不断变化的环境或用户需求。这需要持续的数据收集、分析和模型调整。
  5. 产品边界的划分

    • 产品边界指的是产品功能的范围和限制。明确产品边界有助于确定AI系统的功能、性能和责任范围,避免因过度承诺而导致的风险和责任问题。

1.2 技术选型

  1. 高质量训练数据

    • 在技术选型时,首先要考虑的是是否有充足的高质量训练数据。高质量数据是指那些真实、准确、全面并且能够代表实际应用场景的数据。数据的真实性和代表性直接影响模型的训练效果和泛化能力。
  2. 算力vs数据vs模型

    • 算力:指的是硬件的计算能力。A100 80G的卡一张FP16 40B表示拥有强大的浮点运算能力,这对于训练大规模和复杂的模型非常重要。
    • 数据:是AI系统的燃料。即使拥有强大的算力,如果数据质量不高或数据量不足,模型的性能也会受到影响。
    • 模型:是AI系统的核心,它决定了如何从数据中学习。模型的选择和设计需要根据问题的复杂性和数据的特性来决定。
  3. 推理时间:在线vs离线

    • 推理时间指的是模型在接收到输入后给出预测结果所需的时间。
    • 在线推理要求模型能够快速响应,通常用于实时性要求高的场景,如在线推荐、实时监控等。
    • 离线推理则允许模型在较长时间内给出结果,适用于对实时性要求不高的场景,如批量数据处理、历史数据分析等。
  4. 规则系统

    • 规则系统:在某些应用中,尤其是对可解释性要求高的场景,规则系统是一个重要的技术选型。规则系统基于明确的逻辑和规则进行决策,易于理解和解释。
    • 解决badcase能力:规则系统在处理特定的问题时,可以通过精细化的规则设计来避免模型常见的错误,从而提高系统的整体性能。
  5. 产品运营

    • 产品运营是指AI产品上线后的持续管理和优化过程。它包括数据监控、性能评估、用户反馈收集、模型迭代更新等。
    • 产品运营的目的是确保AI产品能够持续满足用户需求,发现并解决潜在问题,提升用户体验。

1.3 如何选择合适的大模型

选择合适的大模型涉及到多个方面的考量,包括硬件兼容性、应用场景、模型的能力以及可用的开源大模型。
  1. 硬件驱动

    • 不同的模型可能对硬件有特定的要求,因此在选择模型时需要考虑可用的硬件资源。例如,4090、V100、A10、A600、A100等不同型号的GPU卡有着不同的计算能力和内存容量,这会影响到模型的选择和性能。
  2. 场景驱动

    • 通用问题vs专业问题:通用问题通常需要模型具有广泛的知识和理解能力,而专业问题可能需要模型在特定领域有深入的理解和专业知识。
    • 英文vs中文:不同的语言可能需要不同的模型架构和训练数据,因此需要根据应用场景的语言要求选择合适的模型。
  3. 常见主流开源大模型

    • 清华chatglm6B:由清华大学开发的开源聊天机器人模型,适用于通用对话和问答场景。
    • 通义千问 13B 72B:阿里巴巴开发的通用预训练模型,适用于多种自然语言处理任务。
    • Llama系列,百川,零一万物:这些是其他开源的大型预训练模型,各自有不同的特点和优势,适用于各种自然语言处理任务。

技术选型

2.1 大模型的能力

  1. 知识能力:

    • RAG:一种结合了检索和生成能力的模型,能够利用外部知识库来增强回答问题的能力。
    • 例如,模型能够回答“生孩子能休几天产假?”这样的知识性问题。
  2. 逻辑能力:

    • 逻辑能力是指模型理解和应用逻辑推理的能力。例如,模型能够理解“生鱼片其实是死鱼片”这样的逻辑性陈述。
    • 百度弱智吧:这可能是指百度贴吧中的一个社区,其中的讨论可能涉及到逻辑推理或幽默表达。
  3. 推理能力:

    • 推理能力是指模型能够进行逻辑推断和合理推理的能力。例如,模型能够回答“男职工能否休产假?”这样的问题,需要对相关法律法规和社会习俗有一定的了解。

2.2 主流大模型对比

2.3 ChatGLM-6B

ChatGLM-6B 是一个大型预训练语言模型,它具备以下特点和能力:

  1. 中英双语预训练

    • ChatGLM2-6B 在中英双语的语料上进行了大量的预训练,总训练量达到了1.4T的token量。这种1:1比例的中英语料训练确保了模型在中英文处理上具有均衡和卓越的能力。与初代ChatGLM-6B相比,其双语性能得到了显著提升。
  2. 部署门槛较低

    • 在FP16半精度下,ChatGLM-6B的推理需要至少13GB的显存。但是,通过结合模型量化技术,这一显存需求可以进一步降低,例如,使用INT8量化可以降低到10GB,而使用INT4量化可以降低到6GB。这使得ChatGLM-6B能够部署在消费级显卡上,大大降低了部署的硬件门槛。
  3. 更长的序列长度

    • ChatGLM-6B能够处理的序列长度达到了2048,而ChatGLM2-6B更是支持高达8192的序列长度。这意味着模型能够处理更长的对话和应用,对于需要处理长文本的场景非常有利。
  4. 人类意图对齐训练

    • ChatGLM-6B采用了多种训练方法来提高对人类指令意图的理解,包括监督微调、反馈自助和人类反馈强化学习等。这些方法使得模型能够更好地理解人类的指令意图,并据此进行响应。

2.4 英伟达历代产品参数

国产平替:昇腾910B

2.5 辅助方法

大语言模型通常基于通识知识进行训练,因此在面向垂直领域知识和基于私有数据的问答时,常常需要借助:
  1. 模型微调
  2. Prompt工程
  3. RAG

2.6 常见的微调方法

2.7 领域大模型训练trick

2.8 推理参数设置

  1. 确定性采样

    • 这种方法直接输出概率最大的词或标记,也称为贪婪解码。它简单且速度快,但可能会导致输出缺乏多样性。
  2. Beamsearch

    • Beamsearch是一种启发式搜索算法,用于序列生成任务。它在每一步都保留多个(称为束大小或beam size)最有潜力的候选序列,并最终选择得分最高的序列作为输出。Beamsearch可以提高输出的质量,但计算成本较高,并且不适合流式输出。
  3. 随机采样

    • 随机采样根据模型的输出概率分布随机选择下一个词或标记。这种方法可以为输出带来多样性,但也可能导致输出质量的不稳定。
  4. topK采样

    • topK采样从模型输出的概率分布中选出概率最高的K个词或标记,然后从中随机选择下一个词或标记。例如,如果topK=3,且概率分布为a(0.9), b(0.001), c(0.001),则可能只考虑a。这种方法可以平衡输出的质量和多样性。
  5. topP采样(核采样)

    • topP采样与topK采样类似,但它不是选出概率最高的K个词,而是选出累计概率达到某个阈值P的所有词,然后从这些词中随机选择。例如,如果topP=0.8,且概率分布为a(0.3), b(0.2), c(0.2),则可能考虑a和b。这种方法可以动态调整采样的多样性。
  6. 流式输出 vs 批量输出

    • 流式输出是指模型在生成文本时实时输出每个词或标记,适合需要实时响应的应用场景。
    • 批量输出是指模型先生成整个序列,然后再一次性输出,适合对实时性要求不高的场景。

案例分析

3.1 办公大模型

一个入口,多个功能

3.2 办公大模型Agent

3.2.1 意图识别
意图识别和槽位解析模型框架图:意图识别作为流量入口,具有极高的可复用价值和丰富的场景,对于新场景,本框架可有 效的解决开发时间,实现0代码的复用。
重要性:精调>参数量
3.2.2 对话系统
通过对企业制度进行预训练,形成问答知识库用于精确问答和生成式问答两种方式,构建企业核心知识大脑。制度问答框架已打造成标准化解决方案,主要包括知识库管理和兜底大模型,并结合知识图谱、违规审核等技术实现知识精细化管理和运 营,可低成本快速复制,用户仅需完成个性化数据标注工作,即可实现0代码的定制化接入。

3.3 对话系统-知识管理流程

3.4 内容生成能力

3.5 AI核稿-纠错、内容安全审核

3.6 摘要生成

3.7 图像生成

4 问题解答

4.1 知识库问答(KBQA)

知识库问答(KBQA)是自然语言处理中的一个任务,它旨在使知识库中的信息通过自然语言查询变得可访问。用户输入查询语句,系统需要在知识库中找到相关信息并生成回答。这个过程涉及到信息的匹配、召回和排序:

  1. 知识库问答的问题

    • 知识库问答的主要挑战之一是确保查询语句与知识库中的信息准确匹配。如果用户输入的查询语句是无关字符(如“abcd”),而知识库中恰好有这些字符的条目,系统可能会错误地匹配并生成不相关或错误的回答。这种情况会导致知识库问答系统失去精准性。
  2. 匹配

    • 匹配是指将用户的查询语句与知识库中的条目对应起来的过程。匹配的准确性直接影响到最终回答的准确性。
  3. 召回和排序

    • 召回是指从知识库中检索出所有可能与查询语句相关的条目。
    • 排序是指根据某些标准(如相关性)对召回的条目进行排序,以便选择最合适的条目来生成回答。
  4. 倒排索引

    • 倒排索引是一种常用的信息检索技术,它可以帮助快速定位知识库中包含特定词汇的条目。在知识库问答中,倒排索引可以用于加速查询语句的匹配过程。
  5. 向量匹配

    • 向量匹配是指使用向量的相似度来衡量查询语句与知识库条目的匹配程度。这种方法通常涉及到将查询语句和知识库条目转换为向量表示,然后计算它们之间的相似度。向量匹配可以捕获语义上的相似性,而不仅仅是词汇上的匹配。

4.2 Agent问题

在讨论Agent的问题时,通常指的是如何设计和实现一个能够被精准调用的软件代理(Agent),它可以在特定的环境中执行任务。Langchain是一种可以将不同工具和Agent连接起来的框架,以便它们可以协同工作:

  1. 如何让Langchain精准地调用到一个Agent

    • 为了让Langchain精准地调用到一个Agent,需要确保Agent被正确地注册和配置在Langchain框架中。这通常涉及到定义Agent的接口,包括它能够处理的输入类型和输出的类型。在Langchain中,这可能意味着需要为Agent创建一个明确的API端点或函数调用接口。
  2. 如何编写Agent

    • 编写Agent时,需要确定它的职责和功能。Agent应该能够接收输入,处理这些输入,并返回相应的输出。在编写时,应该考虑到输入的多样性和可能的错误处理。Agent的实现可能涉及到编写新的代码,或者封装和集成现有的工具或服务。
  3. Agent调度问题不是知识性的问题

    • 这句话指的是Agent的调度(即决定何时调用哪个Agent)通常不是一个基于知识库的问题,而是一个关于系统设计和流程控制的问题。调度可能需要根据系统的状态、用户的需求或特定的触发条件来决定。
  4. 把模型训练成分类模型

    • 在某些情况下,可以将模型训练成一个分类模型,以便根据输入数据的特征将其分类到不同的处理路径。这种方法可以用于决定哪个Agent应该处理给定的输入。
  5. 指定格式可穷举的输出

    • 这意味着Agent的输出可以被限定在一个预先定义的、有限的格式集合中。这样做可以简化系统的设计和实现,因为可以预测和枚举所有可能的输出情况。

4.3 大模型如何实现任务理解

大模型如何实现任务理解,尤其是在处理复杂多任务时,涉及到模型的设计、训练和推理等多个方面:
  1. 意图识别

    • 意图识别是指模型能够理解用户的输入并确定其背后的意图。在大模型中,这通常通过预训练和微调来实现,使得模型能够根据上下文和语义理解用户的意图。
  2. 多分类

    • 多分类是指模型能够将输入数据分类到多个预定义的类别中的一个。在大模型中,这可以通过在预训练阶段使用多样化的数据集,然后在微调阶段针对特定的任务进行调整来实现。
  3. 多标签

    • 多标签分类是指模型能够为每个输入分配多个标签。这与多分类不同,后者每个输入只分配一个标签。在大模型中实现多标签分类通常需要对模型进行特定的微调,以使其能够处理多个相关的输出。
  4. 微调还是使用提示工程

    • 微调是指在大模型的基础上,使用特定任务的标注数据来进一步训练模型,以提升模型在该任务上的性能。
    • 提示工程(Prompt Engineering)是一种技术,通过为模型提供特定的提示或指令来引导模型生成期望的输出。提示工程可以用于增强模型在特定任务上的表现,而不需要进行微调。
    • 对于复杂多任务的理解,微调可以使模型更好地适应特定的任务要求,而提示工程则提供了一种更灵活、更快速的方法来指导模型的输出。

4.4 语料库构建

语料库构建是自然语言处理(NLP)中至关重要的一环,它涉及到收集、整理和加工用于训练和评估语言模型的数据:
  1. 语料库构建的手段

    • 开源数据集:使用公开可用的数据集是构建语料库的一种常见手段。这些数据集通常由研究机构、大学或公司发布,并可以在互联网上免费获取。
    • 人工手写:对于一些特定的任务,可能需要通过人工编写样本来构建语料库。这种方法可以确保数据的质量和多样性,但成本较高。
    • 大模型拓展:使用大型预训练模型来生成新的数据样本,以扩展语料库。这种方法可以快速生成大量数据,但需要确保生成数据的质量和相关性。
    • 线上持续收集:通过在线系统持续收集用户生成的数据,如日志、评论、反馈等,这些数据可以用于构建和更新语料库。
  2. 开源工具用来制作语料库

    • 有许多开源工具可以帮助制作语料库,例如:
      • Dataturks:一个在线数据标注平台,可以用来创建、管理和标注文本数据。
      • Doccano:一个开源的文本标注工具,支持多种标注任务,如文本分类、实体识别等。
      • Tesseract:一个开源的OCR引擎,可以用来从图像中提取文本数据。
  3. 语料增强的手段

    • 数据增强:通过一系列技术手段增加数据样本的多样性,如文本合成、同义词替换、随机插入等。
    • 模型生成:使用预训练模型生成新的数据样本,以增加语料库的规模和多样性。
  4. 确保增强的数据符合要求

    • 人工校验:通过人工审核增强后的数据,确保其质量、相关性和准确性。
    • 自动化评估:使用预训练的语言模型或特定的评估指标来自动化地评估数据的质量。

4.5 怎么保证结果最优

在使用大型语言模型生成答案时,由于模型的随机性和创造性,即使是同一个问题,每次生成的答案也可能会有所不同。为了保证生成的结果尽可能最优,可以采取以下措施:
  1. 最优结果

    • "最优"在这里指的是生成的答案在质量、相关性和准确性方面都是最高的。由于最优是一个相对概念,实际上我们通常追求的是在特定上下文和任务要求下的最佳平衡。
  2. 确定性结果

    • 为了获得确定性结果,可以通过调整模型参数或使用特定的解码策略来减少输出的随机性。例如,可以使用较小的温度参数(temperature parameter)来降低随机性,或者使用 beam search 等确定性解码方法。
  3. Beam Search

    • Beam Search 是一种启发式搜索算法,用于序列生成任务。它在每一步都保留多个(称为束大小或 beam size)最有潜力的候选序列,并最终选择得分最高的序列作为输出。Beam Search 可以提高输出的质量,因为它考虑了多个可能的答案,但这也意味着更高的计算成本。
  4. 保证生成结果最优的方法

    • 调整解码参数:如前所述,可以通过调整温度参数、top-k 采样或 top-p 采样等参数来控制模型的随机性。
    • 多轮生成和选择:可以生成多个答案,然后根据某些标准(如准确性、新颖性等)选择最佳答案。
    • 后处理和过滤:生成答案后,可以使用额外的过滤规则或后处理步骤来改进答案的质量。
    • 用户反馈和迭代:收集用户对生成答案的反馈,并根据反馈调整模型,以逐步优化生成结果。

4.6 怎么保证微调后LLM的基础能力

微调后的专用大模型保持基础大模型的能力是自然语言处理中的一个重要问题:
  1. 1:5的专业vs通用数据进行微调

    • 这里的比例(1:5)指的是在微调过程中,专业数据和通用数据的比例。专业数据是指与特定任务高度相关的数据,而通用数据是指更广泛、更多样化的数据集。
    • 通过将专业数据和通用数据以一定比例混合,可以在微调过程中既保留模型在通用领域的知识,又增强模型在特定领域的性能。
    • 这种方法有助于防止模型过拟合到专业数据上,从而保持其广泛的知识和基础能力。
  2. 调用不同的模型

    • 在某些情况下,可以同时使用或调用多个模型,其中一些模型可能是专门为特定任务微调的,而其他模型则保持其通用性质。
    • 通过这种方式,可以在需要时利用专用模型的特定能力,同时保持基础模型的通用能力。

4.7 LLM+专用知识库的优势

在目前的自然语言处理领域,将通用大模型与专用知识库相结合的思路被广泛采用,因为它可以利用大模型的广泛知识和专用知识库的特定知识。微调大模型+专用知识库的技术路线同样可行,并且有其独特的优势。 微调大模型+专用知识库的技术路线
  • 微调大模型:通过在通用大模型的基础上进行微调,可以增强模型对特定任务的理解和处理能力。
  • 专用知识库:结合一个专门为特定任务或领域设计的知识库,可以提供更准确和详细的信息。

优势

  1. 可解释性:微调后的模型结合专用知识库,通常具有较高的可解释性,因为模型的输出可以直接关联到知识库中的具体信息。
  2. 便于更新:专用知识库可以独立于模型进行更新,这样即使模型微调后的参数不变,知识库的更新也能带来性能的提升。

缺点

  1. 不可控:微调大模型可能会引入一些不可控的偏差,尤其是在使用大规模未标注数据进行微调时。

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

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

相关文章

wordpress建网站主题案例推荐

wordpress企业网站主题案例 https://www.mymoban.com/wordpress/ wordpress公司官网主题案例 https://www.wowsoho.com/jianzhan wordpress外贸主题案例 https://www.wpniu.com/moban

牛客NC314 体育课测验(一)【中等 图,BFS,拓扑排序 Java,Go、PHP】

题目 题目链接: https://www.nowcoder.com/practice/1a16c1b2d2674e1fb62ce8439e867f33 核心 图,BFS,拓扑排序,队列参考答案Java import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修…

js实现抽奖效果

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>随机抽奖</title> </head> <body>…

kubernetes学习

1、应用部署方式演变 2、kubernetes介绍 3、kubernetes组件 4、kubernetes概念 5、环境搭建-环境规划 集群类型&#xff1a; 安装方式&#xff1a; 主机规划&#xff1a; 6、环境搭建-主机安装 使用虚拟机安装三台centos7&#xff08;一主二从&#xff09;&#xff0c;然后在…

汽车IVI中控开发入门及进阶(十五):AUTOSAR

前言: 随着汽车四化的进行,汽车电子系统standard标准化和coperation互操作性变得重要, AUTOSAR(AUTomotive Open System Architecture 汽车开放系统架构)框架已成为汽车行业的基础支柱。 AUTOSAR始自2000年,当时认识到标准化是有必要

日志情况分析

日志是用来记录信息的&#xff0c;更多是方便于查看各种出错信息。时间、日志等级、日志内容、文件名称已经行号都会显示出来&#xff01;日志等级是什么&#xff1f;就是当出问题时&#xff0c;根据问题成都列出等级 Info:常规消息 Debug&#xff1a;t调试信息 Waring:报警信息…

C++学习进阶:智能指针

目录 前言&#xff1a; 1.知识引入 1.1.异常安全问题 1.2.RALL和智能指针雏形 2.智能指针的发展 2.1.auto_ptr的引入 2.2.unique_ptr的引入 2.3.救世主shared_ptr&#xff08;重点&#xff09; 2.4.weak_ptr的引入&#xff08;重点&#xff09; 2.5.测试函数 3.定制删…

sqli-labs靶场学习(一)

一.知识点 1.数据库 数据库是一个用于存储和管理数据的仓库。数据按照特定的格式存储&#xff0c;可以对数据库中的数据进行增加、修改、删除和查询操作。数据库的本质是一个文件系统&#xff0c;按照一定的逻辑结构组织数据&#xff0c;以方便高效地访问和维护。 2.数据库管…

MDC及EFK安装与使用

MDC 1.简介 MDC 介绍​ MDC&#xff08;Mapped Diagnostic Context&#xff0c;映射调试上下文&#xff09;是 log4j 和 logback 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的Map&#xff0c;可以往其中添加键值对。MDC 中包含的内容可以…

Aurora 协议学习理解与应用——Aurora 64B66B协议学习

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Aurora 协议学习理解与应用——Aurora 64B66B协议学习 概述数据发送和接收帧传输过程链路层帧描绘64B/66B 编码多lane传输 帧接收过程Control Block Stripping 控制块剥离多l…

Scala 04 —— 函数式编程底层逻辑

函数式编程 底层逻辑 该文章来自2023/1/14的清华大学交叉信息学院助理教授——袁洋演讲。 文章目录 函数式编程 底层逻辑函数式编程假如...副作用是必须的&#xff1f;函数的定义函数是数据的函数&#xff0c;不是数字的函数如何把业务逻辑做成纯函数式&#xff1f;函数式编程…

Oracle数据库的简单使用

Oracle简单使用 一、数据库的介绍二、Oracle介绍账号管理Oracle的安装Oracle服务的作用OracleRemExecService服务创建数据库 常用命令 三、SQL语言SQL分类实用的数据表添加注释数据操纵语言&#xff08;DML&#xff09;查询语句&#xff08;SELECT&#xff09;wherelikedistinc…

UWB人员定位系统适用的场景有哪些?​​​​​​​10厘米工业级实时轨迹高精度定位

UWB人员定位系统适用的场景有哪些&#xff1f;10厘米工业级实时轨迹高精度定位 一、应用场景 1、商场与零售领域&#xff1a;商场可以使用UWB人员定位系统来跟踪顾客的行踪&#xff0c;以收集顾客行为数据&#xff0c;为营销策略提供有力支持。帮助商场优化商品布局和陈列&…

【鸿蒙开发】生命周期

1. UIAbility组件生命周期 UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态。 UIAbility生命周期状态 1.1 Create状态 Create状态为在应用加载过程中&#xff0c;UIAbility实例创建完成时触发&#xff0c;系统会调用onCreate()回调。可以在该回调中…

了解 Python 底层的解释器 CPython 和 Python 的对象模型

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、CPython CPython 是 Python 编程语言的官方和最广泛使用的实现。它是用 C 语言编写的&#xff0c;因此得名 “CPython”。作为 Python 生态系统的核心&#xff0c;了解 CPython 的工作原理、主要特…

数据结构- 顺序表-单链表-双链表 --【求个关注!】

文章目录 一 顺序表代码&#xff1a; 二 链表单链表双向链表 一 顺序表 顺序表是线性表的一种 所谓线性表指一串数据的组织存储在逻辑上是线性的&#xff0c;而在物理上不一定是线性的 顺序表的底层实现是数组&#xff0c;其由一群数据类型相同的元素组成&#xff0c;其在逻辑…

bug(警告):[vue-router] Duplicate named routes definition: …

查看警告&#xff1a;[vue-router] Duplicate named routes definition——翻译[vue-router]重复命名路由定义 小编劝诫&#xff1a;当我们在开发过程中警告也一定不要忽略&#xff0c;虽然你在本地跑代码时这些警告影响项目的正常运行&#xff0c;但是会让你产生误区&#xff…

【MIT6.824】lab2C-persistence, lab2D-log compaction 实现笔记

引言 lab2C的实验要求如下 Complete the functions persist() and readPersist() in raft.go by adding code to save and restore persistent state. You will need to encode (or “serialize”) the state as an array of bytes in order to pass it to the Persister. Us…

《游戏系统设计十二》灵活且简单的条件检查系统

目录 1、序言 2、需求 3、实现 3.1 思路 3.2 代码实现 4、总结 1、序言 每个游戏都有一些检查性的任务&#xff0c;在做一些判断的时候&#xff0c;判断等级是不是满足需求。 比如如下场景&#xff1a;在进入副本的时候需要检查玩家等级是否满足&#xff0c;满足之后才…

配置linux的oracle 21c启停服务

一、配置启停 1、使用root用户登陆 su - root 2、修改oratab文件 修改oratab文件&#xff0c;将红框里面的N改为“Y”&#xff0c;使启停脚本能够生效 vi /etc/oratab 3、验证 配置好后就能够使用 dbshut 停止服务 和 dbstart 启动服务 了 2.1启动服务 su - oracle dbstart…