探索数据宇宙:深入解析大数据分析与管理技术


✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭~✨✨

🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。

我是Srlua,在这里我会分享我的知识和经验。🎥

希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮

记得先点赞👍后阅读哦~ 👏👏

📘📚 所属专栏:数据库
欢迎访问我的主页:Srlua 获取更多信息和资源。✨✨🌙🌙

目录

大数据分析与管理技术

关于大数据

大数据的“4V”特性:

(1)体量大(Volume)

(2)速度快(Velocity)

(3)多样化(Variety)

(4)价值高(Value)

大数据存储技术

无法保证对大数据的查询效率:

无法应对繁多的数据类型:

横向可扩展能力不足:

很难满足数据高并发访问需求:

各种新型的NOSQL数据库的不断涌现

NewSQL数据库

大数据处理模式

1.分布式批处理模式的代表——Hadoop

执行流程

Hadoop 的优点

2.分布式流处理模式的代表——Storm

Storm 的优点

大数据处理的基本流程

1.数据集成

2.数据分析

3.数据解释


大数据分析与管理技术

关于大数据

  • 2008年,英国著名学术杂志《Nature 》上推出了大数据的专刊。
  • 美国一些知名数据管理领域的专家从专业角度出发联合发布了一份名为《大数据的机遇与挑战》(Challenges and opportunities with big data )的白皮书,从学术角度介绍了大数据的产生、处理流程和所面临的若干挑战。
  • 在工业界,全球知名的咨询公司麦肯锡公司(McKinsey)2011年也发表了一份名为《大数据:下一个创新、竞争和生产力的前沿》(Big Data: the next frontier for innovation,competition and productivity)的详尽报告对大数据带来的巨大影响,关键技术和应用领域进行了详尽阐述和分析。
  • 美国政府更是在 2012 年发布了“大数据研究和发展倡议”(Big data research and development initiative),斥资2 亿多美元计划在科研、环境、生物医学等领域利用大数据分析管理技术取得新的突破。
  • 我国政府也于2015年发布了《中共中央关于制定国民经济和社会发展第十三个五年规划的建议》提出实施国家大数据战略,超前布局下一代互联网。

目前“大数据”( Big data)已成为一个炙手可热的名词。从表面上看,其表示数据规模的庞大,但仅仅从数据规模上无法区分“大数据”这一概念和以往的“海量数据”(Massive data)和“超大规模数据”(Verylarge data)等概念的区别。

然而,至今仍没有一个对“大数据”公认的准确定义。

根据维基百科的解释,大数据指的是数据规模巨大到无法通过目前主流的软件工具在合理时间内完成处理的数据集。由此可见,随着时间的推移,计算机的计算能力、存储能力会不断提升,因此大数据的含义也会不断演化。

今天所说的大数据在未来可能就不算“大”了,但那时也一定仍会存在更大的数据是当时的技术处理不了的,因而仍会被称为大数据。可见,如何驾驭大数据将会成为人们长期需要面对的数据常态。

大数据的“4V”特性:

(1)体量大(Volume)

大数据体现在数据量极为庞大,其计量单位可以是 TB 级、 PB 级甚至更大的计量单位。

(2)速度快(Velocity)

大数据呈现出高速增长的态势,而且产生速度仍在不断加快。

(3)多样化(Variety)

大数据包含多种多样的数据类型,既可以是存储在二维表中的结构化数据,也可以是文本、视频、图像、语音、图(Graph)、文件等非结构化数据。

(4)价值高(Value)

大数据中蕴藏着巨大价值,但价值密度低。通过对大数据进行合理的分析,能够从中挖掘出很多有价值的信息,这些信息将有助于提高社会生产效率,提升人们生活质量,或者创造更大商业价值。

大数据存储技术

随着大数据时代的到来,传统关系型数据库的发展面对大数据时代的数据管理需求越来越力不从心,主要体现在:

无法保证对大数据的查询效率:

在大数据时代,短短的 1min 时间内新浪微博可以产生 2 万条微博,苹果可以产生 4.7 万次应用下载记录淘宝则可以卖出 6万件商品,百度可以产生90万次搜索记录。可见对于上述公司而言很快就会积累超过10亿的数据量。然而,由于关系模型严谨得过于死板,例如复杂的事务处理机制就成为了阻碍其性能提升的桎梏,使得传统关系型数据库在一张包含10 亿条记录的数据表之上进行 SQL查询时效率极低。

