回首10年多的科研工作历程,也是中国经济高速发展的10多年,中国高铁、核电、航空、互联网、云计算、大数据、人工智能等领域无不铭刻着“中国名片”,这就是科技是第一生产力的实践验证!12年前,获得北邮计算机工学硕士后信心满满的踏上了科研之路,一干就是十多年,有苦有泪有艰辛,但收获的是一种为国防科技发展能奉献和敢担当的责任感。今天,更一次站在了移动互联网这个朝阳产业的跑道上,和诸多大数据和人工智能的世界级大咖共商创新发展!7年前加入中国移动集团研究院,担任资深大数据专家和研究员,主攻大数据和人工智能平台架构设计和关键技术研究,并多次受邀在大数据行业和主流峰会进行学术交流,在见证我的学生们历练为BAT/TMD的技术专家同时,也悄然实现着我的技术梦想-让高科技研发标准化和平民化。今天有幸分享商用大数据平台研发经验,让大数据知识图谱在各位的脑海里转起来,并形成商用产品的作战体系,这是“作为架构师,何谓正确?”的行动基础。我分享四大部分:知识分类,系统架构,核心技术,经验分享。具体如下:

一、大数据知识归类:

文件存储:Hadoop HDFS、Tachyon、KFS
          离线计算:Hadoop MapReduce、Spark
          流式、实时计算:Storm、Spark Streaming
          K-V、NOSQL数据库:HBase、Redis、MongoDB
          资源管理:YARN、Mesos
          日志收集:Flume、Scribe、Logstash、Kibana
          消息系统:Kafka、StormMQ、ZeroMQ、RabbitMQ
          查询分析:Hive、Impala、Pig、SparkSQL、Drill、Flink、Kylin、Druid
          分布式协调服务:Zookeeper
          集群管理与监控:Ambari、Ganglia、Nagios、Cloudera Manager
          数据挖掘、机器学习:Mahout、Spark MLLib
          数据同步:Sqoop
          任务调度:Oozie

二、系统架构:

以物联网大数据平台的架构为例,围绕着这条主线:基础架构-》离线分析-》离线迁移-》离线同步-》实时计算-》实时交换-》实时调度-》实时存储-》智能分析

三、核心技术(10章)

第一章:Hadoop的崛起

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop是实现了真正意义上的去“IOE”,尤其是开启了摆脱国外高科技公司的全球垄断时代,让全球用户可以轻松地在免费的Hadoop上开发和运行处理海量数据的应用程序。建议先把Hadoop集群构建起来,具体操作见我的博客:https://blog.csdn.net/peter_changyb/article/details/81195920。它主要有以下几个优点:

高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。
    高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
    高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点动态平衡,因此处理速度非常快。
    高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

Hadoop可以算是大数据存储和计算的开山鼻祖,现在大多开源的大数据框架都依赖Hadoop或者与它能很好的兼容。具备如下:

Hadoop 1.0、Hadoop 2.0
    MapReduce、HDFS
    NameNode、DataNode
    JobTracker、TaskTracker
    Yarn、ResourceManager、NodeManager

1.1 HDFS是Hadoop的关键技术所在

HDFS目录操作命令;上传、下载文件命令;提交运行MapReduce示例程序;打开Hadoop WEB界面,查看Job运行状态,查看Job运行日志。知道Hadoop的系统日志在哪里。

1.2  了解并行计算的核心原理

MapReduce:分而治之的优秀思想;HDFS:数据分片和数据复制为核心的技术。数据到底在哪里,什么是副本;

Yarn如何用分层管理思想革命性的改变了MapReduce的核心架构?NameNode职责?;Resource Manager职责?

1.3 亲自写MapReduce程序

Hadoop可以算是大数据存储和计算的开山鼻祖,现在大多开源的大数据框架都依赖Hadoop或者与它能很好的兼容。具备如下:

Hadoop 1.0、Hadoop 2.0
    MapReduce、HDFS
    NameNode、DataNode
    JobTracker、TaskTracker
    Yarn、ResourceManager、NodeManager

1.1 Hadoop是云计算产品代表

HDFS目录操作命令;上传、下载文件命令;提交运行MapReduce示例程序;打开Hadoop WEB界面,查看Job运行状态,查看Job运行日志。知道Hadoop的系统日志在哪里。

