大语言模型从理论到实践(第二版)-学习笔记(绪论)

news2025/3/10 5:46:05

大语言模型的基本概念

1.理解语言是人工智能算法获取知识的前提

2.语言模型的目标就是对自然语言的概率分布建模

3.词汇表 V 上的语言模型,由函数 P(w1w2 ·· · wm) 表示,可以形式化地构建为词序列 w1w2 ·· · wm 的概率分布,表示词序列 w1w2 ·· · wm 作为一个句子出现的可能性的大小,参数量大,计算困难。

4.为了减小 P(w1w2 ·· · wm) 模型的参数空间,可以利用句子序列(通常是从左至右)的生成过
程将其进行分解,使用链式法则可以得到

5.但是,仅通过上述过程模型的参数空间依然没有减小,P(wm|w1w2 ·· · wm−1) 的参数空间依然是天文数字。为了解决上述问题,可以进一步假设任意单词 wi 出现的概率只与过去 n − 1 个词相关

虽然 n 元语言模型能缓解句子概率为零的问题,但语言是由人和时代创造的,具备无尽的可
能性,再庞大的训练数据也无法覆盖所有的 n-gram,而训练数据中的零频率并不代表零概率

平滑处理的基本思想是提高低概率事件,降低高概率事件使整体的概率分布趋于均匀。这类方法通常被称为统计语言模型(Statistical Language Models,SLM)。相关平滑算法细节可以参考《自然语言处理导论》的第 6 章。缺点:

(1)无法对长度超过 n 的上下文建模。
(2)依赖人工设计规则的平滑技术。
(3)当 n 增大时,数据的稀疏性随之增大,模型的参数量更是呈指数级增加,受数据稀疏问
题的影响,其参数难以被准确学习。
此外,n 元文法中单词的离散表示也忽略了单词之间的相似性。因此,基于分布式表示和神经
网络的语言模型逐渐成为研究热点

6.词的独热编码被映射为一个低维稠密的实数向量,称为词向量。估计词概率。相较于 n 元语言模型,神经网络方法可以在一定程度上避免数据稀疏问题,有些模型还可以摆脱对历史文本长度的限制,从而更好地对长距离依赖关系建模。这类方法通常被称为神经语言模型

大语言模型的发展历程

大语言模型的发展历程虽然只有不到 5 年,但是发展速度相当惊人,截至 2025 年 2 月,国内
外有超过百种大语言模型相继发布。特别是 2024 年 12 月 DeepSeek V3 和 2025 年 1 月 DeepSeek R1 模型的开源

大语言模型的发展可以粗略地分为如下三个阶段:基础模型阶段、能力探索阶段和突破发展阶段

1.基础模型阶段(2018-2021)

2017 年,Vaswani 等人提出了 Transformer[12]架构,在机器翻译任务上取得了突破性进展。2018 年,Google 和 OpenAI 分别提出了 BERT[1] 和GPT开启了预训练语言模型时代(模型的训练仅需要大规模无标注文本。语言模型也成了典型的自监督学习(Self-supervised Learning)任务。互联网的发展,使得大规模文本非常容易获取,因此训练超大规模的基于神经网络的语言模型成为可能)。BERT-Base 版本的参数量为 1.1 亿个,BERT-Large 版本的参数量为 3.4 亿个,GPT-1 的参数量为 1.17 亿个。这在当时,比其他深度神经网络的参数量,已经有了数量级上的提升。2019 年 OpenAI 发布了 GPT-2[11],其参数量达到 15 亿个。此后,Google也发布了参数规模为 110 亿个的 T5[19] 模型。2020 年,OpenAI 进一步将语言模型的参数量扩展到 1750 亿个,发布了 GPT-3[13]。此后,国内也相继推出了一系列的大语言模型,包括清华大学的ERNIE[20]、百度的 ERNIE[21]、华为的 PanGU-α[22] 等。

此阶段的研究主要集中在语言模型本身,对仅编码器(Encoder Only)、编码器-解码(Encoder-Decoder)、仅解码器(Decoder Only)等各种类型的模型结构都有相应的研究。模型大小与 BERT 类似,通常采用预训练微调范式(使用具体任务的标注数据在预训练语言模型上进行监督训练),针对不同下游任务进行微调。这些模型参数量大都在 10 亿个以上,由于微调的计算量很大,这类模型的影响力在当时相较 BERT 类模型有不小的差距。

