揭秘大数据 | 9、大数据从何而来?

news2025/4/21 1:32:37

在科技发展史上,恐怕没有任何一种新生事物深入人心的速度堪比大数据。

如果把2012年作为数据量爆发性增长的第一年,那么短短数年,大数据就红遍街头巷尾——从工业界到商业界、学术界,所有的行业都经受了大数据的洗礼。从技术的迭代到理念的更新,大数据无处不在。

时至今日,在日常的生产生活中,每时每刻都有数以亿计的设备在产生巨大体量的数据……

1、大数据的催化剂

那么到底是什么催生了大数据呢?大数据的三大催化剂分别是社交媒体、移动互联网与物联网(Internet of Things,IoT)(见图1)​。

图1:大数据的三大催化剂

 (1)社交媒体

社交媒体的雏形应该是公告板系统(Bulletin Board System,BBS)。最早的BBS是美国加州旧金山湾区在1973年出现的社区记忆系统,当时网络连接是通过调制解调器(Modem)远程接入一款叫作SDS 940的分时处理大型主机来实现的。我国最早的BBS是建设于1992年的“长城”站,据说它孕育了曾活跃了中国最早一批像马化腾、求伯君、丁磊等本土互联网创业者的惠多网。1994年中国科学院建立了真正意义上的基于互联网的BBS——曙光站。而同时在线超过100人的第一个国内大型BBS则是长盛不衰的水木清华站(现名为水木社区)​。它的起因是清华大学的同学们对于连接隔壁中国科学院的曙光站竟然要先从中国教育网跑到太平洋彼岸的美国再折返回中科院网络表示愤懑,于是自立门户成立了水木清华站——它最早是在一台386PC上提供互联网接入服务的。

早期的BBS主要使用远程终端协议(Telnet),其内容以纯文本的方式呈现。随着网络带宽的增大,社交媒体的形式很快发展成为早期的在线服务,例如20世纪80年代初开始提供的新闻组,也叫新闻服务器(NewsGroups或Usenet)​。简单来说,Usenet是电子邮件与Web论坛的混合体。Usenet之后社交网络逐步演进为以HTTP等为主要通信协议的方式,内容也愈发地图文并茂。从我们熟知的各种社交网站(Social Networking Site,SNS)到各类即时通信(InstantMessaging,IM)工具演进到今天的具有多种功能的社交类移动应用,如微信、微博、色拉布(Snapchat)、脸书即时通(Facebook Messenger)等,它们都提供丰富的内容呈现方式。

值得一提的是,GWI发布的《2021社交媒体趋势报告》表明,使用SNS作为获取新闻、其他资讯方式的人数呈上升趋势,也就是说SNS正在作为新兴的媒体取代传统的报刊、电视台等媒体,这也是为什么我们越来越多地把SNS叫作社交媒体。在国外,脸书(Fackbook)、Instagram是比较受欢迎的社交平台;在国内,微博是比较受欢迎的社交平台。

(2)移动互联网

移动互联网是互联网的高级发展阶段,也是互联网发展的必然。移动互联网是以移动设备——特别是智能手机、平板电脑等移动终端设备——全面进入我们的生活、工作为标志的。

移动互联设备的发展如此迅速,QuestMobile发布的《2022中国移动互联网秋季报告》表明,移动互联网的用户黏性不断增强,且向银发群体渗透,46岁以上的中老年群体为用户增长主要来源。全球技术情报公司ABIResearch发布的数据预测,到2026年全球5G移动数据流量将达到1676EB,复合年增长率为 63%。从1992年到2019年,整个互联网数据流量的增长达到了惊人的45000000倍——1992年硬盘刚进入1GB的时代,每天100GB的互联网数据流量相当于全世界每天交换了100块硬盘之多的数据;1997年这一数据增长了24倍,平均每小时100块1GB硬盘,而同一时期的硬盘容量增长到了16~17GB。1997—2002年是互联网猛烈增长的5年,互联网数据流量迅速达到了100GB/s的水平,而同一年硬盘寻址空间刚刚突破137GB的限制;2007年又增长了20倍到达了2000GB/s的水平,同年日立(Hitachi)公司也推出了第一块1TB(1000GB)容量的硬盘;2014年的互联网数据流量已经突破16TB/s,无独有偶,希捷(Seagate)公司也在同年发布了业界第一款8TB的硬盘……但无论从哪个角度看,互联网数据流量的增速都超过了单块硬盘的扩容速度,这也从另一个侧面解释了为什么我们的IT基础架构一直处于不断的升级、扩容中——大(量)数据联网交换的需求推动!如图2-2所示,IDC预测,到2025年,全球数据领域的数据规模将增长到175 ZB。

