TPU(Tensor Processing Unit)张量处理单元,为机器学习定制的芯片,经过专门深度机器学习方面的训练,它有更高效能(每瓦计算能力)。

谷歌,2015年6月,I/O开发者大会上推出的计算神经网络专用芯片,为优化自身的TensorFlow机器学习框架而打造,主要用于AlphaGo系统,谷歌地图、谷歌相册和谷歌翻译等应用中。进行搜索、图像、语音等模型和技术的并行处理。

7.5.1、TPU发展史

2016 年,AlphaGo以4:1总分打败围棋世界冠军李世石,随后独战群雄,在与排名世界第一围棋的冠军柯洁对战胜利后宣布“隐退江湖”,背后的芯片开启了芯片产业的新篇章。

地覆天翻的四年,AI芯片领域,尤其是云端AI芯片,市场规模一路扶摇直上,成为芯片巨头和新势力虎视眈眈之地。

赛迪2019年8月发布的《中国人工智能芯片产业发展白皮书》,2018年全球云端AI芯片市场规模为62.1亿美元,这一数值预计在2021年达到221.5亿美元,巨大的市场将如火山爆发般呈现在众人眼前,芯片制造的高光时刻到来了。

这片蓝海中,有一个角色起到了划时代的意义,它就是谷歌TPU(Tensor Processing Unit,张量处理单元)。

与李世石、柯洁,以及中日韩数十位围棋高手的围棋对战中脱颖而出后,谷歌TPU曾一路狂飙突进,独步天下,现在已演进到了第四代。它的出现,无疑打破了GPU、GPGPU曾一度称霸神经网络推理和训练市场的局面。在大数据、人工智能领域,谷歌的王者之风逐渐显现。

2019年5月,谷歌I/O开发者大会上,万众瞩目的第四代TPU意外缺席,取而代之的是以1000个TPUv3组成的TPUv3 Pod,以及边缘AI芯片Edge TPU。即便如此,它仍通过一定程度的对外开放,以及辅助谷歌内部服务器应用深刻地影响着云端AI芯片市场。那次大会,后知后觉的人们意识到,谷歌卖的是方案与思想,谷歌已经脱离了技术。

从市场角度看,未来云端AI芯片巨大的发展潜力和市场机遇为谷歌TPU提供了肥沃的土壤;另一方面,紧迫的算力瓶颈和摩尔定律放缓等问题也越来越难以忽视。谷歌属于未来科技公司,有无穷的可能。

7.5.1.1、始于算力瓶颈,首秀人类围棋界

区别于GPU、GPGPU,谷歌TPU是一种ASIC芯片方案。ASIC全称为Application-Specific Integrated Circuit(应用型专用集成电路),是专为某种特定应用需求而定制的芯片。但一般来说,ASIC芯片的开发不仅需要花费数年的时间,且研发成本也极高,一直是个别公司的阵地。

对于数据中心机房中AI工作负载的高算力需求,许多厂商更愿意继续采用现有的GPU集群或GPU+CPU异构计算解决方案,也甚少在ASIC领域冒险。但谷歌说不了。

谷歌2006年起产生了要为神经网络研发一款专用芯片的想法,而这一需求在2013年也开始变得愈发急迫。谷歌这家超前的公司,在未雨绸缪。当时,谷歌提供的谷歌图像搜索、谷歌照片、谷歌云视觉API、谷歌翻译等多种产品和服务,都需要用到深度神经网络。

庞大的应用规模下,谷歌意识到,夜以继日运行的数百万台服务器,它们内部快速增长的计算需求,使得数据中心的数量需要再翻一倍才能得到满足。然而,从成本还是从算力上看,内部中心已不能依靠GPU和CPU来维持。制造芯片的冲动变成了现实。

种种因素的推动下,不差钱的谷歌正式开始了TPU的研发之旅。经过研发人员15个月的设计、验证和构建,TPU 2014年研发完成,率先部署在谷歌内部的数据中心。谷歌强大的财力保证了研发的成功,成功很大程度源于不差钱。

