发布变更又快又稳?腾讯运维工程师经验首发

news2024/11/26 3:22:38

07d0beece867d62ea1f01a06f55e3b36.gif导读| 如何让功能缺陷修复快速上线?版本发出问题时怎样快速回退?效率提升后质量掉队?为解决这些常让运维工程师头疼的事情,本栏目特邀腾讯知名运维工程师袁旭东,讲述对象存储COS的发布演进过程,为各位开发者提供业务通用的高效高质变更方法。该业务通过提升灰度自测能力、优化流转时间和并发策略等方法实现提效,同时提出措施保障质量,并设置了一套可度量体系保障持续监控、调优,最终带动发布变更水平上新台阶。

‍‍‍‍‍

25ebd8887dd4a34f838901f5eed82471.jpeg

背景

1)背景诉求

现网发布变更对运维开发工程师来说是最繁重的工作。发布变更的概念、节奏等已经是老生常谈。但在ToB时代到来后,云上业务的诉求是功能/缺陷修复尽快上线、版本发出问题快速回退,防止客户业务受损。

在整个需求上线环节中,CD部分由运维实施。如何让版本更快的交付上线是核心任务。

009372a49d4f9fc8ece7da9de9d172b5.png

2)对象存储COS

腾讯云近几年开始大力发展,对象存储COS架构也经历了一次存储引擎升级YottaStore的大迭代。对象存储COS从用户接入到数据落地,要经历三个核心子平台:逻辑接入层、索引存储层、数据存储层。每个子平台内部还有数十个模块相互配合提供服务,任何一个链路出现异常都可能对数据PUT、GET、LIST、HEAD等接口造成可用性影响,COS节点数更是突破了10W+。

de71003bec2c2cfd58a48c5ee6519d7d.png

历史的存储引擎(TFS、LAVADB等)在变更中需要小set内串行,或将数据迁走然后变更。这类变更耗时是显而易见的(从耗时过长会引发意想不到的变更方式:按照版本组合来变更,按照各区域版本自治完全没有统一概念等)。这类型的变更最多做到流程标准化。它可以set之间并发或批量迁走数据再变更,但解决不了本质问题。

YottaStore相比传统TFS模式或LAVADB模式而言,好在将小set模式的变更方式升级为集群百分比变更,打破理解set变更的模式,每个节点剔除加回也不需要等待数据迁移。这本质上提高了存储变更效率上限。

2582c95a656fc599fa437329fc96b2aa.jpeg

COS关键提效手段

1)管理区域MZ适配发布

YottaStore在上线的时候就对节点标签引入了MZ(Management Zone)的概念:同集群内跨MZ不能同时变更,减小误操作爆炸半径。例如,模块上线后使用20个MZ,跨MZ屏蔽节点会失败(保障现网最大5%的机器可以并发变更)。当然,在更核心服务配置时MZ应该设置的更多。

优化前,基于MZ的概念变更节奏为:单机灰度:随机一个MZ变更1台;灰度:所有MZ随机变更1台;全量:MZ内全量并发,MZ之间串行,并且开始时智研平台并发度受限在100以内。

优化后:考虑集群内节点同服务角色,将灰度节奏调整为随机一个MZ全量,减少跨MZ带来的耗时,同时智研平台支持将最大并发调整为500+(单集群节点数/mz数量目前小于500,故相当于实现了MZ内全量并发)。

基于区域MZ适配发布优化的策略,主要是通过COS对MZ编排做了适配,同时智研平台把并发度支持从100并发调整到500并发,对于单机模板执行效率也做了优化。这整体优化了平台并发能力和发布流转效率,全园区覆盖效率提升100%。

e474b76da509f990c1f39e562d27020c.png

2)灰度自测能力

为降低人工check等待时间,COS在单机变更模版引入变更的自检过程。

第一,灰度机器加回现网之前,扫描日志初始化,进而确认程序初始化成功。第二,灰度机器加回现网之前,引入自动化回滚。这里需持续丰富测试用例,打通测试平台建立完整测试流程。

d702661182620559dd21b8f8062d7558.png

3)优化并发策略

变更系统提供人工控制入口,部署编排中的所有任务可以人工确认后直接启动,速度直线提升。

