当前位置: 首页 > news >正文

devops和ICCID简介

Devops

DevOps(Development 和 Operations 的组合)是一种软件开发和 IT 运维的哲学,旨在促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它强调自动化流程,持续集成(CI)、持续交付(CD),以及基础设施即代码(IaC)。通过这些实践,DevOps 旨在提高组织的效率,使得应用程序和服务能够以更快的速度和更高的可靠性进行构建、测试和发布。

在 DevOps 实战中,通常会涉及以下几个关键领域:

  1. 版本控制:使用 Git 等工具管理代码库,确保所有更改都有迹可循,并且团队成员可以协同工作而不冲突。

  2. 持续集成/持续交付 (CI/CD):自动化的构建、测试和部署流程,保证代码更改可以快速而可靠地进入生产环境。Jenkins, GitLab CI, CircleCI 是一些流行的 CI/CD 工具。

  3. 配置管理:利用 Puppet, Chef, Ansible 或 SaltStack 等工具来自动化服务器配置和应用部署过程。

  4. 容器化:Docker 和 Kubernetes 等技术提供了一种方式来打包应用及其依赖关系,以便它们可以在任何环境中一致地运行。

  5. 基础设施即代码 (IaC):通过像 Terraform, AWS CloudFormation 这样的工具将基础设施定义为代码的一部分,从而实现基础设施的版本控制、自动化创建和销毁。

  6. 监控和日志记录:Prometheus, Grafana, ELK Stack (Elasticsearch, Logstash, Kibana) 等工具帮助实时监控系统性能并收集日志数据,对于故障排查和性能优化至关重要。

  7. 安全性:在整个开发生命周期中嵌入安全实践,包括静态分析、动态分析和渗透测试等。

  8. 文化和沟通:建立一个支持快速反馈循环的文化,鼓励跨职能团队之间的合作和信息共享。

实施 DevOps 需要企业内部的文化转变和技术堆栈的更新。成功的 DevOps 团队通常具有扁平化的结构,鼓励快速决策和迭代,同时重视学习和改进。此外,他们还致力于减少浪费,专注于价值流管理和客户满意度。

DevOps 代表了一种促进软件开发人员(Dev)和 IT 运维技术人员(Ops)之间沟通与协作的文化、实践或运动。其核心理念是通过自动化流程以及工具链的整合,来加速软件交付和基础设施变更的速度,确保构建、测试、部署过程更加高效、稳定且频繁。DevOps 的目标是在整个软件开发生命周期中提升团队间的合作效率,以更快地推出高质量的产品和服务。

简而言之,DevOps 是一系列旨在优化软件交付和部署过程的原则与方法的集合,而不是指特定的软件工具或工具集。尽管有许多工具可以支持 DevOps 实践,如 Jenkins、Docker、Kubernetes 等,但 DevOps 本身更强调的是方法论,类似于软件开发中的面向对象编程(OOP)、面向切面编程(AOP)、控制反转(IoC)或依赖注入(DI)。这些概念都是抽象的方法或过程的代称,旨在指导如何设计和实施软件系统,而不仅仅是提供具体的实现手段。因此,DevOps 可被视为一种指导原则或框架,用于改进组织内部的开发和运营活动。

CICD

CI/CD 是一种通过引入自动化到应用程序开发流程中,以实现频繁且可靠地向客户交付应用的方法。它主要围绕三个核心概念:持续集成(Continuous Integration, CI)、持续交付(Continuous Delivery, CD)和持续部署(Continuous Deployment, 也简称 CD)。这些实践共同解决了在将新代码集成到项目中时可能出现的问题,这些问题通常被称为“集成地狱”,即当多个开发者同时工作于同一项目的不同分支时,合并代码变得复杂且容易出错。

持续集成 (CI)

在 CI 中,“持续”意味着开发人员的新代码更改会频繁地(通常是每天多次)与主代码库进行集成。每次集成都会触发自动化的构建和测试过程,确保新代码不会破坏现有功能,并能顺利地与其他开发者的改动兼容。这种做法有助于尽早发现并修复问题,减少后期集成的难度和风险。

