《DevOps实践指南》- 读书笔记(九)

DevOps实践指南

    • 25. 附录
      • 附录 1 DevOps 的大融合
        • 精益运动
        • 敏捷运动
        • Velocity 大会运动
        • 敏捷基础设施运动
        • 持续交付运动
        • 丰田套路运动
        • 精益创业运动
        • 精益用户体验运动
        • Rugged Computing 运动
      • 附录 2 约束理论和核心的长期冲突
      • 附录 3 恶性循环列表
      • 附录 4 交接和队列的危害
      • 附录 5 工业安全误区
      • 附录 6 丰田安灯绳
      • 附录 7 软件包产品
      • 附录 8 事后分析会议
      • 附录 9 猿猴军团
      • 附录 10 上线时间透明化
    • 26. 术语

25. 附录

附录 1 DevOps 的大融合

我们认为 DevOps 正在得益于一场令人难以置信的管理实践大融合,各种实践相互促进和衔接在一起,并形成了一种独特的实践集合,它能对组织的软件开发转型和 IT 产品或服务交付模式的转型产生极大的帮助。

John Willis 称之为“DevOps 的大融合”。下面尽量按时间顺序介绍这次大融合里的各种元素。

请注意,这里并不详细介绍它们,而只是概要地介绍各种思维的演进,以及发生在它们之间的难以置信的链接,最终导致了 DevOps 的应运而生。

精益运动

精益运动始于 20 世纪 80 年代,衍生自丰田生产系统(TPS)。TPS 包括价值流映射、看板和全面生产维护等。

精益的两个主要原则是:

  • (1) 坚信前置时间(把原材料转换为成品所需的时间)是提升质量、客户满意度和员工幸福感的最佳预测指标;
  • (2) 小批量尺寸是短前置时间的一个最佳预测指标,理论上讲最理想的批量尺寸是“单件流”(即“1×1”的流,库存为 1,批量尺寸为 1)。

精益原则专注于为客户创造价值,要求系统性思考,持之以恒,拥抱科学思维,创建流和拉动(而不是推动)的模式,从源头保证质量,以谦逊为导向,尊重每一个人。

敏捷运动

始于 2001 年。“敏捷宣言”是由 17 位软件开发领域的顶尖大师编写的,目的是掀起一场推广轻量级软件开发方法(如 DP 和 DSDM-动态系统开发方法)的运动,用敏捷替代瀑布式等重量级软件开发过程以及替代统一软件开发过程(RUP)这样的方法论。

它的一个关键原则是:“频繁地交付可工作的软件,交付周期可以是数星期也可以是数月,推荐更短的周期。”另外还有两个原则,一个是小型的、自我激励的团队应工作在高度信任的模式下,一个强调小批量尺寸。敏捷还和一系列的工具和实践相关,如 Scrum、站会等。

Velocity 大会运动

从 2007 年开始,由 Steve Souders、John Allspaw 和 Jesse Robbins 等人组织并发起了 Velocity大会,目的是为 IT 运维和网站性能调优人员提供一个聚首的机会。在 2009 年的 Velocity 会议上,John Allspaw 和 Paul Hammond 做了主题为“每日 10 次部署:Dev 和 Ops 在 Flickr 的协作”的演讲。

敏捷基础设施运动

在 2008 年的多伦多敏捷会议上,Patrick Debois 和 Andrew Schafer 主持了一场名为“羽毛之鸟”专题研讨,探讨如何将敏捷原则应用于基础设施,而不仅限于应用程序代码。他们很快得到了一些志同道合的思考者的响应,其中也包括 John Willis。后来,Patrick 又深受 John 和 Hammond的“每日 10 次部署:Dev 和 Ops 在 Flickr 的协作”演讲的鼓舞,于 2009 年在比利时的根特市,举办了第一次 DevOpsDays 活动,创造了“DevOps”这个词。

持续交付运动

在持续构建、测试和集成等开发实践的基础上,Jez Humble 和 David Farley 发展出了持续交付的理念,其中包括确保将代码和基础设施始终处于可部署状态的“部署流水线”,并且确保所有提交到主干的代码都能安全地部署到生产环境里。

这个想法最早是在 2006 年的敏捷大会上公布于众的,Tim Fitz 在他的一篇名为“持续部署”的博文中完善了这个概念。

丰田套路运动

