首页 > 其他分享 >DevOps的原理及应用详解(二)

DevOps的原理及应用详解(二)

时间:2024-06-06 23:58:08浏览次数:29  
标签:监控 DevOps 反馈 详解 测试 自动化 原理 日志

本系列文章简介:

        在当今快速变化的商业环境中,企业对于软件交付的速度、质量和安全性要求日益提高。传统的软件开发和运维模式已经难以满足这些需求,因此,DevOps(Development和Operations的组合)应运而生,成为了解决这些问题的有效方法。

        DevOps是一种强调软件开发人员(Development)和运维人员(Operations)之间紧密协作与沟通的文化、方法和工具集。它打破了传统软件开发和运维之间的壁垒,通过自动化、持续集成、持续交付、监控与反馈等手段,实现了软件交付的高效率、高质量和高可靠性。

        DevOps的原理在于将开发、测试、部署和运维等各个环节紧密连接起来,形成一个闭环的反馈系统。通过自动化的工具和流程,减少人工干预,提高软件交付的效率和质量。同时,DevOps强调共享责任、持续改进和自我反馈的文化,使得整个团队能够更好地协同工作,共同追求业务目标。

        在实践中,DevOps已经得到了广泛的应用,并取得了显著的成效。越来越多的企业开始采用DevOps来加速软件交付、提高系统稳定性、优化资源利用和增强安全性。通过引入DevOps,企业可以更加快速地响应市场变化、满足客户需求,提升自身的竞争力。

        然而,DevOps的实施也面临着一些挑战,如文化变革、技术集成、安全问题和人员培养等。为了克服这些挑战,企业需要制定合适的策略、选择合适的工具链、建立有效的沟通机制和培训机制。

        本系列文章旨在详细阐述DevOps的原理、应用及面临的挑战,并提供相应的解决方案。希望通过本系列文章的介绍,大家能够更加深入地了解DevOps的概念和实践方法,为企业实现快速、可靠和安全的软件交付提供参考。

        欢迎大家订阅《Java技术栈高级攻略》专栏(PS:近期会涨价),一起学习,一起涨分!

目录

一、引言

二、DevOps的原理

2.1 文化变革

2.2 自动化

2.2.1 持续集成/持续部署(CI/CD)

2.2.2 基础设施即代码(IaC)

2.2.3 自动化测试

2.2.4 自动化监控与告警

2.3 测量与反馈

2.3.1 关键性能指标(KPIs)

2.3.2 监控与日志分析

2.3.3 反馈循环

2.4 安全性

2.5 共享与标准化

三、DevOps的应用

3.1 提高开发效率

3.2 增强系统稳定性

3.3 优化资源利用

3.4 增强安全性

3.5 提高客户满意度

四、DevOps的实践案例

五、DevOps面临的挑战与解决方案

六、总结与展望

七、结语


一、引言

        DevOps,是Development(开发)和Operations(运维)两个词的结合,是一种重视软件开发人员(Dev)和信息技术运维人员(Ops)之间沟通、合作与整合的文化、方法和实践。DevOps旨在打破传统的“开发”与“运维”之间的壁垒,通过自动化、持续集成、持续交付、监控与反馈等手段,实现软件产品从开发到部署、从运行到维护的全流程高效协同。

        本文将跟随《DevOps的原理及应用详解(一)》的进度,继续介绍DevOps。希望通过本系列文章的学习,您将能够更好地理解DevOps的内部工作原理,掌握DevOps的使用技巧,以及通过合理的设计完成最佳实践,充分发挥优化DevOps的潜力,为系统的高效运行提供有力保障。

二、DevOps的原理

2.1 文化变革

        详见 《DevOps的原理及应用详解(一)

2.2 自动化

2.2.1 持续集成/持续部署(CI/CD)

DevOps的原理之自动化中,持续集成/持续部署(CI/CD)是一个核心实践,它通过自动化的流程来频繁地集成和部署代码变更,从而提高软件交付的速度和质量。以下是关于CI/CD的详细解释:

