DevOps工具集合

news2024/9/29 5:28:18

简介

DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

实现

项目管理(规划工具)teambition

在规划阶段最重要的是要制定共同的目标、保证透明度和赋权。目前业内比较常用的规划工具主要包括 :

Asana、Taiga、GitLab、TaskTop、CollabNet VersionOne、Pivotal Tracker、Trello 、Basecamp和 Azure Boards

  • GitLab:是基于 Web 的 DevOps 生命周期工具。它提供了一个 Git 存储库管理器,使用由 GitLab Inc. 开发的开源许可证来提供 Wiki、问题跟踪和 CI/CD 管道功能。 GitLab 提供了一些工具用来在实践中规划事务,还可以用来查看工作的范围。
  • Tasktop: 可以将所有这些工具添加到 Tasktop 支持的全套敏捷和应用程序生命周期管理(ALM)、PPM 和 ITSM 工具中,从而在整个生命周期中提供前所未有的可视化特性。
  • VersionOne :支持 Scrum、看板、XP、SAFe 和混合开发方法,简化了跨所有团队、程序、软件产品组合和企业的计划、跟踪和报告工作。
  • Pivotal Tracker: 全球各地开发人员都可以使用这款敏捷项目管理工具,围绕一个共享的,带有优先级的 backlog 进行实时协作。
  • Trello: 是基于 Web 的看板风格列表制作应用程序,是 Atlassian 的子应用。 许多团队在规划各个 sprint 时都会用它。
  • Azure Boards: 可以跟踪软件项目,并使用敏捷工具(包括 Scrum boards、看板 boards 和仪表板等)改进规划工作。同时,还有工具可以帮助你可视化工作、共享计划、跟踪进度,并确保你正在向目标迈进。

项目管理(问题跟踪)Jira

问题跟踪阶段是为了提供客户响应能力,减少知识浪费,缩短反馈链路。目前业内比较常用的问题跟踪工具包括 Atlassian Jira、JetBrains YouTrack 和、ZenDesk和禅道。

  • Jira :是 Atlassian 开发的专用问题跟踪产品,提供了错误跟踪和敏捷项目管理功能。
  • YouTrack : 是由 JetBrains 开发的,基于浏览器的专用商业软件,融合了错误跟踪器、问题跟踪系统以及项目管理软件。它的卖点是基于查询的问题搜索,拥有自动完成、分批处理问题、自定义问题属性集,以及创建自定义工作流的特性。
  • Zendesk :可以轻松地从所有渠道跟踪每一个客户问题(CRM)。目前 Uber 和 Airbnb 等许多公司都在使用 Zendesk Support 作为他们的问题跟踪软件。

代码管理 GitLab

源代码控制主要是为了控制资产,减少沟通障碍,赋能团队。目前业内比较常用的 SCM 工具包括 Git、GitHub、GitLab、Bitbucket 和 Subversion。

  • Bitbucket: 是 Atlassian 所有的、基于 Web 的版本控制库托管服务,可用在使用 Mercurial 或 Git 版本控制系统的源代码和开发项目上。
  • Apache Subversion: 是一个软件版本和修订控制系统,其根据 Apache 许可开源。软件开发人员可使用 Subversion 来维护源代码、网页和文档等文件的当前和历史版本。

构建工具 Maven Nexus

构建阶段主要是为了保持打包的一致性,自动执行容易出错的活动,生成早期质量信号。目前业内比较常用的构建工具包括 Maven/Gradle、MSBuild、Ant、Rake、JFrog Artifactory、Sonatype Nexus 和 NuGet。

  • Maven/Gradle: Maven 是主要用于 Java 项目的自动化构建工具。Maven 还可以构建和管理以 C#、Ruby、Scala 等语言编写的项目。 Gradle 是一个开源的自动化构建系统,其基于 Apache Ant 和 Apache Maven 的理念,并引入了基于 Groovy 的领域特定语言,替代 Apache Maven 使用的 XML 格式来声明项目配置。
  • Sonatype Nexus: 是一款存储库管理器。你可以用它代理、收集和管理依赖项,这样就用不着和一大堆 JAR 打交道了。它简化了软件分发的工作。 你可以配置自己的内部构建,然后发布到 Nexus 上供其他开发者使用。
  • Microsoft Build Engine(通常称为 MSBuild):是用来托管代码及原生 C++ 代码的免费开源构建工具集,它之前是.NET Framework 的一部分。Visual Studio 依赖 MSBuild(反之则不然)。
  • NuGet : 是.NET 的软件包管理器。NuGet 客户端工具提供了生成和使用软件包的功能。 NuGet Gallery 是为所有包作者和使用者提供的软件包中心存储库。
  • Rake: 是一个软件任务管理和自动化构建工具。它允许用户指定任务并描述依赖关系。你也可以对命名空间中的组任务执行这些操作。
  • JFrog Artifactory :这款工具可用来存储构建过程的二进制输出,以备分发和部署之用。Artifactory 支持许多软件包格式,如 Maven、Debian、npm、Helm、Ruby、Python 和 Docker。JFrog 提供了高可用性、复制、灾难恢复和可伸缩特性,并兼容许多本地和云存储产品。

