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

自然语言处理初学者指南

文章目录

  • 一、说明
  • 二、自然语言处理发展史
    • 2.1 最早的自然语言处理简介
    • 2.2 历史
    • 2.3 NLP 的早期工作
  • 三、NLP的现代方法
    • 3.1 单词编码
    • 3.2 循环神经网络
    • 3.3 强化学习
    • 3.4 深度学习
  • 四、更进一步的方法

一、说明

对于初学者来说,自然语言处理的发展历史非常有必要了解,通过梳理历史发展,我们可以清楚技术脉络,从而有助于我们对于这门技术的整体有宏观认知。本文就是要梳理该技术的发展过程,呈现给初学者。

二、自然语言处理发展史

2.1 最早的自然语言处理简介

1954 年,IBM 演示了使用 IBM 701 大型机上的机器翻译将俄语句子翻译成英语的能力。虽然以今天的标准来看这很简单,但这次演示证明了语言翻译的巨大优势。在本文中,我们将研究自然语言处理(NLP) 以及它如何帮助我们更自然地与计算机交谈。

由于各种原因,NLP 是机器学习最重要的子领域之一。自然语言是用户和机器之间最自然的界面。在理想情况下,这涉及语音识别和语音生成。甚至艾伦·图灵也在他的“智能”文章中认识到了这一点,他在文章中将“图灵测试”定义为一种测试机器通过自然语言对话表现出智能行为的能力的方法。

NLP 不是一个单一的实体,而是一个研究领域的范围。图 1 展示了语音助手,这是当今 NLP 的常见产品。NLP 研究领域在语音助手应用程序的基本块上下文中显示。
在这里插入图片描述
除了语音助手技术之外,NLP 的主要优势之一是世界上存在大量非结构化文本数据,这些数据是自然语言处理和理解的驱动力。如果机器能够处理、组织和理解这些文本(主要为人类使用而生成),我们可以为未来的机器学习应用解锁大量有用的应用程序,并释放出大量可以投入使用的知识。例如,维基百科包含大量知识,这些知识以多种方式链接在一起,以说明主题之间的关系。维基百科本身就是一个可以应用 NLP 的非结构化数据宝贵来源。

现在让我们探索一下 NLP 的历史和方法。

2.2 历史

NLP 与 AI 一样,有着跌宕起伏的历史。IBM 在 1954 年为乔治敦大学演示所做的早期工作强调了机器翻译的巨大优势(将 60 多个俄语句子翻译成英语)。这种早期方法使用六条语法规则来编写 250 个单词的词典,并导致对机器翻译进行大量投资,但基于规则的方法无法扩展到生产系统。

MIT 的 SHRDLU(以英文字母的频率顺序命名)于 20 世纪 60 年代末在 LISP 中开发,使用自然语言让用户操纵和查询积木世界的状态。积木世界是一个充满不同积木的虚拟世界,用户可以使用“拿起一个大红色积木”等命令来操纵它。可以堆叠和查询对象以了解世界的状态(“红色金字塔的右边有什么东西吗?”)。当时,这个演示被认为非常成功,但无法扩展到更复杂和模糊的环境。

在 20 世纪 70 年代和 80 年代初期,开发了许多聊天机器人式的应用程序,这些应用程序可以就有限的话题进行交谈。这些是现在所谓的对话式人工智能的前身,在许多领域得到了广泛而成功的应用。其他应用程序(如 Lehnert 的 Plot Units)实现了叙事摘要。这允许用“情节单元”总结一个简单的故事,例如动机、成功、喜忧参半和其他叙事构建块。

20 世纪 80 年代末,NLP 系统研究从基于规则的方法转向统计模型。随着互联网的出现,大量文本信息变得可供机器访问,NLP 变得更加重要。

2.3 NLP 的早期工作

20 世纪 60 年代,人们开始研究如何将意义赋予单词序列。在一种称为标记的过程中,句子可以被分解成词性,以了解它们在句子中的关系。这些标记器依靠人为构建的基于规则的算法,用句子中的上下文来“标记”单词(例如名词、动词、形容词等)。但这种标记相当复杂,因为英语中有多达 150 种不同类型的语音标记。

使用 Python 的自然语言工具包 (NLTK),您可以看到词性标注的产物。在此示例中,最终的元组集表示标记化的单词及其标签(使用 UPenn 标签集)。此标签集由 36 个标签组成,例如 VBG(动词、动名词或现在分词)、NN(单数名词)、PRP(人称代词)等。