在现代应用程序开发中,目标是允许多个开发人员同时开发同一个应用的不同功能模块。然而,如果组织设定一个特定的日子(称为“合并日”)来将所有分支代码合并到一起,那么这个过程可能会变得乏味、手动且耗时。这是因为不同开发人员的更改可能会相互冲突,尤其是在每个开发人员都定制了自己的本地集成开发环境 (IDE) 而不是使用统一的基于云的 IDE 时,问题会更加复杂。

持续集成 (CI) 解决了这一挑战,它鼓励开发人员更频繁地将他们的代码更改合并回共享分支或“主干”,甚至可以达到每天多次的程度。每次合并后,CI 系统会自动构建应用程序,并运行一系列自动化测试(包括单元测试和集成测试),以确保新代码不会破坏现有功能。这些测试覆盖从类和函数级别的验证到整个应用程序模块之间的交互。

通过这种方式,CI 不仅能快速识别并修复代码冲突和潜在问题,还能确保代码库始终处于可发布状态。由于问题可以在早期被发现和解决,因此减少了后期大规模合并时可能出现的“集成地狱”。此外,采用统一的基于云的 IDE 可以进一步简化协作,减少因开发环境差异带来的问题,提高团队的整体效率和代码质量。

总之,持续集成通过促进频繁的小规模合并和自动化测试,使得团队能够更快地响应变化,保持高质量的代码输出,并显著提升开发流程的效率和可靠性。

持续交付 (CD - Continuous Delivery)

    持续交付扩展了持续集成的理念,不仅限于代码的自动构建和测试,还包括确保代码可以随时被部署到生产环境的能力。这意味着,经过测试的代码会被打包并上传到一个存储库或容器注册表,运维团队可以根据需要轻松地将其部署到生产环境中。此过程提高了开发和业务团队之间的透明度和沟通效率,确保了代码的可发布性,即使实际部署决定可能由非技术因素决定。

    在持续集成(CI)中,构建过程和单元测试、集成测试的自动化完成后,持续交付会自动将经过验证的代码发布到存储库。为了确保有一个高效的持续交付流程,CI 必须已经无缝集成到开发管道中。持续交付的目标是保持一个随时可以部署到生产环境的代码库。

在持续交付过程中,从合并代码更改到最后生成生产就绪版本的每个阶段都包含了自动化测试和自动化代码发布。这意味着,每当有新的代码更改被合并时,系统会自动进行一系列测试以确保其质量,并准备好发布。这一过程确保了代码始终处于可部署状态,减少了手动操作带来的风险和延迟。

通过这种方式,运营团队可以在任何时候快速且轻松地将应用程序部署到生产环境中,而无需担心代码质量和一致性问题。这不仅提高了部署的速度和频率,还增强了团队对产品发布的信心,确保能够及时响应市场变化和用户需求。

总之,持续交付依赖于 CI 提供的自动化和频繁反馈,确保代码库始终保持高质量和可部署状态,从而简化了从开发到生产的整个流程,使得快速、可靠的软件交付成为可能。

持续部署 (CD - Continuous Deployment)

另一种形式的“CD”,即持续部署,则更进一步,它自动将通过所有测试阶段的代码直接部署到生产环境中,无需人工干预。这使得最新的功能和修复能够快速到达用户手中,同时也减轻了运维团队的工作负担,因为他们不需要手动处理每个部署。持续部署是持续交付的一种进化形式,它通过完全自动化的管道实现了更快的反馈循环和更高的发布频率。

成熟的 CI/CD 管道的最后阶段是持续部署(Continuous Deployment),这是对持续交付(Continuous Delivery)的进一步扩展。在持续部署中,经过验证的构建不仅会被自动发布到代码存储库,还会被直接部署到生产环境中,无需人工干预。由于在生产前没有人工审批环节,持续部署高度依赖于精心设计和全面覆盖的自动化测试。