无法应对繁多的数据类型:

关系型数据库存储的是清洁规整的结构化数据,然而在大数据时代,数据种类繁多,包括文本、图片、音频和视频在内的非结构化数据所占比重更是超过了90%,这无疑是关系型数据库所不能应对的。

横向可扩展能力不足:

传统关系型数据库由于自身设计机理的原因,通常很难实现性价比较高的“横向扩展”,即基于普通廉价的服务器扩充现有分布式计算系统,使系统的处理能力和存储能力得到提升。而“横向扩展”是大数据时代计算和存储的重要需求。

很难满足数据高并发访问需求:

大数据时代诸如购物记录、搜索记录朋友圈消息等信息都需要实时更新,这就会导致高并发的数据访问,可能产生每秒高达上万次的读写请求。在这种情况下,传统关系型数据库引以为傲的事务处理机制和包括语法分析和性能优化在内的查询优化机制却阻碍了其在并发性能方面的表现。

各种新型的NOSQL数据库的不断涌现

  • 在以上大数据时代的数据管理需求的推动下,各种新型的NOSQL数据库不断涌现,一方面弥补了关系型数据库存在的各种缺陷,另一方面也撼动了关系型数据库的传统垄断地位。
  • NoSQL(Not only SQL)不是指某个具体的数据库,是对非关系型数据库的统称。
  • NoSQL数据库采用类似键/值、列族、文档和图(Graph)等非关系数据模型,通常没有固定的表结构,没有复杂的查询优化机制,也没有严格的事务 ACID 特性的约束,因此和关系型数据库相比,NOSQL数据库具有更优秀的查询效率更灵活的横向可扩展性和更高并发处理性,并能够存储和处理非结构化数据。

NOSQL数据库根据所采用的数据模型的不同,可以分为以下四大类:

  1. 键值存储(Key-Value Stores)这类数据库以键值对的形式存储数据,每个键对应一个值。它们通常提供高性能的存储和检索,因为数据可以根据键进行快速读写操作。例如Redis和Amazon DynamoDB就是典型的键值存储数据库。

  2. 列存储(Column Stores)列存储数据库按列而不是按行来存储数据,每个列族包含多个列,可以独立地进行读写操作。这种数据库适合需要查询大量数据的场景,比如用于OLAP(联机分析处理)和数据分析。Apache Cassandra和Apache HBase是常见的列存储数据库。

  3. 文档数据库(Document Databases)文档数据库以文档为单位存储数据,通常采用JSON或类似格式来表示文档。它们适用于存储结构化和半结构化数据,并能高效地完成复杂查询。MongoDB和CouchDB是广泛使用的文档数据库。

  4. 图形数据库(Graph Databases)图形数据库使用图形结构来表示和存储数据,数据以节点和边的形式组织,节点代表实体,边代表实体之间的关系。图形数据库适合处理复杂的关系数据,如社交网络和知识图谱。Neo4j和Amazon Neptune是常见的图形数据库。

总结:这四种类型的NoSQL数据库各有特点,它们解决了传统关系型数据库在某些应用场景下的局限性,为大数据处理、实时 web 应用等提供了更灵活、可扩展的解决方案。

NOSQL数据库不受关系模型约束,具有较好的扩展性,很好地弥补了传统关系型数据库的缺陷。但NoSQL数据库并没有一个统一的架构,每一类 NOSQL数据库都有各自适用的场景。同时NOSQL数据库不能严格保证事务的 ACID 特性,导致数据的一致性和正确性没法保证。而且NOSQL数据库缺乏完备系统的查询优化机制,在复杂查询方面的效率不如关系型数据库。为此业界又提出了 NewSQL数据库。

NewSQL 数据库是对各种新的可扩展、高性能数据库的简称这类数据库不仅具有 NOSQL对海量数据的存储管理能力,还保持了传统数据库支持事务 ACID 和 SQL等特性。

不同 NewSQL数据库的内部架构差异较大,但是有两个共同的特点:都支持关系数据模型;都是用SQL作为其主要的访问接口。

NewSQL数据库

目前市面上已有的 NewSQL数据库有Spanner、PostgreSQL、SAP HANA、 VoltDB、MemsQL等。