在 2009 年,Mike Rother 编写了《丰田套路:转变我们对领导力与管理的认知》一书,书中描述了他对丰田 20 年研究的收获。这期间他理解了丰田生产系统(TPS)的因果机制并对其作了综述。书中介绍了“丰田成功背后隐形的管理例程和思维模式及其不断改进和调整……以及其他公司如何在他们的组织中践行类似的例程和思维模式”。

他的结论是,精益社区错失了与所谓的“改善套路”相关的最重要的实践。 他解释说,每个组织都有工作日程,丰田成功的关键因素是改进了工作习惯,并将其植入到组织里每个人的日常工作中。丰田套路建立了一种迭代、增量、科学的解决问题的方法,追求共同的企业目标

精益创业运动

在 2011 年,Eric Ries 编写了《精益创业:新创企业的成长思维》一书,总结了他在一家硅谷创业公司 IMVU 的经验教训。这本书的核心思想基于 Steve Blank 的《四步创业法》一书和持续部署技术。Eric Ries 还给出了相关实践并定义了一些术语,包括最小化可行产品(MVP)构建 - 度量 - 学习的循环,以及很多持续部署的技术模式。

精益用户体验运动

在 2013 年,Jeff Gothelf 撰写了《精益设计:设计团队如何改善用户体验》一书,其中描写了如何改进“模糊前端”,并解释了产品经理如何在投入时间和资源以前制定业务假设实验,籍此获取关于业务的信心。有了精益设计,全面优化业务假设、功能开发、测试、部署和为客户发布服务的工具就齐了

Rugged Computing 运动

2011 年,Joshua Corman、David Rice 和 Jeff Williams 深入考察了软件开发周期晚期进行应用程序和环境安全加固的无效性。 根据考察结果,他们提出了名为 Rugged Computing 的哲学,旨在构建包含稳定性、可扩展性、可用性、生存性、可持续性、安全性、可支持性、可管理性和防御性等的非功能性需求框架

DevOps 强调高频率发布,可能会给质量保证(QA)和信息安全(Infosec)带来巨大的压力,因为当部署频率从每月或每季度一次提升到每天数百或数千次时,信息安全或质量保证的工作周期就不再是两周一次了。Rugged Computing 运动假设当前的多数信息安全防护措施是没用的

附录 2 约束理论和核心的长期冲突

约束理论主要讨论核心冲突云(通常称为“C3”)的作用。图 A-1 是 IT 的冲突云示意图。
在这里插入图片描述
在 20 世纪 80 年代,在制造业里核心的长期冲突非常普遍。所有工厂经理都有两项重要的业务目标:提高销量,降低成本。 问题是,为了保持销量,库存就要增加,以确保始终能满足客户需求。

然而,要降低成本,就应该减少库存,以确保资金没有占用在在制品上。在制品指按客户订单生产的但还不能立即发货的产品。

应用精益原则能解决以上冲突,例如减小批量尺寸,减少在制品数量,以及缩短和放大反馈回路。 这样工厂的生产率、产品质量和客户满意度都会得到显著提高。

DevOps 工作模式背后的原理与制造业变革的原则是相同的,那就是优化 IT 价值流,将业务需求转化成为向客户提供价值的能力和服务。

附录 3 恶性循环列表

《凤凰项目》中描绘的恶性循环如表 A-1 所示。
在这里插入图片描述

附录 4 交接和队列的危害

队列等待时间会随着交接次数的增加而延长,因为队列是由于交接而产生的。图 A-2 显示了一个工作中心资源的繁忙程度与等待时间的关系。渐变的曲线显示了为什么“一个 30 分钟的简单变更”通常却需要几周的时间才能完成。某些工程师和项目组若过于繁忙,通常就会变成瓶颈。当一个项目组满负荷时,任何需要它完成的任务都会被淹没在队列里,如果没有人进行催促或提高优先级,该任务将永远也不能完成。
在这里插入图片描述

在图 A-2 中,横坐标表示在一个项目组里某特定资源的繁忙百分比,纵坐标是等待时间(或者更准确地说是队列长度)。曲线的形状表明,在资源利用率超过 80%以后,等待时间会急速攀升到顶点。

附录 5 工业安全误区