1.2  了解原理

MapReduce:如何分而治之;HDFS:数据到底在哪里,什么是副本;

Yarn到底是什么,它能干什么;NameNode到底在干些什么;Resource Manager到底在干些什么;

1.3 自己写一个MapReduce程序

请仿照WordCount例子,自己写一个WordCount程序,

第二章:Hive做离线分析-查询统计

2.1 SQL On Hadoop之Hive

什么是Hive?官方给的解释如下:The Apache Hive data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage and queried using SQL syntax.

为什么说Hive是数据仓库工具,而不是数据库工具呢?有的朋友可能不知道数据仓库,数据仓库是逻辑上的概念,底层使用的是数据库,数据仓库中的数据有这两个特点:最全的历史数据(海量)、相对稳定的;所谓相对稳定,指的是数据仓库不同于业务系统数据库,数据经常会被更新,数据一旦进入数据仓库,很少会被更新和删除,只会被大量查询。而Hive,也是具备这两个特点,因此,Hive适合做海量数据的数据仓库工具,而不是数据库工具。

Hive核心技术讲解参见我的博客 https://blog.csdn.net/Peter_Changyb/article/details/81977665

2.2 安装配置Hive

2.3 试试使用Hive

2.4 Hive是怎么工作的

2.5 学会Hive的基本命令

创建、删除表;加载数据到表;下载Hive表的数据

你具备以下技能和知识点:

MapReduce的原理(还是那个经典的题目,一个10G大小的文件,给定1G大小的内存,如何使用Java程序统计出现次数最多的10个单词及次数);
    HDFS读写数据的流程;向HDFS中PUT数据;从HDFS中下载数据;
    自己会写简单的MapReduce程序,运行出现问题,知道在哪里查看日志;
    会写简单的SELECT、WHERE、GROUP BY等SQL语句;
    Hive SQL转换成MapReduce的大致流程;
    Hive中常见的语句:创建表、删除表、往表中加载数据、分区、将表中数据下载到本地;

第三章:数据采集与迁移

此处也可以叫做数据采集,把各个数据源的数据采集到Hadoop上。

3.1 HDFS PUT命令

这个在前面你应该已经使用过了。put命令在实际环境中也比较常用,通常配合shell、python等脚本语言来使用。建议熟练掌握。

3.2 HDFS API

HDFS提供了写数据的API,自己用编程语言将数据写入HDFS,put命令本身也是使用API。

实际环境中一般自己较少编写程序使用API来写数据到HDFS,通常都是使用其他框架封装好的方法。比如:Hive中的INSERT语句,Spark中的saveAsTextfile等。建议了解原理,会写Demo。

3.3 Sqoop

Sqoop是一个主要用于Hadoop/Hive与传统关系型数据库,Oracle、MySQL、SQLServer等之间进行数据交换的开源框架。就像Hive把SQL翻译成MapReduce一样,Sqoop把你指定的参数翻译成MapReduce,提交到Hadoop运行,完成Hadoop与其他数据库之间的数据交换。

自己下载和配置Sqoop(建议先使用Sqoop1,Sqoop2比较复杂)。了解Sqoop常用的配置参数和方法。

使用Sqoop完成从MySQL同步数据到HDFS;使用Sqoop完成从MySQL同步数据到Hive表;如果后续选型确定使用Sqoop作为数据交换工具,那么建议熟练掌握,否则,了解和会用Demo即可。Sqoop导入Hbase核心代码见我的技术博客https://blog.csdn.net/Peter_Changyb/article/details/82557741

3.4 Flume

Flume是一个分布式的海量日志采集和传输框架,因为“采集和传输框架”,所以它并不适合关系型数据库的数据采集和传输。Flume可以实时的从网络协议、消息系统、文件系统采集日志,并传输到HDFS上。因此,如果你的业务有这些数据源的数据,并且需要实时的采集,那么就应该考虑使用Flume。下载和配置Flume。使用Flume监控一个不断追加数据的文件,并将数据传输到HDFS;Flume的配置和使用较为复杂,如果你没有足够的兴趣和耐心,可以先跳过Flume。核心技术参见我的技术博客https://blog.csdn.net/Peter_Changyb/article/details/81213997

第四章:数据同步