内部秘密运行了一年外,谷歌TPU还在围棋界“大杀四方”,斩获“人机大战”的神话。在今天,谷歌还有多少技术,还装在黑匣子中呢?

使用TPU之前,AlphaGo内置1202个CPU和176个GPU击败欧洲冠军范惠。2015年与李世石对战时,AlphaGo才开始使用TPU,而当时部署的TPU数量,只有48个。TPU大开杀戒,进入无人之境。

这场对战胜利的“秘密武器”也在一年后的谷歌I/O开发者大会上被揭开神秘面纱,TPU正式面世。在技术上,谷歌隐藏的太深。

7.5.1.2、谷歌TPU的迭代、云端构建、终端应用

面世后短短两年,谷歌TPU已经迭代到了第四代,性能亦不断跃升。随着研发的投入和广泛应用,谷歌也逐步推出可扩展云端超级计算机TPU Pod,以及Edge TPU。谷歌最终目的是超算领域与人工智能。今天,谷歌与英伟达成为超算领域的头狼。

名称

发布日期

性能

应用

TPU V1

2016年

28nm 功耗40w,主频700MHZ

深度学习推理

TPU V2

2017年

180TFLOPs浮点运算、64GB高带宽内存(HBM)

机器学习训练和推理,开始在Google Compute Engine上运行,以用于TensorFlow应用程序

TPU V3

2018年

420TFLOPs浮点运算,128GB(HBM)

扩展至更广泛的深度学习训练和推理领域,已进入Alpha测试阶段。

EDGE TPU

2018年

内建EDGE TPU、网络功能和加密芯片,具有高吞吐量。

企业中的机器学习任务而设计,主要执行AI推理。

TPU V2 POD

2019年

每秒11.5千万亿次浮点运算,4TB (HBM)、环面网状网络

深度学习领域

TPU V3 POD

2019年

每秒100千万亿次浮点运算、32TB(HBM),环面网状网络。

深度学习领域

7.5.1.2.1、2016年:第一代TPU

为神经网络而研发,但谷歌最初的第一代TPU仅用于深度学习推理。从性能上看,第一代谷歌TPU采用了28nm工艺制造,功耗约为40W,主频700MHz。

研发之初,谷歌需要尽快将TPU部署到内部现有的服务器中,因此研发人员选择将处理器打包成外部加速卡,以插入SATA硬盘插槽后进行嵌入式安装。毫无疑问的是,这种设计是成功的,并很快投入了应用。

TPU通过PCIe Gen3 x16总线连接到主机,实现了12.5GB/s的有效带宽。除了在AlphaGo上应用之外,谷歌第一代TPU还用于谷歌的搜索、翻译和相册等应用的机器学习模型中。

▲Google第一代TPU(左),在谷歌数据中心中部署的TPU(右)

7.5.1.2.2、2017年:第二代TPU,引入Google Cloud

一年更新、研发和迭代,谷歌在2017年5月发布了第二代TPU,并从这一代起能够用于机器学习模型的训练和推理。

与第一代相比,第二代TPU实现180TFLOPs浮点运算的计算能力,同时其高带宽内存(HBM)也提升到了64GB,解决了第一代TPU内存受带宽限制的问题。电子硬件的发展堪称神速。

运行AI工作负载上,谷歌第二代TPU与同期的CPU、GPU相比,性能比传统的GPU高了15倍,比CPU高了30倍,每瓦性能亦提高了30至80倍。硬件有强大的提升空间,保障谷歌思想的实现。

从第二代TPU起,谷歌第二代TPU引入Google Cloud,应用在谷歌计算引擎(Google Compute Engine ,简称GCE)中,也称为Cloud TPU,进一步优化谷歌搜索引擎、Gmail、YouTube和其他服务的运行。谷歌通过K8S进行云端软件技术处理,TPU提供硬件保障。