持续集成(Continuous Integration, CI)

  1. 定义
    • 持续集成是指在软件开发过程中,开发人员将代码频繁地集成到共享的代码仓库中,并进行自动化的构建、测试和代码静态分析等过程。
  2. 关键实践
    • 自动化构建:代码提交后自动触发构建过程,将源代码转换为可执行软件。
    • 自动化测试:构建完成后自动执行单元测试、集成测试等,确保代码质量。
    • 代码审查:通过代码审查工具来管理代码质量,确保代码符合规范。
    • 即时反馈:开发者可以迅速获得代码合并的反馈,包括构建和测试结果。
  3. 优势
    • 及时发现和解决代码集成引起的问题,减少冲突和错误。
    • 提高开发团队的协作效率和代码质量。

持续部署(Continuous Deployment, CD)

  1. 定义
    • 持续部署是在持续集成的基础上,将通过测试的代码自动部署到生产环境的实践。
  2. 关键实践
    • 自动化部署:代码通过所有测试后自动部署到生产环境。
    • 配置管理:自动化地管理应用的配置,适应不同环境。
    • 回滚策略:快速回滚到上一个稳定版本,以应对部署失败。
    • 监控和日志:部署后持续监控应用性能,并收集日志。
  3. 优势
    • 缩短了软件交付到生产环境的时间。
    • 减少了人工干预的需要,提高了交付的速度和可靠性。

归纳

CI/CD通过自动化的流程,使得开发人员能够更频繁、更快速地集成和部署代码变更。这不仅提高了软件交付的速度,还通过自动化的测试和反馈机制,确保了代码的质量。CI/CD是DevOps实践中不可或缺的一部分,它促进了开发团队和运维团队之间的紧密合作,共同追求软件交付的高效和质量。通过利用自动化工具和流程,CI/CD使得软件交付过程更加可靠、可预测和可控。

2.2.2 基础设施即代码(IaC)

DevOps的原理中,自动化是一个关键要素,而基础设施即代码(IaC)则是实现自动化的重要手段之一。以下是关于DevOps原理中自动化之基础设施即代码(IaC)的详细解释:

定义

基础设施即代码(IaC)是一种以代码形式对计算基础设施进行描述、部署和维护的技术。它允许开发人员通过编写可执行的代码来定义和自动化基础设施的创建、配置和更新,实现基础设施的可持续交付和可重复性。

特点

  1. 自动化:IaC通过自动化方式一致地供应和配置基础设施,避免人工操作引入的变化,提高基础设施管理的效率和准确性。
  2. 一致性和可重复性:由于基础设施的配置和部署是通过代码实现的,因此可以在任何环境中实现相同的基础设施配置,确保一致性和可重复性。
  3. 模块化和可复用:IaC将基础设施划分为易于重用和组合的模块,使得基础设施的配置和管理更加灵活和高效。

实践

  1. 编码化基础设施:使用编程语言或配置管理工具(如Terraform、AWS CloudFormation等)编写基础设施的配置代码,定义所需的计算资源、网络、存储等基础设施组件。
  2. 版本控制:将基础设施的配置代码存储在版本控制系统中(如Git),以便进行版本管理和协同开发。通过版本控制,可以跟踪基础设施的变更历史、进行代码审查,并确保团队成员之间的协作和一致性。
  3. 自动化测试和部署:使用自动化测试和部署工具(如Jenkins、Travis CI等)对基础设施的配置代码进行验证和部署。通过自动化测试和部署,可以确保基础设施的配置代码符合预期要求,并在生产环境中稳定运行。

优势

  1. 提高效率:IaC通过自动化和代码化的方式,减少了手动操作和人为错误,提高了基础设施管理的效率。
  2. 降低风险:由于基础设施的配置和部署是通过代码实现的,因此可以更容易地识别和修复潜在的问题和错误,降低风险。
  3. 灵活性:IaC允许开发人员根据业务需求快速调整基础设施的配置和部署,提高了基础设施的灵活性和适应性。