在实践中,这意味着开发人员对云应用程序的更改可以在编写后的几分钟内就生效,前提是这些更改通过了所有自动化测试。这大大加速了用户反馈的接收和整合过程,使得团队能够更快地响应用户需求和市场变化。

总体而言,CI/CD 实践中的这些连接步骤显著降低了应用程序部署的风险。它们允许以小批次的形式频繁发布应用更新,而不是累积大量变更后一次性发布。这种方式减少了每次部署的影响范围,使得问题更容易定位和修复,同时也提高了系统的稳定性和可靠性。

然而,要实现这样的高效管道需要前期大量的投资。团队必须投入时间和资源来编写详尽的自动化测试,确保它们能够覆盖从单元测试、集成测试到端到端测试的各种场景,从而适应 CI/CD 管道中的各个测试和发布阶段。尽管如此,这些前期努力最终会带来更快速、更可靠的软件交付流程,以及更高的客户满意度。

GitLab CI/CD

 GitLab 提供的一套内置的持续集成、持续交付和持续部署(CI/CD)工具,它与 GitLab 仓库紧密集成,使得开发者能够轻松地设置自动化构建、测试和部署流程。以下是关于 GitLab CI/CD 的一些关键点:

主要特点

        1. YAML 配置文件

  • 使用 .gitlab-ci.yml 文件在项目仓库中定义 CI/CD 流水线。这个 YAML 文件描述了流水线的各个阶段(如 buildtestdeploy),以及每个阶段执行的任务。

        2. 多阶段流水线

  • 支持定义多个阶段,并且可以控制这些阶段之间的依赖关系。常见的阶段包括 buildteststaging 和 production,但可以根据需要自定义。

        3. 并行作业

  • 可以配置多个作业并行运行,例如同时运行单元测试和集成测试,从而加速整个 CI/CD 流程。

        4. 环境管理

  • 支持创建和管理不同的环境,如开发环境、测试环境和生产环境,方便应用的部署和验证。

        5. 变量管理

  • 允许通过 CI/CD 设置中的变量或 .gitlab-ci.yml 文件来定义环境变量,便于敏感信息的安全管理和不同环境下的配置调整。

        6. Artifacts 和缓存

  • 构建产物(artifacts)可以在不同阶段之间传递,用于后续的测试或部署。缓存机制则可以帮助加速重复任务,比如依赖安装。

        7. 触发器和 Webhooks

  • 支持使用触发器手动或自动启动流水线,或者通过 Webhooks 响应外部事件。

        8. 安全性和合规性

  • 提供了多种方式确保流水线的安全,包括限制访问、使用安全扫描工具等。

        9. 集成与扩展

  • GitLab CI/CD 可以与其他服务和工具集成,支持 Docker、Kubernetes 等容器技术,并提供 API 以便进一步定制和扩展。

实践示例

  • 简单的 CI/CD 流水线:假设你有一个 Node.js 应用程序,你可以编写一个 .gitlab-ci.yml 文件,包含三个阶段:buildtest 和 deploy。在 build 阶段编译代码,在 test 阶段运行单元测试和集成测试,最后在 deploy 阶段将应用程序部署到生产服务器。
yaml
stages:- build- test- deploybuild_job:stage: buildscript:- npm install- npm run buildtest_job:stage: testscript:- npm testdeploy_job:stage: deployscript:- echo "Deploying to production..."only:- main

总结

GitLab CI/CD 是一个强大且灵活的平台,它不仅简化了 CI/CD 流水线的设置,还促进了团队间的协作和项目的快速迭代。通过充分利用 GitLab CI/CD 的功能,团队可以显著提高软件开发和发布的效率,同时保证高质量的应用程序交付。

Jenkins