对复杂系统几十年的研究表明,人们的处理策略都是基于几个误区:

  • 误区 1:人为错误是意外和事故最主要且唯一的根源。
  • 误区 2:如果人遵守了既定的规程,那么系统就是安全的。
  • 误区 3:安全性可以通过设置权限和防护来提升。保护层次越多,安全性就越高。
  • 误区 4:事故发生的根本原因(“真相”)可以通过事故分析来确定。
  • 误区 5:事故调查就是识别事实和原因之间的逻辑和关联关系。
  • 误区 6:安全性总是优先级最高的,不容降低。

误区与真相之间的区别如表 A-2 所示。
在这里插入图片描述

附录 6 丰田安灯绳

许多人问,如果安灯绳每天被拉了 5000 次,那么生产工作怎么会完成呢?确切地说,并不是每个安灯绳都会导致整个装配线的停止。相反,当安灯拉绳被拉下时,监督那个工作中心的团队领导有 50 秒时间解决这个问题。如果在 50 秒内问题没解决,没有装配完毕的车辆就将越过地板上画的那条线,然后这条装配线才会停止(见图 A-3)。
在这里插入图片描述

附录 7 软件包产品

为了将复杂的软件包产品(COTS,commercial off-the-shelf software;如 SAP、IBM WebSphere、Oracle WebLogic)也纳入版本控制,我们可能不得不去掉厂商提供的图形化的点击操作模式的安装工具。为此需要了解厂商提供的工具的用途,还需要一个干净的服务器安装图片,需要比对文件系统,并将新增的文件纳入版本控制。将那些与安装环境无关的文件都放在同一个位置(“基础安装”),将环境有关的文件放入各自的目录(“测试”或者“生产”)。通过这种方式,软件安装操作就变成了版本控制的操作,可视化效果和可重复性都更好了,速度也提升了。

我们可能还要转换应用配置设置,把它们也纳入版本控制。例如,可以将存储在数据库里的应用配置转换为 XML 文件,XML 文件也可以转换为应用配置。

附录 8 事后分析会议

事后分析会议的议程样例如下。

  • 首先由会议主持或协调人做会议启动发言,强调这个会议是对事不对人的事后分析会议,我们的重点不是发生过的事,也不会去推测“本来会怎样”或“本来有可能怎样”。协调人可以宣读来自 Retrospective.com 网站的“回顾基本指导原则”。此外,协调人将提醒大家,得出的任何对策都一定要分配到具体的人,如果纠正措施不能成为这个会议后的首要任务,那么这就不是纠正措施。(这是为了防止会议上讨论了一系列好想法,可是永远也不付诸行动。)
  • 在会议期间要对事故完整的时间表达成一致的认识。包括在什么时间、是谁发现的问题,通过什么途径发现的问题(例如,自动监测、手动检测、客户反馈),在什么时间服务得到了彻底的恢复,等等。我们还将在事故发生期间所有的外部讨论归纳到时间表中。提到“时间表”,大家可能会理解为调查问题并解决问题的步骤。实际上,特别是在复杂的系统中,导致事故发生的事件可能会有许多,并且将会采取多种解决问题的故障排查方案和措施。 在这项活动中,我们试图记录所有的事件和所有参与者的观点,并尽可能地建立出各种可能的因果关系的假设。
  • 事后分析团队将列出所有造成事故的人为因素和技术因素,并将其归类,如“设计决策”“修复”“发现的问题”等。团队将使用头脑风暴和“十万个怎么样”方法,对他们认为特别重要的诱因进行深入挖掘,从而探索更深层次的诱因。所有的观点都应当得到包容和尊重,不允许争论或否认其他人已经确认的诱因。会议协调人特别需要注意的是,必须确保做这项活动的时间充足,而且团队不应尝试去异存同,不要试图确定出一个或几个“根本原因”。
  • 与会人员要就会后首要任务清单达成一致意见。清单所列内容需要集思广益,并选择能防止问题复发的任务,或者能更快发现问题并复原的任务。列表还可以包括改进系统的其他方式。
    我们的目标是确定实现预期结果的最小增量步骤,而不是“大爆炸”式的变更,因为那不仅需要更长的实施时间,还会推迟改进。我们还会生成一份单独的列表,列出那些优先级较低的任务,并为其分配一个负责人。如果将来发生类似的问题,就可以基于这些任务制定对策。
  • 与会人员还要讨论事故的衡量指标和事故对组织造成的影响。例如,我们可以使用下列指标来定量描述事故。
    • 事件严重性:这个问题的严重程度。严重性会直接影响服务和客户。
    • 总停机时间:服务完全不可用的时间。
    • 检测时间:发现问题所需的时间。
    • 解决时间:知道问题以后恢复服务所用时间。