同时,Cloud TPU通过TensorFlow进行编程,并与CPU、GPU及基础设施和服务结合,以根据用户应用需求构建和优化机器学习系统。谷歌在云上的技术铺垫深厚,谷歌未来的主战场是云端。

谷歌第二代TPU的发布,新一轮的人机大战也再次揭开序幕。而这一代AlphaGo的芯片配置,仅用了4块TPUv2,击败当时的世界围棋冠军柯洁。

谷歌除了推出第二代TPU外,还宣布计划研发可扩展云端超级计算机TPU Pods,通过新的计算机网络将64块Cloud TPU相结合,能够提供约11500万亿次浮点运算能力。强大的运算能力为谷歌平台提供了技术保障。

7.5.1.2.3、2018年:第三代TPU,边缘AI芯片Edge TPU

2018年5月,谷歌不出意外地发布了第三代TPU,其各方面性能不仅实现了升级,也进一步扩展到更广泛的深度学习训练和推理领域。我们怀疑的是,第三代TPU应该在2017年研发完成。

谷歌表示,第三代TPU的性能均是第二代TPU的两倍,可实现420TFLOPs浮点运算,以及128GB的高带宽内存。同时,它还可部署在基于云计算的超级计算机TPU Pod中,其中的芯片数量是上一代的四倍。这些数据表明,微电子技术的发展方兴未艾。

与第二代TPU Pod的部署相比,第三代每个Pod的性能提高了8倍,且每个Pod最多拥有1024个芯片。这些TPU的集群,形成了强大的狼群并行处理能力。

谷歌2018年发布了用于边缘推理的微型AI加速芯片——Edge TPU,专为企业机器学习任务而设计,用于IoT设备中。市场是细分的,技术必须根据市场变动。

Edge TPU同样是一款ASIC芯片。从应用上看,它与Cloud TPU相互补,用户能够先使用Cloud TPU对机器学习模型进行加速训练,再将训练好的模型放入相关设备中,进一步用Edge TPU进行机器学习推理。TPU的芯片向纵深发展。

据了解,Edge TPU能够让IoT设备以每秒30帧以上的速度,在高分辨率视频上运行多个先进的计算机视觉模型。数据处理重要的一部分是计算机视觉,谷歌TPU这种技术,很可能在未来的某一天,这些硬件产品出现在我们身边。

谷歌还为Edge TPU推出了一套名为Cloud IoT Edge的软件平台,该平台拥有Edge IoT Core和Edge ML两大主要组件,能够帮助用户将在Google Cloud上构建和训练的机器学习模型,通过Edge TPU扩展到边缘设备中运行。技术的开源是未来的发展趋势,软件平台的出现,为谷歌技术的推广推波助澜。

7.5.1.2.4、2019年:第二/三代TPU Pod

这一年谷歌并未发布第四代TPU,却上演了另一个重头戏——发布第二代和第三代TPU Pod,可以配置超过1000颗TPU。强大的集群带来了强大的性能,在硬件技术突破的同时,谷歌在软件集群技术上也在进行着发展。

作为TPU的“升级版”,谷歌第二代TPU Pod能够容纳512个内核,实现每秒11.5千万亿次浮点运算;第三代TPU Pod速度则更快,可实现每秒超过100千万亿次浮点运算。这次升级之后,我们期待着谷歌新一代TPU的发布,相信带来更强大的性能。

据悉,在相同配置(265块TPU)下训练ResNet-50模型时,第二代TPU Pod需要11.3分钟,而第三代TPU Pod只需7.1分钟。这些数据的背后,是TPU集群快速增长的结果。让我们很难想象的是,谷歌TPU在集群技术路上还能走多远。

7.5.1.3、架构创新,掀起云端造芯大浪潮

谷歌TPU系列芯片的出现,不仅突破了最初深度学习硬件执行的瓶颈,还在一定程度上撼动了英伟达、英特尔等传统GPU芯片巨头的地位。英伟达、AMD、INTEL在PC市场上这些传统霸主地位受到了挑战。