图2:IDC预测的全球数据按年增加量

(3)物联网

物联网的起源可以追溯到1999年。当时在宝洁(Procter & Gamble,P&G)公司工作的英国人凯文·艾什顿(Kevin Ashton)最早冠名使用了IoT字样。同年,他在麻省理工学院成立了一个旨在推广射频识别(Radio Frequency Identification,RFID)技术的自动识别中心。对于宝洁公司来说,最直接的效益就是利用RFID技术,并将其与无线传感器的结合对其供应链系统进行有效的跟踪与管理。目前物联网的定义在业界有很多种,最简洁明了的定义为物联网是一个基于互联网、传统电信网等信息承载体,让所有能够被独立寻址的普通物理对象实现互联互通。物联网、传感器网络、泛在网之间的关系如图2所示。

图3:物联网、传感器网络、泛在网之间的关系

 中国人对物联网的熟知应当是2009年,时至今日,世界上许多国家已将物联网的发展提升至国家战略层面,其中典型代表有中国的“感知中国”​、美国的“智慧地球”​、欧盟的“物联网—欧洲行动计划”​、日本的“I-Japan”​、韩国的“U-Korea”等。我国已将物联网明确列入《国家中长期科学和技术发展规划纲要(2006—2020年)​》和2050年国家产业路线图中。未来,物联网的应用将深入工业生产、家居生活、交通物流、环境监测、公共安全、军事国防等生产与生活的方方面面。

社交媒体、移动互联网、物联网三大催化剂让数据量在过去几十年间呈指数级增长。此外,数据的产生速率及数据的多样性与复杂性都在随之增长。对于数据的这三大特性——数据量(Volume)、产生速度(Velocity)、多样性(Variety),我们通常称之为大数据的3V。如果再考虑数据来源的可靠性与真实性以及数据的价值,则3V可以扩展为5V。不过通常业界对数据价值的定义掺杂了很多主观因素,因此业界通常习惯引用IBM公司最早提出的4V——The Four V's of BigData,即大数据的四大特征,如图4所示。

图4:大数据的四大特征


2、数据→大数据→快数据→深数据 

大数据从何而来?作为一门技术,大数据有哪些分支与流派?纵观人类发展史,围绕信息的记录、整合、分析与处理方式及规模,我们将其分为6个阶段,如图5所示。如果单纯地从数据处理的核心特点来看,又可以分为:从数据到大数据(突出以规模为主)​,再到快数据(突出处理速度的挑战)​,最后到深数据(突出数据处理深度、查询复杂度增加的挑战)​。

图5:人类围绕信息及信息技术发展史的6个阶段

(1)上古时代—18世纪

在人类发展早期的蒙昧时代,传递信息和记事的方式可以用6个字来概括:垒石、刻木、结绳。垒石以计数,刻木以求日,结绳以记事。这3种貌似离我们很遥远的方式经常被称为原始会计手段——即便在今天,它们在我们的文化和生活当中依然留有深深的印记——流落荒岛、漂流海上,刻木求日依然是最有效的方法;而汉字当中有大量文字也可以找到结绳的影子,汉朝人郑玄在《周易注》中说:​“古者无文字,结绳为约,事大,大结其绳;事小,小结其绳。​”在印加文化当中也有结绳记数的实例,并且有学者发现印加绳的穿系方法与中国结的穿系方式惊人的一致。这或为两种文明存在传承关系的证据之一(见图6)​。

