干货!处理大数据的技术大盘点

信息技术蓬勃发展,每天都有新产品问世,同时不断地形成新的趋势。这种不断的变化使得信息技术和软件专业人员、开发人员、科学家以及投资者都不敢怠慢,并引发了新的职业机会和有意义的工作。然而,竞争是激烈的,与最新的技术和趋势保持同步是永恒的要求。对于专业人士来说,在全球IT行业中,入行、生存和成长都变得日益复杂。

技术的快速发展从根本上改变了数据产生、处理、分析和消耗的方式。组织机构以及互联网捕获和分析的数据量有了巨大的增长,互联网也推动了大型数据来源和有效数据处理的需求。

想在IT这样一个充满活力的行业中高效地学习,就必须做到:对核心技术概念和设计通则有很好的理解;具备适应各种平台和应用的敏捷性;对当前和即将到来的行业趋势和标准有充分的认识。

为了满足这些需求,许多技术创新已经应用于操控、处理和分析我们所谓的“大数据”。大数据相关创新中最受欢迎的领域包括分布式和并行计算、Hadoop、大数据云以及大数据内存计算。如何管理大数据、掌握大数据的核心技术、理解大数据相关的生态系统等,是作为大数据开发者必须学习和熟练掌握的。

干货!处理大数据的技术大盘点_第1张图片

​本系列书以“大数据开发者”应掌握的技术为主线,共分两卷,以7个模块分别介绍如何管理大数据生态系统、如何存储和处理数据、如何利用Hadoop工具、如何利用NoSQL与Hadoop协同工作,以及如何利用Hadoop商业发行版和管理工具。

本系列书涵盖了大数据开发工作的核心内容,全面且详尽地涵盖了大数据开发的各个领域。

本文的核心关注点是带你领略使大数据解决方案成为可能的各种技术的基础知识。

值得注意的是,在所有这些技术中,Hadoop或许是大数据领域最流行的名词。Hadoop是一个用于存储和处理不同类型数据的开源平台。它使数据驱动的企业从可用数据中,快速获得最大的价值。

大数据的分布式和并行计算

分布式计算是一种在网络中连接多个计算资源,将计算任务按资源分布,从而提高计算能力的方法。分布式计算比传统计算更快捷、更高效,可在有限的时间内处理大量的数据,因而具有巨大的价值。

为了进行复杂的计算,独立个人计算机的处理能力也可以通过添加多个处理单元得以增强,它通过将复杂任务分解成子任务、同时执行单独子任务的方法,来执行复杂任务的处理。这样的系统通常被称为并行系统。处理能力越强,计算速度就越快。

这两种方法非常适用于大数据分析。让我们来看看这是为什么。

如果不存在一个大的时间约束,组织会选择将他们的数据移动到外部机构中去进行复杂的数据分析。这种方法是相当高效的,因为这些机构专注于提供巨大的数据源和资源进行数据处理和分析。这种方法也是经济的,因为与组织机构在内部进行这些任务所导致的费用相比,这些机构收取的费用是较低的。

图1-1-1显示了分布式系统和并行系统的比较。

此外,如果组织机构自行分析数据,在大多数情况下,由于成本问题,他们仅仅捕获和分析了可用数据的一个样本,而不是所有的数据。这一分析的结果,几乎等同于分析样品的结果。

今天的市场和企业竞争残酷。同时,可用的数据量、数据多样性和数据速度以天文数字激增。为在市场上获得优势,组织机构觉得需要在很短的时间内分析所能得到的所有数据。这显然导致了对大容量存储和处理能力的需求。

图1-1-1 分布式系统和并行系统的比较

今天的技术发展已经推动和确立了新的复杂数据的存储、处理、分析方法,并创造了更强大的硬件。

为了利用这些强大的硬件执行复杂的数据分析,编写了新的软件,新的软件遵循以下步骤:

(1)把工作分解成更小的任务;

(2)调查所有手头的计算资源;

(3)在网络中高效地分配任务到互联的节点或计算机。

软件也开始被用于防范资源故障。这通过利用虚拟化,将作业委托给另一个资源来完成。

尽管有这些技术上的发展,但是延迟的问题仍然存在。延迟是系统延时的总和,因为涉及大量数据的单个任务会造成延时。如果你使用过无线电话,就可能亲身体验过延迟——你和来电者之间的通信迟滞。