Etsy 公司的 Bethany Macri 是这么总结的:“在事故分析中对事不对人并不意味着没有人承担责任,而是想了解在什么情况下允许人员执行变更,或者谁引入的问题。没有责难,就没有顾虑;没有了顾虑,就可以坦诚相待。”

附录 9 猿猴军团

在 2011 年 AWS 的美东服务中断事故之后,Netflix 曾就如何自动处理系统故障讨论过多次。一个名为“捣乱猴”的服务就是这些讨论的结果。

此后,捣乱猴逐渐演变成了一套全系列的工具,内部称之为“Netflix 猿猴军团”,用来模拟灾难的不同程度

  • 捣乱大猩猩:模拟整个 AWS 可用区域(ZA)的故障。
  • 捣乱金刚:模拟整个 AWS 地区(Region)的故障,如北美或欧洲。
  • 延迟猴子:在其 RESTful 客户端服务器的通信层人为引入的延迟或停机,以模拟服务降级,并确保相关服务正常工作。
  • 一致性猴子:查找并关闭不符合最佳实践的 AWS 实例(例如,实例不属于任何自动伸缩组,或服务目录中没有值班工程师的电子邮件地址)。
  • 医生猴子:检查每个运行的实例,找到不健康的实例,如果负责人没有及时修复,就主动关闭实例。
  • 看门猴子:确保他们的云环境没有混乱和浪费,搜索未使用的资源并处理。
  • 安全猴子:一致性猴子的升级版,找到并终止有安全违规或漏洞的实例,例如 AWS 安全组配置错误。

附录 10 上线时间透明化

Lenny Rachitsky 这么陈述他所谓的“上线时间透明化”的优势。

  • (1) 支持的成本下降。因为用户能够自己识别系统里的问题,无需打电话或发电子邮件给支持部门。用户不再需要猜测是本地问题还是全局性问题,并且可以在跟运维抱怨之前更快速地定位问题。
  • (2) 在宕机期间能与客户更良性沟通。利用互联网传播的优势而不是电子邮件、电话这种一对一性方式,能实现更好的沟通效果。在客户沟通上省事了,就有更多时间来解决问题。
  • (3) 让客户在发生宕机事故时有明确的可寻求帮助的途径,不必再四处搜索论坛、Twitter 或博客。
  • (4) 信任是所有 SaaS 应用成功的基石。客户将自己的业务和生计都押宝在了你的服务或平台上。现有和潜在的客户都需要信任服务。他们想确保当服务出现问题时自己也有知情权。让他们实时了解意外事件是建立信任的最佳方法,向客户隐瞒实情不再可取。
  • (5) 认真负责的 SaaS 提供商早晚都会提供公开的健康度仪表板,这只是时间问题,因为用户有这样的需求。

26. 术语

DOP & Handbook Glossary