测试工具 Junit

测试阶段主要是检测内部质量,建立对已部署构件的信心。目前业内常用的测试工具包括 JUnit、xUnit.net、Selenium、Jasmine 和 Cucumber。

  • JUnit :是用于 Java 编程语言的单元测试框架。JUnit 在测试驱动开发的环境中扮演着重要角色,从 SUnit 起源的一组单元测试框架(统称为 xUnit)之一。
  • xUnit.net :是由 NUnit 的原作者编写的,用于.NET Framework 的开源单元测试工具。
  • Selenium: 是用于测试 Web 应用程序的可移植框架。Selenium 提供了一种回放工具,使用户无需学习测试脚本语言就能编写功能测试。
  • Jasmine: 是用于 JavaScript 的开源测试框架。它可以在任何支持 JavaScript 的平台上运行,不会入侵应用程序或 IDE,还有着易读的语法。在它身上可以找到 Screw.Unit、JSSpec、JSpec 和 RSpec 等诸多单元测试框架的影子。
  • Cucumber :是一种支持行为驱动开发的软件工具。Cucumber BDD 方法的核心是一种称为 Gherkin 的普通语言解析器。它能用客户可以理解的逻辑语言来指定预期的软件行为。

持续集成和部署(CI/CD)Jenkins

比较常用的 CI 工具包括 Jenkins、CircleCI、Travis CI、Concourse、AWS CodePipeline 、 Azure Pipelines、Bamboo和Hudson。

  • Jenkins: 是一个免费的开源自动化服务器。Jenkins 可用来自动化软件开发过程中非人类参与的工作,基于 CI 和 CD 的技术理念。这是一个基于服务器的系统,可在 servlet 容器(例如 Apache Tomcat)中运行。
  • CircleCI: 是世界上最大的共享 CI/CD 平台,也是代码从构思到交付过程的中央枢纽。作为最常用的 DevOps 工具之一,CircleCI 每天处理超过 100 万个构建,因此收集了大量关于工程团队工作方式以及代码运行方式的数据。Spotify、Coinbase、Stitch Fix 和 BuzzFeed 等公司使用 CircleCI 来提升工程团队的生产力、发布更好的产品并更快地将产品推向市场。
  • TravisCI: 是一项托管 CI 服务,用于构建和测试 GitHub 上托管的软件项目。Travis CI 为私有项目提供各种付费计划,并提供了开源的免费方案。TravisPro 提供了在客户自己的硬件上定制化部署专有版本的能力。
  • Concourse: 是用 Go 编写的自动化系统。人们经常将它用于 CI/CD,其卖点是强大的可伸缩性,可以提供很简单或者很复杂的自动化管道。
  • AWS CodePipeline: 是一项完全托管的 CD 服务,可帮助你自动化发布管道,以实现快速、可靠的应用程序和基础架构更新流程。每当你更改代码时,CodePipeline 都会根据你定义的发布模型自动执行发布流程中的构建、测试和部署阶段。这使你能够快速可靠地交付功能和更新。你可以轻松地将 AWS CodePipeline 与第三方服务(例如 GitHub)或你自己的自制插件集成。使用 AWS CodePipeline 时你按需付费即可。它没有前期费用或长期承诺。
  • Azure Pipelines: 可用它获取适用于 Linux、macOS 和 Windows 的云托管管道。生成 Web、桌面和移动应用程序。部署到云端或本地。 使用 Pipelines 自动化构建和部署流程可以节约很多时间,从而腾出更多资源投入创造活动。