这种延迟会导致组织内部以及和客户及其他外部利益相关者之间的系统执行、数据管理和通信速度的下降。

常规的大数据应用通常会遭受延迟问题的困扰,因此性能水平较低。这对企业来说是一个潜在的问题。只要企业允许在后台从事数据工作,它们就可以处理延迟;然而,只要形势需要在企业和消费者之间快速通信以及快速访问和分析数据,问题就浮出水面了。

作为应对这些问题的措施,分布式和并行处理技术不仅为在一段时间内处理大量数据提供了具体解决方案,还提供了处理延迟的方案。

通过分布式计算的大数据处理流程如图1-1-2所示。

正如你在图1-1-2中看到的那样,节点是包含在一个系统集群或机架内的元素。节点通常包括CPU、内存和某些种类的磁盘;但是,节点也可以是依赖附近存储的刀片CPU和内存。

在大数据环境中,通常聚合这些节点以提供伸缩性;这样,随着数据量的增长,可以添加更多的节点到集群中,这样它可以不断扩展以适应不断增长的需求。分布式计算也使负载平衡和虚拟化成为可能。负载平衡是一种在多台计算机之间分布网络工作负载的技术。虚拟化是指创建一个虚拟环境,包括硬件平台、存储设备和操作系统(OS)。

图1-1-2 大数据分布式计算模型的工作流程

分布式计算的发展帮助组织机构利用了所有的可用数据(而不仅仅是一个样本),在内部分析他们的复杂数据。

并行计算技术

表1-1-1展示了一些当今用于处理每天产生的高速、海量数据的并行计算技术。

表1-1-1 并行计算方法

1.1.2 虚拟化及其对大数据的重要性

实现虚拟化的过程是为了把可用的资源和服务从基础物理环境中隔离开来,使你在单一物理系统中建立多个虚拟系统。公司实施虚拟化,以提高处理不同工作负载组合的性能和效率。

解决大数据的难题通常需要管理大量高度分布的数据存储,使用计算和数据密集型应用程序。虚拟化提供了更高的效能,使大数据平台成为现实。虽然从技术上说虚拟化不是大数据分析的需求,但大数据环境中使用的软件框架(如MapReduce)在虚拟化环境中更有效率。

除了封装、隔离和分区等特性,大数据虚拟化成功的最重要需求之一是具有合适的性能水平,以支持大量不同类型数据的分析。

当用户开始利用如Hadoop和MapReduce这样的环境时,拥有一个可伸缩的支撑基础设施也是至关重要的。虚拟化在IT基础设施的每一层都提高了效率,并提供了大数据分析所需的可伸缩性。Hadoop简介

在处理大数据源时,传统的方法达不到要求。你需要一个设计用于应对大数据所提出的挑战的产品和技术集合。Hadoop是一个开源平台,被设计用于处理数量巨大的结构化和非结构化数据——大数据。处理这样的海量数据,需要深入的分析技术,这需要更强大的计算能力。

这种海量数据分析在传统上已经可以通过分布式计算完成。除此之外,用户还可以选择使用Condor等现有系统进行计算机网格调度;然而Condor没有自动数据分布功能;除了计算集群之外,它还需要一个独立的系统区域网络,同时还需要一个通信系统(如MPI)来实现在多个节点之间的协调。这个编程模型不仅很难,而且增加了错误的风险。

Hadoop引入了简单编程模型,它可以让用户创建和运行分布式的系统,而且速度也相当快。Hadoop利用了CPU核心的并行计算工作原理,能够有效、自动地在机器之间分布数据。

下面是Hadoop的一些显著特征。

Hadoop可以工作在大量不共享任何内存或磁盘的机器上。这解决了高效存储和访问这两个共生的大数据问题。

因为Hadoop将数据分布于不同服务器,所以当数据加载到Hadoop平台上时,存储得到了改善。

因为Hadoop可以跟踪存储于不同服务器上的数据,访问得到了改善。

由于Hadoop使用所有可用处理器并行运行计算任务,改善了处理性能。这样,不管是应对庞大多样的数据还是处理复杂的计算问题,Hadoop都保持了性能。

Hadoop通过保留多份在服务器失效时可用的数据备份,提高了恢复能力。

那么Hadoop是如何使用多个计算资源来执行一个任务的呢?