2.能力探索阶段(2019 -2022 )

由于大语言模型很难针对特定任务进行微调,研究人员开始探索在不针对单一任务进行微调的情况下如何发挥大语言模型的能力。

2019 年,Radford等人在文献 [11] 中使用 GPT-2 模型研究了大语言模型在零样本情况下的任务处理能力。在此基础上,Brown 等人在 GPT-3[13] 模型上研究了通过语境学习进行少样本学习(few-shot learning)的方法,将不同任务的少量有标注的实例拼接到待分析的样本之前输入语言模型,语言模型根据实例理解任务并给出正确的结果。

利用了语言模型的“语境学习”(in-context learning)能力。模型不需要专门针对情感分析任务重新训练,只要通过前面的少量示例,就能“学会”任务的规则并应用到新样本上。

任务:情感分析(判断句子是积极还是消极)
假设我们要让模型判断一句话的情感是“积极”还是“消极”,但我们没有大量标注数据来训练模型。这时可以用少样本学习的方法。

输入给模型的内容:
示例1:我今天很开心。 -> 积极
示例2:这场电影太无聊了。 -> 消极
待分析的样本:天气很好,我很享受。 -> ?

解释:
我们先给了模型两个示例:
“我今天很开心。”标注为“积极”。
“这场电影太无聊了。”标注为“消极”。
然后把待分析的句子“天气很好,我很享受。”接在后面,让模型根据前面的示例自己推断。
模型会“看”到前面的模式(开心=积极,无聊=消极),然后判断新句子“天气很好,我很享受”应该是“积极”。

输出:
模型可能会回答:积极

基于 GPT-3 的语境学习在 TriviaQA、WebQS、CoQA 等评测集合中都展示出了非常强的能力,在有些任务中甚至超过了此前的有监督方法。上述方法不需要修改语言模型的参数,模型在处理不同任务时无须花费大量计算资源进行模型微调。

仅依赖语言模型本身,其性能在很多任务上仍然很难达到有监督学习(Supervised Learning)的效果,因此研究人员提出了指令微调[23] 方案,将大量各类型任务统一为生成式自然语言理解框架,并构造训练数据进行微调。大语言模型能一次性学习数千种任务,并在未知任务上展现出很好的泛化能力。

指令微调的核心是把任务标准化(都变成“指令+生成”):

训练数据:

  • 任务1:翻译 -> “把‘Hello’翻译成中文” -> 输出“こんにちは”
  • “把这句话翻译成法语 -> I like cats” -> “J’aime les chats”
  • 任务2:情感分析 -> “判断‘我很开心’的情感” -> 输出“积极
  • 任务3:“回答问题->今天是星期几?” -> “今天是星期三”
  • 任务4:“写一段关于狗的描述” -> “狗是忠诚的动物…”

用大量多样化的数据训练模型,让它变成一个“全能选手”。这样不仅能处理已知任务,还能灵活应对新任务,比单纯依赖预训练模型强很多

2022 年,Ouyang 等人提出了使用“有监督微调 + 强化学习”的 InstructGPT[24] 方法,该方法使用少量有监督数据就可以使大语言模型服从人类指令。Nakano 等人则探索了结合搜索引擎的问题回答方法 WebGPT[25]。这些方法在直接利用大语言模型进行零样本和少样本学习的基础上,逐渐扩展为利用生成式框架针对大量任务进行有监督微调的方法,有效提升了模型的性能。

“有监督微调 + 强化学习”:InstructGPT 方法

有监督微调

  • 数据量不需要很大(比如几百到几千个示例),但质量要高。
  • 这一步让模型初步理解“指令 -> 回答”的模式。

强化学习

  • 模型尝试生成回答。
  • 奖励模型给这个回答打分(高分=好回答,低分=差回答)。
  • 模型根据分数调整自己,倾向于生成高分的回答。

3.突破发展阶段( 2022 年 11 月 ChatGPT 的发布为起点)