综上所述,基础设施即代码(IaC)是DevOps原理中自动化的重要手段之一。通过编码化基础设施、版本控制和自动化测试和部署等实践,IaC可以提高基础设施管理的效率、降低风险、提高灵活性和适应性,从而支持DevOps实现更快速、更可靠、更高效的软件交付。

2.2.3 自动化测试

DevOps原理中的自动化测试是确保软件质量、提高开发效率的关键环节。自动化测试通过自动化执行测试用例,减少人工干预,实现测试的快速、准确和可靠。以下是关于自动化测试的详细解释:

自动化测试的定义

自动化测试指的是将以人为驱动的测试行为转化为由机器自动执行的一种过程,包括自动执行由开发人员或测试人员编写的测试代码,如单元测试、组件测试、集成测试和验收测试等。同时,也包含一些非功能性测试,如安全测试和性能测试。

自动化测试的优势

  1. 节约时间和降低执行成本:在软件开发全生命周期中,测试是一个非常频繁且重复的活动。自动化测试可以无人值守运行,甚至可以在多台机器上并行执行,大大缩短了测试时间。
  2. 减少出错概率,提高准确性:自动化测试每次执行时都会执行相同的步骤,并且每次都会生成详细的测试报告,这些报告不受人为因素影响,因此可以减少出错率,提高准确性。
  3. 提升测试覆盖度:自动化测试可以增加测试的深度和范围,例如,在很短的时间里执行数千个测试用例,从而提高软件质量。
  4. 加快反馈效率:自动化测试在每次提交代码之后自动触发,并将测试结果通知到团队中的开发人员,大大缩短了开发人员获得反馈的时间。
  5. 模拟手工无法测试的场景:自动化测试可以模拟成千上万用户并发访问的场景,这样的测试场景是手工测试无法模拟的。

自动化测试的实践

  1. 确定自动化测试的范围和目标:在开始实施自动化测试之前,需要明确测试的范围和目标,例如测试网站功能或移动应用程序的UI。同时,确定自动化测试的优先级,以确保测试最关键的功能和场景。
  2. 选择正确的测试工具:选择适合项目需求的测试工具是自动化测试成功的关键。评估各种测试工具的优缺点,选择最适合的工具。
  3. 编写可重复的测试用例:自动化测试的测试用例需要编写成可重复的,并且应该检查相同的功能和场景。这可以确保测试结果是可重复的,并且有助于快速识别问题。
  4. 使用版本控制:使用版本控制可以跟踪测试代码的变化,以及测试用例和测试结果。这有助于快速回溯到先前的测试结果,确保问题得到解决。
  5. 设计稳健的测试环境:为自动化测试创建一个稳定的测试环境,确保测试环境一致并且每次测试都是相同的。可以使用虚拟机或Docker容器等工具。
  6. 执行可靠的错误处理和日志记录:在执行自动化测试时,需要捕捉和记录所有出现的错误,并确保能够查看日志记录以帮助调试问题。

归纳

自动化测试是DevOps中自动化原理的重要部分,它通过自动化执行测试用例,实现了测试的快速、准确和可靠。通过遵循上述最佳实践,可以确保自动化测试的有效性和可维护性,从而大大提高软件的质量和可靠性。

2.2.4 自动化监控与告警

DevOps原理中的自动化之自动化监控与告警是确保系统稳定性、可靠性和性能的重要组成部分。以下是对自动化监控与告警的详细解释和归纳:

自动化监控

1. 定义与目的

自动化监控是指通过工具和技术手段,实时收集、分析并展示系统运行状态、性能指标和潜在问题的过程。其目的在于及时发现和解决系统异常,提高系统的稳定性和可靠性。

2. 监控范围