当需要将应用程序部署到云端时,首先必须准备好所需的运行环境,并将应用程序打包成 Docker 镜像。然后,这些镜像会被引用在 Kubernetes 的部署文件(Deployment)中,同时还需要配置一系列相关的资源,如服务(Service)、所需的服务账户(ServiceAccount)及其权限(Role)、命名空间(Namespace)、密钥信息(Secret)、持久化存储(PersistentVolumes)等。这意味着编写和管理多个相互关联的 YAML 配置文件,并将它们部署到 Kubernetes 集群上。

在这种复杂的部署需求背景下,出现了一系列基于 Kubernetes 的应用包管理工具,以简化这一过程。其中最受欢迎的选择之一便是 Helm。

Helm 与 Helm Chart

Helm 是 Kubernetes 的包管理工具,它通过提供一种称为 Helm Chart 的模板格式来简化应用程序及其相关资源的部署。Helm Chart 是一个打包工具,它包含了一组预先配置好的、可以一起部署的 Kubernetes 资源定义文件。这些图表(Charts)封装了应用程序的所有必要组件,使得安装和升级变得简单而一致。

  • Helm:作为 Kubernetes 的“软件包管理器”,Helm 提供了一个命令行界面(CLI),用于管理和操作 Helm Charts。它帮助用户轻松地查找、安装、升级和删除应用程序及其依赖关系。

  • Helm Chart:这是 Helm 的核心概念,它是一个目录结构,包含了所有必要的 YAML 文件和其他资源,用来描述一组 Kubernetes 对象。Chart 可以被看作是 Kubernetes 应用程序的蓝图,定义了如何创建、配置和管理这些对象。通过使用 Helm Chart,开发者能够更方便地分享和重用他们的应用程序部署配置。

借助 Helm 和 Helm Chart,开发者可以大大简化 Kubernetes 上的应用程序部署流程,减少手动编写和维护复杂 YAML 文件的工作量,同时也提高了部署的一致性和可靠性。这不仅加速了开发周期,还增强了团队之间的协作效率。

相关文章:

devops和ICCID简介