Hive和MapReduce进行分析了。那么接下来的问题是,分析完的结果如何从Hadoop上同步到其他系统和应用中去呢?其实,此处的方法和第三章基本一致的。

4.1 HDFS GET命令

把HDFS上的文件GET到本地。需要熟练掌握。

4.2 HDFS API

4.3 Sqoop

同3.3.使用Sqoop完成将HDFS上的文件同步到MySQL;使用Sqoop完成将Hive表中的数据同步到MySQL。

4.4 DataX

DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。之所以介绍这个,是因为我们公司目前使用的Hadoop与关系型数据库数据交换的工具,就是之前基于DataX开发的,非常好用。现在DataX已经是3.0版本,支持很多数据源。你也可以在其之上做二次开发。有兴趣的可以研究和使用一下,对比一下它与Sqoop。DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。

https://images2018.cnblogs.com/blog/948447/201807/948447-20180702134246476-1346908980.png ​

Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework。

Writer: Writer为数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。

Framework:Framework用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。

第五章:实时计算-SparkSQL

其实大家都已经发现Hive后台使用MapReduce作为执行引擎,实在是有点慢。因此SQL On Hadoop的框架越来越多,按我的了解,最常用的按照流行度依次为SparkSQL、Impala和Presto.这三种框架基于半内存或者全内存,提供了SQL接口来快速查询分析Hadoop上的数据。核心技术参考我的博客https://blog.csdn.net/Peter_Changyb/article/details/81904066

我们目前使用的是SparkSQL,至于为什么用SparkSQL,原因大概有以下吧:使用Spark还做了其他事情,不想引入过多的框架;Impala对内存的需求太大,没有过多资源部署。

5.1 关于Spark和SparkSQL

什么是Spark,什么是SparkSQL。

Spark有的核心概念及名词解释。

SparkSQL和Spark是什么关系,SparkSQL和Hive是什么关系。

SparkSQL为什么比Hive跑的快。

5.2 如何部署和运行SparkSQL

Spark有哪些部署模式?

如何在Yarn上运行SparkSQL?

使用SparkSQL查询Hive中的表。Spark不是一门短时间内就能掌握的技术,因此建议在了解了Spark之后,可以先从SparkSQL入手,循序渐进。

关于Spark和SparkSQL,如果你认真完成了上面的学习和实践,此时,你的”大数据平台”应该是这样的。

第六章:数据交换-一次采集、多次消费

在实际业务场景下,特别是对于一些监控日志,想即时的从日志中了解一些指标(关于实时计算,后面章节会有介绍),这时候,从HDFS上分析就太慢了,尽管是通过Flume采集的,但Flume也不能间隔很短就往HDFS上滚动文件,这样会导致小文件特别多。

为了满足数据的一次采集、多次消费的需求,这里要说的便是Kafka。

6.1 关于Kafka

什么是Kafka?Kafka的核心概念及名词解释。

6.2 如何部署和使用Kafka

使用单机部署Kafka,并成功运行自带的生产者和消费者例子。使用Java程序自己编写并运行生产者和消费者程序。Flume和Kafka的集成,使用Flume监控日志,并将日志数据实时发送至Kafka。

这时,使用Flume采集的数据,不是直接到HDFS上,而是先到Kafka,Kafka中的数据可以由多个消费者同时消费,其中一个消费者,就是将数据同步到HDFS。

为什么Spark比MapReduce快。
    使用SparkSQL代替Hive,更快的运行SQL。
    使用Kafka完成数据的一次收集,多次消费架构。
    自己可以写程序完成Kafka的生产者和消费者。

从前面的学习,你已经掌握了大数据平台中的数据采集、数据存储和计算、数据交换等大部分技能,而这其中的每一步,都需要一个任务(程序)来完成,各个任务之间又存在一定的依赖性,比如,必须等数据采集任务成功完成后,数据计算任务才能开始运行。如果一个任务执行失败,需要给开发运维人员发送告警,同时需要提供完整的日志来方便查错。

第七章:实时调度

不仅仅是分析任务,数据采集、数据交换同样是一个个的任务。这些任务中,有的是定时触发,有点则需要依赖其他任务来触发。当平台中有几百上千个任务需要维护和运行时候,仅仅靠crontab远远不够了,这时便需要一个调度监控系统来完成这件事。调度监控系统是整个数据平台的中枢系统,类似于AppMaster,负责分配和监控任务。