2015年以来,与AI芯片相关的研发逐渐成为整个芯片行业的热点,在云端的深度学习训练和推理领域,已然不是GPU,尤其是英伟达独霸一方。

谷歌TPU的诞生,越来越多的公司前赴后继地尝试设计GPU之外的专用AI芯片,进一步实现更高效的性能。这是一条成功的路线,科技巨头都在进行着尝试。

技术层面看,谷歌TPU的出现在架构创新上也为行业带来了以下思考。这种影响,在未来几十年将会深刻的感受到。

7.5.1.3.1、大规模片上内存

谷歌看来,片外内存低是GPU能效比低的主要原因。一些GPU由于片上内存较少,因此在运行过程中需要不断地去访问片外动态随机存取存储器(DRAM),从而在一定程度上浪费了不必要的能耗。在从前,关于CPU与GPU上的内存是争论的喋喋不休的话题,在功耗等各方面都有考量。

因此,谷歌在最初设计TPU时,总共设计了占总芯片面积37%的内存,其中包括24MB的局部内存、6MB的累加器内存,以及用于与主控处理器对接的内存。谷歌反其道而行之,用功耗换取效率。

7.5.1.3.2、用量化技术进行整数运算

一般来说,神经网络的预测并不需要32位或16位的浮点计算精度,因此它可以通过8位低精度运算的方法,在保证适当准确度的同时,对神经网络进行预测。这种精细化的设计,适应了神经网络技术的需求。

通过量化技术,神经网络预测的成本大大减少,相应减少了内存的使用。例如,当研发人员将量化应用于流行的图像识别模型Inception时,芯片内存从91MB压缩到了23MB,约为其原始大小的四分之一。

人工智能时代每一种算法数据都有自己的特点,神经网络作为人工智能的主流算法,有自己的计算特点,谷歌深谙此道,并对硬件改进,取得了GPU的成功。

7.5.1.3.3、可编程性

虽然谷歌TPU是ASIC芯片,但却与FPGA又有些类似,它具备一定的可编程性能力。谷歌看来,TPU的研发并非只用于运行一种神经网络模型。因此,谷歌选择采用了复杂指令集(CISC)作为TPU指令集的基础,能够较为侧重地运行更复杂的任务。软硬件技术的结合是TPU成功的关键因素。

谷歌还定义了十二个专门为神经网络推理而设计的高级指令,能够在输入数据和权重之间执行矩阵乘法,并应用激活函数。今天,国内的学习是从指令开始起步。

为了能进一步对TPU进行编程,谷歌还创建了一个编译器和软件堆栈,能够调用TensorFlow图中的API,转化成TPU指令。TPU与TensorFlow的融合,让TPU开始接底气,并为TensorFlow做大规模的神经网络数据训练打下基础。

7.5.1.3.4、并行计算

谷歌为TPU设计了矩阵乘法单元(MXU)的并行计算。并行计算是数据发展的要求,今天并行计算是人工智能面临的第一个问题。

它能够在一个时钟周期内处理数十万次矩阵运算,相当于一次打印一个字符、一次打印一行字或一次打印一页文档。这种高效的形式,是成功的关键因素所在。

7.5.1.3.5、脉动阵列设计

MXU具有与传统CPU和GPU截然不同的架构,又称为脉动阵列(systolic array)。不同硬件设计带来的效果是惊人的。

脉动阵列使得在每次运算过程中,谷歌TPU能够将多个运算逻辑单元(ALU)串联在一起,并复用从一个寄存器中都取得结果。脉动阵列设计形式,大大提高了效率。

这种设计,不仅能够将数据复用实现最大化,减少芯片在运算过程中的内存访问次数,同时也降低了内存带宽压力,进而降低内存访问的能耗。

▲TPU的矩阵乘法器单元(MXU)