>>> quote = "Knowing yourself is the beginning of all wisdom."
>>> tokens = nltk.word_tokenize( quote )
>>> tags = nltk.pos_tag( tokens )
>>> tags
[('Knowing', 'VBG'), ('yourself', 'PRP'), ('is', 'VBZ'),('the', 'DT'), ('beginning', 'NN'), ('of', 'IN'), ('all', 'DT'),('wisdom', 'NN'), ('.', '.')]
>>>

标记单词似乎并不复杂,但由于单词的含义可能因使用地点而异,因此这个过程可能很复杂。词性标记是解决其他问题的先决条件,并应用于各种 NLP 任务。

在存在歧义的情况下,基于严格规则的标记方法已让位于统计方法。给定一段文本(或语料库),可以计算一个单词跟在另一个单词后面的概率。在某些情况下,概率非常高,而在其他情况下,概率为零。庞大的单词图及其转换概率是训练机器找出哪些单词更有可能跟在其他单词后面的产物,并且可以以多种方式使用。例如,在语音识别应用程序中,此单词图可用于识别被噪音弄乱的单词(基于该单词之前的单词序列的概率)。这也可以用于自动更正应用程序(为拼写错误的单词推荐一个单词)。这种技术通常使用隐马尔可夫模型 (HMM) 来解决。

HMM 的用处在于,人类不需要构建此图;机器可以根据有效文本语料库构建它。此外,它可以根据单词元组(一个单词跟在另一个单词后面的概率,称为二元组)或基于 n-gram(其中 n=3,一个单词在序列中跟在另外两个单词后面的概率)构建。HMM 不仅应用于 NLP,还应用于各种其他领域(例如蛋白质或 DNA 测序)。

以下示例说明了在 NLTK 中如何从简单句子构造二元词组:

>>> sentence = "the man we saw saw a saw"
>>> tokens = nltk.word_tokenize( sentence )
>>> list(nltk.bigrams( tokens ) )
[('the', 'man'), ('man', 'we'), ('we', 'saw'), ('saw', 'saw'),('saw', 'a'), ('a', 'saw')]
>>>

让我们探索一些 NLP 任务的现代方法。

三、NLP的现代方法

现代 NLP 方法主要侧重于神经网络架构。由于神经网络架构依赖于数值处理,因此需要编码来处理单词。两种常见方法是独热编码和词向量。

3.1 单词编码

独热编码将单词转换为独特的向量,然后可以由神经网络进行数字处理。考虑上一个二元组示例中的单词。我们创建独热向量,其维度与要表示的单词数量相同,并在该向量中分配一个位来表示每个单词。这将创建一个独特的映射,可用作神经网络的输入(向量中的每个位作为神经元的输入)(参见图 2)。这种编码比简单地将单词编码为数字(标签编码)更有利,因为网络可以更有效地使用独热向量进行训练。
在这里插入图片描述
另一种编码是词向量,它将单词表示为高维向量,其中向量的单位是实数。但不是为每个单位分配一个单词(如独热编码),而是每个单位代表单词的类别(例如单数与复数或名词与动词),并且可以有 100-1,000 个单位宽(维数)。这种编码的有趣之处在于单词现在具有数字相关性,并且编码可以对词向量应用数学运算(例如加、减或取反)。

3.2 循环神经网络

循环神经网络 (RNN) 于 20 世纪 80 年代发展起来,在 NLP 中占据着独特的地位。顾名思义,与典型的前馈神经网络相比,RNN 在时间域中运行。RNN 随时间展开并分阶段运行,其中先前的输出为后续阶段的输入提供信息(请参阅图 3 中的展开网络示例)。这种类型的架构非常适用于 NLP,因为网络不仅考虑单词(或其编码),还考虑单词出现的上下文(后面的内容、前面的内容)。在这个设计好的网络示例中,输入神经元接收单词编码,输出通过网络前馈到输出节点(目的是输出用于语言翻译的单词编码)。在实践中,每个单词编码一次只接收一个并传播。在下一个时间步骤中,下一个单词编码被接收(输出仅在最后一个单词被接收后发生)。
在这里插入图片描述
传统 RNN 通过反向传播的一种变体(称为时间反向传播 (BPTT))进行训练。RNN 的一种流行变体是长短期记忆单元 (LSTM),它具有独特的架构和遗忘信息的能力。