7.1 Apache Oozie

1. Oozie是什么?有哪些功能?当你的系统引入了spark或者hadoop以后,基于Spark和Hadoop已经做了一些任务,比如一连串的Map Reduce任务,但是他们之间彼此右前后依赖的顺序,因此你必须要等一个任务执行成功后,再手动执行第二个任务。

Oozie是管理Hadoop作业的工作流调度系统
    Oozie的工作流是一系列的操作图
    Oozie协调作业是通过时间(频率)以及有效数据触发当前的Oozie工作流程
    Oozie是针对Hadoop开发的开源工作流引擎,专门针对大规模复杂工作流程和数据管道设计
    Oozie围绕两个核心:工作流和协调器,前者定义任务的拓扑和执行逻辑,后者负责工作流的依赖和触发。

2. Oozie可以调度哪些类型的任务(程序)?

3. Oozie可以支持哪些任务触发方式?

4.  安装配置Oozie。

7.2 其他开源的任务调度系统

Azkaban,light-task-scheduler,Zeus,等等。另外,我这边是之前单独开发的任务调度与监控系统。

第八章:实时处理

在第六章介绍Kafka的时候提到了一些需要实时指标的业务场景,实时基本可以分为绝对实时和准实时,绝对实时的延迟要求一般在毫秒级,准实时的延迟要求一般在秒、分钟级。对于需要绝对实时的业务场景,用的比较多的是Storm,对于其他准实时的业务场景,可以是Storm,也可以是Spark Streaming。当然,如果可以的话,也可以自己写程序来做。

8.1 Storm

1. 什么是Storm?有哪些可能的应用场景?

2. Storm由哪些核心组件构成,各自担任什么角色?

3. Storm的简单安装和部署。

4. 自己编写Demo程序,使用Storm完成实时数据流计算。案例实战参见我的技术博客https://blog.csdn.net/Peter_Changyb/article/details/82380603

8.2 Spark Streaming

1. 什么是Spark Streaming,它和Spark是什么关系?

2. Spark Streaming和Storm比较,各有什么优缺点?

3. 使用Kafka + Spark Streaming,完成实时计算的Demo程序。

至此,你的大数据平台底层架构已经成型了,其中包括了数据采集、数据存储与计算(离线和实时)、数据同步、任务调度与监控这几大模块。接下来是时候考虑如何更好的对外提供数据了。

第九章:规模迁移

通常对外(业务)提供数据访问,大体上包含以下方面。

离线:比如,每天将前一天的数据提供到指定的数据源(DB、FILE、FTP)等;离线数据的提供可以采用Sqoop、DataX等离线数据交换工具。
    实时:比如,在线网站的推荐系统,需要实时从数据平台中获取给用户的推荐数据,这种要求延时非常低(50毫秒以内)。根据延时要求和实时数据的查询需要,可能的方案有:HBase、Redis、MongoDB、ElasticSearch等。
    OLAP分析:OLAP除了要求底层的数据模型比较规范,另外,对查询的响应速度要求也越来越高,可能的方案有:Impala、Presto、SparkSQL、Kylin。如果你的数据模型比较规模,那么Kylin是最好的选择。
    即席查询:即席查询的数据比较随意,一般很难建立通用的数据模型,因此可能的方案有:Impala、Presto、SparkSQL。

这么多比较成熟的框架和方案,需要结合自己的业务需求及数据平台技术架构,选择合适的。原则只有一个:越简单越稳定的,就是最好的。

如果你已经掌握了如何很好的对外(业务)提供数据,那么你的“大数据平台”应该是这样的:

第十章:机器学习

在我们的业务中,遇到的能用机器学习解决的问题大概这么三类:

分类问题:包括二分类和多分类,二分类就是解决了预测的问题,就像预测一封邮件是否垃圾邮件;多分类解决的是文本的分类;
    聚类问题:从用户搜索过的关键词,对用户进行大概的归类。
    推荐问题:根据用户的历史浏览和点击行为进行相关推荐。

机器学习核心技术参见我的技术博客https://blog.csdn.net/Peter_Changyb/article/details/82347169。大多数行业,使用机器学习解决的,也就是这几类问题。入门学习线路,数学基础;机器学习实战,懂Python最好;SparkMlLib提供了一些封装好的算法,以及特征处理、特征选择的方法。