ChatGPT 通过一个简单的对话框,利用一个大语言模型就可以实现问题回答、文稿撰写、代码生成、数学解题等过去自然语言处理系统需要大量小模型定制开发才能分别实现的能力。它在开放领域问答、各类自然语言生成式任务及对话上下文理解上所展现出来的能力远超大多数人的想象。2023 年 3 月 GPT-4 发布,相较于ChatGPT,GPT-4 有非常明显的进步,并具备了多模态理解力。GPT-4 在多种基准考试测试上的得分高于 88% 的应试者,包括美国律师资格考试(Uniform Bar Exam)、法学院入学考试(LawSchool Admission Test)、学术能力评估(Scholastic Assessment Test,SAT)等。GPT-4o 是 OpenAI于 2024 年 5 月发布的多模态大模型,其中“o”代表“omni”即“全能”。它能接受文本、音频和图像组合输入并生成文本、音频和图像的任意组合输出,可处理 50 种语言,在 232 毫秒内对音频输入做出反应,性能较 GPT-4 有显著提升。2024 年 9 月 OpenAI 又推出的全新推理模型 GPT-o1,在复杂推理任务上表现卓越,能通过内部思维链模拟人类思考,在数学、科学等领域超越人类专家及 GPT-4o。国内外各大公司和研究机构相继发布了此类系统,包括复旦大学的 MOSS、阿里巴巴的 Qwen、深度求索的 DeepSeek、Google 的 Gemini、XAI 的 Grok、科大讯飞的星火大模型、智谱的 ChatGLM 等。

截至 2025 年 2 月典型开源和闭源大语言模型的基本情况

模型类型中,基础模型是指仅经过预训练的模型

对话模型是指在预训练模型基础上经过有监督微调和强化学习训练的模型,具备对话和完成任务的能力

推理模型是指专注于逻辑推理增强的大语言模型

大语言模型的构建流程

OpenAI 使用的大语言模型构建流程如图1.3 所示,主要包含四个阶段:预训练、有监督微调、奖励建模和强化学习。这四个阶段都需要不同规模的数据集及不同类型的算法,会产出不同类型的模型,所需要的资源也有非常大的差别。

预训练(Pretraining)阶段

需要利用海量的训练数据(数据来自互联网网页、维基百科、书籍、
GitHub、论文、问答网站等),基础模型对长文本进行建模,使模型具有语言生成能力,根据输入的提示词,模型可以生成文本补全句子。有一部分研究人员认为,语言模型建模过程中隐含地构建了包括事实性知识(Factual Knowledge)和常识性知识(Commonsense)在内的世界知识(World Knowledge)由于训练过程需要消耗大量的计算资源,并很容易受到超参数影响,因此,如何提升分布式计算效率并使模型训练稳定收敛是本阶段的研究重点

有监督微调(Supervised Fine Tuning,SFT)

也称为指令微调,利用少量高质量数据集,通过有监督训练使模型具备问题回答、翻译、写作等能力。有监督微调的数据包含用户输入的提示词和对应的理想输出结果。用户输入包括问题、闲聊对话、任务指令等多种形式和任务。

经过训练的 SFT 模型具备初步的指令理解能力和上下文理解能力,能够完成开放领域问答、阅读理解、翻译、生成代码等任务,也具备了一定的对未知任务的泛化能力。由于有监督微调阶段所需的训练数据量较少,SFT 模型的训练过程并不需要消耗大量的计算资源

SFT 模型具备了初步的任务完成能力,可以开放给用户使用,很多类 ChatGPT 的模型都属于该类
型,包括 Alpaca[35]、Vicuna[41]、MOSS、ChatGLM-6B 等。很多这类模型的效果非常好,甚至在一些评测中达到了 ChatGPT 的 90% 的效果[35, 41]。当前的一些研究表明,有监督微调阶段的数据选择对 SFT 模型效果有非常大的影响[42],因此构造少量并且高质量的训练数据是本阶段的研究重点。

奖励建模(Reward Modeling)阶段

目标是构建一个文本质量对比模型。对于同一个提示词,SFT 模型对给出的多个不同输出结果的质量进行排序。奖励模型可以通过二分类模型,对输入的两个结果之间的优劣进行判断。奖励模型与基础模型和 SFT 模型不同,奖励模型本身并不能单独提供给用户使用。奖励模型的训练通常和 SFT 模型一样,使用数十块 GPU,通过数天时间完成训练。