Hadoop的核心部分有如下组件。

Hadoop分布式文件系统:可靠、高带宽、低成本的数据存储集群,便于跨机器的相关文件管理。

Hadoop的MapReduce引擎:高性能的并行/分布式 MapReduce算法数据的处理实现。

Hadoop被设计用来处理大量的结构化和非结构化数据,以Hadoop集群的形式在商业服务器机架上实施。每个服务器独立进行自己的工作并返回它的响应。也可以从集群中动态移除或添加服务器,因为Hadoop能够检测变化(包括失效),并根据这些变化进行调整,持续运行而无须中断。

MapReduce是一种编程模型,可将任务映射到不同的服务器上,并把响应归约为一个结果。如前所述,Hadoop MapReduce是一个由Apache项目开发和维护的MapReduce算法实现。

该算法提供了将数据分解为易于管理的块,在分布式集群上并行处理数据,然后使数据可供用户消费或额外处理的能力。

MapReduce的映射组件将编程问题或任务分布到大量系统中,并用平衡负载和管理失效恢复的方式处理任务的存放。在分布式计算完成之后,另一项功能归约聚合所有的元素,提供一个结果。

当Hadoop接收到一个索引作业时,组织机构的数据首先被加载到Hadoop软件中,然后,Hadoop将数据分为不同的块,把每一块数据发送到不同的服务器。Hadoop通过将作业代码发送到所有存储相关数据块的服务器的方式来跟踪数据。此后,每个服务器将作业代码应用于所存储的部分数据,并返回结果。

最后,Hadoop整合来自所有服务器的结果,并返回结果,如图1-1-3所示。

图1-1-3 MapReduce中作业跟踪流程的展示

下面的例子有助于更好地理解Hadoop是如何工作的。

考虑一个城市里的所有的电话呼叫记录。假设研究人员想要知道在特定事件发生时打电话的大学生数量。索引查询将指定相关的用户信息和事件的时间。每个服务器将搜索它的呼叫记录集合,并返回匹配查询的那些记录。Hadoop将所有这些集合组合成一个结果。

假设,所有的电话呼叫记录都以csv格式存储在服务器上。首先,数据在Hadoop上加载,接着用MapReduce编程模型处理数据。

假设在csv文件中有5列:

user_id;

user_name;

city_name;

service_provider_name;

call_time。

要找到在特定时间内打电话的用户(学生)数量,学生是由user_id标识的。

最终的输出是在特定时期内(如晚上9~10点)打电话的用户总数。

为了得到最终的输出,数据逐行通过各个映射组件。在映射作业完成之后,Hadoop框架整理或排序并分组这些数据,并将其发送到提供最终输出的归约组件里。

Hadoop平台也有利于在多台机器上的数据存储。这项能力允许一个企业使用多台商业服务器,并在每一台上运行Hadoop,而不是建立一个整合的系统。

云计算和大数据

任何组织机构为了存储和管理大数据,都需要预测硬件和软件的需求。需求可能随着时间的变化而变化,这可能导致资源利用不足或者是过度利用。此外,硬件设置和软件安装都需要组织机构的大量投资,组织机构通常会面临资源、成本和利用率的问题。

云计算是一种提供共享计算资源集合的方法,这些资源包括应用程序、存储、计算、网络、开发、部署平台以及业务流程。云通过提供可水平扩展的、经过优化的、支持大数据实际实施的架构,在大数据世界中扮演着重要的角色。要在现实世界中运营,云必须实现通用的标准流程和自动化。图1-1-4显示了云计算模型。

图1-1-4 云计算模型的工作

基于云的应用平台使应用程序很容易获得计算资源,并根据使用的服务和组件为相应的资源付款。在云计算的背景下,这样的功能被称为弹性——只需点击按钮和支付,就可以动态地调节和访问计算资源;然而,在这样的情况下,组织机构需要监控和控制云计算资源的使用,否则产生的费用会出人意料地大。

在云计算中,所有的数据被收集到数据中心,然后分发给最终用户。而且,自动数据备份和恢复还能够确保业务连贯性。

云与大数据分析互补的主要原因是:和大数据一样,云也使用分布计算。

1.3.1 大数据计算的特性

下面是一些云计算适于大数据分析的特性。