3.3 强化学习

强化学习侧重于在环境中选择行动以最大化某些累积奖励(这种奖励不是立即可理解的,而是通过多次行动习得的)。行动的选择基于一种策略,该策略定义给定行动是应该探索新状态(可以进行学习的未知领域)还是旧状态(基于过去的经验)。
在这里插入图片描述
在 NLP 和机器翻译的背景下,观察是呈现的单词序列。状态表示部分翻译,而动作表示是否可以提供翻译或是否需要更多信息(更多观察或单词)。随着进一步的观察,状态可能会确定有足够的信息并呈现翻译。这种方法的关键是翻译是逐步完成的,强化学习可以确定何时进行翻译或何时等待更多信息(在主动词出现在句子末尾的语言中很有用)。

强化学习也被用作实现基于文本摘要的 RNN 的训练算法。

3.4 深度学习

深度学习/深度神经网络已成功应用于各种问题。您会发现深度学习是问答系统、文档摘要、图像标题生成、文本分类和建模等诸多领域的核心。请注意,这些案例代表了自然语言理解和自然语言生成。

深度学习是指具有多层(深度部分)的神经网络,它将特征作为输入并从这些数据中提取更高级的特征。深度学习网络能够学习表示的层次结构和输入的不同抽象级别。深度学习网络可以使用监督学习或无监督学习,也可以形成其他方法的混合体(例如将循环神经网络与深度学习网络结合起来)。

最常见的深度学习网络方法是卷积神经网络 (CNN),它主要用于图像处理应用(例如对图像内容进行分类)。图 5 展示了一个用于情绪分析的简单 CNN。它由一个单词编码输入层(来自标记化输入)组成,然后将其馈送到卷积层。卷积层将输入分割成许多输入“窗口”以生成特征图。这些特征图通过最大运算进行池化,从而降低输出的维度并提供输入的最终表示。这被馈送到提供分类(例如正面、中性、负面)的最终神经网络中。
在这里插入图片描述
虽然 CNN 在图像和语言领域已被证明是有效的,但其他类型的网络也可以使用。长短期记忆是一种新型的 RNN。LSTM 细胞比典型的神经元更复杂,因为它们包括状态和许多内部门,可用于接受输入、输出数据或忘记内部状态信息。LSTM 通常用于自然语言应用。LSTM 最有趣的用途之一是与 CNN 结合使用,其中 CNN 提供处理图像的能力,而 LSTM 经过训练可生成输入图像内容的文本句子。

四、更进一步的方法

使用 NLP 的应用程序越来越多,这证明了 NLP 的重要性。NLP 为计算机和在线提供的大量非结构化数据提供了最自然的界面。2011 年,IBM 展示了 Watson™,它与 Jeopardy 的两位最伟大的冠军展开较量,并使用自然语言界面击败了他们。Watson 还使用 2011 版维基百科作为其知识来源 - 这是语言处理和理解道路上的一个重要里程碑,也是未来发展的指标。您也可以在此处了解有关NLP 的更多信息。

相关文章:

自然语言处理初学者指南

文章目录 一、说明二、自然语言处理发展史2.1 最早的自然语言处理简介2.2 历史2.3 NLP 的早期工作 三、NLP的现代方法3.1 单词编码3.2 循环神经网络3.3 强化学习3.4 深度学习 四、更进一步的方法 一、说明 对于初学者来说,自然语言处理的发展历史非常有必要了解&am…...

Kubernetes教程(七)了解集群、标签、Pod和Deployment

了解集群、标签、Pod和Deployment 一、K8s资源对象二、K8s集群1. Master2. Node 三、Namespace(命名空间)四、Label(标签)五、Pod1. 共享网络命名空间2. 共享数据 六、工作负载1. 设置副本数2. 应用升级 结语 Kubernetes的知识真的…...

【BUG分析】微服务无法读取Nacos中的共享配置

项目场景 基于Spring Cloud微服务的商城系统。 使用Nacos进行统一配置管理,在bootstrap.xml中读取配置参数。 问题描述 购物车微服务可以读取Nacos中的共享mybatis配置,商品管理微服务却读不到,启动报错提示无法配置数据库源: …...

SpringMVC (一)基础