谷歌TPU的一鸣惊人,不仅为AI芯片领域带来了架构创新,同时亚马逊、微软等一众科技巨头,以及寒武纪、天数智芯等新势力亦开始纷纷入局,云端AI芯片市场开始风起云涌,掀起行业云端造芯大浪潮。

这是一个芯片制造的年代,如果没有技术的积淀与雄厚资本的支持,芯片制造是水中花、镜中月,革命性芯片的研发投入在百亿以上。国内的弘芯、龙芯值得我们深思。

7.5.2、TPU与机器学习

TPU的出现,加速了第二代人工智能系统TensorFlow的运行,效率也大大超过GPU,Google的深层神经网络由TensorFlow引擎驱动。TPU是专为机器学习量身定做,执行每个操作所需的晶体管数量更少,自然效率更高。补充说明的是,能耗也更高。

TPU与同期的CPU和GPU相比,可以提供15-30倍的性能提升,以及30-80倍的效率(性能/瓦特)提升。在人工智能发展过程中,效率的提升可以对算法进行有效的测试。由于效率问题,很多算法暂时无法测试。

TPU每瓦能为机器学习提供比所有商用GPU和FPGA更高的量级指令,高性能计算得以在民间应用。TPU为机器学习应用特别开发,使芯片在计算精度降低的情况下更耐用。

在人工智能年代,未来,指令级编程将称为常态。对于国内大多数技术人员而言,对指令的熟悉程度影响着个人技术的发展。

每一个操作只需要更少的晶体管,用更多精密且大功率的机器学习模型,并快速应用这些模型,因此用户便能得到更正确的结果。

7.5.3、对比说明

CPU和GPU都是较为通用的芯片,但是有句老话是这样讲的:万能工具的效率永远比不上专用工具。而TPU就是一个专业工具。

随着社会的计算需求越来越专业化,芯片的专业化需求在增强。便产生了ASIC(专用集成电路)的概念。这个概念其实很早就出现了,但是ASIC不是任何一家公司都能尝试的,其复杂程度、集成程度堪称技术的堡垒。

ASIC是指依产品需求不同而定制化的特殊规格集成电路,由特定使用者要求和特定电子系统的需要而设计、制造。这些是定制化的芯片开发,定制化的芯片开发一直广泛存在。在这个领域,谷歌的TPU技术是成功的尝试。

因为ASIC很“专一”,只做一件事,它就比CPU、GPU等能做很多件事的芯片在某件事上做的更好,实现更高的处理速度和更低的能耗。相应的,ASIC的生产成本也非常高。

TPU就是谷歌专门为加速深层神经网络运算能力而研发的一款芯片,其实也是一款ASIC。

图:谷歌第二代TPU

原来很多的机器学习以及图像处理算法大部分都跑在GPU与FPGA(半定制化芯片)上面,但这两种芯片都还是一种通用性芯片,在效能与功耗上不能更紧密的适配机器学习算法。硬件改变的初衷便形成了

Google一直坚信伟大的软件将在伟大的硬件的帮助下更加大放异彩,所以Google便想,可不可以做出一款专用机机器学习算法的专用芯片,TPU便诞生了。

据称,TPU与同期的CPU和GPU相比,可提供15-30倍的性能提升,以及30-80倍的效率(性能/瓦特)提升。第一代TPU只能做推理,依靠Google云实时收集数据并产生结果,训练过程还需要额外的资源;第二代TPU既可以用于训练神经网络,又可以用于推理。

图:TPU 各模块的框图

如上图所示,TPU在芯片上使用了高达24MB的局部内存,6MB的累加器内存以及用于与主控处理器进行对接的内存,总共占芯片面积的37%(图中蓝色部分)。这在从前是不可想象的。

图:TPU芯片布局图