Spanner 是谷歌公司研发的、可扩展的、多版本、全球分布式、同步复制数据库,是谷歌公司第一个可以全球扩展并支持数据外部一致性的数据库。

PostgresQL是很受欢迎的开源数据库,稳定性强,有大量的几何、字典数组等数据类型,在地理信息系统领域处于优势地位。

SAP HANA 基于内存计算技术,是面向企业分析性应用的产品,主要包括内存计算引擎和 HANA 建模工具两部分。

VoltDB 是基于内存的关系型数据库,其采用NewSQL体系架构,既追求与 NOSQL体系架构系统具有相匹配的系统可展性,又维护了传统关系型数据库系统的事务特性和 SQL语言访问特性,在执行高速并发事务时比传统的关系型数据库系统快 45 倍。

MemSQL有符合 ACID 特性的事务处理功能、 SQL兼容性以及高度优化的 SQL存储引擎,提供了与 MySQL相同的编程接口,但速度比 MySQL快 30 倍。

大数据处理模式

大数据具有数据体量大、产生速度快的特点,因而传统的单机串行处理模式往往难以完成对大数据的高效处理,必须借助并行分布式处理方法。根据大数据应用类型的不同,大数据处理模式分为批处理(Batch processing)和流处理(Stream processing )两种。下面以 Apache的 Hadoop 和 Storm 为例分别介绍批处理和流处理的典型处理模式。

1.分布式批处理模式的代表——Hadoop

  • 分布式批处理模式的代表-- Hadoop批处理则是对数据先存储后统一处理。 Hadoop 是一个由 Apache 基金会用 Java 语言开发的开源分布式批处理架构,其中实现了 MapReduce 批处理编程模型。谷歌公司在2004年提出的 MapReduce 编程模式是最具代表性的分布式数据批处理模式。
  • MapReduce 模型包含三种角色:Master 进程、Map 进程和Reduce 进程,其中 Master进程负责任务的划分与调度,Map进程用于执行 Map 任务, Reduce 进程用于执行 Reduce任务。该模型的主要思想是Master进程把大规模的数据划分成多个较小的部分,分别映射到多个 Map 进程进行并行处理得到中间结果,之后由 Reduce 进程对这些中间结果进行规约、整理,进而得到最终结果。

MapReduce执行流程

执行流程

一个MapReduce 作业(MapReduce Job)的执行流程如下:

1)首先从用户提交的程序创建出 Master进程,Master 进程启动后划分任务并根据输入文件所在位置和集群信息选择机器创建出 Map 进程或 Reduce 进程;

2) Master进程将划分好的任务分配给 Map 进程和 Reduce 进程执行,任务划分和任务分配可以并行执行;

3) Map 进程执行 Map 任务,即读取相应的输入文件,根据指定的输入格式不断地读<key,value>对,并对每一个<key,value>对执行用户自定义的 Map 函数;

4) Map 进程不断往本地内存缓冲区输出中间<key,value>对结果,等到缓冲区超过一定大小时写入到本地磁盘中,Map 进程将中间结果组织成文件,便于后续Reduce 进程获取;

5)Map 任务执行完成后向 Master 进程汇报, Master 进程进一步将该消息通知Reduce 进程。 Reduce 进程向 Map 进程请求传输生成的中间结果数据,当Reduce 进程获取完所有的中间结果后,需要进行排序操作;

6)Reduce 进程执行 Reduce 任务,即对中间结果的每一个相同的 key 及 value集合,执行用户自定义的 Reduce 函数, Reduce 函数的输出结果被写入到最终的输出文件。

除了使用 MapReduce 批处理编程框架, Hadoop 的核心内容还包括HDFS (Hadoop Distributed File System, Hadoop 分布式文件系统)

HDFS 是一个高度容错性的系统,适合部署在廉价的机器上。HDFS 能提供高吞吐量的数据访问,适合处理大规模数据集的应用程序。

Hadoop 的优点

包含以下几个方面

(1)方便部署。 Hadoop 可以方便部署在由一般商用机器构成的大型集群或者云计算服务之上。

(2)容错健壮。即使集群中的计算机硬件频繁出现失,Hadoop也能够处理大多数此类故障