而 CD 工具主要是为了将复杂的管道自动化,统一团队目标。目前业内比较常用的 CD 工具包括 Spinnaker、Octopus Deploy 和 AWS CodeDeploy。

  • Spinnaker : 是一个免费的开源 CD 软件平台,最初由 Netflix 开发,不久被谷歌看中并发展起来。 Spinnaker 是一个多云 CD 平台,能够以高速度和强信心来发布软件更改。它提供了强大而灵活的管道管理系统,并支持与主流云提供商的集成。
  • Octopus Deploy :是全球领先的 CD 团队使用的自动部署和发布管理工具。 Octopus 是一个工具集,可以显著简化任何 DevOps 流程,以通过云或虚拟机连续测试和部署大量微服务或应用程序。
  • AWS CodeDeploy: 是一项完全托管的部署服务,可自动将软件部署到各种计算服务上,例如 Amazon EC2、AWS Fargate、AWS Lambda 和你的本地服务器等。 你可以使用 AWS CodeDeploy 自动执行软件部署,无需容易出错的手动操作。

配置管理工具 apollo

配置管理工具的作用是将基础架构代码化,加强一致性。目前业内常用的配置管理工具包括 Terraform、BOSH、Chef、Ansible、Puppet、Google Cloud Deployment Manager、SaltStack和 ScriptRock GuardRail。

  • Terraform :是由 HashiCorp 创建的开源基础架构即代码(IaC)软件工具。它让用户能够使用 Hashicorp 配置语言或 JSON(可选)这两种高级配置语言来定义和配置数据中心基础架构。
  • BOSH : 是一个将小型和大规模云软件的发布工程、部署和生命周期管理统一在一起的项目。BOSH 可以在数百个 VM 上配置和部署软件。它还能以接近零的停机时间执行监视、故障恢复和软件更新任务。
    虽然 BOSH 是为了部署 Cloud Foundry 而开发的,但它也可以用来部署几乎所有软件(例如 Hadoop)。BOSH 特别适合大型分布式系统。
    此外,BOSH 支持多个基础架构即服务(IaaS)提供商,例如 VMware vSphere、Google Cloud Platform、Amazon WebServices EC2、Microsoft Azure、OpenStack 和阿里云。它带有一个云提供商界面(CPI),使用户可以扩展 BOSH 以支持其他 IaaS 提供商,如 Apache CloudStack 和 VirtualBox 等。
  • Chef :是一种配置管理工具,用来处理物理服务器、虚拟机和云中的机器设置。许多公司使用 Chef 软件来控制和管理自己的基础架构,他们包括 Facebook、Etsy、Cheezburger 和 Indiegogo 等。
    Chef 是持续自动化软件领域的领导者、应用程序自动化领域的创新者,也是 DevOps 运动的创始人之一。Chef 与全球 1000 多家最具创新力的公司合作,以实现他们数字化转型的愿景,并提供可快速交付软件的实践和平台。
  • Ansible: 是一种开源的软件预备、配置管理和应用程序部署工具。它可以在许多类 Unix 系统上运行,既可以配置类 Unix 系统也可以配置微软 Windows。它自带声明式语言来描述系统配置。
  • Puppet: 提供的能力可以定义系统所需的软件和配置,然后在初始设置后保持指定状态。
    用户使用与 Ruby 类似的声明式领域特定语言(DSL)来定义指定环境或基础架构的配置参数。Puppet 使用称为 Facter 的一个实用程序获取系统信息,该程序跟随 Puppet 软件包一并安装。
    Puppet master 是一个系统,使用清单来管理它所控制的所有节点的重要配置信息。
    Master 控制的节点都安装了 Puppet 并运行 Puppet 代理(即守护程序)。代理收集的节点配置信息将发送到 Puppet master。然后,Puppet master 根据节点的配置策略来编制一个目录。每个节点都使用这些信息来将任何必要的配置更新应用到自己身上。
    Puppet 使用的是 pull 模式,在该模式下,代理定期轮询 master,以检索特定于站点和节点的配置。在这种基础架构中,受管理的节点通常以后台服务的形式运行 Puppet 代理应用程序。
  • Google Cloud Deployment Manager: 是一项基础架构管理服务,可轻松创建、部署和管理 Google Cloud Platform 资源。

服务注册与发现 zookeeper

Zookeeper 、etcd、Consul

  • ZooKeeper:是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务、分布式独享锁、选举、队列等。

