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

大语言模型兵马未动,数据准备粮草先行

​从OpenAI正式发布ChatGPT开始,大型语言模型(LLM)就变得风靡一时。对业界和吃瓜群众来说,这种技术最大的吸引力来自于理解、解释和生成人类语言的能力,毕竟这曾被认为是人类独有的技能。类似CoPilot这样的工具正在迅速融入开发者的日常工作,而由ChatGPT驱动的应用程序也开始变得日益主流。

大语言模型的流行,另一方面也要归功于普通开发者也能轻松用上这样的技术。随着大量开源模型陆续涌现,每天都有新的科技初创公司提出基于大语言模型的解决方案。

​然而,就算到了AI时代,数据依然是一种“新的石油”。在机器学习领域,数据充当了训练、测试和验证模型的原材料。高质量、多样化、有代表性的数据对于创建准确、可靠和健壮的大语言模型至关重要。

我们在构建自己的大语言模型时可能会面临挑战,特别是在收集和存储数据这方面。大量非结构化数据如何处理,以及该如何存储和管理对数据的访问,这些可能只是各种挑战中的一小部分。

本文将探讨与数据管理有关的挑战,借此让读者清楚了解数据在大语言模型中的关键作用,并在此基础上,为读者在自己的大语言模型项目中有效管理数据提供所需知识。

首先,一起看看有关大语言模型的基础知识吧。

大语言模型的工作原理以及现有模型的选择

从较高层次来看,大语言模型的工作原理很简单:将单词(或句子)转换为一种称为嵌入(Embedding)的数值表达。这些“嵌入”捕获了单词间的语义含义和关系,模型就是借此理解语言的。例如,大语言模型会学习到“狗”和“小狗”这两个词是相关的,并且会将它们放在数值空间中更接近的位置,而“树”这个词则会较远。

​大语言模型最关键的部分是神经网络,这是一类受到人脑功能启发创建出的计算模型。神经网络可以从训练数据中学习这些嵌入及其相互之间的关系。与大多数机器学习应用一样,大语言模型需要大量数据。通常情况下,对于模型训练而言,数据量越大、质量越高,模型的准确性就越高,这意味着我们需要一种良好的方法来管理大语言模型用到的数据。

权衡现有模型时需要考虑的因素

幸运的是,对于开发者而言,目前有很多开源的大语言模型可供选择,其中不乏一些流行的,甚至可商用的,例如Databricks提供的Dolly、Meta提供的Open LLaMA等。

面对如此广泛的选择,想要找到合适的开源大语言模型可能就有些棘手了。我们必须了解大语言模型所需的计算和内存资源。模型的大小(例如输入参数为30亿与70亿之间的模型)会影响运行和使用模型所需的资源量。因此必须考虑选择能与自己能力相匹配的模型。例如,一些DLite模型专门设计为能在笔记本电脑上运行,而不需要高成本的云资源。

在研究每个大语言模型时,一定要注意该模型是如何训练的,以及通常适用于什么样的任务。这些区别也会影响我们的选择。此时的规划工作包括:筛选开源模型,了解每个模型的最佳适用场景,并预测自己将需要为每个模型使用的资源。

根据需要大语言模型的应用程序或环境,我们可以选择从现有大语言模型开始,也可以选择从零开始训练一个自己的大语言模型。对于现成的大语言模型,我们可以直接使用它,或者也可以使用额外的数据对模型进行微调,使其更符合自己所要处理的任务特点。

为了根据需求选择最佳方法,还要求我们对用于训练大语言模型的数据有深入了解。

大语言模型中使用的数据类型

​当涉及到大语言模型的训练时,通常使用的数据是文本数据。然而,这些文本数据的性质可能有很大差异,了解可能遇到的不同类型数据是很重要的。一般来说,大语言模型用到的数据可分为两种类型:半结构化数据和非结构化数据。结构化数据(即以表格数据集形式表示的数据)通常不太可能用在大语言模型的训练工作中。