COS发布分离线计算,自研云集群、公有云海外、公有云国内(每个云属性下有多个集群)、同云属性集群都可以在灰度健康的情况下开启并发。正常的版本发布耗时大约在1周工作日内完成。

4)优化流转时间

将发布流程放大并将每一环可能产生的问题明确,我们可以看到不必要的浪费和可节约的时间。

fa375ee4251ee61a88ad94e4391f2f61.png

COS当前采用研发提单(仅提供提单权限)。系统群内推送给到开发leader审批,预发布环境发布,再到运维leader审批现网发布的方式。其中流转通过自动群推送的方式减少人频繁@时间,与知会时间。

现网发布时,由于云上是区分客户等级的,所以在发布区域上用唯一流水线固化发布顺序来降低区域选择和流转时间。(流水线覆盖权限,且支持发布中临时调整)。其实固化对于质量的提升更多,后面来说。

ebc46869c3be7c586c9a1ec03f0dae28.png

上述点优化后,变更耗时从15天变更1w+设备,到4天变更4W+设备。

5)关注提效的更多探索‍‍‍‍

某次大规模故障复盘当晚,我们对于快速故障处理时的发布提出了思考:回滚或者紧急的发布能否支持更快完成?软件发布是否还有提效的空间?答案是肯定的。

为了从细节出发,我们对每一次单机变更做了记录。最终发现关键软件由于程序包太大,下载耗时就占了40%。该下发方案是,多台机器同时从变更系统拉取程序包。这使我们一下子就联想到了客户集中下载COS单对象的场景,该场景最优的解决方案,就是引入CDN的特性与优势:预热!

在实现上,我们用了两种方案:

第一,缓存接入点就近分发。机器触发新包拉取的时候存一份到缓存接入点。后续机器拉包去到就进的缓存接入点拉取,减少拉包时间。缺点是需要尽可能多的缓存接入点;COS地域较多,会导致耗成本。

a91e4febe40a88418544ab55975eea83.png

第二,预拉取。变更系统知晓发布单的所有行为,所以在任务启动的时候后台就开始(比如以200台的并发度)将包往机器上分发。后面执行的机器在单机变更模版基础上加一步:判断是否已经分发过。当标志位是已分发时,则会跳过分发包直接开始变更步骤。(COS使用该方案,节省了缓存接入点,降低带宽与本机器成本)方案上线后,单机执行效率提升40%。

6)只考虑提效带来的问题

云上2B业务规模量庞大,叠加对象存储COS内部模块数超20个,节点数超10万,对于版本迭代中的质量必须提出极高要求。

质量对于效率是非直观的,但是始终会影响真实的交付效率。

总的来说:现网发布中,效率是诉求,但发布质量是痛点,若质量问题不解决,单纯提效并不完善

e8e9ca1f92eebe5c4e143e88edffd976.jpeg

发布要提效,质量是痛点

COS对于发布中引入的质量问题优化是艰难的。年维度的时间迭代,期间包含了COS运营模式改造、存储架构升级、变更体系完善、变更系统适配改造等多项措施。解决质量问题时不仅解决了效率痛点、规范了变更流程、保障变更质量的同时还降低变更人力,多方面助力发布提效。下面讲下COS如何做发布质量的提升,希望能给你一些思路。

1)明确质量痛点

  • COS自身的问题

第一,OSS不完善,无实例管理。由于前期没有统一的OSS,部署/开区都通过拷包完成。OSS缺失导致发布中的状态感知及各种发布中的问题排查都是低效的。三级模块管理很容易出错。因此,实例接口化升级是必要途径。

第二,配置包区域化,模版不一致。每个区域都有自己独特的配置,而独立性并不是需要的。修改一次全网特性需要去每一个区域包里面改配置,确认时也一样。差异化配置众多,改造统一配置文件是重中之重。

第三,发布流程随意,发布成功率靠运维能力保障。原发布变更系统是没有顺序概念的,只有通用的编排比如串行/并行指着ip发布。

  • 变更过程的问题