ZooKeeper是以Fast Paxos算法为基础的,Paxos 算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos作了一些优化,通过选举产生一个leader (领导者),只有leader才能提交proposer,具体算法可见Fast Paxos。因此,要想弄懂ZooKeeper首先得对Fast Paxos有所了解

批量任务 xxl-job

Elastic-Job:主要负责job或工作流的调度。配置zk服务器时命名空间要与springbatch中配置的zk的namespace一致,否则无法从zk中将job获取到。 分片可以将一个job实例分配到多个服务器上执行,也可以在同一服务器上执行。

Azkaban:

Quartz:调用api方式操作任务,不人性化;需要持久化业务到底层数据表,侵入性严重;调度逻辑与jobbean耦合在同一个项目中,当调度任务多的时候,调度任务逻辑也跟着增加,调度系统性能大大受限于业务;quartz底层以“抢占式”获取DB锁并由抢占成功节点负责运行任务,会导致节点负载悬殊非常大;而XXL-JOB通过执行器实现“协同分配式”运行任务,充分发挥集群优势,负载各节点均衡。

XXL-JOB:https://www.jianshu.com/p/fa7186bea84b

Spring-batch:可以提供大量的,可重复的数据处理功能,包括日志记录/跟踪,事务管理,作业处理统计工作重新启动、跳过,和资源管理等重要功能

TBSchedule:http://code.taobao.org/p/tbschedule/wiki/index/

消息队列 RabbitMQ

RocketMQ(电商java)、RabbitMQ(小erlang)、kafka(推荐)

日志管理 ELK

ELK Stack: 是三个开源产品的集合——它们分别是 Elasticsearch、Logstash 和 Kibana。它们都是由 Elastic 公司开发、管理和维护的。

E 代表 ElasticSearch,用于存储日志
L 代表 Logstash,用于传输、处理和存储日志
K 代表 Kibana,是一种可视化工具(Web 界面)

Logentries :是一个日志管理平台,提供各种语言的客户端开发包,可以在云端对应用日志进行分析统计。该平台的服务器端是不开源的,但其各种客户端 API 都是开源的,源码地址:https://github.com/logentries

系统监控 Telegraf、Ganglia

Datadog、Graphite、Icinga、Nagios

Datadog: 是针对云规模应用程序的监视服务,可通过基于 SaaS 的数据分析平台来监视服务器、数据库、工具和服务。

Datadog Application Performance Monitoring(APM 或跟踪)可与你的日志和基础架构监视器并用,提供自动生成的仪表板(用于监视关键指标,如请求量和延迟)乃至单个请求的跟踪细节,帮助你深入了解应用程序的性能表现。

应用程序收到请求时,Datadog 可以在整个分布式系统上查看跟踪,并向你显示关于该请求状况的详细系统数据。

性能监控 Zipkin、 SkyWalking

AppDynamics、New Relic、Splunk

  • Zipkin :是Twitter开源的一个分布式跟踪系统。它能收集用来解决服务架构中延迟问题所需的时序数据。其功能包括收集和查找这类数据。特点是轻量,使用部署简单。

如果日志文件中有跟踪 ID,则你可以直接跳至该跟踪 ID。否则,你可以基于属性来查询,可用属性包括服务、操作名称、tagsm 和持续时间等。系统会为你总结一些有趣的数据,例如在一个服务中花费的时间百分比,以及操作是否失败等。

  • Pinpoint:是韩国开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入。

  • SkyWalking:是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点同pinpoint。

  • CAT:是大众点评开源的基于编码和配置的调用链分析,应用监控分析、日志采集,监控报警等一系列的监控平台工具。

类别ZipkinPinpointSkyWalkingCAT
实现方式拦截请求,发送数据至zipkin服务java探针,字节码增强java探针,字节码增强代码埋点(拦截器、注解、过滤器)
接入方式基于linkerd或者sleuth方式,引入配置即可javaagent字节码javaagent字节码代码入侵
协议HTTTP、MQthriftgRPCHTTP/TCP
颗粒度接口级方法级方法级代码级
全局调用统计×
traceId查询××
报警×
JVM监控××
健壮度****************
数据存储ES、mysql、内存、CassandraHbaseES、H2Mysql、hdfs
500/15000(17/9/824/21-90%/ 1385)117 /10/2101/263/56%/55%/ 990平均/最小/最大/90%line/ cpu/M/ 吞吐量 次好201/10/7236/746/ 77422/10/1026/23/50%/52%/ 1228 最好
750/22500 956489/10/27614/1169/ 63/55/ 582681/10/28138/1919/ 56/48/ 559396/10/16478/941/ 55/50/ 908
1000/30000 5571021/10/36836/1978/63/55/ 5331148/10/40971/2648/60/52/ 514824/10/25983/1758/62/55/ 667