可伸缩性:即使组织机构提高了硬件的处理能力,对于在新硬件上运行的软件,它们也可能需要改变架构和面临新问题。云对此提供了解决方案。它通过使用分布式计算提供了可伸缩性。

弹性:云解决方案允许客户根据需求,付费使用恰当数量的云服务。例如,某企业预计在商店促销时会有更多的数据,可以在这段时间购买更多的处理能力。另外,客户不必事先指定使用量。

资源池:使用类似计算资源的多个组织机构不需要对其单独投资。云可以提供这些资源,而且,因为这些资源被许多组织机构使用,云的成本得以降低。

自助服务:客户可以通过用户界面直接访问云服务,选择他们想要的服务。这是自动的,不需要人为干预。

低成本:企业不需要为了处理大数据分析等大型操作,对计算资源做大规模的初始投资。它们可以注册一个云服务,在使用的时候进行支付。在这个过程中,云供应商享有规模经济的优势。这也有利于客户。

故障容错:如果云的一部分失效了,其他部分可以接管并为客户提供不间断的服务。

1.3.2 云部署模型

云部署模型回答了关于所有权、操作和使用的问题。公共和私有是两种云部署模型。

公共云:公共云是由一个组织机构拥有并运营的,供其他组织机构和个人使用。公共云提供一系列的计算服务。对于每类服务,为特定类型的工作负载进行了专门化。通过专门化,云可以定制硬件和软件以优化性能。定制使得计算过程具备了高度可伸缩性。例如,一个云可以专注于为了YouTube或Vimeo上的视频直播而存储视频,并为处理大流量而优化。

对于企业来讲,公共云提供了经济的存储解决方案,是一种处理复杂数据分析的有效方式。这些因素有时比安全和延迟的问题更为重要,这是公共云的固有特性。

私有云:私有云是组织机构为了自身目的而拥有和运营的。除了员工,组织机构的合作伙伴和客户也能使用私有云。

私有云是专为一个组织机构设计的,并结合了组织机构的系统和流程,包括可以集成到云中的组织机构业务规则、管理政策和合规性检查。因为多个客户提供了不同的规格,有些事情需要在公共云上手工操作,但可以在私有云中自动进行。因此私有云是高度自动化的,也受到了防火墙的保护。这减少了延迟,提高了安全性,使其成为大数据分析的理想选择。

1.3.3 云交付模型

正如前面所讨论的,云将硬件、平台和软件作为服务交付,因此,云服务分为如下几类。

基础设施即服务(IaaS):基础设施是指硬件、存储和网络。当你为了在云端保存假日照片而付费时,使用的就是公共IaaS。当一个员工在组织机构的备份服务器上保存工作报告时,该员工使用了私有IaaS。IaaS将硬件、存储和网络作为服务提供。IaaS的例子有虚拟机、均衡负载器和网络附加存储。

企业通过使用公共云IaaS,可以在物理基础设施上节省投资。企业可以选择操作系统,而且可以利用IaaS建立具有可伸缩存储和处理能力的虚拟机。

平台即服务(PaaS):PaaS提供了一个编写和运行用户应用程序的平台。平台指的是操作系统,它是中间件服务、软件开发和部署工具的一组集合。PaaS的例子有Windows Azure和Google App引擎(GAE)。

当一个组织拥有PaaS私有云时,业务单元的程序员可以按需创建和部署应用。PaaS使得尝试新的应用变得更加容易。

软件即服务(SaaS):SaaS提供可从任意地方访问的软件。客户可以在云上使用软件,而不需要购买和在自己的设备上安装。这些软件应用程序提供月度或年度合同。为了使SaaS正常工作,基础设施(IaaS)和平台(PaaS)必须到位。

组织机构可以在它的私有云中维护定制开发的软件,并将其链接到存储在公共云中的大数据。在一个混合云中,应用程序可以利用私有云和公共云的优势,有效地分析数据。

1.3.4 大数据云

在云中,大数据有许多种部署和交付模式。大数据需要分布式的计算机集群能力,这就是云的架构方式。各种云的特性使其成为大数据系统的重要组成部分,是一个理想的大数据计算环境。

下面是云在大数据领域应用的一些例子。

公共云中的IaaS:使用云提供商的大数据服务基础设施,提供几乎无限的存储和计算能力。

私有云中的PaaS:PaaS供应商开始将大数据技术(如Hadoop和MapReduce)加入其PaaS产品中,这消除了管理单个软件和硬件元素的处理复杂性。