英文中文
A/B TestingA/B 测试
Acceptance Stage验收阶段
Acceptance Test-Driven Development (ATDD)验收测试驱动开发
Acceptance Test验收测试
Accident事故
Affinity亲和
Agile敏捷
Andon Cord安灯绳
Anomaly Detection Technique异常探测技术
Antifragility抗脆弱性
Application Deployment应用部署
Artifact Management构件制品库管理
Artifact制品
Automated Test自动化测试
Automation自动化
Backlog待办事项列表
Bad Apple Theory坏苹果理论
Bad Path坏路径
Batch Size批次尺寸、批量大小
Blame指责
Blameless Post Mortem不指责的事后分析
Blamelessness免责
Blue-Green Deployment蓝绿部署
Blue-Green Deployment Pattern蓝绿部署模式
Branching Strategy分支策略
Brownfield棕地
Build构建
Business Value业务价值
Canary Release金丝雀发布
Canary Release Pattern金丝雀发布模式
Card卡片
Change Category变更类别
Change Schedule变更计划
Cloud Computing云计算
Cloud Configuration File云配置文件
Cluster Immune System Release Pattern集群免疫系统发布模式
Code Branch代码分支
Code Review Form代码审查表
Codified Nfr成文的非功能需求
Collaboration协作
Commit Stage提交阶段
Commit Code提交代码
Compliance Requirement合规性要求
Compliance Checking合规性检查
Compliancy Officer合规检测官
Configuration Management配置管理
Container容器
Continuous Deployment持续部署
Continuous Integration持续集成(CI)
Continuous Delivery持续交付(CD)
Conways Law康威定律
Cycle Time周期时间
Defect Tracking缺陷跟踪
Definition Of Done (DoD)完成的定义
Dev Ritual开发惯例
Developer开发人员
Development开发
Devops TransformationDevOps 转型
Downstream/Upstream下游/上游
Downwards Spiral恶性循环
E-Mail Pass-Around电子邮件轮查
Expand/Contract Pattern扩张/收缩模式
Exploratory Test探索性测试
Fast Feedback快速反馈
Feature特性
Feature Flag特性标志
Feature Toggle特性开关
Feedback/Feedback Loop反馈/反馈回路
Feedforward/Feedforward Loop前馈/前馈回路
Flow流动
Gated Commit门控提交
Gaussian Distribution高斯分布
Green Build绿色构建
Greenfield绿地
Handoff交接
Hand-Off Readiness Review交接就绪评审
Happy Path愉快路径
Hypothesis-Driven Development假设驱动开发
Incident事件
Information Radiator信息辐射器
Infosec信息安全
Infrastructure Automation基础架构自动化
Infrastructure As Code基础架构即代码
Integration Tests集成测试
I-Shaped, T-Shaped, E-ShapedI 型、T 型、E 型
Iteration迭代
Itsm (It Service Management)IT 服务管理
Ji-Kotei-Kanketsu (JKK)质量检查(JKK)
Just Culture公正文化
Just-In-Time (JIT)准时制
Kaizen (In Lean)改善
Kaizen Blitz (Or Improvement Blitz)改善闪电战
Signboard看板
Kata套路
Large Batch Size Merge大批量合并
Latent Defect潜在缺陷
Lauching Guidance发布指导
Launch Readiness Review投产就绪评审
Lead Time前置时间
Lean精益
Learning Culture学习文化
Logging Level日志级别
Loosely Coupled Architecture松耦合架构
Micro-Service微服务
Minimum Viable Product最小化可行产品
Monitoring Framework监控框架
Monolithic Application单体应用
Monolytics单体应用
MTTR平均恢复时间
Non-Functional Requirement (NFR)非功能性需求
Non-Functional Requirement (NFR) Testing非功能需求测试
(Non) Ideal Testing Pyramid(非)理想测试金字塔模型
One-Piece-Flow单件流
Operations运维
Operations Story运维故事
Ops Liaison运维联络人
Organisational Typology Model组织结构模型
Organization Archetype组织原型
Organizational Learning组织级学习
Over-The-Shoulder观察者评审
Package
Pair Programming结对编程
Peer Review同行评审
Pilot试点
Pipeline流水线
Plan-Do-Check-Act Cycle (PDCA Cycle)计划-实施-检查-改进循环(戴明环)
Post-Mortem事后分析
Process Time处理时间
Product Owner产品负责人
Pull Request Process拉动请求流程
QA质量保证
Reduce Batch Size降低批次尺寸
Reduce Number Of Handoffs减少交接次数
Regression Test回归测试
Release Branch发布分支
Release Manager发布经理
Release Pattern发布模式
Retrospective回顾
Rhythm节奏
Roll-Back回滚
Sad Path不愉快路径
Safety Culture安全文化
Safety Conditions安全条件
Scaling规模化
ScrumScrum
Scrum MasterScrum Master
Security Testing安全测试
Self Service Capability自服务能力
Service Deployment服务部署
Service Level Agreement (SLA)服务级别协议(SLA)
Shared Goal共同目标
Shared Operations Team (SOT)共享运维团队
Shared Version Control共享版本控制
Single Repository单一存储库
Smoke Testing冒烟测试
Sprint冲刺
StagingStaging
Staging Environments, SIT准生产环境
Stakeholder利益干系人
Standard Deviation标准差
Standard Operations标准运维
Static Code Analysis静态代码分析
Swarm聚集、聚焦、会诊、围观(动词)
Swarming聚集
System Of Engagement (SOE)交互系统
System Of Records (SOR)记录系统
Technical Debt技术债务
Technology Adaption Curve技术适应曲线
Technology Executive技术主管
Telemetry遥测
Test Coverage Analysis测试覆盖率分析
Test Story测试故事
Test-Driven Development测试驱动开发
The Downward Spiral - TDS下行螺旋
The Agile Manifesto敏捷宣言
The Lean Movement精益运动
The Simian Army:
Chaos Gorilla
Chaos Kong
Conformity Monkey
Doctor Monkey
Janitor Monkey
Latency Monkey
Security Monkey
猿猴军团(可靠性监控服务):
捣乱大猩猩
捣乱金刚
一致性猴子
医生猴子
看门猴子
延迟猴子
安全猴子
The Three Ways三步工作法
Theory Of Constraints约束理论
Ticketing System工单系统
Tightly-Coupled紧耦合
Tool-Assisted Review工具辅助评审
Tool工具
Toyota Production System (TPS)丰田生产系统
Toyoto Kata丰田套路
Transformation Team转型团队
Trunk主干
User Story用户故事
Value Stream Mapping价值流映射
Value Stream价值流
Velocity速率
Version Control版本控制
Virtualized Environment虚拟化环境
Visible可视的
Visualisation可视化
Waste浪费
Waste Reduction减少浪费
Waterfall瀑布式
WIP (Work In Progress / Process)在制品
WIP Limit在制品限制
Work Center工作中心

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

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