在这里插入图片描述

  • New Relic :是一家位于加州旧金山的技术公司,致力于开发基于云的软件,以帮助网站和应用程序所有者跟踪服务性能。 它 开发的用于应用程序性能监视(APM)的软件分析产品,可提供有关 Web 应用程序性能以及最终用户体验满意度的实时和趋势数据。
  • Prometheus :是用于事件监视和警报的免费软件应用程序。它将实时指标记录在一个时间序列数据库中,该数据库使用 HTTP 拉取模型构建,支持灵活查询和实时警报。

Prometheus 服务器的工作方式是抓取,也就是调用监视器上配置的各个节点的指标端点。它定期收集这些指标并将其存储在本地。节点在 Prometheus 服务器抓取的端点上公开这些指标。

压力测试 JMeter

JMeter、Blaze Meter、loader.io

Web服务器 Nginx

Nginx Apache

应用服务器 Tomcat

Tomcat

数据库 Mysql ES

Mysql、Oracle、PostgreSQL等关系型数据库;InfluxDB等时序数据库; ES 、cassandra、mongoDB等NoSQL数据库

缓存 Redis

Redis

分库分表 mycat

Sharding-JDBC(当当)、TSharding(蘑菇街)、Atlas(奇虎360)、Cobar(阿里巴巴)、MyCat(基于Cobar)、Oceanus(58同城)和Vitess(谷歌)

容器调度 Docker K8s

Docker 、LXC、第三方厂商如AWS

Kubernetes、Core、Apache Mesos、DC/OS 、 Portainer

  • Kubernetes: 是用于 Docker 容器的编排系统,使用标签和 pods 的概念将容器分为许多逻辑单元。Pod 是 Kubernetes 与其他两种解决方案之间的主要区别所在——它们是位于同一地点的容器的集合,共同组成部署和调度服务。与基于基于相似性的容器协同调度机制(如 Swarm 和 Mesos)相比,这种方法简化了集群的管理。
    Kubernetes 调度程序的任务是监视 PodSpec 为空的 Pod。NodeName 赋予一个值,以将容器调度在集群中的某个位置。
    这是与 Swarm 和 Mesos 不一样的地方,因为 Kubernetes 允许开发人员在运行 Pod 时通过定义 PodSpec.NodeName 来绕过调度程序。
    调度程序使用谓词和优先级来定义容器应运行的节点。这些参数的默认值可以使用新的调度程序策略配置覆盖。
    如果使用命令行标志 policy-config-file 指向描述启动 Kubernetes 时要使用的谓词和优先级的 JSON 文件,调度程序就会使用管理员定义的策略。

  • Mesos: 的目的是建立一个可扩展且高效的系统,以支持当前和将来的各种框架。这也是主要问题所在:Hadoop 和 MPI 之类的框架都是独立开发的,因此无法在各个框架之间进行细粒度的共享。
    Mesos 的对策是添加一个资源共享薄层,为框架提供访问集群资源的公共接口。Mesos 正在将对调度的控制权委派给框架,因为许多框架已经实现了复杂的调度机制。
    根据要在集群上运行的作业类型可以将框架分为四类,其中一些具有 Marathon 之类的原生 Docker 支持。Mesos 0.20.0 中添加了对 Docker 容器的支持。
    我们将重点介绍 Mesos 与 Marathon 的搭配用法,因为后者是 Mesosphere 积极维护的框架,在调度方面提供了许多功能,如约束、运行状况检查、服务发现和负载平衡等。

粘贴图片

如图所见,集群中有四个元素。ZooKeeper 帮助 Marathon 查找 Mesos master 的地址,可以使用多个实例来处理故障。
Marathon 负责启动、监视并扩展容器。Mesos master 将分配给节点的任务发送给 Marathon,并在节点具有一些可用的 CPU/RAM 时向 Marathon 提出要约。Mesos slaves 负责运行容器并提交自身可用资源的列表。

辅助工具(通讯工具)Zoom