在DevOps流程中,自动化监控需要覆盖代码开发、测试、部署和运维等各个阶段。监控对象包括客户端、服务器、数据库、网络等,以及这些组件的性能、容量、可用性、安全性等方面的指标。

3. 关键要素

  • 确定监控范围:明确需要监控的组件和指标,例如CPU使用率、内存占用、网络流量等。
  • 定义监控规则:基于监控范围,设置合适的监控规则,如系统负载、故障检测、性能度量等。
  • 建立数据源:收集来自各个阶段的监控数据,并进行整合处理。
  • 确定监控方式:根据监控对象类型,选择合适的监控方式,如日志记录、网络追踪、传感器等。

4. 监控工具

常见的自动化监控工具有Prometheus、Zabbix、Nagios等。这些工具提供了丰富的监控指标和灵活的配置选项,可以根据需求进行定制化配置。

自动化告警

1. 定义与目的

自动化告警是指当监控指标超过预设阈值时,系统自动触发告警通知,以便相关人员及时响应和处理。其目的在于快速发现系统异常,减少故障对业务的影响。

2. 告警触发机制

  • 设置监控阈值:根据业务需求和系统特点,设置合理的监控阈值,如CPU使用率超过80%、请求响应时间超过500毫秒等。
  • 配置报警规则:定义当某个指标超过阈值时触发的报警方式和级别。报警方式可以包括邮件、短信、Slack等即时通讯工具。

3. 告警优化

为了避免频繁或无效的告警,需要对告警进行优化。这包括调整监控项和监控阈值、设置告警抑制和静默期等。

自动化监控与告警的价值

  • 提高系统稳定性:通过实时监控和告警,可以及时发现并解决系统异常,提高系统的稳定性和可靠性。
  • 降低故障影响:自动化告警可以确保相关人员及时响应和处理故障,减少故障对业务的影响。
  • 优化资源配置:通过监控数据的分析,可以了解系统的资源使用情况,为资源优化和扩容提供依据。

总之,自动化监控与告警是DevOps原理中自动化的重要组成部分。通过合理配置和使用相关工具和技术手段,可以实现对系统的全面监控和及时告警,提高系统的稳定性和可靠性。

2.3 测量与反馈

2.3.1 关键性能指标(KPIs)

DevOps的原理中,测量与反馈是确保软件开发流程高效、持续改进的关键环节。关键性能指标(Key Performance Indicators, KPIs)作为测量与反馈机制的重要组成部分,为DevOps团队提供了定量的数据支持,帮助团队了解当前软件开发的效率、质量和性能,从而做出有针对性的改进。

以下是关于DevOps中关键性能指标(KPIs)的详细解释:

1. 确定关键性能指标(KPIs)

在DevOps实践中,关键性能指标的选择应该与团队的具体目标、业务需求以及软件开发流程紧密相关。常见的DevOps KPIs包括但不限于以下几种:

  • 部署频率:衡量团队成功将变更发布到生产环境的频率,表明团队交付软件的速度。例如,每天、每周或每月的部署次数。
  • 变更提前期:从开始处理变更请求到将其投入生产并最终提供给客户的时间。这个指标反映了开发过程的效率。
  • 变更失败率:衡量产品变更在发布后导致失败的比率,是团队编写的代码质量的指标。
  • 平均恢复时间:衡量通过生产变更解决事件或故障所需的时间,反映了团队的故障恢复能力。

2. 收集和分析KPIs数据

  • 建立数据收集机制:确保能够系统地收集与KPIs相关的数据。这可以通过集成各种监控工具、日志分析工具、自动化测试工具等来实现。
  • 数据分析:对收集到的数据进行分析,了解当前软件开发的效率、质量和性能状况。可以使用统计方法、图表分析等方法来帮助理解数据。