由于奖励模型的准确率对强化学习阶段的效果有至关重要的影响,因此通常需要大规模的训
练数据对该模型进行训练。Andrej Karpathy 在报告中指出,该部分需要百万量级的对比数据标注,而且其中很多标注需要很长时间才能完成。图1.4 给出了 InstructGPT 系统中奖励模型训练样本标注示例[24]。可以看到,示例中文本表达都较为流畅,标注其质量排序需要制定非常详细的规范标注者也需要认真地基于标注规范进行标注,需要消耗大量的人力。同时,保持众标注者之间的一致性,也是奖励建模阶段需要解决的难点问题之一。此外,奖励模型的泛化能力边界也是本阶段需要重点研究的一个问题。如果奖励模型的目标是针对系统所有的输出都能够高质量地进行判
断,那么该问题的难度在某种程度上与文本生成等价,因此限定奖励模型应用的泛化边界是本阶
段需要解决的问题。

  • 奖励模型是在 InstructGPT 这种“有监督微调 + 强化学习”方法中用来评估语言模型输出的工具。它根据人类反馈(比如“好”或“不好”)预测某个输出有多符合人类期望。
  • 泛化能力指的是奖励模型能不能在没见过的新输出上也做出准确判断。
  • 难度等价于文本生成

    文本生成(比如 GPT 生成句子)本身就很难,因为它需要理解语法、语义、逻辑、世界知识等。奖励模型要判断所有生成的文本质量,相当于也要理解这些东西,甚至还要加上“人类偏好”(比如什么是“有用”“礼貌”)。所以,造一个能完美评分所有输出的奖励模型,难度不比造一个完美的语言模型低。
  • 奖励模型的泛化能力是个研究重点,因为我们希望它能评判所有输出,但这太难了(难度堪比文本生成)。
  • 所以需要明确它的“边界”:哪些输出它能判断,哪些不能,而不是让它盲目尝试。
  • 例如,研究者可能决定:奖励模型只负责判断“数学问题”和“身份问题”的回答质量,不扩展到“天气”或“宇宙”这类复杂领域。
  • 研究人员需要找到方法,比如用更多样化的训练数据、设计多个专门的奖励模型(而不是一个通用的),来平衡泛化能力和实用性。

  • 总结:奖励模型很关键,但不能指望它完美判断所有东西。它的能力有边界,这个边界有多大、怎么划定,是现在需要研究的重点。不然,奖励模型要么“自不量力”乱评分,要么“过于谨慎”没用处。

主要内容
  1. 任务:对关于鹦鹉研究的不同文本片段进行排序,以确定它们的相对质量和信息价值。
  2. 排名规则
    • Rank 1(最佳):最具相关性和信息价值的文本。
    • Rank 5(最差):最无关或质量最低的文本。
  3. 具体排名
    • A(最佳):描述鹦鹉模仿人类语言的能力,信息丰富,贴近主题,因此排名第一。
    • C(第二名):讨论了鹦鹉理解数字的能力,与主题相关,但比 A 稍微次之。
    • E 和 D(第三名):虽然描述了鹦鹉的听觉和视觉特性,但与主题(模仿能力)关联较弱,因此排名较低。
    • B(未排名,但可能较低):尽管提到了鹦鹉的发声能力,但内容可能不如 A 具体,因此未排在首位。
    • Rank 4 和 Rank 5 为空,说明这些文本的质量都不算特别差。

排名 1(最佳):
A:美国的一个研究小组发现,鹦鹉可以轻松模仿人类的语言,其中一些甚至可以像人类一样进行发声。该小组研究了鹦鹉在自然栖息地中发出的声音,并发现它们使用舌头和喙的方式与人类惊人地相似……

排名 2:
C:研究发现鹦鹉具有理解数字的能力。研究人员发现,鹦鹉可以理解最多六个数字。在一系列实验中,鹦鹉能够识别放在多个杯子下面的食物数量……

排名 3:
E:科学家发现,绿翅鹦鹉能够分辨两个除了听觉顺序不同之外完全相同的声音。这一点很重要,因为绿翅鹦鹉以模仿声音而闻名。这项研究表明,它们能够理解声音之间的区别……

D:当前的研究表明,鹦鹉看见和听见世界的方式与人类不同。人类可以看到彩虹的各种颜色,而鹦鹉只能看到红色和绿色的色调。此外,鹦鹉还可以看到紫外线光,而紫外线光对人类是不可见的。许多鸟类都具备这种能力……