通讯工具主要是用于多团队沟通,减少等待时间,改善协作能力。目前业内比较常用的通讯工具包括 Slack、Microsoft Teams、Google Hangouts 和 Zoom。

  • Slack :是 Slack Technologies 开发的专用即时消息平台。
    Slack 本质上是整个公司的聊天室,旨在取代电子邮件作为你交流和共享信息的主要方法。它的工作空间使你可以按频道来组织小组讨论,并支持私信功能,可以一站式共享信息和文件等。

  • Microsoft Teams: 是一个统一的通信和协作平台,提供了可靠的工作聊天、视频会议、文件存储和应用程序集成特性。
    Teams 是基于聊天的协作工具,可为跨越全球、远程和分散的团队提供在一个公共空间共同工作和共享信息的能力。它有一些很酷的功能,如文档协作、一对一聊天和团队聊天等等。

  • Google Hangouts : 是谷歌开发的一种通讯软件产品。Hangouts 最初是 Google+ 的功能,后来在 2013 年成为独立产品,当时谷歌也开始将 Google+ Messenger 和 Google Talk 的功能集成到 Hangouts 中。
    Hangouts Chat 是一种与组织中的成员交流的有效方法。你可以向一位或多位同事发送消息,创建空间来与多人开始持续会话,并使用机器助手来帮助你自动化操作。Chat 可在你的计算机浏览器以及适用于 Android 和 iOS 的移动应用中使用。

  • Zoom Video Communications : 是一家远程会议服务公司,总部位于加州圣何塞。它提供了将视频会议、在线会议、聊天和移动协作结合在一起的远程会议服务。
    对于寻求整体业务解决方案的团队来说,Skype 是更好的选择。Zoom 非常适合经常进行视频聊天和会议的团队。但是,这两种工具都不是专门为远程工作而构建的。

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

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

相关文章

近红外染料IR-825,IR-825 Maleimide,IR-825 Mal,IR-825马来酰亚胺

中文名称:荧光染料IR 825马来酰亚胺,近红外染料IR-825马来酰亚胺英文名称:IR825 Maleimide,IR-825 Maleimide,IR 825 Maleimide,IR825 Mal,IR-825 Mal试剂规格:10mg,25mg…

算法小抄5-原地哈希

书接上回,学会了数组中重复数字的解法三,相信接下来的题也难不倒你 找到数组中消失的数字 题目链接 题意 对于一个大小为n的数组,数组中所有的数都在[1,n]内,其中有些数字重复了,由于有些数字重复了,另一些数字就一定会确实,这次需要找到所有缺少的数字并且返回结果 有没有发…

反转链表相关的练习(上)

目录 一、反转链表 二、反转链表 || 三、两两交换链表中的结点 四、K 个一组翻转链表 一、反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,…

ip-guardip-guard如何通过准入网关对指定的服务器进行通讯加密保护?

1、准入网关在高级配置设置受保护服务器; WEB管理界面【系统工具】,点击【配置管理】,点击参数设置,进入高级配置界面,输入配置内容即可。 [ControlServer]

使用阈值图修改角色脸部阴影

大家好,我是阿赵。 之前介绍了通过修改模型顶点法线的方法,来解决角色模型脸部光影问题。这里再顺便介绍一下第二种方法,使用阈值图修改角色脸部阴影 一、角色脸部光影的问题 这个问题之前讨论过,由于角色脸部法线复杂&#xff0…

2023年最新交通航线(飞机、高铁)信息数据合集(含经纬度匹配)

中国高铁航线数据库Chinese High-speed Rail and Airline Database,CRAD)是一个专门收集和管理航空公司和高铁公司交通航线信息的数据仓库。它包含了航线的起始点、终止点、中转点、飞行时间、票价、座位数、乘客数量、货物数量等信息。 该数据仓库可以运…

Fortinet 发布《2022下半年度全球威胁态势研究报告》,七大发现值得关注

全球网络与安全融合领域领导者Fortinet(NASDAQ:FTNT),近日发布《2022 下半年度全球威胁态势研究报告》。报告指出,相对于组织攻击面的不断扩大以及全球威胁态势的持续演进,网络犯罪分子设计、优化技术与战术…

设计模式---单例模式

目录 1 简介 2 实现 3 单例模式的几种实习方式 1. 饿汉式 2. 懒汉式,线程不安全 3. 懒汉式,线程安全 4. 双检锁/双重校验锁(DCL, double-check locking) 5. 登记式/静态内部类 4 单例模式的优缺点 1 简介 单例模式(Singleton Pattern) 是 Java…