图6:中国古代结绳记事与文字及印加绳


原始会计学的这几种记事或计数的方式显然不能承载足够多的信息与数据,直到文字的出现,这种情况才得到改善。以中文的发展为例,可归纳为结绳→陶文→甲骨文→金文→大篆→小篆→隶书→草书、楷书、行书等。文字所能蕴含的信息无比巨大,最典型的是在古籍善本中记录的户籍管理与人口统计信息。中国早在夏、商、周3个朝代就已经有了比较完备的统计制度,而人类文明更早还可以追溯到古巴比伦在公元前4000年前后举办过的地籍、畜牧业普查。

统计学发展为一门系统化的科学可以追溯到17世纪中叶的英国,伦敦的缝纫用品商人、业余统计学家约翰·格兰特(John Graunt)在1662年出版了《关于死亡表的自然的和政治的观察》(Natural and Political Observations Made upon the Bills of Mortality)一书,书中使用了统计学与精算学的方式对伦敦市的人口建立了一张寿命表,并对各地区的人口进行了统计分析与估算——我们来看一下当时大的时代背景:以黑死病(鼠疫)爆发为起点的第二次鼠疫大流行已经肆虐了欧洲300年之久,而在伦敦这样人群密度高的城市中,英国政府需要一套针对鼠疫等传染病爆发的预警系统——格兰特的分析与建模工作可以称作人口统计学与流行病学的鼻祖。 

(2)19世纪中叶
 

图7:马修·F.莫里绘制的大西洋—太平洋洋流与季风图(1841年,局部)

人类对数据进行收集、处理、分析后从中获得信息并对信息提炼而成为知识的实践从来没有停止过,只是在形式上从早期人类的原始会计学,发展到3个世纪前的古典统计学。时光再向前走到19世纪中叶——出现了最早的众包——1848—1861年美国海军海洋学家、天文学家马修·F.莫里(Matthew F. Maury)通过不断地向远航的海员们提供数以十万计的免费的季风与洋流图纸,并以海员们返回后提供详细标准化的航海日记作为交换条件整理出了一整套详尽的大西洋—太平洋洋流与季风图(见图2-7)​。

众筹带来的一个显著结果是在1851年与1853年间,由同一艘船根据马修·F.莫里基于众筹而发布的两本手册《季风和洋流图》​《航海指南》打破了从纽约到旧金山的最短航行时间纪录89天,比同一时期的其他船只缩短了超过一半的时间,而这一纪录则保持了136年之久!要知道贯穿美国大陆连接东西海岸的太平洋铁路直到1869年才修建成功,而打通连接大西洋与太平洋的巴拿马运河直到1914年才开通,在此之前,从东海岸的纽约到西海岸的旧金山要通过南美洲最南端的好望角,整条航线超过25000km(约13000海里)​。

(3)第二次世界大战—20世纪80年代

19世纪的众筹的力量虽然巨大,但在数据处理的方式上还受限于手工整理。真正的电子数字可编程计算机是第二次世界大战后期在英国被发明的,盟军为了破解以德国为首的轴心国的军用电报密码——尤为著名的是恩尼格玛(Enigma)密码机——一款典型的民用转军用密码生成设备,在一个有6根引线的接线板上一对字母的可互换可能性有1000亿次,而10根引线的可能性则高达150万亿次。对于如此规模的海量数据组合可能性,使用人工排序进行暴力破解的方式显然不会成功。英国数学家艾伦·图灵(Alan Turing)在1939—1940年通过他设计的电动机械设备Bombe来破解纳粹不断升级优化的Enigma密码时意识到了这一点,于是在1943年他找到了另一位英国人汤米·佛朗斯(TommyFlowers)。仅用了11个月的时间,1944年年初,佛朗斯设计的Colossus计算机面世,并成功破解了当时最新的德军密码。Enigma、Bombe和Colossus之间的对比如图8所示。每台Colossus计算机的数据处理速度是5000个字符每秒,纸带以12.2m/s的速度移动,并且多台Colossus可以并行操作——我们今天称之为“并行计算”​。