从历史中能看到,问题最多的原发布变更系统。业务发展初期,典型的情况是只考虑变更效率的极致提升,无考虑管控不足带来的质量风险。所以在系统选型上,需要按照自身业务的管控需求来做。管控不足主要分为以下六点:

6a93fbd1d1ef06f7077dc287e5224d37.png

  • COS发布场景梳理

结合COS业务特性进行发布场景梳理与逻辑梳理,我们分别从正常部署、正常回滚、配置发布、扩缩容、紧急逃生、混部后的发布入手,结合现网变更中遇到的所有问题确定所有场景

另外回退对云业务来说是预案。当和发布有关联,应该第一时间回退。若不是回退问题,其实我们期望让回滚流转成正向发布以继续变更。

5d365858d67b3f686952feeb6761b2e4.png

  • 观察点梳理—质量岗哨

梳理COS发布前后的观察点,便于理解变更行为从而设置“岗哨”。包括基础的进程是否拉起、日志是否有错误、coredump、正常/异常返回码是否正常、延迟成功率业务请求是否变化。

每次变更软件负责人提供的额外注意事项,变更后的功能点更新的验证。以及是否可回滚,不可回滚变更的预案处理方法;

要关注变更期间的事件(不仅仅是变更模块的告警,而是需要关注整体的告警)和用户投诉、集群异常事件的产生等。

2)逐项攻克解决

  • 配置文件管理升级为配置模板+配置变量的管理模式,对于整体运营上的提升有巨大帮助

第一,开区识别配置模版与配置变量,OSS支持自动化开区,独立客户单应用创建;第二,OSS识别配置变量,对于每一个配置变量可以确定功能,明确变量使用场景,做到配置修改和下发的预案模型,取代sed;第三,管理配置模版后,全局配置统一,不需要担心任何一个区域的配置文件再存在特异性问题;第四,区分配置模版、配置变量后,可以逐渐根据情况缩减配置变量,让通用性更强,运营复杂度降低;第五,配置变量对应的文件可以独立抽出来后,方便的做配置中心管理等更高级的下发升级;第六,实例问题——OSS建设,实例接口化升级(耗时半年)。

  • 接口实例化升级

首先,接口化便于指定发布、日志、监控系统的统一管理(oss只维护接口,所有平台支持监听接口自动更新);其次,实例接口化后统一接入部门产品树和产品下的集群树,规范化集群和LZ(逻辑区域),根源上杜绝IP变更;此外,基于标签化的配置作用域管理,通过建立标签映射关系的工具支持,可以降低很多运维的平台迁移工作。

  • 变更过程改造

第一,固化发布流程。因为腾讯云是通过区域售卖区域管理,COS属于Region级产品,所以按照Region来作为内部发布平台的抽象任务,内部区分实际不同功能特性的集群。但是所有软件的发布方式原本都各式各样,没办法保障每个人来发布都能不出问题。所以我们的方案是,降低发布爆炸半径且固化:区域发布顺序唯一且固化,设置可最大程度降低发布爆炸半径的流程编排并验证(如第二部分COS的直观提效第4点的发布流程优化图),并且所有的规范都通过智研平台标准化落地,一个应用,一个流程,现代化升级和固化发布流程,工具化落地审批、double check、强制回滚,预发布流程等,杜绝人为失误,为自动化变更打好基础。详细的点还包含:

每列分为一个完整的云属性概念,保障不同属性优先级顺序,不同列之间引入暂停确认;将LZ(逻辑区域)的概念落为编排单元(图中的每一个任务);LZ内实现set化管理,保障区域内针对不同云上客户优先级编排发布顺序;新开区场景会自动识别到流水线模板,保障每次新增/减少集群都会加入到变更流水线上,保障发布全网覆盖。

94890a9ae7d0eda6aaad2cd2651f95fc.png

第二,固化发布策略保障了发布流程,当然还要保障发布过程(发布策略)。失败可暂停,变更必灰度,变更模式统一;统一的变更策略:程序变更统一最大失败数,组内/组间并发度;统一的灰度策略:所有变更按照【1-确认-10%-确认-100%】的灰度节奏,强保障变更影响面和人工观察确认;统一的单机变更模板:正常情况程序变更和配置变更的单机变更模板各有一个,其他按各场景各自唯一;统一的发布时间:落地部门变更标准时间,变更时间过后发布单自动停止。