四、经验分享

总之,对商用大数据平台而言,我们要考虑应用场景,用户规模和数据处理能力,以及未来3年的目标等。在应用场景的设计中,会考虑业务和技术的结合度量,业务的规模和流程设计。用户规模和数据处理能力,会考虑技术选型和架构设计。具体要考虑架构设计。架构中重要的核心指标:性能、可用性、伸缩性、扩展性的等架构指标。

一、性能

性能就是核心要素之一,具体如下:

CDN加速
    反向代理
    分布式缓存
    异步化:通过分布式消息队列来实现削峰的目的。通过业务配合技术来解决问题。
    集群:采用集群也是服务虚拟化的一个体现。用以避免单点问题,同时提供更加高可用,高性能的服务。
    代码优化:多线程中,如果是密集型计算,线程数不宜超过CPU核数。如果是IO处理,则线程数=[任务执行时间/(任务执行时间-IO等待时间)] * CPU核数。除此之外,我们应该将对象设计成无状态对象,多采用局部对象,适当将锁细化。进行资源复用。比如采用单例模式,比如采用连接池。合理设置JVM参数。
    存储性能优化:关系型数据库的索引采用B+树进行实现。而很多的nosql数据库则采用了LSM树进行存储。LSM在内存中保留最新增删改查的数据,直到内存无法放下,则与磁盘的下一级LSM树进行merge。所以对于写操作较多,而读操作更多的是查询最近写入数据的场景,其性能远高于b+树;采用HDFS结合map reduce进行海量数据存储和分析。其能自动进行并发访问和冗余备份,具有很高的可靠性。其等于是实现了RAID的功能。
    数据访问接口优化:数据库层其实是最脆弱的一层,一般在应用设计时在上游就需要把请求拦截掉,数据库层只承担“能力范围内”的访问请求,所以,我们通过在服务层引入队列和缓存,让最底层的数据库高枕无忧。

二、高可用性

衡量一个系统架构设计是否满足高可用的目标,就是假设系统中任何一台或者多台服务器宕机时,以及出现各种不可预期的问题时,系统整体是否依然可用。一般就三个手段、冗余、集群化、分布式。高可用的主要手段就是冗余,应用部署在多台服务器上同时提供服务,数据存储在多台服务器上相互备份。安全服务是指计算机网络提供的安全防护措施,包括认证服务、访问控制、数据机密性服务、数据完整性服务和不可否认服务。特定的安全机制是用来实施安全服务的机制,包括加密机制、数据签名机制、访问控制机制、数据完整性机制、认证交换机制、流量填充机制、路由控制机制和公证机制。普遍性的安全机制不是为任何特定的服务而特设的,属于安全管理方面,分为可信功能度、安全标记、事件检测、安全审计跟踪和安全恢复。

三、高扩展性

扩展性指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。表现在系统基础设施稳定不需要经常变更,应用之间较少依赖和耦合,当系统增加新功能时,不需要对现有系统的结构和代码进行修改。扩展性依赖于前期良好的架构设计。合理业务逻辑抽象,水平/垂直切割分布式化等等。可扩展架构的主要手段是事件驱动架构和分布式服务。事件驱动通常利用消息队列实现,通过这种方式将消息生产和处理逻辑分隔开。服务器服务则是将业务和可复用服务分离开来,通过分布式服务框架调用。新增加产品可用通过调用可复用的服务来实现自身的业务逻辑,而对现有产品没有任何影响。

四、高伸缩性

服务尽量同构。DB、cache在考虑分布式时尽量提前设计好扩展方案。也可以采用一些主流的对水平伸缩支持较好的nosql、memcached、hbase等。

围绕着大数据平台的全栈技术,以及数据流主线:数据采集-》数据集成-》数据处理-》数据微服务-》数据应用,我设计并实现了如下的商用大数据平台架构。