图8:Enigma、Bombe、Colossus之间的对比


20世纪50—70年代是计算机技术飞速发展的20年,从50年代中期开始的基于晶体管技术的晶体管计算机到60年代的大型主机,再到70年代的小型主机的出现,人类对数据的综合处理能力、分析能力及存储能力都得到了大幅提高,而数据分析能力的提高是与数据存储能力的提高相对应的。在软件层面,最值得一提的是数据库的出现。

在这里,我们需要介绍一下数据库的发展史,以便读者能对本节及相关内容有全面的了解。数据库可以算作计算机软件系统中最为复杂的系统,数据库的发展在时间轴上可大体分为四大类。

①导航型数据库。导航型数据库是20世纪60年代随着计算机技术的快速发展而兴起的,主要关联了两种数据库接口模式——网络模型(Network Model)和层次模型(Hierarchical Model)。前者在大数据技术被广泛应用的今天已经演变为图数据库(Graph Database),简而言之就是每个数据节点可以有多个父节点也可以有多个子节点;而后者描述的是一种树状分层分级的模式,每个数据节点可以有多个子节点,但是只能有一个父节点,不难看出这种树状结构对数据类型及关系的建模的限制是较大的。

②关系数据库。关系数据库管理系统(Relational Database Management System,RDBMS)自20世纪70年代诞生以来,在过去几十年中方兴未艾,也是我们今天最为熟知的数据库系统类型。关系数据库的起源离不开一个英国人——埃德加·弗兰克·科德(EdgarFrank Codd),20世纪70年代他在IBM公司的硅谷研发中心工作期间对CODASYLApproach(20世纪60年代中期—70年代初的导航型数据库)并不满意(如缺少搜索支持)​,于是在1970年与1971年先后发表了两篇著名的论文《大规模共享数据银行的关系模型描述》(“A Relational Model of Data for Large Shared Data Banks”)和《基于关系计算的数据库子语言》(“A Data Base Sublanguage Founded on the RelationalCalculus”)。

这两篇论文直接奠定了关系数据库的基础,即数据之间的关系模型,且第二篇论文中还描述了Alpha语言。这个名字相当霸气,要知道C语言是受到了贝尔实验室发明的B语言的启发而产生的,而Alpha(=A)语言竟然意图排在它们之前,由此可见科德老先生对Alpha语言寄予的厚望。回顾数据库的发展历史,Alpha语言的确直接影响了数据库查询语言QUEL(Query Language),而QUEL是Ingres数据库的核心组件,也是科德与加利福尼亚大学伯克利分校合作开发的最重要的早期数据库管理系统。今天我们大量使用的很多RDBMS都源自Ingres。比如Microsoft SQL Server、Sybase、PostgreSQL(Postgres取自Post Ingres)​。

QUEL最终在20世纪80年代初被SQL所取代,而随之兴起的是Oracle、IBM DB2、SQLServer这些如今知名的RDBMS。在关系数据库系统中,两种东西最重要——RDBMS与SQL,其中,前者是数据存储与处理的引擎,通过SQL这种“智能”的编程语言实现对前者所控制的数据的操作与访问。

③面向对象数据库。面向对象数据库的兴起滞后于关系数据库大约10年。面向对象数据库的核心是面向对象,面向对象数据库借鉴了面向对象的编程语言的特性,对复杂的数据类型及数据之间的关系进行建模,其中对象之间的关系是多对多,通过指针或引用实现访问。通常而言,面向对象编程类语言与面向对象数据库结合得更完美,以医疗行业为例,Object数据库的使用不在少数,合理使用的话效率会更高(例如InterSystems的Cache数据库)​。