(3)容易扩展。 Hadoop 通过增加集群节点,可以线性地扩展以处
理更大的数据集。

(4)使用简单。 Hadoop 允许用户快速编写出高效的并行代码(5)免费、开源。 Hadoop 是一款开源批处理框架,可以免费使用。

Hadoop 的典型应用包括网络搜索、日志处理、推荐系统、数据分析、视频图像分析和数据集成等。

2.分布式流处理模式的代表——Storm

        和先存储再处理的批处理模式不同,流处理将源源不断产生的数据视为数据流,每当新的数据到达系统时就立刻对数据进行处理并返回结果。可见,流处理适合包括网页点击量统计、股票交易数据分析和传感器网络事件检测等实时分析应用。 Apache storm 是一个免费、开源的分布式实时流处理系统。Storm 在流处理中的地位相当于Hadoop 对于批处理的重要地位。

        Storm 基于拓扑(Topology)实现对数据流的分布式实时处理拓扑是一个有向无环图(Directed Acyclic Graph),一个典型的 Storm 的拓扑结构。

        Topology 中数据以元组(Tuple)的形式进行转发和处理。和Hadoop 中的 MapReduce 作业不同,Storm 的拓扑一经启动将永久运行,不断处理实时到达的数据元组。

一个典型的 Storm 拓扑

Storm 拓扑由 Spout 和 Bolt 两类组件构成。 Spout 作为数据产生者,从一个外部源(例如Kafka)读取数据并并向 Storm拓扑中喷射数据元组。Bolt作为数据消费者,对所接收的数据元组进行处理和转发。

一个复杂的 Storm 拓扑可由多个 Spout 和多个 Bolt 组成,且可以为每个 Spout 或 Bolt 设置其任务(Task)并行度,由多个任务并行完成其处理逻辑。 Storm 提供多种组件间的数据分发策略,例如,随机分组(Shuffle grouping)、按字段分组(Field grouping)、全局分组(Global grouping )和广播发送(All grouping),用以完成 Storm 拓扑中上游组件的各个任务向下游组件的各个任务的数据分发。

Storm 的优点

包含以下几个方面

(1)易整合: Storm 可以方便与数据库系统进行整合。

(2)易使用: Storm 提供丰富的 API,方便用户的使用

(3)易扩展: Storm 可以方便部署和运行在大规模分布式集群中。

(4)易纠错: Storm 可以自行重启故障节点,并完成对故障节点任务的重新分配。

(5)可靠的消息处理: Storm 保证每个消息都能被系统完整处理。

(6)免费、开源: Storm 是一款开源流处理框架,可以免费使用。

大数据处理的基本流程

1.数据集成

        大数据的一个重要特性就是多样化(Variety),这意味着产生大数据的来源广泛、类型庞杂、并经常存在数据冗余和错漏现象,给数据处理带来了巨大挑战。要想处理大数据,首要任务就是对数据源抽取的数据进行合理的集成。

        数据集成是指通过访问、解析、规范化、标准化、整合、清洗、抽取、匹配、分类、修饰和数据交付等功能把不同来源、格式、特点、性质的数据在逻辑上或物理上有机地集中,从而为后期数据处理提供保障。数据集成的目的是保证数据的质量和可信性。如果数据集成工作没有做好,会导致整个大数据项目的延期甚至失败。因此,在大数据给人们带来价值之前,必须对其进行合理的集成。

2.数据分析

        数据分析是整个大数据处理流程中的核心环节,因为大数据所蕴含的价值需要通过数据分析得以实现。传统的数据分析技术包括数据挖掘、机器学习、统计分析等,在用于处理大数据时可能需要进行必要的调整,因为这些技术在处理大数据时面临一些新的挑战,体现在以下几个方面:

        大数据价值大(Value)的特性虽然意味着大数据蕴含了巨大价值,但是大数据同时也存在价值密度低的特点,体现在大数据中存在大量的冗余数据、噪音数据、遗漏数据和错误数据。因此,在进行数据分析之前,需要对大数据进行数据清洗、整合等集成工作。然而,对如此大规模的数据进行清洗和整合无疑会对硬件环境和算法性能提出新的要求。