Devops DevOps(Development 和 Operations 的组合)是一种软件开发和 IT 运维的哲学,旨在促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它强调自动化流程,持续集成(CI&#xf…...

uniapp使用live-pusher实现模拟人脸识别效果

需求: 1、前端实现模拟用户人脸识别,识别成功后抓取视频流或认证的一张静态图给服务端。 2、服务端调用第三方活体认证接口,验证前端传递的人脸是否存在,把认证结果反馈给前端。 3、前端根据服务端返回的状态,显示在…...

OSI 网络 7 层模型

问: 请你介绍一下OSI七层网络模型物理层解决什么问题?功能原理问题 数据链路层解决什么问题功能原理 网络层解决的问题功能原理 传输层解决什么问题功能原理会话层解决什么问题功能原理: 表示层解决什么问题 应用层解决什么问题如何展示? 问: 请你介绍一下OSI七层网络模型 物…...

RK356x bsp 7 - PCF8563 RTC调试记录

文章目录 1、环境介绍2、目标3、PCF85634、dts配置5、内核配置6、测试验证 1、环境介绍 硬件:飞凌ok3568-c开发板 软件:原厂rk356x sdk 2、目标 开发板断电后仍正常计时。 3、PCF8563 PCF8563 是由 NXP Semiconductors 公司生产的低功耗 CMOS 实时…...

Vue.js组件开发-如何实现vueFLow流程

在Vue.js组件中实现vueFlow流程实例 确保已经安装了vueFlow库。如果还没有安装,可以使用npm或yarn进行安装: npm install braks/vue-flow # 或者 yarn add braks/vue-flow步骤: ‌引入vueFlow组件‌: 在Vue组件文件中&#xff…...

upload-labs关卡记录15

图片马,这里就可以看到任务和注意事项: 使用一个正常图片,然后拼接一个一句话木马即可实现。这里就用命令窗口进行实现: copy 111.png/b shell.php/a shell.png 注意这里的命令窗口要在存在图片和一句话木马的目录下打开&#…...

面试题总结

一、mysql中的乐观锁、悲观锁、共享锁、排它锁、行锁、表锁 1、乐观锁 通过sql实现的,更新sql语句时加上where version #{version}乐观锁不是数据库自带的锁,需要我们自己去实现。乐观锁是指操作数据库时(更新操作),想法很乐观,认…...

Linux | 零基础Ubuntu解压RaR等压缩包文件

目录 介绍 案例分析 安装工具 解压实践 介绍 RAR是一种专利文件格式,用于数据压缩与归档打包,开发者为尤金罗谢尔(俄语:Евгений Лазаревич Рошал,拉丁转写:Yevgeny Lazarevich R…...

自动化测试-Pytest测试

目录 pytest简介 基本测试实例 编写测试文件 执行测试 pytest运行时参数 mark标记 Fixture pytest插件 Allure测试报告 测试步骤 pytest简介 Pytest‌是一个非常流行的Python测试框架,它支持简单的单元测试和复杂的功能测试,具有易于上手、功…...

磁盘调度算法

先来先服务(FCFS)算法 原理: 按照进程请求访问磁盘的先后顺序进行调度。就像是排队买东西,先到的先服务。 示例(Python): def fcfs(requests):"""requests是一个包含磁盘请求序…...

多视图 (Multi-view) 与多模态 (Multi-modal)

多视图 (Multi-view) 与多模态 (Multi-modal) 是两种不同的数据处理方式,它们在机器学习和数据分析中有着重要的应用。尽管这两者有一些相似之处,但它们关注的角度和处理方法有所不同。 多视图 (Multi-view) 定义:多视图指的是同一数据对象…...

CFA知识点梳理系列:CFA Level II, Reading 7 Economics of Regulation

这是CFA知识点梳理系列的第七篇文章,上一篇文章可以参考以下链接: CFA知识点梳理系列:CFA Level II, Reading 6 Economic Growth...

微信流量主挑战:三天25用户!功能未完善?(新纪元4)

🎉【小程序上线第三天!突破25用户大关!】🎉 嘿,大家好!今天是我们小程序上线的第三天,我们的用户量已经突破了25个!昨天还是16个,今天一觉醒来竟然有25个!这涨…...

1.微服务灰度发布落地实践(方案设计)

前言 微服务架构中的灰度发布(也称为金丝雀发布或渐进式发布)是一种在不影响现有用户的情况下,逐步将新版本的服务部署到生产环境的策略。通过灰度发布,你可以先将新版本的服务暴露给一小部分用户或特定的流量,观察其…...

Web3如何推动元宇宙的去中心化发展?

随着科技的不断进步,元宇宙的概念逐渐从科幻变成现实,它不仅是虚拟世界与现实世界的融合,更是数字交互和社会参与的新形态。在这个过程中,Web3作为下一代互联网的核心技术,正发挥着关键作用。特别是在去中心化的元宇宙…...

【NODE】01-fs和path常用知识点

前言 最近在使用express-generator知识进行搭建前后端通信,其中有些知识点涉及到nodejs的fs和path核心模块,因此另写一篇文章进行介绍和代码案例练习。 fs(文件系统)和 path 是 Node.js 的核心模块,用于文件操作和路径…...

矩阵线性方程组

矩阵可以是任何形状 当矩阵的行数等于列数,称之为方阵,那么它就有行列式 矩阵的公式 矩阵分块法 Matrix(母体) 克拉默法则 线性方程组 注意初等列变换不是一个同解变换 初等变换与秩 XAB 可以用初等列变换但是不推荐,还是使用初等行变换.用转置思想求解 ( X A ) T…...

Web API和Web Services的区分

前些年一提及自动化测试,大多是指UI界面层的自动化测试。近几年,随着分层自动化测试概念的兴起,以及自动化测试自身的发展与细分,自动化测试包含了更多的内容。 API(Application ProgrammingInterface,应用程序编程接…...

各种数据库类型介绍

在软件开发和数据处理领域,数据库扮演着至关重要的角色。它们用于存储、检索和管理大量数据,是信息系统不可或缺的基础。以下是几种常用的数据库类型及其简要介绍: 1.关系型数据库(Relational Databases) 关系型数据库…...

Hive练习题11-15

11、第11题 info 表 date result 2005-05-09 win 2005-05-09 lose 2005-05-09 lose 2005-05-09 lose 2005-05-10 win 2005-05-10 lose 2005-05-10 lose 如果要生成下列结果, 该如何写sql语句? win lose 2005-05-09 2 2 2005-05-10 1 2 答案: (1) …...

【微信小程序】4plus|搜索框-历史搜索 | 我的咖啡店-综合实训

升级版1-清空全部的再次确认 实现功能: 历史搜索记录展示-历史搜索记录展示10条点击跳转-点击历史搜索记录可同步到搜索框并自动搜索全部删除-可一次性全部删除历史搜索记录全部删除-有再次确认操作展示 进行搜索后留下搜索记录 点击垃圾桶图标,显示【清空全部】 点击【清…...

学习笔记(C#基础书籍)-- C#高级应用

(12.25,12.26) I/O数据流技术:《第十二章》 为了能够长时间保存程序中的数据,I/O技术可以将数据保存到文件(如文本文件等)中。 ⭕文件基本操作 a.File类:支持对文件的基本操作&…...

pytorch将数据与模型都放到GPU上训练

默认是CPU,如果想要用GPU需要: 安装配置cuda,然后更新/下载支持gpu版本的pytorch,可以参考:https://blog.csdn.net/weixin_35757704/article/details/124315569设置device:device torch.device(cuda if t…...

华为 IPD,究竟有什么特点?(二)

关注作者 (四)华为版 IPD 特点四:一定要把差异化竞争力持 续建立在平台上 平台不仅带来研发效率的提升,更重要的是,它是技术竞争力的载体,是研发质 量的重要保证。 1)为什么很多企业摆脱不了同…...

CV(7)--神经网络训练

前言 仅记录学习过程,有问题欢迎讨论 什么是神经网络: 神经网络是一种模拟人脑神经元工作原理的算法,它由多个神经元组成,每个神经元都接受输入,通过计算产生输出,并将输出传递给其他神经元。神经网络的…...

git更改当前项目的远程仓库,保留原始仓库提交记录提交到新仓库

在开发过程中,有时需要将当前项目的远程仓库切换到另一个新的远程仓库,同时保留所有原始的提交记录。以下是详细的步骤和最佳实践,确保你能够顺利完成这一操作。 更改当前项目的远程仓库 1.查看当前的远程仓库 确认当前项目的远程仓库地址。…...

【产品应用】一体化无刷电机在旋转等离子喷枪中的应用

在现代工业制造与加工领域,等离子喷枪凭借其高温、高速的等离子射流,能够实现高效的材料表面处理、切割以及焊接等工艺,在众多行业中发挥着关键作用。而一体化无刷电机的应用,更是为等离子喷枪的性能提升和稳定运行注入了强大动力…...

docker django uwsgi 报错记录

这个配置中是能够正常进行网页访问的,能够查看网页 [uwsgi] chdir /home/luichun/lc/Pyfile/PyCursor/app module app.wsgi:application plugin-dir /usr/lib/uwsgi/plugins plugins python311 env TZAsia/Shanghai socket-timeout 60 websocket-ma…...

【自由能系列(初级),论文解读】神经网络中,熵代表系统的不确定性,自由能则引导系统向更低能量的状态演化,而动力学则描述了系统状态随时间的变化。

神经网络中的熵、自由能与动力学 核心结论: 神经网络在“学习”和“成长”过程中,熵、自由能以及动力学扮演着关键角色。 熵代表系统的不确定性,自由能则引导系统向更低能量的状态演化,而动力学则描述了系统状态随时间的变化。 这…...

云计算时代携程的网络架构变迁

大家觉得有意义和帮助记得及时关注和点赞!!! 前言0 携程云平台简介 网络演进时间线1 基于 VLAN 的二层网络 1.1 需求1.2 解决方案:OpenStack Provider Network 模型1.3 硬件网络拓扑1.4 宿主机内部网络拓扑1.5 小结 优点缺点2 基于 SDN 的大二层网络 2.1 面临的新问…...

uniapp 微信小程序 数据空白展示组件

效果图 html <template><view class"nodata"><view class""><image class"nodataimg":src"$publicfun.locaAndHttp()?localUrl:$publicfun.httpUrlImg(httUrl)"mode"aspectFit"></image>&l…...

java 线程池为什么设计成先进队列再创建最大线程为何先入队列再增加线程数?

java 线程池为什么设计成先进队列再创建最大线程为何先入队列再增加线程数&#xff1f; 这个设计与 线程池的性能优化 、资源利用和任务调度策略密切相关。要理解为什么线程池设计成“ 先将任务入队列&#xff0c;再创建最大线程数 ”&#xff0c;可以从以下几个方面进行分析&…...

我的Qt作品(20)使用Qt+OpenCV写一个旋转/抠图/mask生成工具

使用QtOpenCV写一个旋转/抠图/mask生成工具 1、旋转功能 void FormRotate::rotateImage(const cv::Mat &src, cv::Mat &dst, double degree) //旋转 {if (fabs(degree) < 0.001){dst src;return;}//center旋转的中心点坐标//degree旋转的角度,不是弧度,>0逆时针…...

【vue】vite + ts +vue3 安装及使用 pinia

vue3 TS 安装使用pinia状态管理_vue3 ts pinia-CSDN博客 Vue项目进阶&#xff1a;再谈Pinia函数式&#xff08;composition API&#xff09;用法-腾讯云开发者社区-腾讯云...

计算机网络 (10)网络层

前言 计算机网络中的网络层&#xff08;Network Layer&#xff09;是OSI&#xff08;开放系统互连&#xff09;模型中的第三层&#xff0c;也是TCP/IP模型中的第二层&#xff0c;它位于数据链路层和传输层之间。网络层的主要任务是负责数据包从源主机到目的主机的路径选择和数据…...

1085 PAT单位排行

每次 PAT 考试结束后&#xff0c;考试中心都会发布一个考生单位排行榜。本题就请你实现这个功能。 输入格式&#xff1a; 输入第一行给出一个正整数 N&#xff08;≤105&#xff09;&#xff0c;即考生人数。随后 N 行&#xff0c;每行按下列格式给出一个考生的信息&#xff…...

知识库1: 什么是知识库?

知识库&#xff08;Knowledge Base, KB&#xff09;是一个存储和组织知识的信息系统或数据集合&#xff0c;用于保存、管理和访问结构化或非结构化的信息。它的目的是帮助人们快速获取所需的知识、解答问题或支持决策。知识库可以被广泛应用于技术支持、教育、研究以及智能系统…...

[SAP ABAP] 程序备份

备份当前程序到本地的方式如下&#xff1a; 1.复制粘贴 Ctrl A 、Ctrl V 2.【实用程序】|【更多实用程序】|【上载/下载】|【下载】 ​ 3.快捷键&#xff0c;支持多种格式导出(.abap .html .pdf 等) 在事务码SE38(ABAP编辑器)屏幕右下角&#xff0c;点击【Options选项】图…...

SpringBoot 自动装配原理及源码解析

目录 一、引言 二、什么是 Spring Boot 的自动装配 三、自动装配的核心注解解析 3.1 SpringBootApplication 注解 &#xff08;1&#xff09;SpringBootConfiguration&#xff1a; &#xff08;2&#xff09;EnableAutoConfiguration&#xff1a; &#xff08;3&#xf…...

【专题】2024年悦己生活消费洞察报告汇总PDF洞察(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p38654 在当今时代背景下&#xff0c;社会发展日新月异&#xff0c;人们的生活方式与消费观念正经历深刻变革。MoonFox 月狐数据的《2024 年悦己生活消费洞察报告》聚焦于这一充满活力与变化的消费领域。随着就业、婚姻等社会压力的…...

empire靶机

打开靶机 我们先查看页面源代码&#xff0c;发现什么也没有 再去用nmap扫描 nmap -sV -p- 192.168.95.144 发现也没什么用 我们在用dirb扫一下 dirb http://192.168.95.144 我们发现了robots.txt并且响应码是200&#xff0c;去访问一下 又得到了一个目录&#xff0c;去访问…...

uniapp 判断多选、选中取消选中的逻辑处理

一、效果展示 二、代码 1.父组件: :id=“this.id” : 给子组件传递参数【id】 @callParentMethod=“takeIndexFun” :给子组件传递方法,这样可以在子组件直接调用父组件的方法 <view @click="$refs.member.open()"...

arthas查看拼接好参数的sql, redis, es完整可直接执行的命令

arthas查看拼接好参数的sql, redis, es完整可直接执行的命令 arthas查看sql可执行命令arthas查看redis可执行命令arthas查看es可执行命令相关链接 经常修bug的时候, 拿不到能够执行的命令, 真是太难受了 arthas查看sql可执行命令 # mybatis plus (参数和sql分离了) watch org.…...

Flamingo:少样本多模态大模型

Flamingo&#xff1a;少样本多模态大模型 论文大纲理解1. 确认目标2. 分析过程&#xff08;目标-手段分析&#xff09;3. 实现步骤4. 效果展示5. 金手指 解法拆解全流程核心模式提问Flamingo为什么选择使用"固定数量的64个视觉tokens"这个特定数字?这个数字的选择背…...

nacos-gateway动态路由

在Nacos官网中给出了手动监听Nacos配置变更的SDK&#xff1a; Nacos Java SDK 所需依赖 <!--统一配置管理--> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <…...

Kotlin 协程基础知识总结二 —— 启动与取消

协程启动与取消的主要内容&#xff1a; 启动协程&#xff1a;启动构建器、启动模式、作用域构建器、Job 生命周期取消协程&#xff1a;协程的取消、CPU 密集型任务取消、协程取消的副作用、超时任务 1、协程构建器 &#xff08;P20&#xff09;launch 与 aysnc 两种协程构建…...

【漏洞复现】Struts2(CVE-2024-53677)任意文件上传逻辑绕过漏洞

文章目录 前言一、漏洞描述二、漏洞详情三、影响版本四、危害描述五、漏洞分析六、漏洞复现七、修复建议前言 Struts2框架是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java Servlet API,鼓励开发者采用MVC架构。Struts2以WebWork优秀的设…...

使用 IDE生成 Java Doc

使用步骤 Android Studio界面->Tools->Generate JavaDoc zh-CN -encoding UTF-8 -charset UTF-8 -classpath “C:\Users\fangjian\AppData\Local\Android\Sdk\platforms\android-34\android.jar” 报错问题 错误: 目标 17 不允许选项 --boot-class-path 如果你正在使用…...

AWS、Google Cloud Platform (GCP)、Microsoft Azure、Linode和 桔子数据 的 价格对比

要对比 AWS、Google Cloud Platform (GCP)、Microsoft Azure、Linode 和 桔子数据 的 价格&#xff0c;我们需要先了解每个平台的定价模型、服务类型以及不同服务之间的价格差异。以下是根据各个平台常见服务&#xff08;如计算实例、存储、数据传输等&#xff09;做的一个 简化…...

【C++篇】AVL树的实现

前言 本篇是基于二叉搜索树写的&#xff0c;详情可以去看上篇【二叉搜索树】 一&#xff0c;AVL树的概念 &#xff08;1&#xff09;&#xff0c;AVL树是一颗二叉搜索树&#xff0c;它是一棵空树或者是具备以下性质的二叉搜索树&#xff1a;它的左右子树都是AVL树&#xff…...