④大数据类新型数据存储与处理方式(NoSQL/NewSQL/Hadoop)。它是在21世纪的第一个10年内才冒出来的大数据类新型数据库,确切地说是在数据爆炸式增长(数量、速率、多样性)的条件下为了高效处理数据而出现的多种新的数据处理架构及生态系统,简单而言有NoSQL、NewSQL、Hadoop三大类。在后面的内容中我们会展开讲述这些大数据处理系统之间的优劣与异同。

(4)1990—2004年

20世纪90年代初,个人计算机(PC)与互联网进入了全方位高速发展阶段。从1977年到2007年的这几十年,PC销售规模从1977年的5万台增长到2007年的1.25亿台。根据思科公司早期发布的《VNI全球互联网流量分析》报告,2002年,网络传输数据量达到1992年的86000倍(见图9)​,数据的突飞猛进催生了在企业与机构当中广泛使用商业智能(Business Intelligence,BI)与数据仓库(Data Warehouse,DW)系统来对大量数据进行信息化管理,例如数据集成、数据仓库、数据清洗、内容分析等。其中,商业智能与数据仓库可统称为BIDW,通常两者会协同工作,数据仓库为商业智能系统提供底层的数据存储支撑。老夫2004年在雅虎公司战略数据服务部门工作时,雅虎公司已经建立了当时全球最大的数据仓库,每天从全球上万台Apache Web服务器汇总超过27TB的数据进行分析。为了提高数据提取−转换−加载(Extract-Transform-Load,ETL)的效率,同事们几乎重写了整个Linux技术栈中与排序、搜索、压缩加解密相关的命令与函数库,并让它们支持在多台机器上并发分布式处理,最终让大多数的函数效率提高了20~1000倍。不过,即便如此,他们也只是把原有的商业智能系统从做年报、季度报、月报,精确到天报甚至小时报,获得海量数据的实时分析与汇总依然是一项巨大的挑战。不过,在2004年使用新的ETL工具与分布式系统架构来高速处理大量数据已经算是大数据的雏形了。

图9:全球互联网数据流量

(5)2005—2014年

过去的10年让我们见证了移动互联时代的到来——以谷歌、Facebook、推特(Twitter)、百度、阿里巴巴、腾讯为代表的互联网公司的兴起。这些互联网企业在搭建技术栈时有两个共通之处:LAMP+PC-Cluster。老夫在之前的文章中已经描述过LAMP,在此不再赘述;PC-Cluster指的是基于商业硬件,特别是PC搭建的大规模、分布式处理集群。 

从科技发展史的角度看,这10年间值得一提的两项新兴技术都源自谷歌公司。第一项新兴技术GFS是谷歌公司在2003年发布的论文“The Google File System”中提出的,是谷歌公司为了提高在大规模PC集群中数据分布式存储与访问效率而设计的分布式文件系统。第二项新兴技术MapReduce是谷歌公司在2004年发布的论文“MapReduce:Simplified Data Processing on Large Clusters”中提出的,它描述了一种面向大规模集群的数据处理与生成的编程模型。这两篇论文直接启发了雅虎公司于2004年请来道·卡廷(Doug Cutting)开发了后来大数据领域知名的开源分布式数据存储与处理软件架构Hadoop。与Hadoop同时代涌现的还有NoSQL与NewSQL这些新型的数据库处理系统。在后面的章节中,我们会就这些大数据、快数据和深数据的处理技术展开论述。

(6)移动互联时代

移动互联时代的自然延伸就是我们今天所处的万物互联时代。十几年前被学术界宣判已经走入“死胡同”的人工智能在机器学习、深度学习等技术的推动下,又在诸如图像视频、自然语言处理、数据挖掘、物流、游戏、自动驾驶汽车、自动导航、机器人、舆情监控等很多不同的领域获得了突破性的进展。

但是,人工智能、机器学习、深度学习、卷积神经网络等技术的再一次高速发展,并不意味着依赖它们就可以解决我们所有的问题。随着这些技术向各个垂直行业的逐步渗透,我们甚至可以看到很多应用场景中对于如何掌控人工智能尤其是白盒化人工智能、降低模型风险等有了更加明确的需求。例如金融、互联网领域中涉及的风控、反欺诈、营销、经营等环节就明确地要求所应用的人工智能技术要么具有白盒化(每一步的计算与操作是透明的、可控的)​,要么选择替代性技术。在后面的部分中,我们会分享一些行业案例,以供读者参考。