3.数据解释

        虽然数据分析是大数据处理的核心,但是用户更关注对分析结果的展示。即使分析过程高效、分析结果正确,如果没有通过容易理解的方式给用户展示大数据的分析结果将会大大降低分析结果的实际价值,极端情况下甚至会误导用户。
        传统的数据解释方4法是在计算机终端上打印显示分析结果或以文本的形式向用户呈现分析结果。然而,大数据的分析结果往往规模大而且结果之间的关系错综复杂,因而传统的数据解释方法不适用于解释大数据的分析结果。
        目前,业界推出了很多数据可视化技术,用图表等形象的方式向用户展现大数据的分析结果。常见的数据可视化技术包括标签云(Tag cloud)、历史流(History flow)和空间信息流(Spatial information flow)等。

希望对你有帮助!加油!

若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!

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

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

相关文章

第六课:NIO简介

一、传统BIO的缺点 BIO属于同步阻塞行IO,在服务器的实现模型为&#xff0c;每一个连接都要对应一个线程。当客户端有连接请求的时候&#xff0c;服务器端需要启动一个新的线程与之对应处理&#xff0c;这个模型有很多缺陷。当客户端不做出进一步IO请求的时候&#xff0c;服务器…

《Spring Security 简易速速上手小册》第4章 授权与角色管理(2024 最新版)

文章目录 4.1 理解授权4.1.1 基础知识详解授权的核心授权策略方法级安全动态权限检查 4.1.2 主要案例&#xff1a;基于角色的页面访问控制案例 Demo 4.1.3 拓展案例 1&#xff1a;自定义投票策略案例 Demo测试自定义投票策略 4.1.4 拓展案例 2&#xff1a;使用方法级安全进行细…

c语言数据结构(5)——栈

欢迎来到博主的专栏——C语言数据结构 博主id&#xff1a;代码小豪 文章目录 栈栈的顺序存储结构栈的插入空栈的初始化栈的删除判断空栈读取栈顶元素数据 实现顺序栈的所有代码栈的链式存储结构链式栈的初始化链式栈的入栈操作链式栈的出栈操作 实现链式栈的所有代码 栈 栈是…

学习网络编程No.11【传输层协议之UDP】

引言&#xff1a; 北京时间&#xff1a;2023/11/20/9:17&#xff0c;昨天成功更文&#xff0c;上周实现了更文两篇&#xff0c;所以这周再接再厉。当然做题任在继续&#xff0c;而目前做题给我的感觉以套路和技巧偏多&#xff0c;还是那句话很多东西不经历你就是不懂&#xff…

【Python】2. 基础语法

常量和表达式 我们可以把 Python 当成一个计算器, 来进行一些算术运算. 注意: print 是一个 Python 内置的 函数, 这个稍后详细介绍. 可以使用 - * / ( ) 等运算符进行算术运算. 先算乘除, 后算加减. 运算符和数字之间, 可以没有空格, 也可以有多个空格. 但是一般习惯上写一…

LDR6328芯片:智能家居时代的小家电充电革新者

在当今的智能家居时代&#xff0c;小家电的供电方式正变得越来越智能化和高效化。 利用PD&#xff08;Power Delivery&#xff09;芯片进行诱骗取电&#xff0c;为后端小家电提供稳定电压的技术&#xff0c;正逐渐成为行业的新宠。在这一领域&#xff0c;LDR6328芯片以其出色的…

Qt下使用modbus-c库实现PLC线圈/保持寄存器的读写

系列文章目录 提示&#xff1a;这里是该系列文章的所有文章的目录 第一章&#xff1a;Qt下使用ModbusTcp通信协议进行PLC线圈/保持寄存器的读写&#xff08;32位有符号数&#xff09; 第二章&#xff1a;Qt下使用modbus-c库实现PLC线圈/保持寄存器的读写 文章目录 系列文章目录…

前端Vue3项目如何打包成Docker镜像运行

将前端Vue3项目打包成Docker镜像并运行包括几个主要步骤&#xff1a;项目打包、编写Dockerfile、构建镜像和运行容器。下面是一个基本的流程&#xff1a; 1. 项目打包 首先&#xff0c;确保你的Vue3项目可以正常运行和打包。在项目根目录下执行以下命令来打包你的Vue3项目&am…

nest.js使用nest-winston日志一