React 中五种常见的样式

React 中五种常见的样式策略 React中的样式策略主要有以下几种: 内联样式: 内联样式就是在JSX元素中,直接定义行内的样式;CSS样式表: 这也是我们最常用的样式策略,使用单独的样式表,使用CSS或…

lvgl 笔记 按钮部件 (lv_btn) 和 开关部件 (lv_switch)

按钮基础使用方法: lv_btn 和 lb_obj 使用方法一样,只是外表并不相同,基础创建方法只需一行代码。 lv_obj_t* btn lv_btn_create(lv_scr_act()); 添加大小和位置: lv_obj_t* btn lv_btn_create(lv_scr_act()); lv_obj_set_s…

一个小故障:vTaskGenericNotifyGiveFromISR卡死的解决

平台:gd32f103 freertos V10.4.3 LTS Patch 2 调试的时候发现一个问题: 在中断中使用 vTaskNotifyGiveFromISR(TaskHandle_ToCpu_IIC,NULL); //唤醒任务 但是程序却出现卡死现象: 在vTaskGenericNotifyGiveFromISR函数中。 用调试器看到…

C++ STL:string类的概述及常用接口说明

目录 一. 什么是STL 二. string类的概述 三. string类的常用接口说明 3.1 字符串对象创建相关接口(构造函数) 3.2 字符串长度和容量相关接口 3.3 字符访问相关接口函数 3.4 字符串删改相关接口函数 3.5 字符查找和子串相关接口函数 3.6 迭代器相…

c++11右值引发的概念

右值引用右值&&左值c11增加了一个新的类型,右值引用,记作:&&左值是指在内存中有明确的地址,我们可以找到这块地址的数据(可取地址)右值是只提供数据,无法找到地址(不…

跨时钟域CDC

https://www.cnblogs.com/icparadigm/p/12794483.html https://www.cnblogs.com/icparadigm/p/12794422.html 亚稳态 是什么 时序逻辑在跳变时,由于异步信号、跨时钟域等原因,不满足setup或hold条件,输出在0和1之间产生振荡。 原因 D触发…

Canny算法原理和应用

Canny算法的原理使用高斯滤波器滤波使用 Sobel 滤波器滤波获得在 x 和 y 方向上的输出,在此基础上求出梯度的强度和梯度的角度edge为边缘强度,tan为梯度方向上图表示的是中心点的梯度向量、方位角以及边缘方向(任一点的边缘与梯度向量正交&am…

如何在MySQL 8中实现数据迁移?这里有一个简单易用的方案

文章目录前言一. 致敬IT领域的那些女性二. 进制方式安装MySQL2.1 下载软件包2.2 配置环境:2.2.1 配置yum环境2.2.2 配置安全前的系统环境2.3 开始安装2.4 初始化MySQL2.5 修改配置文件2.6 将MySQL设为服务并启动测试三. MySQL数据迁移总结前言 正好赶上IT女神节&am…

《Linux运维实战:ansible中的变量定义及以及变量的优先级》

一、配置文件优先级 Ansible配置以ini格式存储配置数据,在Ansible中⼏乎所有配置都可以通过Ansible的Playbook或环境变量来重新赋值。在运⾏Ansible命令时,命令将会按照以下顺序查找配置⽂件。 # ⾸先,Ansible命令会检查环境变量&#xff0c…

【node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 最全面有效的解决方案】

执行nodejs文件错误: 这个错误提示通常是由于你的系统无法识别 "node" 命令,可能是由于你没有正确地安装或配置 Node.js 环境变量。 问题描述 ​​​​​​​​​​​​​​ 原因分析: 可能原因包括: 1.Node.js未正确安…

JVM堆与堆调优以及出现OOM如何排查

调优的位置——堆 Heap,一个JVM只有一个堆内存,堆内存的大小是可以调节的。 类加载器读取了类文件后,一般会把什么东西放到堆中?类,方法,常量,变量~,保存我们所有引用类型的真实对象; 堆内存中…

【Linux修炼】15.进程间通信

每一个不曾起舞的日子,都是对生命的辜负。 进程间通信进程间通信一.理解进程间通信1.1 什么是通信1.2 为什么要有通信1.3 如何进行进程间通信二.管道2.1 匿名管道2.2 匿名管道编码部分2.3 管道的特点2.4 如何理解命令行中的管道2.5 进程控制多个子进程三.命名管道3.…