数据的完整生命周期可分为5个阶段:通过对杂乱无章的数据进行整理得到信息,对信息进行提炼并使其成为知识,知识升华后成为(人类)可传承的智慧,人类又把智慧、知识与信息演变为可以赋予机器的智能,如图10所示。

图10:数据的完整生命周期

总之,人类可以说是围绕着信息整合、处理的方式与手段在不断发展。我们一步步走向大数据,而当大数据成为常态的时候,大数据已经无处不在地融入我们的生活,如图11所示。

图11:大数据无处不在


(文/Ricky - HPC高性能计算与存储专家、大数据专家、数据库专家及学者)

· END ·

 

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

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

相关文章

使用Dependency Walker和Beyond Compare快速排查dll动态库损坏或被篡改的问题

目录 1、问题描述 2、用Dependency Walker工具打开qr.dll库,查看库与库的依赖关系以及接口调用情况,定位问题 3、使用Beyond Compare工具比较一下正常的msvcr100d.dll和问题msvcr100d.dll的差异 4、最后 C软件异常排查从入门到精通系列教程&#xff…

repo init 错误 Permission denied (publickey)

一、已经生成ssh-key并设置到gerrit上 二、已经设置.gitconfig (此步骤是公司要求,设置gerrit地址为一个别名之类的,有的公司不需要) 然后出现下面的错误,最后发现忘记设置git的用户名和邮箱 1. git config --globa…

TSB - AD 解读 — 迈向可靠、透明的 TSAD 任务

目录 一 文章动机 二 TSAD 领域内的两类缺陷 三 数据集的构建 四 实验结果及结论 项目宣传链接:TSB-AD 代码链接: TheDatumOrg/TSB-AD: TSB-AD: Towards A Reliable Time-Series Anomaly Detection Benchmark 原作者解读:NeurIPS 2…

论文阅读:2023-arxiv Can AI-Generated Text be Reliably Detected?

总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 文章目录 Abstract(摘要)1 Introduction(引言)Conclusion(结论) Can AI-Generated Text be Reliably D…

Language Models are Few-Shot Learners,GPT-3详细讲解

GPT的训练范式:预训练Fine-Tuning GPT2的训练范式:预训练Prompt predict (zero-shot learning) GPT3的训练范式:预训练Prompt predict (few-shot learning) GPT2的性能太差,新意高&…

Hoppscotch 开源API 开发工具

Hoppscotch 是一个开源的 API 开发工具,旨在为开发者提供一个轻量级、快速且功能丰富的 API 开发和调试平台。以下是对其主要特性和功能的详细介绍: 1. 轻量级与高效 Hoppscotch 采用简约的 UI 设计,注重易用性和高效性。它支持实时发送请求…

【芯片验证】面试题·对深度为60的数组进行复杂约束的技巧

朋友发给我的芯片验证笔试题,觉得很有意思,和大家分享一下。 面试题目 class A中一个长度为60的随机数组rand int arr[60],如何写约束使得: 1.每个元素的值都在(0,100]之间,且互不相等; 2.最少有三个元素满足勾股数要求,比如数组中包含3,4,5三个点; 请以解约束最快…

Manus “Less structure,More intelligence ”独行云端处理器

根据市场调研机构Statista数据显示,全球的AR/AR的市场规模预计目前将达到2500亿美元,Manus作为VR手套领域的领军企业,足以颠覆你的认知。本篇文章将带你解读Manus产品,针对用户提出的种种问题,Manus又将如何解决且让使…

【再读】R1-Onevision通过跨模态形式化为复杂多模态推理任务提供了系统性解决方案

R1-Onevision:跨模态形式化驱动的多模态推理技术突破,R1-Onevision通过跨模态形式化、双阶段训练和教育级基准测试,为多模态推理树立了新标杆。其技术创新不仅提升了模型在复杂任务中的表现,更重要的是为行业提供了一种可解释、可迁移的多模态处理范式。随着形式化方法的不断…