85fde1fc5e0a0cdf5da8b348c1dce29c.png

其他变更过程如下:

59983f865f176249a54a0eb00a4cba7d.png

  • 改造后的收益

33015c1a815bc1652d8ec18734e459de.png


3)解决存储业务混部场景

架平很多服务需要极致压榨硬件性能,与存储设备混部。该场景区别于在离线混部,属于在线和在线混部,每个服务都需要保障可用性。故需要考虑发布中此类场景的容灾设计。

需要杜绝的情况:第一,软件A数量>>软件B,软件A灰度10%触发机器死机导致软件B100%服务异常;第二,软件B类三副本cell模型(参考索引存储、块存储等实现),软件A机器变更影响软件B成对异常也会导致部分数据不可用的场景。

解决方案是引入通用理解的容灾分组,保证上述流程落地后规范并发布。

2c19950215144b4e7189a21173cb9558.png

4)完善变更体系

发布问题,解决的要点不仅仅是发布。COS对于变更额外还提出了很多自身运营上的的要求。

46a8c17f213065389182f35bb861afb7.png

整体来说,发布概念、发布流程把控的标准化解决了在大部分发布流程上人工误操作可能引起的问题。足够标准化带来的收益就是全面标准化外包化发布,通过运维和开发配合持续降低发布变更的人力投入。并且关键的是:版本发布未再出现由人为操作引起的故障case。

  • COS的变更改造总结

e96613e5ae8489b3c694adc7c69849ee.png

cb8c025e25984aa26dbe5e379f47f45f.jpeg

持续度量,持续优化

如果所有发布正向环节都考虑完备,能将效率与质量都进行提升。但这是否就足够呢?答案是NO。还需要良好的可度量体系,才能保障各项环节有数据反馈,持续调优

好的度量具有两个特征:一是能够回答一个本质问题,另一个是能够引导出正确的行为,两者缺一不可。

07d346b80f65e1e9c06a695254389038.png

1)审计负反馈

目前来看,COS按照每一项发布的目标做行为上的数据审计。可以参考以下几点:

第一,成熟度指标体系:比如达到了某些标志性的数据后,可以直观地标识成熟度等级(但等级低可能是包含了各种历史和业务原因的)。‍

第二,发布效率提升:比如从执行日志找到单机类效率低的点,比如从整个发布环节中找到时间delay比较多并且可优化的点。‍

第三,发布行为考量:比如整个发布环节究竟占了多少人力,一次变成成功率是否高?由于人为环节或系统因素导致频繁发布失败,发布结单是有数据的,从这些数据可以负反馈给到用户是否该好好梳理下当前的发布问题及如何提升(是否环境污染、配置填错、模板不幂等)。因为统计后发现30%的人力消耗都在发布后,我们对于发布的调优才变的非常重要。

d22f8e95fb962dfd2e8e56e2de0becac.png

第四,发布过程事件关联:通过不同问题类型触发的故障影响,给各个问题做贡献度系数,最终可以做变更质检的打分体系。‍

第五,发布软件原因:从程序上入手,可以从程序问题的原因分类来做统计,比如相同软件经常出BUG,相同平台频繁出BUG,BUG平均影响线上时长等等反馈研发团队的可改进方案。‍

第六,审计负反馈通过部门某平台汇总展示:定期邮件到所有产品的发布情况,引导各项环节完善管理。‍

eebac035a6196ea74603b6b5c612e063.png

2)成熟度体系

基于腾讯云上发布的理解,COS将发布成熟度区分为以下5级,最终目标为全自动发布。建立标准和成熟度模型,数据化牵引改进发布变更各环节的成熟度,迈向自动化。

6e7eac636e20949291c7cdbff07d38cd.png

3550743137f973015e4dee9ab84022aa.jpeg

未来:向更智能的发布模式演进

首先是变更质检。区域告警关联区域变更,事件总线建设(相关事件关联),故障快速定位建设。用质检和打分体系代替灰度与全量&区域与区域之间的每一个暂停确认点,把流程自动化起来。