· 半结构化数据

​半结构化数据会以某种预定义的方式组织,并遵循某种模型。这种组织方式使得数据的搜索和查询变得相当简单直接。在大语言模型领域,半结构化数据的类型有很多,例如文本语料库,其中的每一项都与某些标签或元数据相关联。半结构化数据的其他例子包括:

  • 新闻文章,每篇文章都与一个类别(如体育、政治或技术)相关联。
  • 用户评论,每条评论都与评分和产品信息相关联。
  • 社交媒体帖子,每个帖子都与发布者、发布时间和其他元数据相关联。

在这些情况下,大语言模型可能会根据新闻文章预测类别,根据评论文本预测评分,或根据内容预测社交媒体帖子蕴含的情绪。

· 非结构化数据

另一方面,非结构化数据缺乏预定义的组织或模型。这些数据通常以文本为主,并且可能包含日期、数字和事实,这使得它更加复杂,难以处理和分析。在大语言模型领域,非结构化数据非常普遍,例如:

  • 书籍、文章和其他长篇内容
  • 从采访或播客中提取的文本记录
  • 网页或文档

由于缺乏明确的标签或组织标记,非结构化数据对大语言模型的训练更具挑战性。然而,这类数据也可以产生更通用的模型。例如,用大量书籍语料库训练出的模型可能会学会生成逼真的散文,就像GPT-3那样。

可想而知,数据是大语言模型的核心。但这些数据如何从原始状态转换为大语言模型可以使用的格式?让我们将焦点转移到其中涉及的关键过程上。

大语言模型的数据管道和数据摄入

用于获取和处理大语言模型数据的基本构件在于数据管道(Data pipeline)和数据摄入(Data ingestion)的概念。

1.数据管道是什么?

数据管道在原始的非结构化数据与完全训练好的大语言模型之间形成了一个通道,借此确保数据被正确地收集、处理和准备,使其能够在大语言模型构建过程的训练和验证阶段顺利使用。

数据管道是一组流程,可将数据从源头移动到一个可以存储和分析的目的地。通常情况下,其中包括:

  • 数据提取:从源头提取数据,这个源头可以是数据库、数据仓库,甚至外部API。
  • 数据转换:原始数据需要经过清洗和转换,以便转换为适合分析的格式。转换包括处理缺失值、纠正不一致的数据、转换数据类型或对类别变量进行独热编码(One-hot encoding)。
  • 数据加载:转换后的数据被加载到存储系统(例如数据库或数据仓库)。这些数据随后可以立即用于机器学习模型中。

当谈论数据摄入时,我们指的是这些管道过程的前端,即数据的获取和为后续使用所进行的准备。

2.大语言模型的数据管道是什么样子的?

虽然大语言模型的数据管道在一般情况下可能与数据团队使用的大多数管道有所相似,但大语言模型为管理的数据提出了一些独特的挑战。例如:

  • 数据提取:语言模型的数据提取通常更复杂、多样化且计算密集。由于数据来源可能是网站、书籍、文本记录或社交媒体,每个来源都有自己的细微差别,需要独特的方法。
  • 数据转换:由于大语言模型的数据来源范围非常广泛,每种类型数据的每个转换步骤都将不同,需要独特的逻辑将数据处理成大语言模型可以用于训练的更标准化的格式。
  • 数据加载:在许多情况下,数据加载的最后一步可能需要使用非常规的数据存储技术。非结构化文本数据可能需要使用NoSQL数据库,而不像很多数据管道那样使用关系型数据存储。

大语言模型的数据转换过程包括了与自然语言处理(NLP)中类似的技术:

  • 词元化:将文本分解为单个单词或词元(Token)。
  • 停用词去除:消除常用词如“and”、“the”和“is”。然而,根据大语言模型所训练任务的不同,有时候这类停用词可能会被保留,这可能是为了保留重要的句法和语义信息。
  • 词形还原:将单词减少到其基本形式或词根形式。