相关文章

如何向PDB文件添加双键

在用PDB文件进行分子绘图的时候(制作OBJ),发现像Atomic blender插件和PDB本身并不支持双键,需要对PDB文件进行修改,参照的该yt链接https://www.youtube.com/watch?vYNoow7qkwFA&t364s&ab_channelEdvinFako 即…

由于找不到d3dx9_43.dll,无法继续执行代码要怎么解决

D3DX9_43.dll是一个动态链接库文件,它是DirectX的一个组件,主要用于支持一些旧版本的游戏和软件。当电脑缺少这个文件时,可能会导致这些游戏和软件无法正常运行。例如,一些老游戏可能需要D3DX9_43.dll来支持图形渲染等功能。此外&…

需求是怎么一步一步变态的

最初的需求 需求是处理一些数据,数据例子: 而界面要显示的样子: 看起来不太难,可以分解出需求: 每一列的所有数据要都能参与选择,或者输入当一个参数选中之后,比如选中A选中1,则…

Jenkins用户管理(二):不同用户分配不同的任务访问权限

需求:不同用户访问到不同的Jenkins任务。 依赖插件:Role-based Authorization Strategy 1. 插件安装 进入【系统管理】-【插件管理】-【可用插件】,搜索Role-based Authorization Strategy进行安装,随后重启jenkins 2. 全局安全配置 进入【系统管理】-【全局安全配置】,【…

K8S:Pod容器中的存储方式及PV、PVC

文章目录 Pod容器中的存储方式一.emptyDir存储卷1.emptyDir存储卷概念2.emptyDir存储卷示例 二.hostPath存储卷1.hostPath存储卷概念2.hostPath存储卷示例 三.nfs共享存储卷1.nfs共享存储卷示例 四.PV和PVC1.PV、PVC概念2.PVC 的使用逻辑及数据流向3.storageclass插…

自动化测试:yaml结合ddt实现数据驱动!

在pythonunittestseleniumddt的框架中,数据驱动常见有以下几种方式实现: Csv/txtExcelYAML 本文主要给大家介绍测试数据存储在YAML文件中的使用场景。首先先来简单介绍一下YAML。 1. 什么是YAML 一种标记语言类似YAML,它实质上是一种通用…

git安装配置教程

目录 git安装配置1. 安装git2. git 配置3.生成ssh key:4. 获取生产的密钥3. gitee或者github添加ssh-key4.git使用5. git 使用-本地仓库与远程仓库建立连接第一步:进入项目文件夹,初始化本地仓库第二步:建立远程仓库。 建立远程连接的小技巧 …

Git学习笔记9

Gitlab中的代码是要部署到生产服务器上。 CI: Continuous integration 简称CI: 是一种软件开发实践,即开发团队成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都…

多目标优化算法:基于非支配排序的鱼鹰优化算法(NSOOA)MATLAB