排名 4:(空缺)

排名 5(最差):(空缺)

强化学习(Reinforcement Learning,RL)阶段

根据数十万条提示词,利用前一阶段训练的奖励模型,给出 SFT 模型对提示词回答结果的质量评估,并与语言模型建模目标综合得到更好的效果。该阶段使用的提示词数量与有监督微调阶段类似,数量在十万个量级,并且不需要人工提前给出该提示词所对应的理想回复。使用强化学习,在 SFT 模型的基础上调整参数,使最终生成的文本可以获得更高的奖励(Reward)。该阶段需要的计算量较预训练阶段也少很多,通常仅需要数十块GPU,数天即可完成训练。文献 [24] 给出了强化学习和有监督微调的对比,在模型参数量相同的情况下,强化学习可以得到相较于有监督微调好得多的效果。关于为什么强化学习相比有监督微调可以得到更好结果的问题,截至 2025 年 2 月还没有完整或得到普遍共识的解释。目前相对得到认可的观点是,强化学习使得模型具备更好的泛化能力[43]。同时,Andrej Karpathy 也指出,强化学习并不是没有问题的,它会使基础模型的熵降低,从而减少模型输出的多样性。经过强化学习方法训练后的 RL 模型,就是最终提供给用户使用、具有理解用户指令和上下文的类 ChatGPT 系统。由于强化学习方法稳定性不高,并且超参数众多,使得模型收敛难度大,叠加奖励模型的准确率问题,使得在大语言模型上有效应用强化学习非常困难。

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

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

相关文章

Unity 通用UI界面逻辑总结

概述 在游戏开发中,常常会遇到一些通用的界面逻辑,它不论在什么类型的游戏中都会出现。为了避免重复造轮子,本文总结并提供了一些常用UI界面的实现逻辑。希望可以帮助大家快速开发通用界面模块,也可以在次基础上进行扩展修改&…

Navigation的进阶知识与拦截器配置

Navigation的进阶知识与拦截器配置 写的不是很详细,后续有时间会补充,建议参考官方文档食用 1.如何配置路由信息 1.1 创建工程结构 src/main/ets ├── pages │ └── navigation │ ├── views │ │ ├── Mine.ets //…

Java数据结构第二十一期:解构排序算法的艺术与科学(三)

专栏:Java数据结构秘籍 个人主页:手握风云 目录 一、常见排序算法的实现 1.1. 归并排序 二、排序算法复杂度及稳定性分析 一、常见排序算法的实现 1.1. 归并排序 归并排序是建⽴在归并操作上的⼀种有效的排序算法,该算法是采⽤分治法的一个⾮常典型的…

go切片定义和初始化

1.简介 切片是数组的一个引用,因此切片是引用类型,在进行传递时,遵守引用传递的机制。切片的使用和数组类似,遍历切片、访问切片的元素和切片的长度都一样。。切片的长度是可以变化的,因此切片是一个可以动态变化的数…

【NLP 39、激活函数 ⑤ Swish激活函数】

我的孤独原本是座荒岛,直到你称成潮汐,原来爱是让个体失序的永恒运动 ——25.2.25 Swish激活函数是一种近年来在深度学习中广泛应用的激活函数,由Google Brain团队在2017年提出。其核心设计结合了Sigmoid门控机制和线性输入的乘积&#xff0c…

南开提出1Prompt1Story,无需训练,可通过单个连接提示实现一致的文本到图像生成。

(1Prompt1Story)是一种无训练的文本到图像生成方法,通过整合多个提示为一个长句子,并结合奇异值重加权(SVR)和身份保持交叉注意力(IPCA)技术,解决了生成图像中身份不一致…

STM32驱动OLED屏幕全解析:从原理到温度显示实战(上) | 零基础入门STM32第五十三步

主题内容教学目的/扩展视频OLED显示屏重点课程电路原理,手册分析,驱动程序。初始化,清屏,ASCII字库,显示分区。调用显示函数。做带有加入图形和汉字显示的RTC时钟界面。讲字库的设计原理。 师从洋桃电子,杜…

MySQL语法总结

本篇博客说明: !!!.注意此系列都用的是MySQL语句,和SQLServer,PostgreSQL有些细节上的差别!!! 1.每个操作都是先展示出语法格式 2.然后是具体例子 3.本篇注脚与文本顺讯息…