可想而知,将所有这些步骤结合起来,从各种来源摄取海量数据,可能会导致一个非常复杂且庞大的数据管道。为了顺利完成任务,我们需要适合的工具和资源。

数据摄入的常见工具

数据工程领域有几个极其流行的工具可以帮助我们处理构成数据管道的一部分复杂数据摄入过程。如果正在构建自己的大语言模型,我们的大部分开发时间将用于收集、清理和存储用于训练的数据。那些能够帮助我们管理大语言模型数据的工具可以按以下方式加以分类:

  1. 管道编排:用于监视和管理数据管道中过程的平台。
  2. 计算:处理大规模数据所用的资源。
  3. 存储:用于存储有效大语言模型训练所需的大量数据的数据库。

让我们详细看看这三类工具。

1.管道编排

​Apache Airflow是一个流行的开源平台,可用于以编程方式编写、调度和监视数据工作流。它可以帮助我们使用基于Python的编程接口创建复杂数据管道,这种接口不仅功能丰富,而且易于使用。Airflow中的任务可以组织成有向无环图(DAG),其中每个节点代表一个任务,边表示任务之间的依赖关系。

Airflow已被广泛用于数据提取、转换和加载操作,它已经成为数据摄入过程中的宝贵工具。Linode Marketplace提供了Apache Airflow,用户可以借此通过简单的设置快速上手使用。

2.计算

除了使用诸如Airflow之类的工具进行管道管理,我们还需要能够可靠地运行大规模处理所需的计算资源。随着摄入大量文本数据并从许多来源进行下游处理,我们的任务将需要能够根据需求扩展计算资源,最好是以水平的方式进行扩展。


Kubernetes是一种流行的可扩展计算选项。Kubernetes带来了灵活性,能与许多工具(包括Airflow)很好地集成。通过利用托管的Kubernetes,我们可以快速、简单地启动灵活的计算资源。

3.存储

数据库对于数据摄入过程至关重要,它可充当经过清理和转换后摄入数据的主要目的地。我们可以采用各种类型的数据库。具体使用哪种类型,这取决于数据的性质和用例的具体要求:

  • 关系型数据库用表格结构来存储和表示数据。它适用于具有清晰关系和数据完整性至关重要的数据。尽管我们的大语言模型将依赖于非结构化数据,但像PostgreSQL这样的关系型数据库也可以处理非结构化数据类型。
  • NoSQL数据库:NoSQL数据库包括面向文档的数据库,它不使用表格结构来存储数据,适用于处理大量非结构化数据,可提供高性能、高可用性和易扩展性。​

作为大语言模型数据存储的替代方案,一些工程师更喜欢使用分布式文件系统,例如AWS S3或Hadoop。虽然分布式文件系统是存储大量非结构化数据的好选择,但需要额外的工作来组织和管理大型数据集。

在Linode Marketplace提供的各种存储选项中,我们可以看到托管的PostgreSQL和托管的MySQL。这两个选项都易于设置,可与大语言模型数据管道连接。

虽然小型大语言模型可能会使用较少的数据进行训练,并且可以使用较小的数据库(如单个PostgreSQL节点),但更重的用例将需要处理大量数据。在这些情况下,我们可能需要类似PostgreSQL Cluster的东西来支持将要处理的数据量,并为大语言模型管理数据以及可靠地提供数据服务。

在选择用于管理大语言模型数据的数据库时,别忘了考虑数据的性质和具体要求。我们摄入的数据类型将决定哪种数据库最适合自己的需求。当然,实际用例要求(如性能、可用性和可扩展性)也是重要的考虑因素。

有效和准确地摄入数据对大语言模型的成功至关重要。通过正确使用工具,我们可以为自己的管道构建可靠、高效的数据摄入过程,处理大量数据,并确保大语言模型具备学习和提供准确结果所需的一切。

总结