混合云中的SaaS:许多组织机构都认为需要分析客户的呼声,特别是社交媒体上的意见。SaaS供应商提供了分析平台以及社交媒体数据。此外,企业CRM数据可以在私有云中用于这样的分析。

1.3.5 大数据云市场中的供应商

已有和新建的云服务提供商很多,其中一些专门为大数据分析提供资源。我们将讨论其中3个。

Amazon IaaS(称为弹性计算云,即Amazon EC2)的开发是该公司用于自身业务的大规模计算资源基础设施的产物。这些基础设施实际上没有被完全利用,因此,亚马逊决定将其租出去并赚取收入。“弹性”这个词在字面上是有道理的,因为这些资源可以以小时为单位缩放。

除了Amazon EC2,Amazon Web Services(AWS)还提供以下服务。

Amazon MapReduce:利用Amazon EC2和亚马逊简单存储服务(Amazon S3),提供高成本效益的大数据量处理的Web服务。

Amazon DynamoDB:NoSQL数据库服务,可以在固态驱动器(SSD)上存储数据项和复制数据,具有高可用性和耐久性。

Amazon简单存储服务(S3):在互联网上用于存储数据和用于网络规模计算的Web接口。

Amazon高性能计算:具有高带宽和计算能力的低延迟网络,能解决教育和商业领域问题。

Amazon RedShift:PB级规模的数据仓库服务,以高成本效益方式利用现有商业智能工具进行数据分析。

谷歌有下列为大数据设计的云服务。

Google计算引擎:一种安全、灵活的虚拟机计算环境。

Google BigQuery:一种桌面即服务(DaaS)产品,以SQL格式的查询为基础,高速搜索大数据集。Google预测API:在每一次使用中,从数据中识别模式、存储模式并改进模式。

在Windows和SQL抽象的基础上,微软的PaaS产品中已经包含了一套开发工具、虚拟机支持、管理和媒体工具以及移动设备服务。对于具有深厚的.NET、SQL Server和Windows专业知识的客户来说,采用基于Azure的PaaS十分简单。

为了解决将大数据集成到Windows Azure解决方案的新需求,微软还添加了Windows Azure HDInsight。HDInsight基于Hortonworks数据平台(HDP),据微软所说,HDInsight提供了与Apache Hadoop 100%的兼容性,支持与微软Excel和其他商业智能工具的连接。此外,Azure HDInsight还可以部署到Windows Server上。

HDInsight服务使Hadoop可作为云中的一个服务使用。它以更为简单和高成本效益的方式提供了与Hadoop分布式文件系统(HDFS)及MapReduce相关的框架。HDInsight服务的特性之一是高效的数据管理和存储。

HDInsight也使用Sqoop连接器,使用Sqoop连接器可以从Windows Azure SQL数据库将数据导入HDFS,也可以从HDFS导出数据到Windows Azure。

1.3.6 使用云服务所存在的问题

在决定实施云解决方案——或者任何解决方案之前——组织机构必须仔细地检查该解决方案的优势和劣势。我们已经了解了赞成使用云服务的论点。以下是在使用云服务中存在的一些问题,以及组织机构应当采取的预防措施。

数据安全:为了保持组织机构的数据安全,云提供商必须仅允许组织机构的指定人员访问数据。组织机构必须确保它们与云服务提供商的协议涵盖了数据安全。

性能:必须在协议中尽可能量化地规定云性能参数。必须清楚地注明例外情形。大多数云提供商有一份现有的服务水平协议(SLA)。SLA是指规定了服务使用者和服务提供商之间关于服务质量和时效性的所有条款和条件的文件。

合规性:云必须符合业务的合规性需求,特别是企业所在行业的监管合规性。例如,医疗保健机构必须保护患者信息的机密性,而云提供商必须保证所需的安全等级。

法律问题:由于数据存储的位置,可能会出现一些法律问题。组织机构必须确保云的物理资源位置不会带来任何法律问题。

成本:虽然云通常比内部解决方案便宜,但是组织机构应该意识到使用云涉及的所有费用,并以受控的方式使用该服务,持续监控使用情况。

数据传输:组织机构应当确保云提供商接收数据的方法是可行的和经济的。

大数据内存计算技术