从预测到控制:电力RK3568边缘计算机在电网调度中的全面应用

在智能电网的快速发展中,电力Ubuntu工控机(简称“电力工控机”)作为核心设备,扮演着不可或缺的角色。特别是在智能电网调度场景中,电力工控机的高效、稳定和智能化特性,为电网的稳定运行和高效管理提供了强…

day-106 统计放置房子的方式数

思路 动态规划:因为中间有街道隔开,所以只需计算一边街道的排列方式,最后计算平方即可 解题过程 动态转换方程:f[i]f[i-1]f[i-2] Code class Solution {int num 1000000007;public int countHousePlacements(int n) {int arr[…

PostgreSQL安装和mcp PostgreSQL

文章目录 一. 安装之后修改权限并登录1. 确保当前用户具有sudo权限2. 修改/etc/postgresql/<版本号>/main/pg_hba.conf配置文件为trust&#xff0c;可以免密登录3. 进行免密登录4. 添加root用户和修改postgres用户密码1. postgres用户密码2. 添加root用户3. 为root用户设…

LPZero: Language Model Zero-cost Proxy Search from Zero(未更新完预览版本)

LPZero代码 摘要 神经架构搜索 (NAS) 有助于自动执行有效的神经网络搜索&#xff0c;同时需要大量的计算资源&#xff0c;尤其是对于语言模型。零样本 NAS 利用零成本 (ZC) 代理来估计模型性能&#xff0c;从而显着降低计算需求。然而&#xff0c;现有的 ZC 代理严重依赖于深…

字典树运用

字典树运用 字典树LC208 创建字典树0-1字典树 字典树 字典树又叫 前缀树&#xff0c; 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动补全和拼写检查。 LC208 创建字典树 这是一个字符串字典树…

RReadWriteLock读写锁应用场景

背景 操作涉及一批数据&#xff0c;如订单&#xff0c;可能存在多个场景下操作&#xff0c;先使用读锁&#xff0c;从redis缓存中获取操作中数据 比如 关闭账单&#xff0c; 发起调账&#xff0c; 线下结算&#xff0c; 合并支付 先判断当前操作的数据&#xff0c;是否在…

0087.springboot325基于Java的企业OA管理系统的设计与实现+论文

一、系统说明 基于springbootvue的企业OA管理系统,系统功能齐全, 代码简洁易懂&#xff0c;适合小白学编程。 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数…

Spring Boot 3 整合 MinIO 实现分布式文件存储

引言 文件存储已成为一个做任何应用都不可回避的需求。传统的单机文件存储方案在面对大规模数据和高并发访问时往往力不从心&#xff0c;而分布式文件存储系统则提供了更好的解决方案。本篇文章我将基于Spring Boot 3 为大家讲解如何基于MinIO来实现分布式文件存储。 分布式存…

Redis|集群 Cluster

文章目录 是什么能干嘛集群算法-分片-槽位slotredis集群的槽位slotredis集群的分片分片槽位的优势slot槽位映射——业界的3种解决方案小厂&#xff1a;哈希取余分区中厂&#xff1a;一致性哈希算法分区大厂&#xff1a;哈希槽分区 面试题&#xff1a;为什么 Redis 集群的最大槽…

【定制开发】碰一碰发视频系统定制开发,支持OEM

在短视频营销爆发的2025年&#xff0c;"碰一碰发视频"技术已成为实体商家引流标配。某连锁餐饮品牌通过定制化开发&#xff0c;单月视频发布量突破10万条&#xff0c;获客成本降低80%&#xff01;本文将深入解析该系统的技术架构与开发要点&#xff0c;助你快速搭建高…

Linux上位机开发(开篇)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 传统的上位机开发&#xff0c;一般都是默认pc软件开发。既然是pc软件&#xff0c;一般来说都是基于windows平台开发。开放的框架&#xff0c;无非是…

算法005——有效三角形个数

力扣——有效三角形个数点击链接跳转 判断三条边是否能组成三角形&#xff0c;大家第一时间想到的就是两边之和大于第三边 但是运用这个方法&#xff0c;我们需要判断三次&#xff0c;有一个更简单的方法&#xff0c;只需要判断一次 因为 C 已经是三边之中最大的了&#xff…