大语言模型的迅猛崛起在技术领域开辟了新的大门。这项技术对开发者来说易于访问,但如何管理大语言模型的数据以及利用数据来训练新的大语言模型或调整现有大语言模型,将决定开发者能否在长期范围内持续获得成功。

如果你最近刚开始进行大语言模型项目的相关工作,那么需要在深入研究前先了解基础知识。为了有效使用大语言模型,我们需要摄入大量非结构化数据,这个过程包括从来源中提取、预处理、转换和导入。执行这些任务需要Airflow和Kubernetes这样的工具来进行管道编排和实现可扩展的计算资源。此外,用于大语言模型训练的数据通常具有非结构化的特性,因此需要像PostgreSQL这样的数据存储选项,通过集群可靠地进行规模化运行。

整个数据摄入流程中,大部分环节用到的工具,都已经发布到Linode Marketplace,有需要的用户只需轻点鼠标即可快速部署并运行。用最短时间完成所有准备工作,然后开始基于大语言模型进行创新吧!

相关文章:

大语言模型兵马未动,数据准备粮草先行

​从OpenAI正式发布ChatGPT开始,大型语言模型(LLM)就变得风靡一时。对业界和吃瓜群众来说,这种技术最大的吸引力来自于理解、解释和生成人类语言的能力,毕竟这曾被认为是人类独有的技能。类似CoPilot这样的工具正在迅速…...

跳表和Mysql联合索引的最左原则和索引下推的优化

文章目录 跳表(Skip List)关键特性跳表的结构示意图跳表的查询效率为什么 MySQL 不使用跳表而使用 B 树?跳表的实际应用场景 总结 MySQL 联合索引的最左匹配原则最左匹配原则的规则示例:创建联合索引查询示例及索引使用情况设计联…...

Android切换语言不退出App

1.需求 实现用户选择语言(未点击下一步),更新当前界面UI,点击下一步后,更新App的语言,并进行保存。 实现目标: 1.设置App的语言,本地进行保存 2.updateResources更新本地语言配置…...

Unity编程与游戏开发-编程与游戏开发的关系

游戏开发是一个复杂的多领域合作过程,涵盖了从创意构思到最终实现的多个方面。在这个过程中,技术、设计与美术三大核心要素相互交织,缺一不可。在游戏开发的过程中,Unity作为一款强大的跨平台游戏引擎,凭借其高效的开发工具和庞大的社区支持,成为了很多游戏开发者的首选工…...

【Git】问题汇总

在push的时候显示 protocol error: bad line length 8192 我在本地创建了一个gogs服务器,现在正在上传代码,但是出现了上述的这个问题。 解决方法 设置本地http.postBuffer(待验证) 方法一:全局配置 git config --g…...

搭建docker私有化仓库Harbor

Docker私有仓库概述 Docker私有仓库介绍 Docker私有仓库是个人、组织或企业内部用于存储和管理Docker镜像的存储库。Docker默认会有一个公共的仓库Docker Hub,而与Docker Hub不同,私有仓库是受限访问的,只有授权用户才能够上传、下载和管理其中的镜像。这种私有仓库可以部…...

修改sshd默认配置,提升安全

对于Linux服务器,特别是暴露在公网的服务器,会经常被人扫描、探测和攻击。包括通过ssh访问登录攻击。对此,对默认的sshd配置进行调整,提升安全。 下面以CentOS 7.9为例说明: 一、常见安全措施 以root用户编辑vim /e…...

formik 的使用

礼记有言:独学而无友,则孤陋而寡闻 让我们一起了解更多便捷方法,缩短开发时间去摸鱼,嘿嘿。 框架:react 在写表单的时候,我不太喜欢把验证写的很繁琐,这里讲介绍,验证表单的非常好用…...

【学习笔记】理解深度学习的基础:机器学习