现在,我们已经知道,大数据分析的处理能力需求可以通过分布式计算来满足。处理能力和速度还可以通过内存计算(IMC)进一步得到提升。

如果数据以行和列呈现,其处理是简单和快速的。这样的数据被称为结构化数据,它有一组变量,每个变量取得特定的值;然而,今天正在生成的数据中许多都是非结构化的。

大数据分析必须能够处理数据量和占比都不断增长的非结构化数据。IMC为这一能力的实现提供了解决方案。

今天,组织机构希望持续跟踪消费者的活动并立即做出反应。生产过程和质量控制也跟踪了大量的信息,并且需要快速反应。这种实时分析需要大量的处理能力,IMC使之成为可能。

早些时候,数据存储在称为辅助存储器的外部设备上。需要该数据工作的时候,用户必须使用输入/输出通道从外部源访问它。数据被临时移动到主存储器中进行处理。这个过程很耗时,但节省了金钱,因为辅助存储器比主存储器便宜。

IMC使用在主存储器(RAM)中的数据,这使得分析更快。同时,主存储器的成本已经降下来了,因此,它可以用于存储数据。该应用程序驻留在和数据存储同样的地址上,因此分析的速度更快。数据库查询和事务还是像先前工作的方式一样工作,但会更快地返回结果。 

结构化数据存储在关系数据库中(RDB),使用SQL查询进行信息检索。非结构化数据包括广泛的文本、图像、视频——网页和博客,商业报告和新闻稿,电子邮件和短信。信息一般通过关键字搜索来检索。

存储这类信息的数据库被称为NoSQL数据库。如果你通过在运营商网站上填写一个表格,查询一个电话号码,访问的就是结构化数据。如果你在Google中输入一个名字,找到该人的网页、博客和生日视频,访问的就是非结构化数据。

IMC处理大数据的数据量,NoSQL数据库处理大数据的多样性。

干货!处理大数据的技术大盘点_第2张图片

《大数据技术与编程基础》

Wrox国际IT认证项目组 著

大数据”近年成为IT领域的热点话题,人们每天都会通过互联网、移动设备等产生大量数据。如何管理大数据、掌握大数据的核心技术、理解大数据相关的生态系统等,是作为大数据开发者必须学习和熟练掌握的。

本书为第1卷,共4个模块,分别介绍大数据基础知识、大数据生态系统的管理、HDFS和MapReduce以及Hadoop工具(如Hive、Pig和Oozie等)。本书适用于想成为大数据开发者以及所有对大数据开发感兴趣的技术人员和决策者阅读。

干货!处理大数据的技术大盘点_第3张图片

《大数据分析与预测建模》

Wrox国际IT认证项目组 著

本书首先提供大数据的概览,介绍大数据概念及其在商业中的应用、处理大数据的技术、Hadoop生态系统和MapReduce的相关内容,然后介绍如何理解分析、分析方法与工具,重点讲解流行分析工具R,介绍如何将数据集导入R和从R导出数据、在R中如何操纵和处理数据,之后详细介绍R中的函数和包、R的描述性统计、R中的图形分析、R中的假设检验、R中的线性回归、非线性回归、聚类分析、决策树、R和Hadoop的集成及Hive,通过这些实战内容,使读者掌握R语言在数据分析中的全面应用。通过本书,读者能对大数据概念、重要性及其应用有全面的了解,熟悉各种大数据分析工具。

本书适用于想成为大数据分析师的人员以及所有对大数据分析感兴趣的技术人员和决策者阅读

干货!处理大数据的技术大盘点_第4张图片

​《机器学习、大数据分析和可视化》

Wrox国际IT认证项目组 著

本书为第 2卷,首先介绍机器学习的类型和方法,R上的图模型和贝叶斯网络、人工神经网络、使用PCA和因子分析降维法以及支持向量机,并讲解如何用R语言实现各种网络,然后介绍大数据解决方案工程、社交媒体分析和文本分析、移动分析和大数据可视化,**后通过几个实际案例讲解大数据分析在各行业中的应用。

本书适用于想成为大数据分析师的人员以及所有对大数据分析感兴趣的技术人员和决策者阅读。

邀请10名好友关注异步图书10天,即可免费获得异步新书。

点击阅读原文,购买《大数据技术与编程基础

阅读原文

你可能感兴趣的:(图书,编程语言,程序人生)