SSM框架——Spring面试题

Spring常见面试题 Spring框架中的单例bean是线程安全的吗 不是线程安全的 Spring框架中有一个Scope注解,默认的值就是singleton,单例的。 因为一般在spring的bean的中都是注入无状态的对象,没有线程安全问题,如果在bean中定义了可…

云原生大佬重生,记忆逐步复苏(十三:selinux模块)

目录 1:什么是selinux 1.1 SELinux 的作用 1.2. SELinux 的工作原理 1.3. SELinux 的运行模式 2:解析selinux文件上下文标签策略 3:selinux的布尔值 4:调查和解决selinux问题 1:什么是selinux SELinux(Security-Enhanced L…

MySQL高频八股——事务过程中Undo log、Redo log、Binlog的写入顺序(涉及两阶段提交)

大家好,我是钢板兽! 在上一篇文章中,我分别介绍了 Undo Log、Redo Log 和 Binlog 在事务执行过程中的作用与写入机制。然而,实际应用中,这三种日志的写入是有先后顺序的。因此,本篇文章将深入探讨它们的写…

C++进阶——AVL树的实现

1、AVL的概念 1.1 AVL 树的发明 AVL 树由 G.M. Adelson-Velsky 和 E.M. Landis 在 1962 年的论文《An algorithm for the organization of information》中提出。他们的设计目标是解决二叉搜索树在动态操作(插入、删除)中可能退化为链表的问题。 1.2 …

打包当前Ubuntu镜像 制作Ubuntu togo系统

我的系统的基本情况说明: 我原来的系统的具体型号如下: uname -rLinux Engine 5.15.0-134-generic #145~20.04.1-Ubuntu SMP Mon Feb 17 13:27:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux我原来的硬盘以及分区策略如下: 可以看到我的分区…

系统架构设计师—案例分析—架构设计

文章目录 经典架构风格对比面向对象架构风格/显示调用风格优点缺点举例 事件驱动的系统/隐式调用风格优点缺点举例 基于规则的系统架构风格优点缺点举例 管道过滤器风格优点缺点举例 仓库风格优点缺点举例 解释器风格优点缺点举例 分层架构风格优点缺点举例 经典架构风格对比 …

基于javaweb的SpringBoot智能相册管理系统图片相册系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

Android 14 Telephony 网络选择功能介绍

一、总体介绍 (一)功能 手动搜网的流程:用户通过UI触发,调用TelephonyManager的API,比如startNetworkScan,然后这个请求会传递到RIL层,通过AT命令与基带通信,进行网络扫描。结果返回后,经过TelephonyRegistry通知应用层。中间可能涉及IPC,比如Binder通信,因为应用和…

深入解析音频编解码器(Audio CODEC):硬件、接口与驱动开发

音频编解码器(Audio CODEC)是音频处理系统中的核心组件,负责 模拟信号与数字信号的相互转换,广泛应用于 智能音箱、嵌入式系统、消费电子产品 等设备。本篇文章将从 硬件结构、接口解析、驱动开发 和 软件配置 等方面,…

深度学习【迭代梯度下降法求解线性回归】

梯度下降法 梯度下降法是一种常用迭代方法,其目的是让输入向量找到一个合适的迭代方向,使得输出值能达到局部最小值。在拟合线性回归方程时,我们把损失函数视为以参数向量为输入的函数,找到其梯度下降的方向并进行迭代&#xff0…

[Lc14_priority_queue] 最后一块石头重量 | 数据流中的第 K 大元素 | 前K个高频单词 | 数据流的中位数

目录 1.最后一块石头的重量 题解 2.数据流中的第 K 大元素 题解 3.前K个高频单词 题解 代码 ⭕4.数据流的中位数 题解 在C中,使用标准库中的priority_queue,默认情况下它是一个最大堆(即大堆排序),这意味着最…