其次,用事件关联变更、统一的质检看板与结果分析、软件可回滚的前置条件下,把自动回滚能力也同步建设到位。

基于主干开发,引入城际快车发布模式,继承其带来的好处。每个人都非常清楚各个时间点、每个人都感觉到特性进展、速度不断提升、更加聚焦于生产质量。

最后,结合云业务特性与devops中的变更看板:统一把控发布与发布评审(如同一区域最多同时发多少单等等),让每个人都有紧迫感的同时,也不会漏发关键功能版本。

腾讯工程师技术干货直达:

1、算法工程师深度解构ChatGPT技术

2、10分钟!从架构视角读懂K8s

3、探秘微信业务优化:DDD从入门到实践

4、耗时减半?腾讯云OCR只做了3件事

557096f19a2aceac3408b71b15b515d6.png

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

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

相关文章

welecome

欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除…

循环神经网络(MLP——>RNN)

n元语法模型, 其中单词xt在时间步t的条件概率仅取决于前面n−1个单词。 对于时间步t−(n−1)之前的单词, 如果我们想将其可能产生的影响合并到xt上, 需要增加n,然而模型参数的数量也会随之呈指数增长, 因为词表V需要存…

git将其他分支的某个提交合到当前分支

目录1. 命令2. 操作说明1. 命令 同步一个提交的命令:git cherry-pick -x 提交id 同步多个提交的命令:git cherry-pick -x 提交id1 提交id2 提交id3 ... -x 可加可不加,一般建议加,因为我们这次的提交会产生新在 commit ID&#…

【自定义maven骨架】IDEA如何自定义一个的maven骨架,解决maven骨架添加之后不显示的问题

目录 一、自定义maven骨架 1.1、创建maven工程 1.2、引入archetype骨架插件 1.3、执行创建骨架命令 1.4、执行install命令 1.5、执行crawl命令 1.6、添加自定义骨架 1.7、解决maven骨架不生效问题 这篇文章,主要介绍一下如何使用IDEA自定义一个maven骨架项目…

位图(bitset)的使用【STL】

文章目录1. 介绍1.1 背景1.2 概念1.3 应用2. 位图的使用2.1 原型2.2 构造位图2.3 常用接口2.4 示例2.4 常用运算符2.4.1 >>和<<2.4.2 赋值运算符、关系运算符、复合赋值运算符、单目运算符2.4.3 位运算符2.4.4 [ ]运算符1. 介绍 1.1 背景 一道面试题&#xff1a;…

读懂ShuffleNet V2

ShuffleNetV2介绍 https://arxiv.org/abs/1807.11164 深度卷积神经网络的架构创新显著的提升了在ImageNet数据集上的分类准确率&#xff0c;如VGG、GoogleNet、ResNet、DenseNet、ResNeXt、SE-Net以及自动网络架构搜索获得的方案。然而除了准确率&#xff0c;计算复杂度是另一…

实操分享:台式数字万用表测电压,手动测试VS万用表软件NS-Multimeter

台式数字万用表可以测量电流、电压、电阻、温度等多种参数&#xff0c;是电子工程师必备的仪器之一。本篇文章纳米软件Namisof小编将为大家分享&#xff1a;使用台式数字万用表手动测电压和万用表软件测电压的方法。本次将用DMM6500台式数字万用表为大家进行演示说明。 一、DMM…

大学生图书馆网页设计模板代码 DIV布局书店网页作业成品 学校书籍网页制作模板 学生简单书籍阅读网站设计成品

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

ESP-C3入门1. VSCode+IDF 开发环境

ESP-C3入门1. VSCodeIDF 开发环境一、芯片说明1. 主要参数2. 内部结构图ESP32-C3-MINI-1内部架构图&#xff1a;ESP32-C3-MINI-1U内部架构图&#xff1a;3. 引脚4. 引脚描述5. strapping管脚6. 系统复位二、idf-vscode开发环境搭建1. 安装vscode2. idf配置&#xff08;1&#x…

【AI with ML】第 5 章 :自然语言处理简介

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

【Spring】——13、BeanPostProcessor在Spring底层是如何使用的?