这表示谷歌充分意识到了片外内存访问是GPU能效比低的问题所在,不惜成本的在芯片上放了巨大的内存。相比之下,同时期英伟达的K80只有8MB片上内存,需要不断地去访问片外DRAM。这种设计,和传统硬件设计有巨大的区别,也许只有谷歌财大气粗的公司才有如此的魄力吧。

7.5.4、TPU性能与应用

TPU的高性能还来源于对于低运算精度的容忍。研究结果表明,低精度运算带来的算法准确率损失很小,但是在硬件实现上却可以带来巨大的便利,包括功耗更低、速度更快、占芯片面积更小的运算单元、更小的内存带宽需求等。TPU采用了8比特的低精度运算。

不同的技术有不同的应用,不同的应用有不同的算法,不同的算法有不同的精度,TPU的神经网络不需要传统的精度,这和从前的很多设计思路是有区别的。

目前为止,TPU已经干了很多惊天动地的事情,并且为我们服务了很多年。并且在更多领域应用。

机器学习人工智能系统RankBrain,帮助Google用户处理搜索结果;街景Street View,提高地图与导航的准确性;下围棋的计算机程序AlphaGo。这些大事记背后,代表着人工智能时代到来了。

7.5.5、示例代码

7.5.5.1、变分程序

7.5.5.2、并行VAE程序

7.5.6、总结

从CPU到GPU,再到如今ASIC和FPGA相继入局,云端AI芯片市场百花齐放,与谷歌TPU的推动息息相关。

今天,云端AI芯片市场杀得热火朝天,前有赛灵思和寒武纪等新老势力不断崛起,进一步蚕食非GPU领域的市场,后有科技巨头四处找寻机会“大鱼吃小鱼”,合并有潜力的新玩家,整片市场呈一派割据混战、百家争鸣之势。

不容忽视的是,随着云端AI芯片不断发展,大数据、云平台持续爆发,以及摩尔定律逐渐放缓,算力也再次来到新的瓶颈。

玩家是通过先进制程再次撕开云端AI芯片的新技术领域,还是依靠研发创新架构来实现算力的飞跃,不管走向哪条路都需直面种种挑战。

在AI芯片市场开辟之初,谷歌凭借TPU逐渐打开云端AI芯片市场新的竞争格局,但当云端AI芯片开始进入新时代,谷歌在云平台大数据的技术优势,相信TPU能再次延续过往辉煌,为市场开辟新的方向和路径。

TPU由谷歌独家提出,独家研发,独家应用,这些能给我们多少启示呢?谷歌从一个搜索科技公司,过渡到大数据、云计算公司,进而走在人工智能、硬件科技的大道上。