3. 利用KPIs进行决策和改进

  • 识别问题:通过KPIs数据,团队可以识别出软件开发过程中存在的问题,如部署频率下降、变更失败率上升等。
  • 制定改进计划:根据数据分析的结果,确定改进的重点和方向,制定具体的改进计划,包括改进目标、时间表、责任人等。
  • 实施改进措施:按照改进计划的安排,逐步实施改进措施。这可能包括优化开发流程、提高自动化水平、加强代码审查等。
  • 监控效果:在改进措施实施后,持续监控KPIs的变化,评估改进效果,并根据需要进行调整和改进。

4. 归纳

关键性能指标(KPIs)在DevOps实践中起着至关重要的作用。它们为团队提供了定量的数据支持,帮助团队了解当前软件开发的效率、质量和性能状况,从而做出有针对性的改进。通过精心选择、收集、分析和利用KPIs数据,DevOps团队可以持续提高软件开发的效率和质量,满足业务需求,提升客户满意度。

2.3.2 监控与日志分析

DevOps的原理之测量与反馈中的监控与日志分析是确保软件开发和运维流程顺畅、高效的关键环节。以下是对监控与日志分析的详细解释和归纳:

监控

1. 定义与目的

  • 监控是指对系统、应用、网络、数据库等IT基础设施进行实时、持续的性能和状态观测,以确保它们的健康运行。
  • 监控的目的是为了及时发现潜在问题、预测系统瓶颈、优化资源配置,并快速响应故障,保证服务的连续性和稳定性。

2. 监控的核心功能

  • 性能监控:关注应用和基础设施的性能指标,如响应时间、吞吐量和资源使用率,揭示系统瓶颈和性能退化。
  • 健康检查:定期验证系统组件是否运作正常,确保服务的可用性。
  • 警报系统:在问题发生时及时通知相关人员,最小化故障影响。
  • 仪表板:提供一个可视化界面,将关键指标汇总显示,方便团队成员快速把握系统状态。

3. 监控工具

  • 常用的监控工具有Prometheus、Nagios、Datadog等,它们可以监测关键性能指标,如CPU使用率、内存使用、响应时间等。

日志分析

1. 定义与目的

  • 日志是系统或应用运行时产生的详细记录,包含大量有关系统行为、事件和错误的信息。
  • 日志分析是指对这些日志数据进行收集、存储、搜索、分析和可视化,以提取有价值的信息,帮助定位问题和优化系统。

2. 日志分析的重要性

  • 为团队提供实时反馈和历史数据的参考:通过日志分析,可以实时了解系统状态,并基于历史数据做出决策。
  • 帮助定位问题和故障的原因:通过日志的详细记录,可以快速定位问题发生的上下文环境和可能的根源。
  • 支持持续改进和优化:日志分析为未来的系统优化提供数据支持。
  • 确保合规性和审计要求得到满足:符合法律法规要求的日志管理对于保障企业合规性至关重要。

3. 日志管理的要义

  • 日志收集:确定日志如何从各个源收集起来。
  • 高效的日志存储:确保数据的安全和可检索性。
  • 搜索和分析功能:支持快速定位特定事件或模式,对于故障恢复和系统优化具有决定性意义。
  • 可视化:帮助团队成员理解日志数据,加速决策过程。

4. 日志分析工具

  • 常用的日志分析工具包括Elasticsearch、Logstash、Kibana(ELK)堆栈和Splunk等,它们可以有效地进行日志的集中管理、搜索、分析和可视化。

总结

监控与日志分析在DevOps实践中扮演着至关重要的角色。通过实时监控和日志分析,可以及时发现潜在问题、预测系统瓶颈、优化资源配置,并快速响应故障,确保服务的连续性和稳定性。同时,它们也为持续改进和优化提供了有力的数据支持。

2.3.3 反馈循环

DevOps原理中的测量与反馈循环是确保软件开发流程持续改进和优化的关键机制。反馈循环通过收集和分析数据,识别问题,并推动相应的改进措施,形成了一个闭环的、持续优化的过程。以下是关于DevOps中反馈循环的详细解释:

1. 反馈循环的定义