目录 SpringMVC 一 简单使用 1 新建模块选择指定参数 2 创建实现类 3 将项目启动 4 运行结果:在浏览器当中响应执行 二 RequestMapping 三 请求限定 SpringMVC SpringMVC是Spring的web模块,用来开发Web应用,SpringMVC应用最终作为B/…...

【ES6】ES6中的类

基础定义和使用 class Animal {constructor(name, species, age) {this.name namethis.species speciesthis.age age} }let dog new Animal("Spot", "Dog", 4)私有变量 变量名前带#即可。 Getter 和Setter方法 继承 // 父类 class Point{construc…...

兴达易控Profinet 转 ModbusTCP跨网段通信模块

Profinet 转 ModbusTCP/跨网段通信模块 Profinet转ModbusTCP/跨网段通信模块,作为现代工业自动化系统中不可或缺的重要组件,正日益受到广泛关注和应用。 这种模块的核心功能是将Profinet网络协议转换为Modbus TCP协议,实现不同网络之间的无缝…...

linux 的免密切换用户PAM配置

/etc/pam.d/su是Linux系统中与用户切换(su命令)相关的PAM(Pluggable Authentication Modules,可插拔认证模块)配置文件。以下是对它的详细介绍: 简介 作用 PAM是一种用于管理系统认证的机制,…...

使用 Python pandas操作 Excel 文件

使用 Python pandas 操作 Excel 文件 flyfish pandas 是 Python 中一个强大的数据处理和分析库,它提供了丰富的数据结构(如 Series 和 DataFrame)和数据操作方法,能够方便地处理各种数据格式,包括 Excel 文件。 安装…...

UE5.5 Niagara 发射器粒子更新模块

Particle State (粒子状态)模块 Particle State 主要用于控制粒子的生存状态,包括死亡、消失、响应事件等。 Particle State Kill Particles When Lifetime Has Elapsed 当粒子的生命周期结束时,销毁这些粒子。 Lifetime &…...

状态模式的C++实现示例

核心思想 状态模式(State Pattern) 是一种行为设计模式,允许对象在其内部状态改变时改变其行为。它将状态相关的逻辑分散到不同的状态类中,避免了使用大量的条件语句来处理不同状态下的行为。 状态抽象化:将对象的状…...

ThinkPHP8.0+MySQL8.0搭建简单实用电子证书查询系统

客户花了100元买了一个系统,开始不能导入,到处找人帮忙解决。给解决能导入了,不能修改,满足不了用户的需求。用户一狠心,花200块钱,叫我给他定制了一个电子证书查询系统。还免费给部署到服务器。惭愧惭愧……...

STM32全系大阅兵(2)

接前一篇文章:STM32全系大阅兵(1) 本文内容参考: STM32家族系列的区别_stm32各个系列区别-CSDN博客 STM32--STM32 微控制器详解-CSDN博客...

upload-labs通关攻略 【Pass-01~Pass-19】

注意:GitHub中upload-labs有多个版本:19关、21关、23关。版本不同,关卡的顺序也很可能不同。此次例子是21关。 项目地址:https://github.com/c0ny1/upload-labs 一、Pass-01 【js前端检测的绕过】 1. 打开Pass-01 访问:ip/uploa…...

HCIP复习拓扑练习(修改版)