一、鱼鹰优化算法 鱼鹰优化算法(Osprey optimization algorithm,OOA)由Mohammad Dehghani 和 Pavel Trojovsk于2023年提出,其模拟鱼鹰的捕食行为。 Python:鱼鹰优化算法(Osprey optimization algorithm&a…

新版发布 | Cloudpods v3.10.5 和 v3.9.13 正式发布

Cloudpods v3.10.5 本期发布中,ocboot 部署脚本有较多变化,首先支持以非 root 用户执行安装流程,其次响应社区的呼吁,增加了–stack 参数,允许 Allinone 一键安装仅包含私有云(参数为 edge)或云…

ESP8266 WiFi物联网智能插座—项目简介

目录 1、项目背景 2、设备节点功能 3、上位机功能 物联网虽然能够使家居设备和系统实现自动化、智能化管理,但是依然需要依靠更为先进的终端插座作为根本保障,插座是所有家用电器需要使用的电源设备,插座的有序智能管理,对于实…

服务器免密登录设置

例如服务器A想要免密连接服务器B,需要以下2个步骤 步骤1:在服务器A上执行命令ssh-keygen –t rsa,直接回车,会在默认路径/root/.ssh下生成私钥和公钥 步骤2:将服务器A上生成的公钥id_rsa.pub的内容,复制粘…

进程的管理

#include <unistd.h> void _exit(int status); #include <stdlib.h> void _Exit(int status); status参数&#xff1a;是进程退出时的状态信息&#xff0c;父进程在回收子进程资源的时候可以获取到 #include<stdio.h> #include<stdlib.h> #includ…

【C++】搜索二叉树底层实现

目录 一&#xff0c;概念 二&#xff0c;实现分析 1. 插入 &#xff08;1.&#xff09;非递归版本 &#xff08;2.&#xff09;递归版本 2. 打印搜索二叉树 3.查找函数 &#xff08;1.&#xff09;非递归版本 &#xff08;2.&#xff09;递归版本 4. 删除函数&#x…

flex弹性盒模型与阿里图标的使用

华子目录 flex布局flex布局原理flex使用三要素 阿里图标&#xff08;字体&#xff09; flex布局 相关学习网站&#xff1a;http://c.biancheng.net/css3/flex.html 1.flex是当前最主流的布局方式&#xff1a;用它布局起来更方便&#xff0c;取代了浮动的作用。 2.浮动布局有缺…

Redis混合模式持久化原理

前言 前面文章中我们也介绍过Redis的持久化方式有两种&#xff1a;rdb持久化和aof持久化&#xff0c;具体详情可查看之前文章redis持久化。rdb持久化还是aof持久化它们都有各自的缺点。 rdb和aof缺点 rdb持久化&#xff1a;由于是定期对内存数据快照进行持久化&#xff0c;因此…

宝塔重装注意事项

欢迎关注我的公众号&#xff1a;夜说猫&#xff0c;让一个贫穷的程序员不靠打代码也能吃饭~ 前言 宝塔8.0版本&#xff0c;宝塔卸载重装&#xff0c;或者重装Linux系统后重新安装宝塔也适用。 不能上来直接就执行安装宝塔脚本&#xff0c;除非之前没有安装过宝塔。 步骤 1、…

Flutter粒子生成演示

演示&#xff1a; 直接上代码&#xff1a; import dart:math; import dart:ui;import package:flutter/material.dart; import package:kq_flutter_widgets/widgets/chart/ex/extension.dart;class ParticleView extends StatefulWidget {const ParticleView({super.key});ove…

Vue 使用vue-cli构建SPA项目(超详细)

目录 一、什么是vue-cli 二&#xff0c;构建SPA项目 三、 运行SPA项目 前言&#xff1a; 在我们搭建SPA项目时候&#xff0c;我们必须去检查我们是否搭建好NodeJS环境 cmd窗口输入以下指令&#xff1a;去检查 node -v npm -v 一、什么是vue-cli Vue CLI&#xff08;Vu…

Qt/C++音视频开发53-本地摄像头推流/桌面推流/文件推流/监控推流等

一、前言 编写这个推流程序&#xff0c;最开始设计的时候是用视频文件推流&#xff0c;后面陆续增加了监控摄像头推流&#xff08;其实就是rtsp视频流&#xff09;、网络电台和视频推流&#xff08;一般是rtmp或者http开头m3u8结尾的视频流&#xff09;、本地摄像头推流&#…