大数据全栈技术与商用平台架构设计之路相关推荐

  1. 数据科学家分享:“大数据全栈技术与商用平台架构设计之路”

    各位好: 回首10年多的科研工作历程,也是中国经济高速发展的10多年,中国高铁.核电.航空.互联网.云计算.大数据.人工智能等领域无不铭刻着"中国名片",这就是科技是第一生产力的实 ...

  2. 大数据全栈式开发语言 – Python

    前段时间,ThoughtWorks在深圳举办一次社区活动上,有一个演讲主题叫做"Fullstack JavaScript",是关于用JavaScript进行前端.服务器端,甚至数据 ...

  3. 大数据(1)---大数据全系技术概览

    大数据全系技术概览 什么是大数据? 大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量 ...

  4. 阿里巴巴年薪800k大数据全栈工程师成长记

    阿里 大数据全栈工程师一词,最早出现于Facebook工程师Calos Bueno的一篇文章 - Full Stack (需fanqiang).他把全栈工程师定义为对性能影响有着深入理解的技术通才.自 ...

  5. Python爬虫人工智能大数据全栈视频史上最全合辑教程分享!

    Python爬虫人工智能大数据全栈视频史上最全合辑教程分享! 毫无疑问Python是这两年最火的编程语言,不仅容易上手,且在多个行业都可应用.尤其今年人工智能及大数据的发展,Python将会展现更多的 ...

  6. 云原生+大数据 全栈 解决方案!

    我们经常说:当今社会已经进入了大数据时代.这句话,容易让人理解为在过去数据似乎离人们很远,或者说过去的时代只有小数据甚至无数据. 事实上,至从人类诞生之日起,数据就承载着人类对自然万物.生产生活的记录 ...

  7. 大数据全系技术知识概览

    什么是大数据? 大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样化的 ...

  8. 马士兵python_马士兵python大数据全栈工程师

    3. 进程与线程的关系 一个程序就是一个进程,而一个程序中的多个任务则被称为线程.进程是表示资源分配的基本单位,又是调度运行的基本单位.,亦即执行处理机调度的基本单位. 进程和线程的关系:一个线程只能 ...

  9. Yahoo大规模时列数据异常检测技术及其高性能可伸缩架构

    本文已经在InfoQ首发 本文是Yahoo在ACM国际会议上发布的一篇关于时序数据自动异常检测上的学术论文,对在智能监控尤其是趋势预测.异常数据监测和报警等方面的技术同学具有一定研究和参考价值,以下是 ...

最新文章

  1. vscode 格式化某一段代码_VSCode格式化代码功能失效的bug解决方法
  2. 保障数据安全,强调科技向善,旷视发布《人工智能应用准则》
  3. linux/CentOS7安装MySQL(完整版)【笔记自用】
  4. e-mobile帐号状态存在异常_个体工商经营户解除异常名录操作步骤(暂执行)
  5. C++ STL set(集合)
  6. Java基于springMVC的验证码案例
  7. js 操作vuex数据_vue中使用vuex(超详细)
  8. 【英语学习】【English L06】U06 Banking L5 I'd like to change Chinese *yuan* into pounds
  9. 【蓝桥杯嵌入式】【STM32】13_PWM输入捕获模式
  10. mouseChildren= false
  11. java pattern split,Java中的Pattern splitAsStream()方法及其示例
  12. python 守护进程(daemon)on : 会打扮的装饰器
  13. 新颖训练方法——用迭代投影算法训练神经网络
  14. IDEA配置Android-SDK
  15. 计算机网络安全需求包括哪些内容,什么是网络安全?网络安全包括哪几个方面?...
  16. 讯飞语音——带你简单实现语音听写
  17. namenode 格式化错误 Unable to check if JNs are ready for formatting
  18. 怎么用matlab画一个笑脸,MATLAB笑脸识别
  19. Windows——在设备和驱动器界面删除天翼云盘图标的方法
  20. 跳跳虎辅助免费体验版

热门文章

  1. 中本聪并没有出现,那真相是?
  2. 服务器性能评分,服务器CPU排行榜之服务器CPU性能评分
  3. Android 8.1 中Systemui中的常见修改(二)电池的修改
  4. 武大博士后出站后应聘在社区做社工引热议,内卷还是人各有志?
  5. HTML的mous事件
  6. oracle19数据库对内存要求,在天堂 - 技术老男
  7. python课程教学大纲-《Python语言基础》课程教学大纲
  8. 拒绝垃圾专业化学:选择正确的专业远比多考几分更重要 ——致全国高考考生和家长的一封信
  9. 中国打桩设备行业运行态势与投资前景预测报告(新版)2022-2027
  10. 戴某某说:“内心永无止境的期盼”