拓扑: 实际: 需求: 需求分析 1.这意味着学校内部网络能够正常解析域名并进行互联网访问。 2. PC1和PC2处于同一个内网192.168.1.0/24,其中PC1有权限访问外部网段3.3.3.0/24,而PC2没有。这涉及ACL(访问控制…...

Zabbix 7.2 + Grafana 中文全自动安装ISO镜像

简介 ​ 基于Zabbix 官方的Alma Linux 8 作为基础镜像。 镜像源都改为国内大学镜像站,自动联网安装ZabbixGrafana。 安装中文字体、Zabbix和Grafana也配置默认中文。 Zabbix 也指定中文字体,绘图无乱码。 配置时区为东八区,Zabbix配置We…...

使用 Python 将 PDF 转换为文本:打造一个简单高效的提取工具

在数字化时代,PDF 文件是我们日常生活中常见的文档格式。无论是学术论文、工作报告还是电子书,PDF 的广泛使用让提取其中文字内容成为一个常见需求。手动复制粘贴显然效率低下,而借助 Python,我们可以轻松实现自动化提取。本文将介…...

scoop退回软件版本的方法

title: scoop退回软件版本的方法 date: 2025-3-11 23:53:00 tags: 其他 前言 在软件更新后,如果出现了很影响使用体验的问题,那么可以把软件先退回以前的版本进行使用, 但是scoop本身并没有提供直接让软件回退版本的功能,因此…...

网络爬虫-2:正则化

1.正则化 一.正则化 1.转义字符 转义字符含义\s空白字符(空格、制表符等)\d数字字符(0-9)\w字母、数字或下划线.除换行符外的任意字符\n换行符\t制表符 import re result re.findall(r\s, Hello World\nPython) print(result)…...

emacs使用mongosh的方便工具发布

github项目地址: GitHub - csfreebird/emacs_mongosh: 在emacs中使用mongosh快速登录mongodb数据库 * 用途 在emacs中使用mongosh快速登录mongodb数据库, 操作方法: M-x mongosh, 输入数据库名称,然后就可以自动登录,前提是你已经配置好了…...

【Spring】详细剖析Spring程序

文章目录 一、Spring概述1. Spring简介1.1 OCP开闭原则1.2 依赖倒置原则DIP1.3 控制反转IoC 2. Spring8大模块 二、Spring的入门程序1. Spring官网2. 第一个Spring程序2.1 创建工程2.2 配置 pom.xml:2.3 定义bean:User . java2.4 配置文件 spring.xml2.5…...

《MySQL数据库从零搭建到高效管理|库的基本操作》

目录 一、数据库的操作 1.1 展示数据库 1.2 创建数据库 1.3 使用数据库 1.4 查看当前数据库 1.5 删除数据库 1.6 小结 二、常用数据类型 2.1 数值类型 2.2 字符串类型 2.3 日期类型 一、数据库的操作 打开MySQL命令行客户端,安装完MySQL后会有两个客户端…...

docker部署jenkins,安装使用一条龙教程

Jenkins k8s 实现CI/CD 一、简介 1. JenKins是什么? Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。 2. 什么是CI / CD…...

图像识别技术与应用-YOLO

1 YOLO-V1 YOLO-V1它是经典的one-stage方法,You Only Look Once,名字就已经说明了一切!把检测问题转化成回归问题,一个CNN就搞定了!也可以对视频进行实时检测,应用领域非常广! YOLO-V1诞生与2…...

【网络通信安全】子专栏链接及简介

目录 操作系统安全:筑牢网络安全根基​ 网络协议安全:守护数据传输通道​ Web 站点安全开发:打造安全的网络交互平台​ 在数字化浪潮席卷的当下,网络通信已深度融入生活与工作的方方面面,从日常的线上购物、社交互动…...

Oracle比较好的几本书籍

1.《Oracle专家高级编程》 2.《Oracle高效设计》 3.《Oracle9i&10g&11g编程艺术深入数据库体系结构》 4.《让Oracle跑的更快》(1/2) ....... n.《Oracle官方文档的阅读》下面包括这几个部分,可以跟进研读一下: (1)《…...

忘记dedecms后台超级管理员账号和密码的解决方案

解决方案: 方案一、数据库修改: 1、前提是您能登录到数据库后台,登录MySQL数据库管理工具(如phpMyAdmin) 2、打开数据库中的 dede_admin 表,找到管理员记录,将 pwd 字段的值改成 f297a57a5a7…...

处理动态分页:自动翻页与增量数据抓取策略-数据议事厅

一、案例场景 Lily(挥舞着数据报表):“用户反馈我们的股票舆情分析总是缺失最新跟帖!这些动态分页像狡猾的狐狸,每次抓取都漏掉关键数据!” 小王(调试着爬虫代码):“传…...

微服务新手入门

一、微服务概念 微服务是一种软件架构风格,ta是以专注于单一职责的很多小型项目为基础,组合出复杂的大型应用。 微服务 - 服务拆分 - 远程调用 - 服务治理 - 请求路由 - 身份认证 - 配置管理 - 服务保护 - 分布式事务 - 异步通信 - 消息可靠性 - 延迟消…...

antd浏览器引入的问题

1&#xff0c;在使用ant design vue的4.1.2版本通过浏览器引入的方式遇到的问题&#xff0c;遇到的问题&#xff08;不确定其他版本有没有问题&#xff09;&#xff0c;通过在页面使用下面的代码 <a-modal v-model:open"apiOpen" title"修改秘钥" ok&q…...

STM32-Unix时间戳

一&#xff1a;什么是时间戳 Unix时间戳&#xff08;Unix Timestamp&#xff09;是一个计数器数值&#xff0c;这个数值表示的是一个从1970年1月1日0时0分0秒开始到现在所经过的秒数&#xff0c;不考虑闰秒。 时间戳存储在一个秒计数器里&#xff0c;秒计数器为32位/64位的整…...

【性能测试】Jmeter如何做一份测试报告(3)

本篇文章主要介绍Jmeter中下载插件&#xff08;Jmeter Plugins&#xff09; 如何使用监听器插件&#xff0c;线程组插件&#xff0c;梯度压测线程组 测试报告需要去关注的数据&#xff0c;怎么看测试报告图表 目录 一&#xff1a;插件下载 1&#xff1a;下载地址 2&#xff…...

游戏引擎学习第153天

仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾 目前正在进行的是一个比较大的系统调整&#xff0c;原本预计今天会继续深入这个改动&#xff0c;但实际上在昨天的开发中&#xff0c;我们已经完成了大部分的代码编写&#xff0c;并且运行之后几乎一切都能正常工作&#x…...

CentOS7下安装MongoDB

步骤 1&#xff1a;创建 MongoDB Yum 仓库文件 你需要创建一个 MongoDB 的 Yum 仓库配置文件&#xff0c;以便从官方源下载 MongoDB。打开终端并使用以下命令创建并编辑该文件&#xff1a; sudo vi /etc/yum.repos.d/mongodb-org-7.0.repo 在打开的文件中&#xff0c;输入以下…...

Elasticsearch-07-Elasticsearch Java API Client-Elasticsearch 8.0 的高阶api

文章目录 es8 API基础配置和bean注入高阶使用1&#xff1a;引入elasticsearchClient2&#xff1a;查询所有索引3&#xff1a;查询某个索引4:创建索引5:删除指定索引6:查询索引的映射7:创建索引指定映射8:创建文档使用HashMap作为数据存储容器使用自定义类作为数据存储容器使用外…...

【性能优化】MySQL 生产环境 SQL 性能优化实战案例

&#x1f680; MySQL 生产环境 SQL 性能优化实战案例 &#x1f3d7;️ 背景介绍 最近在处理一个项目时&#xff0c;发现在生产环境的工作流相关接口中&#xff0c;某些查询的执行时间异常缓慢&#xff0c;尽管数据量仅为 2 万条。经过分析&#xff0c;发现以下 SQL 语句执行非…...

Docker容器安装软件(完整版)

文章目录 一、安装Docker1.1 docker 相关的命令1.2 配置镜像加速 二. 安装es2.1 创建网络2.2 拉取镜像2.3 创建挂载点目录2.4 部署单点es&#xff0c;创建es容器2.5 编写elasticsearch.yml2.6 重启es容器2.7 测试Elasticsearch是否安装成功 三. 基于Docker安装Kibana3.1 拉取镜…...

DeepSeek-进阶版部署(Linux+GPU)

前面几个小节讲解的Win和Linux部署DeepSeek的比较简单的方法&#xff0c;而且采用的模型也是最小的&#xff0c;作为测试体验使用是没问题的。如果要在生产环境使用还是需要用到GPU来实现&#xff0c;下面我将以有一台带上GPU显卡的Linux机器来部署DeepSeek。这里还只是先体验单…...

11. Pandas :操作Excel文件(Excel报表的案例研究)

从一个装有各种 Excel 文件的文件夹开始&#xff0c;这些文件需要被整合到 Excel 报表中。 它们包含了虚构的电信运营商在全美各营业厅的套餐&#xff08;金、银、铜&#xff09;销售情况。每个月有两个文件&#xff0c;子文件夹 new 中的是新用户&#xff0c;子文件夹 existin…...

Qt开源控件库(qt-material-widgets)的编译及使用

项目简介 qt-material-widgets是一个基于 Qt 小部件的 Material Design 规范实现。 项目地址 项目地址&#xff1a;qt-material-widgets 本地构建环境 Win11 家庭中文版 VS2019 Qt5.15.2 (MSVC2019) 本地构建流程 克隆后的目录结构如图&#xff1a; 直接使用Qt Crea…...

freeswitch(多台服务器级联)

亲测版本centos 7.9系统–》 freeswitch1.10.9本人freeswitch安装路径(根据自己的路径进入)/usr/local/freeswitch/etc/freeswitch使用场景: 使用服务器级联需要双方网络可以ping通,也就是类似局域网内,比如A服务器IP 192.168.1.100 B服务器 192.168.1.101,通过C设备注册…...

【大模型统一集成项目】让 AI 聊天更丝滑:WebSocket 实现流式对话!

&#x1f31f; 在这系列文章中&#xff0c;我们将一起探索如何搭建一个支持大模型集成项目 NexLM 的开发过程&#xff0c;从 架构设计 到 代码实战&#xff0c;逐步搭建一个支持 多种大模型&#xff08;GPT-4、DeepSeek 等&#xff09; 的 一站式大模型集成与管理平台&#xff…...

qt 多进程使用共享内存 ,加速数据读写,进程间通信 共享内存

Summary: 项目中我们有时需要使用共享内存共享数据&#xff0c;这样&#xff0c;数据不用进程IO读写&#xff0c;加进数据加载和落地&#xff1b; 程序退出时&#xff0c;再保存到本地&#xff1b;速度提升数十倍&#xff1b; Part1:QSharedMemory Windows平台下进程间通信…...

OpenHarmony-分布式硬件关键技术

前言&#xff1a; OpenHarmony是一款面向未来万物互联场景的操作系统&#xff0c;其设计采用了分布式架构。那么OpenHarmony相比于传统操作系统有哪些关键的分布式技术&#xff0c;本文主要介绍分布式硬件设计理念、跨端分布式硬件核心挑战、以及OpenHarmony分布式硬件平台关键…...

idea超级AI插件,让 AI 为 Java 工程师

引言​ 用户可在界面中直接通过输入自然语言的形式描述接口的需求&#xff0c;系统通过输入的需求自动分析关键的功能点有哪些&#xff0c;并对不确定方案的需求提供多种选择&#xff0c;以及对需求上下文进行补充&#xff0c;用户修改确定需求后&#xff0c;系统会根据需求设…...

深入Flink运行时架构:JobManager与TaskManager协作全解析

深入Flink运行时架构:JobManager与TaskManager协作全解析 一、Flink分布式执行模型剖析 1.1 运行时架构全景视图 核心组件交互关系: #mermaid-svg-tMSqMSsKP6vwUZi3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…...

OSPF-单区域的配置

一、单区域概念&#xff1a; 单区域OSPF中&#xff0c;整个网络被视为一个区域&#xff0c;区域ID通常为0&#xff08;骨干区域&#xff09;。所有的路由器都在这个区域内交换链路状态信息。 补充知识点&#xff1a; OSPF为何需要loopback接口&#xff1a; 1.Loopback接口的…...

每日OJ_牛客_过桥_贪心+BFS_C++_Java

目录 牛客_过桥_贪心BFS 题目解析 C代码 Java代码 牛客_过桥_贪心BFS 过桥 描述&#xff1a; dd被困在了一个迷幻森林&#xff0c;现在她面前有一条凶险的大河&#xff0c;河中央有n个神奇的浮块&#xff0c;浮块按1∼n1顺序标号&#xff0c;但两两并不相接&…...

K8S学习之基础二十七:k8s中daemonset控制器

k8s中DaemonSet控制器 ​ DaemonSet控制器确保k8s集群中&#xff0c;所有节点都运行一个相同的pod&#xff0c;当node节点增加时&#xff0c;新节点也会自动创建一个pod&#xff0c;当node节点从集群移除&#xff0c;对应的pod也会自动删除。删除DaemonSet也会删除创建的pod。…...

79.ScottPlot的MVVM实现 C#例子 WPF例子

如何通过数据绑定在 WPF 中实现动态图像显示 在 WPF 应用程序中&#xff0c;通过数据绑定实现动态图像显示是一种高效且优雅的方式。以下是一个简单的教程&#xff0c;展示如何使用 ScottPlot.WPF 库和 MVVM 模式来实现这一功能。 第一步&#xff1a;安装必要的 NuGet 包 首…...

第44天:WEB攻防-PHP应用SQL盲注布尔回显延时判断报错处理增删改查方式

时间轴&#xff1a; 44天知识点总结&#xff1a; 1.mysql的增删改查功能 2.根据源码sql语句的三种sql注入&#xff1a;布尔盲注&#xff08;必须要有回显&#xff09; 延时判断&#xff08;都可以&#xff09; 报错回显&#xff08;必须要有报错处理机制&#xff09; 3.两个cms…...