反馈循环是一个循环的过程,它通过收集软件开发过程中的数据,识别问题,提出改进措施,并监控改进措施的效果,从而不断优化软件开发流程。反馈循环是DevOps中持续改进和优化的核心机制。

2. 反馈循环的步骤

2.1 数据收集

  • 监控数据:收集与软件开发过程相关的监控数据,如系统性能、故障率、用户反馈等。
  • 测试数据:自动化测试的结果数据,包括测试用例的通过率、缺陷发现率等。
  • 其他数据源:如业务数据分析、用户行为分析等,提供全面的视角来评估软件的质量。

2.2 数据分析

  • 问题识别:通过对收集到的数据进行分析,识别出软件开发过程中存在的问题和瓶颈。
  • 趋势预测:基于历史数据,预测未来可能出现的问题或挑战。

2.3 问题解决与改进

  • 制定改进措施:针对识别出的问题,制定具体的改进措施,如优化代码、改进测试策略、调整开发流程等。
  • 优先级排序:根据问题的严重性和影响范围,对改进措施进行优先级排序。
  • 实施改进措施:按照计划,逐步实施改进措施。

2.4 监控与评估

  • 监控效果:持续监控改进措施的实施效果,收集新的数据以评估改进效果。
  • 迭代优化:根据监控结果,对改进措施进行迭代优化,确保持续改进的效果。

3. 反馈循环的特点

  • 闭环性:反馈循环是一个闭环的过程,从数据收集到改进措施的实施再到效果的评估,形成了一个完整的循环。
  • 持续性:反馈循环是一个持续的过程,它不断收集数据、分析问题、提出改进措施,并监控效果,以实现持续改进。
  • 数据驱动:反馈循环是基于数据的,它通过收集和分析数据来识别问题和推动改进。

4. 反馈循环的重要性

  • 提高软件质量:通过反馈循环,团队可以及时发现并修复软件中的问题,提高软件的质量和稳定性。
  • 加速交付速度:反馈循环可以优化软件开发流程,减少不必要的延迟和瓶颈,加速软件的交付速度。
  • 满足客户需求:通过收集和分析用户反馈,团队可以更好地理解客户需求,从而开发出更符合客户期望的软件产品。

5. 总结

反馈循环是DevOps原理中测量与反馈机制的重要组成部分。它通过收集和分析数据、识别问题、推动改进措施并监控效果,形成了一个闭环的、持续优化的过程。反馈循环对于提高软件质量、加速交付速度以及满足客户需求等方面都具有重要意义。

2.4 安全性

          详见 《DevOps的原理及应用详解(三)

2.5 共享与标准化

          详见 《DevOps的原理及应用详解(四)

三、DevOps的应用

3.1 提高开发效率

         详见 《DevOps的原理及应用详解(五)

3.2 增强系统稳定性

         详见 《DevOps的原理及应用详解(五)

3.3 优化资源利用

         详见 《DevOps的原理及应用详解(六)

3.4 增强安全性

         详见 《DevOps的原理及应用详解(六)

3.5 提高客户满意度

         详见 《DevOps的原理及应用详解(六)

四、DevOps的实践案例

         详见 《DevOps的原理及应用详解(七)

五、DevOps面临的挑战与解决方案

         详见 《DevOps的原理及应用详解(八)

六、总结与展望

         详见 《DevOps的原理及应用详解(八)

七、结语

        文章至此,已接近尾声!希望此文能够对大家有所启发和帮助。同时,感谢大家的耐心阅读和对本文档的信任。在未来的技术学习和工作中,期待与各位大佬共同进步,共同探索新的技术前沿。最后,再次感谢各位的支持和关注。您的支持是作者创作的最大动力,如果您觉得这篇文章对您有所帮助,请分享给身边的朋友和同事!

标签:监控,DevOps,反馈,详解,测试,自动化,原理,日志
From: https://blog.csdn.net/weixin_42506246/article/details/139504006