显示硬件发展与视频开发系列(6)----显示标注与视频处理单元(5):TPU相关推荐

  1. 显示硬件发展与视频开发系列(6)----显示标注与视频处理单元(1):显示标准

    7.显示标准与视频处理单元 消费级视频智能处理大体有10年左右,有了巨大的发展,展望未来,对应于大厂而言,竞争是标准的竞争.包含显示标准与处理单元,竞争推动了科技的进步,市场的繁荣. 新的显示硬件也不 ...

  2. 音视频开发系列(15):视频与音频同步

    上次分享了将视频与音频同时推流到服务上的代码封装,然后上节分享在测试后会发现音视频不同步,这边说一下原因: 从帧率及采样率,即可知道视频/音频播放速度.声卡和显卡均是以一帧数据来作为播放单位,如果单纯 ...

  3. 显示硬件发展与视频开发系列(6)----显示标注与视频处理单元(2):VPU

    VPU(Video Processing Unit,视频处理单元)是一种全新的视频处理平台核心引擎,具有硬解码功能以及减少CPU负荷的能力.VPU可以减少服务器负载和网络带宽的消耗. VPU由ATI提 ...

  4. 显示硬件发展与视频开发系列(6)----显示标注与视频处理单元(3):APU

    APU是"Accelerated Processing Units"的简称,中文名字叫加速处理器,是AMD融聚未来理念的产品,它第一次将处理器和独显核心做在一个晶片上. CPU与A ...

  5. 【音视频开发系列】一学就会,快速掌握音视频开发的第一个开源项目FFmpeg

    快速掌握音视频开发的第一个开源项目:FFmpeg 1.为什么要学FFmpeg 2.FFmpeg面向对象思想分析 3.FFmpeg各种组件剖析 视频讲解如下,点击观看: [音视频开发系列]一学就会,快速 ...

  6. 【音视频开发系列】盘点音视频直播RTSP/RTMP推流一定会遇到的各种坑,教你快速解决

    聊聊RTSP/RTMP推流那些坑 1.推流架构分析 2.推流缓存队列的设计 3.FFmpeg函数阻塞问题分析 [音视频开发系列]盘点音视频直播一定会遇到的各种坑,教你快速解决 更多精彩内容包括:C/C ...

  7. 【音视频开发系列】srs-webrtc-janus开源流媒体服务器分析

    全球最牛开源流媒体服务器源码分析 1.如何学习流媒体服务器 2.全球最牛流媒体服务器架构分析 3.我们能从全球最牛流媒体服务器得到什么 [音视频开发系列]srs-webrtc-janus流媒体服务器分 ...

  8. 音视频开发之旅(32)-音视频学习资料

    目录 为什么要学习音视频? 如何学习系统性音视频? 音视频相关的资料 学习实践的输出文章分类聚合 收获 最近有朋友问想学习音视频,应该怎么学,有什么资料吗? 这个问题也困扰我很久,几年前就想开始音视频 ...

  9. Android音视频开发基础(七):视频采集-系统API基础

    前言 在Android音视频开发中,网上知识点过于零碎,自学起来难度非常大,不过音视频大牛Jhuster提出了<Android 音视频从入门到提高 - 任务列表>.本文是Android音视 ...

最新文章

  1. 行列式介绍及Eigen/OpenCV/C++的三种实现
  2. 《极乐空间》特效制作与渲染
  3. python 函数的调用的时候参数的传递_python定义函数时的参数调用函数时的传参...
  4. 16位灰度数据成像_16位 250M双通道PCI数据采集卡 FCFR-PCI9808
  5. 大数据互联网架构阶段 Redis(二)
  6. 人生的12个经典领悟
  7. 后端把Long类型的数据传给前端,前端可能会出现精度丢失的情况,以及解决方案...
  8. java access jdbc_Java连接Access数据库
  9. 把偷快递的贼炸到怀疑人生!不愧是NASA工程师,奇思妙想
  10. Linux网络协议栈:网卡收包分析
  11. 电脑处理器排行榜2021版
  12. 5.6.1 Boolean类型
  13. 与计算机博弈相关的学术论文,爱恩斯坦棋计算机博弈系统的研究与实现计算机应用技术专业论文.docx...
  14. Android笔记:使用Glide加载图片刷新时会闪烁
  15. CentOS7下安装配置zookeeper集群及设置开机自启
  16. linux 强制重启 sysrq,用Magic SysRq键实现Linux安全重启
  17. 数据库修改表名,字段名 字段类型
  18. ue4 后期处理景深_【UE4设计师】2-3后期处理效果——使用景深设置电影拍摄
  19. 理解卷积的空间不变性和通道特异性
  20. 0.96寸4针OLED的使用与驱动模块

热门文章

  1. EKF-SLAM原理推导
  2. 一机玩转docker之七:搭建bamboo
  3. 云计算创新展望-精耕细作的超级云计算平台
  4. 2385. 感染二叉树需要的总时间
  5. Mobaxterm使用小技巧(log文件、宏命令录制)
  6. 大学生都四面成功拿到字节跳动Offer了,你还在摸鱼嘛?
  7. SQL数据类型datetime
  8. 轻松实现一个简单H5播放器
  9. Android实现银行卡号扫描识别
  10. 深入理解java 的深拷贝和浅拷贝