&#x1f4eb;作者简介&#xff1a;zhz小白 公众号&#xff1a;小白的Java进阶之路 专业技能&#xff1a; 1、Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理 2、熟悉Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理&#xff0c;具备⼀定的线…

本周推荐 | 表达式引擎的组合子实现方案

推荐语&#xff1a;本文清晰而详细地介绍了如何使用 Parser 组合子方案&#xff0c;结合 Monad 通过合理的分层、抽象和组合&#xff0c;在性能达标的情况下实现消息场景中函数式的表达式解析。非常具有实践意义&#xff0c;推荐阅读学习&#xff01;——大淘宝技术终端开发工程…

java+mysql基于ssm的网上订餐外卖管理系统

随着人们生活节奏的加快,网上订餐和外卖是当前很多人的一个选择,如何能够让更多的人吃上美味健康的饭菜是本系统研究的一个重要内容,同时本系统还拥有外卖的功能,让食客可以第一时间享受的想要吃到的美食 根据条件需要,系统结构主要由三大用户组成。一是买家组成的买家用户,二…

虹科技术 | 终端入侵防御 | 在重大攻击中发现新的Babuk勒索软件

11月期间&#xff0c;Morphisec在调查一个客户的防范事件时发现了Babuk勒索软件的一个全新变种。Babuk在2021年初首次被发现&#xff0c;当时它开始针对企业进行双重勒索攻击&#xff0c;以窃取和加密数据。这一年晚些时候&#xff0c;一个威胁者在一个讲俄语的黑客论坛上泄露了…

【案例教程】气象数据相关分析:如何使用格点数据分析中国霜冻灾害变化技术

【查看原文】气象数据相关分析及使用系列&#xff1a;如何使用格点数据分析中国霜冻灾害变化技术 霜冻是一种短历时的农业气象灾害&#xff0c;它是由于日最低气温下降&#xff0c;使植物茎、叶处温度下降到0℃以下&#xff0c;导致正在生长的植物受到冻伤的现象。霜冻出现的早…

深度学习——数据增广(笔记)+代码

1.为什么要进行数据增广&#xff1f; ①大型数据集是深度网络的前提条件 ②图像增广对训练数据进行一系列的随机变化&#xff0c;生成相似但不同的训练样本&#xff0c;从而扩大训练集的规模 ③数据增广&#xff1a;可以处理图片和文本和语音。 ④对于图片的处理方式包括&a…

FITC-PEG-DBCO,Fluorescein-PEG-DBCO,荧光素-PEG-DBCO

【产品描述】 DBCO试剂在水性缓冲液中具有快速动力学和稳定性&#xff0c;可用于标记叠氮化物修饰的生物分子&#xff0c;具有高特异性和反应性。FITC具有高吸收率的荧光量子产率和良好的水溶性等特点&#xff0c;是生物学中应用广泛的一种绿色荧光素衍生物&#xff0c;除了用作…

【TypeScript系列】【一篇就够】TypeScript知识点总结(一)

00 TypeScript简介 TypeScript是JavaScript的超集。它对JS进行了扩展&#xff0c;向JS中引入了类型的概念&#xff0c;并添加了许多新的特性。TS代码需要通过编译器编译为JS&#xff0c;然后再交由JS解析器执行。TS完全兼容JS&#xff0c;换言之&#xff0c;任何的JS代码都可以…

神经网络科研绘图可视化工具

本文介绍10种科研绘图可视化工具。 目录1.神经网络框架自带的可视化工具库2.NN-SVG3.PlotNeuralNet4.netron5.ZETANE6.Tensorspace.js7.GRAPHCORE8.nn_vis9.PowerPoint1.神经网络框架自带的可视化工具库 pytorch&#xff1a;pytorchviz库&#xff1b; keras&#xff1a;keras.…

Map和Set

目录 1.搜索 1.1 概念 1.2 模型 2.Map的使用 2.1 Map说明 2.2 Map.Entry说明,v> 2.3 Map的常见方法 2.3.1 V put(K key, V value) 2.3.2 V get(Object key) 2.3.3 V getOrDefault(Object key, V defaultValue) 2.3.4 Set keySet() Collection values() 2.3.5 S…