相关文章

  • 【四】Linux重定向、管道符、通配符、转义字符详解
    重定向与管道符重定向输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中。输出重定向使用较多,故将输出重定向分为了标准输出重定向和错误输出重定向,以及覆盖写入与追加写入两种模式。输出重定向的符号及其作用:命令>文件......
  • File类操作文件方法详解及其简单应用
    一、File类介绍Java中的File类是java.io包的一部分,它提供了操作文件和目录的能力。File类可以用来表示文件系统中的文件或目录。二、路径在讲File用法之前咱们先介绍一下路径是什么?在计算机中,路径(Path)是指文件或目录在文件系统中的位置。路径可以分为两种:绝对......
  • SpaceX 首席火箭着陆工程师 MIT论文详解:非凸软着陆最优控制问题的控制边界和指向约束
    上一篇blog翻译了LarsBlackmore(LarsBlackmoreisprincipalrocketlandingengineeratSpaceX)的文章,SpaceX使用CVXGEN生成定制飞行代码,实现超高速机载凸优化。利用地形相对导航实现了数十米量级的导航精度,着陆器在着陆过程中成像行星表面并将特征与机载地图匹配......
  • 第24讲:预处理详解
    文章目录1.预定义符号2.#define定义常量3.#define定义宏1.预定义符号C语言设置了一些预定义符号,可以直接使用,预定义符号也是在预处理期间处理的。__FILE__//进⾏编译的源⽂件__LINE__//⽂件当前的⾏号__DATE__//⽂件被编译的⽇期__TIME__//⽂件被编译的......
  • 【云原生进阶之数据库技术】第二章-Oracle-原理-4.4.2-SGA架构
    1系统全局区:SGA1.1SGA概念简介        SGA是一块可读写内存区域,与Oracle后台进程(backgroundprocesses)一起构成了数据库实例。所有代表用户执行的服务器进程都能读取实例SGA里的信息。有一些进程能在数据库运行时写入SGA。需要注意的是,服务器和后台进程本身并不在......
  • 详解 Muduo 网络服务和日志模块
    这篇文章主要目的是介绍muduo的网络服务模块和日志模块。muduo网络服务在muduo网络库中,最重要的初始化服务,需要涉及两个核心模块,muduo::net::EventLoop和muduo::net::TcpServer。muduo::net::EventLoop不需要我们去设置,我们需要做的只是给Server指定一个EventLoop对象,并......
  • 详解 Protobuf 在 C++ 下 Message、enum、Service 的使用
    这篇文章主要目的是介绍Protobuf的常用知识,包括前置声明,message,service,enum等。声明//使用proto3语法syntax="proto3";//定义一个名为Greeter的包packageGreeter;//开启生成通用服务代码的选项optioncc_generic_services=true;syntax用于提示pro......
  • 【JavaScript详解】Day02
    JavaScript基础-第2天理解什么是流程控制,知道条件控制的种类并掌握其对应的语法规则,具备利用循环编写简易ATM取款机程序能力运算符语句综合案例运算符算术运算符数字是用来计算的,比如:乘法*、除法/、加法+、减法-等等,所以经常和算术运算符一起。算术运算......
  • C语言:详解gcc驱动程序完成编译、汇编、链接的过程
    相关阅读C语言https://blog.csdn.net/weixin_45791458/category_12423166.html?spm=1001.2014.3001.5482    gcc是一个命令,严格意义上说,它只是一个驱动程序,而不是一个编译器。gcc负责调用GNU工具链中的预处理器、编译器、汇编器、链接器等工具,通过传递不同的选项给g......
  • 如果是你来设计国产原理图设计软件,你认为应该加一些什么功能?
    虽然国产EDA软件在某些方面可能还在追赶成熟的EDA设计软件,但并不意味着它们不能在某些方面或特定应用场景下表现得更加优秀。在我看来国产原理图设计软件应该具备以下优秀的功能:丰富的元器件库:软件应该提供一个包含各种常用电子元器件的库,包括晶体管、电阻、电容器、集成......