nest-winston文档 nest-winston - npm 参考&#xff1a;nestjs中winston日志模块使用 - 浮的blog - SegmentFault 思否 安装 cnpm install --save nest-winston winstoncnpm install winston-daily-rotate-file 在main.ts中 import { NestFactory } from nestjs/core; im…

【5G 接口协议】GTP-U协议介绍

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

基础小白快速入门Python------>模块的作用和意义

模块&#xff0c; 这个词听起来是如此的高大威猛&#xff0c;以至于萌新小白见了瑟瑟发抖&#xff0c;本草履虫见了都直摇头&#xff0c;好像听上去很难的样子&#xff0c;但是但是&#xff0c;年轻人&#xff0c;请听本少年细细讲述&#xff0c;他只是看起来很难&#xff0c;实…

GO-接口

1. 接口 在Go语言中接口&#xff08;interface&#xff09;是一种类型&#xff0c;一种抽象的类型。 interface是一组method的集合&#xff0c;接口做的事情就像是定义一个协议&#xff08;规则&#xff09;&#xff0c;只要一台机器有洗衣服和甩干的功能&#xff0c;我就称它…

【go语言开发】swagger安装和使用

本文主要介绍go-swagger的安装和使用&#xff0c;首先介绍如何安装swagger&#xff0c;测试是否成功&#xff1b;然后列出常用的注释和给出使用例子&#xff1b;最后生成接口文档&#xff0c;并在浏览器上测试 文章目录 安装注释说明常用注释参考例子 文档生成格式化文档生成do…

大模型生成,Open API调用

大模型是怎么生成结果的 通俗原理 其实&#xff0c;它只是根据上文&#xff0c;猜下一个词&#xff08;的概率&#xff09;…… OpenAI 的接口名就叫【completion】&#xff0c;也证明了其只会【生成】的本质。 下面用程序演示【生成下一个字】。你可以自己修改 prompt 试试…

【C++】类的转换函数

使用场景 C中当你创建了一个类&#xff0c;你想把这个类对象转换成基本类型的函数。类对象->基本类型对象 原理 如下实例&#xff0c;设计一个分数类&#xff0c;实现分数转换成double 浮点数的转换函数。并在mian函数隐式调用。 #include<iostream> class Fractio…

Python爬虫Cookies 池的搭建

Cookies 池的搭建 很多时候&#xff0c;在爬取没有登录的情况下&#xff0c;我们也可以访问一部分页面或请求一些接口&#xff0c;因为毕竟网站本身需要做 SEO&#xff0c;不会对所有页面都设置登录限制。 但是&#xff0c;不登录直接爬取会有一些弊端&#xff0c;弊端主要有…

南京师范大学计电院数据结构课设——排序算法

1 排序算法 1.1 题目要求 编程实现希尔、快速、堆排序、归并排序算法。要求首先随机产生10000个数据存入磁盘文件&#xff0c;然后读入数据文件&#xff0c;分别采用不同的排序方法进行排序并将结果存入文件中。 1.2 算法思想描述 1.2.1 随机数生成 当需要生成一系列随机数…

windows 11 前后端项目部署

目录 1.准备环境&#xff1a; 2.安装jdk 测试&#xff1a;winr 输入cmd 3.安装tomcat 4.安装mysql 远程导入数据&#xff1a; 外部后台访问&#xff1a;192.168.232.1:8080/crm/sys/loginAction.action?usernamezs&password123 5.安装nginx 前后端部署&#xff1…

qsort函数的模拟实现(冒泡排序模拟)

冒泡排序&#xff1a; 从第一个元素开始&#xff0c;依次比较相邻的两个元素&#xff0c;如果顺序不对就交换它们。 经过一轮遍历后&#xff0c;最大&#xff08;或最小&#xff09;的元素会排在最后。 重复进行上述步骤&#xff0c;直到没有任何元素需要交换&#xff0c;即…

爬虫入门到精通_实战篇8(分析Ajax请求并抓取今日头条美食美图)_界面上抓取Ajax方式

1 目标 目标&#xff1a; 抓取今日头条美食美图&#xff0c;如下&#xff1a; 一些网页直接请求得到的HTML代码并没有在网页中看到的内容&#xff0c;因为一些信息是通过Ajax加载&#xff0c;并通过js渲染生成的&#xff0c;这时就需要通过分析网页的请求来获取想要爬取的内容…