1. 机器学习基础 1.1 机器学习的定义与重要性 定义:深度学习是机器学习的一种特定形式。为了深入理解深度学习,必须牢固掌握机器学习的基本原理。机器学习算法是一种能够从数据中学习的算法,通过经验E在任务T上提高性能度量P(Mi…...

Docker 基础知识

背景 传统的linux的环境部署 命令多步骤多安装版本多使用docker的话,一个命令就可以全部搞定安装linux 之前安装过,所以直接使用的开罩进行复制的如果之前配置过静态地址,需要改成IPV4静态地址访问安装docker 参考连接:https://b11et3un53m.feishu.cn/wiki/Rfocw7ctXij2RBk…...

pyqt鸟瞰

QApplication‌是Qt框架中的一个类,专门用于管理基于QWidget的图形用户界面(GUI)应用程序的控制流和主要设置。QApplication类继承自QGuiApplication,提供了许多与GUI相关的功能,如窗口系统集成、事件处理等。 QAppli…...

Linux syslog 运行机制

Busybox的syslogd认识与使用 syslogd 的基本工作原理: syslogd 是一个系统日志守护进程,它接收来自各种进程和系统服务的日志消息,并根据配置将这些消息存储到不同的日志文件中。 syslogd日志记录器由两个守护进程(klogd&#x…...

ZYNQ初识10(zynq_7010)UART通信实验

基于bi站正点原子讲解视频: 系统框图(基于串口的数据回环)如下: 以下,是串口接收端的波形图,系统时钟和波特率时钟不同,为异步时钟,,需要先延时两拍,将时钟同…...

day38 tcp 并发 ,linux下的IO模型----IO多路复用

TCP 并发 由于tcp协议只能实现一对一的通信模式。为了实现一对多,有以下的的处理方式 1. 多进程 开销大 效率低 2. 多线程 创建线程需要耗时 3. 线程池 多线程模型创建线程耗时问题,提前创建 4. IO多路复用 在不创建进程和线程的前提下,对…...

el-date-picker 禁用一个月前、一个月后(当天之后)的时间 datetimerange

文章目录 功能需求今天是 2025-01-09示例1示例2 代码 Vue2 功能需求 时间范围选择器,最大时间选择尺度为一个月。 今天是 2025-01-09 示例1 选择 2025-01-02 日 禁用未来日期(2025-01-09之后日期) 禁用上月2号(31日之前&#…...

ES6的高阶语法特性

一、模板字符串的高级用法 1.1.模板字符串的嵌套 模板字符串的嵌套允许在一个模板字符串内部再嵌入一个或多个模板字符串。这种嵌套结构在处理复杂数据结构或生成具有层级关系的文本时非常有用。 1. 嵌套示例 假设我们有一个包含多个对象的数组,每个对象都有名称、…...

数据在内存的存储

数据类型介绍 前面我们已经学习了基本的内置类型: char //字符数据类型 1字节 打印%c short //短整型 2字节 打印%hd int //整形 4字节 打印%d long long int //长整型 4/8字节 打印%ld l…...

【微服务】面试题 6、分布式事务

分布式事务面试题讲解 一、问题背景与解决方案概述 因微服务项目涉及远程调用可能引发分布式事务问题,需解决。主流解决方案有阿里 Seata 框架(含 XA、AT、TCC 模式)和 MQ。 二、Seata 框架关键角色 事务协调者(TC)&…...

VMware中Ubuntu如何连接网络?安排!

一、设置NAT模式 1、关闭Ubuntu虚拟机: 确保Ubuntu已经完全关机,而不是挂起或休眠状态。 2、编辑虚拟网络设置: 在VMware主界面点击“编辑”菜单,选择“虚拟网络编辑器”。 如果需要,选择VMnet8 (NAT模式)并点击“更改…...

最近在盘gitlab.0.先review了一下docker

# 正文 本猿所在产品的代码是保存到了一个本地gitlab实例上,实例是别的同事搭建的。最近又又又想了解一下,而且已经盘了一些了,所以写写记录一下。因为这个事儿没太多的进度压力,索性写到哪儿算哪儿,只要是新了解到的…...

TCP封装数据帧

void *send_data(void *arg) //这是一个发送数据的线程 {int sockfd init_tcp_cli("192.168.0.148",50000) //传ip和port&#xff0c;port 50000是因为大概前五万都被其它服务所占用&#xff0c;50000后是私人ipif(sockfd < 0){return NULL;}unsigned char …...

基于Springboot+Vue的仓库管理系统

开发一个基于Spring Boot和Vue的仓库管理系统涉及到前端和后端的开发。本文呢&#xff0c;给出一个简单的开发步骤指南&#xff0c;用于指导初入的新手小白如何开始构建这样一个系统&#xff0c;如果**你想直接学习全部内容&#xff0c;可以直接拉到文末哦。** 开始之前呢给小…...

工厂人员定位管理系统方案(二)人员精确定位系统架构设计,适用于工厂智能管理

哈喽~这里是维小帮&#xff0c;提供多个场所的定位管理方案&#xff0c;如需获取工厂人员定位管理系统解决方案可前往文章最下方获取&#xff0c;如有项目合作及技术交流欢迎私信我们哦~撒花 在上一篇文章中&#xff0c;我们初步探讨了工厂人员定位管理系统的需求背景以及定位方…...

机器学习特征重要性之feature_importances_属性与permutation_importance方法

一、feature_importances_属性 在机器学习中&#xff0c;分类和回归算法的 feature_importances_ 属性用于衡量每个特征对模型预测的重要性。这个属性通常在基于树的算法中使用&#xff0c;通过 feature_importances_ 属性&#xff0c;您可以了解哪些特征对模型的预测最为重要…...

Go学习:多重赋值与匿名变量

目录 1. 变量的多重赋值 1.1 基本语法格式 1.2 交换变量值 2. 匿名变量的使用 1. 变量的多重赋值 1.1 基本语法格式 go语言中&#xff0c;可以将多个赋值语句 合并成 一句&#xff0c;比如&#xff1a; a : 10 b : 20 c : 30//a,b,c三个变量的赋值语句可以…...

解读Linux Bridge中的东西流向与南北流向

解读Linux Bridge中的东西流向与南北流向 在现代云计算和虚拟化环境中&#xff0c;网络流量的管理和优化变得越来越重要。Linux Bridge作为Linux内核提供的一个强大的二层交换机工具&#xff0c;在虚拟化和容器化应用中扮演着至关重要的角色。本文将深入探讨Linux Bridge中的两…...

spring mvn 国际化配置

目录 国际化配置测试测试自定义一个MessageSource类型的beanSpringApplicationUtil工具类MessageUtls工具类配置 国际化原理ResourceBundleMessageSource 国际化配置测试 测试 测试&#xff1a; 自定义一个MessageSource类型的bean import org.springframework.context.Mess…...

Windows下Dll在Unity中使用的一般方式

Windows下Dll在Unity中使用的一般方式 Unity中虽然已经有广泛的库和插件&#xff0c;但是相较于C的库生态而言&#xff0c;还是有一定的差距&#xff1b;因此本篇博文记录Windows下将C函数打包成动态链接库在Unity中使用的一般方法。 环境 Visual Studio 2019 &#xff0c; Uni…...

SQLite PRAGMA

SQLite的PRAGMA命令是一种特殊的命令&#xff0c;用于在SQLite环境中控制各种环境变量和状态标志。PRAGMA值可以被读取&#xff0c;也可以根据需求进行设置【0†source】。 PRAGMA命令的语法格式如下&#xff1a; 要查询当前的PRAGMA值&#xff0c;只需提供该PRAGMA的名字&am…...

Linux:进程控制

1.fork()函数初识 在linux中fork函数时非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进程返回子进程id&#xff0…...

一些计算机零碎知识随写(25年1月)-1

我原以为世界上有技术的那批人不会那么闲&#xff0c;我错了&#xff0c;被脚本真实了。 今天正隔着画画呢&#xff0c;手机突然弹出几条安全告警通知。 急忙打开服务器&#xff0c;发现问题不简单&#xff0c;直接关服务器重装系统..... 首先&#xff0c;不要认为小网站&…...

spring mvc源码学习笔记之十

前面的文章介绍了用 WebApplicationInitializer 或者 AbstractAnnotationConfigDispatcherServletInitializer 来代替 web.xml 。 我们学 java web 的时候就知道&#xff0c;servlet 容器会自动加载 web.xml。 那么&#xff0c;疑问就来了&#xff0c;WebApplicationInitialize…...

网络安全-安全散列函数,信息摘要SHA-1,MD5原理

安全散列函数 单向散列函数或者安全散列函数之所以重要&#xff0c;不仅在于消息认证(消息摘要。数据指纹)。还有数字签名&#xff08;加强版的消息认证&#xff09;和验证数据的完整性。常见的单向散列函数有MD5和SHA 散列函数的要求 散列函数的目的是文件、消息或者其它数据…...

《解锁计算机视觉智慧:编程实现图片场景文字描述的开源宝藏》

《解锁计算机视觉智慧&#xff1a;编程实现图片场景文字描述的开源宝藏》 一、MiniGPT-4&#xff1a;小模型撬动大视觉理解&#xff08;一&#xff09;项目概览&#xff08;二&#xff09;核心亮点&#xff08;三&#xff09;上手体验 二、ClipCap-Chinese&#xff1a;中文场景…...

vue封装axios请求

在vue项目中我们发送请求一般是使用axios 我们可以封装axios来避免冗余代码 首先引入axios npm install axios创建环境配置文件 NODE_ENV development VITE_APP_TITLE dev VITE_APP_BASE_API /test VITE_SERVE "http://127.0.0.1"上面是创建dev配置文件 也可以…...

【前端动效】原生js实现拖拽排课效果

目录 1. 效果展示 2. 效果分析 2.1 关键点 2.2 实现方法 3. 代码实现 3.1 html部分 3.2 css部分 3.3 js部分 3.4 完整代码 4. 总结 1. 效果展示 如图所示&#xff0c;页面左侧有一个包含不同课程&#xff08;如语文、数学等&#xff09;的列表&#xff0c;页面右侧…...

Python Selenium库入门使用,图文详细。附网页爬虫、web自动化操作等实战操作。

文章目录 前言1 创建conda环境安装Selenium库2 浏览器驱动下载&#xff08;以Chrome和Edge为例&#xff09;3 基础使用&#xff08;以Chrome为例演示&#xff09;3.1 与浏览器相关的操作3.1.1 打开/关闭浏览器3.1.2 访问指定域名的网页3.1.3 控制浏览器的窗口大小3.1.4 前进/后…...

AI华佗?港中大、深圳大数据研究院提出医疗推理大模型HuatuoGPT-o1

编辑 | 白菜叶 OpenAI o1 的突破凸显了通过增强推理能力来提高自然语言大模型&#xff08;LLM&#xff09;的应用潜力。然而&#xff0c;大多数推理研究都集中在数学任务上&#xff0c;而医学等领域尚未得到充分探索。 医学领域虽然不同于数学&#xff0c;但鉴于医疗保健的高…...

openEuler22.03系统使用Kolla-ansible搭建OpenStack

Kolla-ansible 是一个利用 Ansible 自动化工具来搭建 OpenStack 云平台的开源项目&#xff0c;它通过容器化的方式部署 OpenStack 服务&#xff0c;能够简化安装过程、提高部署效率并增强系统的可维护性。 前置环境准备&#xff1a; 系统:openEuler-22.03-LTS-SP4 配置&…...

uni-app无限级树形组件简单实现

因为项目一些数据需要树形展示&#xff0c;但是官网组件没有。现在简单封装一个组件在app中使用&#xff0c;可以无线嵌套&#xff0c;展开&#xff0c;收缩&#xff0c;获取子节点数据等。 简单效果 组件TreeData <template><view class"tree"><te…...

初学stm32 --- ADC单通道采集

目录 ADC寄存器介绍&#xff08;F1&#xff09; ADC控制寄存器 1(ADC_CR1) ADC控制寄存器 2(ADC_CR2) ADC采样时间寄存器1(ADC_SMPR1) ADC采样时间寄存器2(ADC_SMPR2) ADC规则序列寄存器 1(ADC_SQR1) ADC规则序列寄存器 2(ADC_SQR2) ADC规则序列寄存器 3(ADC_SQR3) AD…...

css盒子水平垂直居中

目录 1采用flex弹性布局&#xff1a; 2子绝父相margin&#xff1a;负值&#xff1a; 3.子绝父相margin:auto&#xff1a; 4子绝父相transform&#xff1a; 5通过伪元素 6table布局 7grid弹性布局 文字 水平垂直居中链接&#xff1a;文字水平垂直居中-CSDN博客 以下为盒子…...

django基于Python的智能停车管理系统

1.系统概述 1.定义&#xff1a;Django 基于 Python 的智能停车管理系统是一个利用 Django 框架构建的软件系统&#xff0c;用于高效地管理停车场的各种事务&#xff0c;包括车辆进出记录、车位预订、收费管理等诸多功能。 2.目的&#xff1a;它的主要目的是提高停车场的运营效…...

Rabbit Rocket kafka 怎么实现消息有序消费和延迟消费的

在消息队列系统中&#xff0c;像 RabbitMQ、RocketMQ 和 Kafka 这样的系统&#xff0c;都支持不同的方式来实现消息的有序消费和延迟消费。下面我们分别探讨这些系统中如何实现这两种需求&#xff1a; 1. RabbitMQ&#xff1a;实现消息有序消费和延迟消费 有序消费&#xff1…...

Kafka 会丢消息吗?

目录 01 生产者(Producer) 02 消息代理(Broker) 03 消费者(Consumer) 来源:Kafka 会丢消息吗? Kafka 会丢失信息吗? 许多开发人员普遍认为,Kafka 的设计本身就能保证不会丢失消息。然而,Kafka 架构和配置的细微差别会导致消息的丢失。我们需要了解它如何以及何时…...

状态模式详解与应用

状态模式&#xff08;State Pattern&#xff09;&#xff0c;是一种行为型设计模式。它允许一个对象在其内部状态改变时改变它的行为&#xff0c;使得对象看起来似乎修改了它的类。通过将不同的行为封装在不同的状态类中&#xff0c;状态模式可以避免大量的条件判断语句&#x…...

红队工具使用全解析:揭开网络安全神秘面纱一角

红队工具使用全解析&#xff1a;揭开网络安全神秘面纱一角 B站红队公益课&#xff1a;https://space.bilibili.com/350329294 学习网盘资源链接&#xff1a;https://pan.quark.cn/s/4079487939e8 嘿&#xff0c;各位网络安全爱好者们&#xff01;在风云变幻的网络安全战场上&am…...

【Spring】Redis缓存+ehcache

文章目录 基于Spring的RedisehcacheRedis 缓存配置Cacheable 注解CacheEvict 注解缓存配置 基于Spring的Redisehcache Redis 缓存配置 在项目中添加 Redis 的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot…...

【硬件介绍】Type-C接口详解

一、Type-C接口概述 Type-C接口特点&#xff1a;以其独特的扁头设计和无需区分正反两面的便捷性而广受欢迎。这种设计大大提高了用户的使用体验&#xff0c;避免了传统USB接口需要多次尝试才能正确插入的问题。Type-C接口内部结构&#xff1a;内部上下两排引脚的设计虽然可能不…...

网络传输层TCP协议

传输层TCP协议 1. TCP协议介绍 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一个要对数据的传输进行详细控制的传输层协议。 TCP 与 UDP 的不同&#xff0c;在于TCP是有连接、可靠、面向字节流的。具体来说&#xff0c;TCP设置了一大…...