最佳实践:CI/CD交付模式下的运维展望丨IDCF
李洪锋 启迪万众数字技术(广州)有限公司 ,产品研发中心-系统运维部、研发效能(DevOps)工程师(中级)课程学员
一、DevOps现状
据云计算产业联盟《中国DevOps现状调查报告2023》显示,国内DevOps 落地成熟度处于全面级的受访企业占比高达 41.2%,具备自动化、规范化的特点;17.83% 企业的DevOps实践成熟度处于优秀级,具备平台化、自服务化与度量驱动改进的特点;0.85% 的企业处于卓越级,能够实现 DevOps 的高度智能化、数据化及社会化的特点。
数据来源:中国信息通信研究院
特别需要关注的是,2020-2023 年 4 年间无流水线工具企业由 26.89% 逐步下降至 19.11%;19.59% 的企业内部虽然无流水线平台,但也实现了构建、部署、测试自动化;流水线平台自动化程度由 17.11% 逐步上升至 28.16%;直接通过流水线进行生产环境交付数据由 16.30% 波动上升至 20.64%。充分说明企业正在通过流水线自动化的编排流程大幅降低交付成本,已经成为持续交付环节重要生产工具。
数据来源:中国信息通信研究院
-
持续集成、单元测试、持续部署、持续发布、自动构建成为企业在持续交付域提升开发效能的主要方向。从数据反馈显示占比分别为 45.78%、40.40%、34.94%、32.58%、 32.14%。
数据来源:中国信息通信研究院
综上所述,为灵活应对快速变化的业务需求和日益复杂的市场环境,快速提升交付高质量软件或服务的能力,强化组织、技术、流程的结合,加快推动企业数字化转型,一个具备效能度量和质量管控的CI/CD工具链平台是团队生产能力稳步提升的基石,是IT组织“降本增效”的底座,其重要性不言而喻。
二、CI/CD能力级别
持续集成和持续交付(Continuous Integration &Continuous Delivery,CI/CD):以自动化方式,持续地完成软件产品和服务的构建与集成、测试、部署等过程,维持随时可以交付软件产品并发布上线运行的状态。
持续集成和持续交付是 DevOps 产品研发模式最为重要的能力和核心特征之一,是缩短从代码提交到发布上线的周期时间的关键。围绕价值交付的核心,构建可度量、可延续、可优化、可追踪的工具化自动化交付工具链路,通过DevOps产品研发交付模式,以度量管理过程,以反馈检查优化,最终达到效能和质量的提升。
参考GB/T 42560-2023 国家标准《系统与软件工程 开发运维一体化能力成熟度模型》,结合实际情况,进行分级别、分阶段的CI/CD能力建设。
等级1 | CI/CD 1.1 | 1.1.1.建设目标 | 在 DevOps 流程开展 CI/CD 活动。 |
搭建 CI/CD 的环境,以自动或者半自动方式开展 CI/CD 实践。 | |||
等级2 | CI/CD | 2.1.1.建设目标 | 建立 CI/CD 实践标准和规范,并保持更新。 |
标准先行,帮助研发团队规范 构建与集成 活动。 | |||
2.1.2.典型活动 | 梳理现有 CI/CD 规范标准; | ||
梳理现有 CI/CD 工具平台; | |||
确认 CI/CD 现状及问题; | |||
定义并发布 CI/CD 工程规范和分级标准。 | |||
CI/CD | 2.2.1.建设目标 | 建设自动化系统以支持 CI/CD 实践。 | |
持续建设、集成整合 CI/CD 实践所涉及的多个系统,包括但不限于:代管理(配置管理)系统、代码检查系统、编译构建系统、制品管理系统、自动化测试系统、部署变更系统、自动化流水线系统等,能够促进CI/CD 能力的提升。 | |||
2.2.2.典型活动 | 建设代码管理(配置管理)与变更评审系统; | ||
建设代码质量检测系统; | |||
建设编译构建系统; | |||
建设制品管理系统; | |||
建设自动化测试系统; | |||
建设部署变更系统; | |||
建设自动化流水线系统。 | |||
CI/CD 2.3 | 2.3.1.建设目标 | 依据标准规范,基于自动化系统在开发和交付中实现 CI/CD。 | |
统一标准且用统一的系统平台落地实施标准,能够保证标准能够被有效执行,也能够加快标准推广实施的速度。 | |||
2.3.2.典型活动 | 按照 CI/CD 规范标准使用系统平台开展 CI/CD 实践。 | ||
等级3 | CI/CD | 3.1.1建设目标 | 在组织标准的研发过程中融入 CI/CD 实践。 |
把 CI/CD 与研发过程的其他环节相结合,在研发流程中内嵌 CI/CD 实践,使得 CI/CD 成为研发流应执行的环节。且 CI实践宜在研发流程中多次执行,以保证研发流程各阶段的质量,保证软件持续保持在随时可以发布的状态。 | |||
3.1.2.典型活动 | 本地开发时随时 CI; | ||
代码提交至中央仓库前自动触发 CI | |||
分支合并前自动触发 CI; | |||
分支合并后自动触发 CI; | |||
CI 应通过后才能触发CD | |||
CI/CD | 3.2.1.建设目标 | 设定 CI/CD 准入标准。 | |
在项目进展过程中持续丰富 CI/CD内的检查项,不断提高 CI/CD 准入标准,进而提升软件产品或服务的质量。 | |||
3.2.2.典型活动 | 增加单元测试,并设置质量门禁; | ||
增加代码规范检查,并设置质量门禁 | |||
增加代码安全检查,并设置质量门禁 | |||
增加代码缺陷检查,并设置质量门禁 | |||
增加代码可维护性检查,并设置质量门禁、圈复杂度、注释率; | |||
增加代码重复度检查,并设置质量门禁; | |||
增加 P0自动化回归测试,并设置质量门禁; | |||
增加测试环境部署,开发人员可以自测功能; | |||
增加自动化回归测试,并设置质量门禁; | |||
增加制品安全扫描,并设置质量门禁; | |||
增加全量源码安全扫描,并设置质量门禁; | |||
增加服务安全扫描,并设置质量门禁; | |||
增加多种自动化测试类型,并设置质量门禁,如性能测试、压力测试、稳定性测试、异常测试、隐私合规测试、系统兼容性测试等; | |||
增加制品包管理规范,并设置质量门禁。 | |||
CI/CD | 3.3.1.建设目标 | 定期审视 CI/CD 过程和实践,提升工作效率 | |
解决 CI/CD 检查项增加所带来的自动化任务执行时间长、消耗资源多、系统不稳定等问题,以提升CI/CD自动化效率,保障软件开发的速度和质量 | |||
3.3.2.典型活动 | 审视当前 CI/CD 过程和实践; | ||
持续提升 CI/CD自动化效率。 | |||
CI/CD | 3.4.1.建设目标 | 定位CI/CD 失败问题并加以解决。 | |
运用各种技术、方法和工具,在 CI/CD 自动化任务失败的时候,快速定位和解决问题。 | |||
3.4.2.典型活动 | 区分并定义 CI/CD 失败问题类型。例如是程序问题还是 CI/CD 平台问题。 | ||
CI/CD 任务失败及时有效通知相关人员。 | |||
建设自动化构建系统。例如解决问题后可以不用完全重新执行整条流水。而是可以选择继续执行上次失败的流水线。 | |||
等级4 | CI/CD | 4.1.1.建设目标 | 使用统计和其他量化手段管理 CI/CD 过程。 |
开展CI/CD 效能度量,通过数据驱动 CI/CD 能力的持续提升应用统计方法找出CI/CD 过程瓶颈或问题并加以解决。 | |||
4.1.2.典型活动 | 建立研发大数据仓库,对接 CI/CD 平台,收集研发过程数据; | ||
根据 CI/CD 标准,制定度量实践过程和结果的指标; | |||
基于研发大数据仓库,开发度量指标并可视化; | |||
深入分析度量数据,持续运营 CI/CD 优秀实践。 |
三、CI/CD运维展望
CI/CD可实现更快的迭代速度、更高的软件质量和更高效的团队协作。同时CI/CD对运维发展和转变呈现以下趋势和方向:
1. 自动化程度的加深:随着技术的进步,CI/CD流程中的自动化不仅限于构建和部署,还扩展到了测试、配置管理、监控、日志分析等多个方面。自动化工具和平台的集成能力不断提升,减少人工干预,实现从代码提交到生产环境部署的端到端自动化。
2. 智能化运维(AIOps):结合人工智能和机器学习技术,AIOps能够自动分析海量运维数据,预测故障、优化资源分配、自动处理常见问题,从而提高运维效率和系统的稳定性。CI/CD流程与AIOps的融合,使得运维更加智能化、主动化。
3. 安全性集成:安全不再是事后考虑,而是被嵌入到整个CI/CD流程中,即DevSecOps,包括静态代码分析、动态应用安全测试、依赖项扫描等安全检查,确保每次部署都是经过安全验证的,减少安全漏洞的风险。
4. 容器化与微服务:容器技术和微服务架构的普及,极大促进了CI/CD的发展。容器标准化了应用的打包和部署,微服务则让系统更易于维护和快速迭代,两者结合使得CI/CD流程更加灵活高效。
6. 可观测性和监控:随着系统复杂性的增加,集成强大的可观测性和监控工具变得至关重要。这些工具能够提供实时的性能数据、异常检测和故障定位功能,确保快速响应问题,优化用户体验。
7. 文化与流程的变革:CI/CD不仅仅是技术的变革,更是文化和流程的转变。强调跨职能团队的合作,鼓励持续学习和实验文化,以及建立快速反馈和迭代的机制,是CI/CD成功实施的关键。
以可观测性工程和可靠性工程为例:
可观测性工程
基于CI/CD的可观测性工程是确保软件系统稳定运行、及时发现并解决问题的重要实践。可观测性工程关注于通过收集、分析和展示系统的指标、日志和跟踪数据,能够帮助团队在快速迭代的同时,保持对系统健康状况的精确掌握。体现在以下几个关键点:
1. 集成监控工具:在CI/CD流水线中集成监控和日志管理工具(如Prometheus、Grafana、ELK Stack等),确保新部署的服务或应用能够自动接入监控体系,及时生成并上报监控数据。
2. 日志与跟踪:配置应用以在每个CI/CD阶段生成详细的日志,包括构建、测试、部署等环节。利用分布式跟踪技术(如OpenTracing、OpenTelemetry)捕获服务间调用的完整链路,便于问题追踪和性能瓶颈分析。
3. 健康检查与就绪检查:在部署阶段自动执行健康检查和就绪检查,确保服务部署后即刻可被正确监控,并能迅速响应健康状态查询。这些检查可以是简单的HTTP请求,也可以是更复杂的逻辑判断。
4. 性能与负载测试:将性能测试和压力测试作为CI/CD的一部分,确保新版本在高负载下仍能稳定运行。通过工具(如JMeter、LoadRunner、Gatling)模拟真实用户场景,提前发现性能瓶颈。
5. 指标与阈值设定:定义关键性能指标(KPIs)和业务指标(如响应时间、成功率、吞吐量),并在监控系统中设定合理的报警阈值。当指标超出预设范围时,自动触发告警,及时通知相关人员。
6. 持续反馈与优化:建立闭环反馈机制,收集监控数据,分析部署后性能变化和用户反馈,定期回顾并优化CI/CD流程和可观测性策略,不断提升系统的稳定性和运维效率。
通过将可观测性工程深度融入CI/CD流程,团队可以更快地发现并解决问题,减少故障影响,同时提高开发和运维的效率,为持续交付高质量的软件产品奠定坚实的基础。
可靠性工程
基于CI/CD的可靠性工程是一种集成方法,旨在通过自动化和最佳实践确保软件系统在整个开发生命周期中的稳定性和可靠性。可靠性工程不仅关注于避免故障的发生,还包括了快速检测、隔离和恢复故障的能力。在CI/CD流程中实施可靠性工程主要涉及以下几个方面:
1. 自动化测试:在CI/CD流程中实施全面的自动化测试策略,包括单元测试、集成测试、端到端测试和性能测试,确保代码变更不会引入新的错误或降低系统稳定性。
2. 持续监控与日志管理:集成监控工具和日志管理系统,实现实时监控应用程序性能、资源使用情况和异常行为。这包括配置警报系统,以便在关键指标偏离正常范围时立即通知团队。
3. 混沌工程:通过混沌实验(如使用Chaos Toolkit、Gremlin等工具)故意引入故障,模拟真实世界中可能发生的各种故障场景,以评估系统的健壮性和恢复能力,并据此优化架构和配置。
4. 蓝绿部署/金丝雀发布:利用CI/CD工具支持的部署策略,如蓝绿部署或金丝雀发布,能够在不影响现有用户的情况下逐步推出新版本,快速回滚以减少故障影响范围。
5. 自愈能力:设计系统具备自我检测和自我修复能力,如自动重启故障服务、资源自动扩展、熔断机制等,减少人工干预,提高系统的稳定性。
6. 安全性集成:在CI/CD管道中集成安全扫描和漏洞检测,确保每次部署都经过安全审查,实现DevSecOps,提高系统的安全性,这也是可靠性的重要组成部分。
7. 故障恢复演练:定期进行故障恢复演练,验证灾难恢复计划的有效性,确保团队成员熟悉紧急情况下的操作流程,提高应对突发事件的能力。
8. 性能与稳定性测试:在部署前进行性能和稳定性测试,模拟高负载情况,确保系统在预期的最大负载下仍能稳定运行,优化资源配置,防止性能瓶颈。
9. 持续反馈与改进:建立一个反馈循环,收集生产环境中的数据和用户反馈,分析系统性能和稳定性,持续优化开发流程、测试策略和基础设施配置。
基于CI/CD的可靠性工程不仅增强了软件的可靠性,还缩短了故障恢复时间,提高了团队对复杂系统的管理能力,为用户提供更加稳定可靠的产品和服务。
四、总结
基于CI/CD的运维正朝着更加自动化、智能化、安全和高效的方向发展,在提升软件交付的质量和速度的同时拓宽了运维的技术视野,呈现出前所未有的广度和深度。未来的CI/CD下的运维将更加智能化、自动化、安全和可持续,以支持企业更快地创新,更稳定地运行,提高运维效率,降低运维成本,进一步提升软件交付的效率,最终提升业务价值和业务竞争力。
参考文献:
[1] GB/T 42560-2023 《系统与软件工程 开发运维一体化能力成熟度模型》,国家标准化管理委员会
[2]《2023年企业数字化转型技术发展趋势研究报告》,中国信通院
[3]《中国 DevOps 现状调查报告2023》,云计算产业联盟
[4]《DevOps IT 效能新基建》,顾黄亮
相关文章:

最佳实践:CI/CD交付模式下的运维展望丨IDCF
李洪锋 启迪万众数字技术(广州)有限公司 ,产品研发中心-系统运维部、研发效能(DevOps)工程师(中级)课程学员 一、DevOps现状 据云计算产业联盟《中国DevOps现状调查报告2023》显示,国内DevOps 落地成熟度…...

Flat Ads:开发者如何应对全球手游市场的洗牌与转型
2023年下半年至2024年上半年,中国手游的海外市场表现经历了显著变化,开发者要如何应对全球手游市场的洗牌与转型?本篇文章我们将结合相关行业白皮书的最新数据对中国手游出海表现进行分析与洞察。 一、中国手游海外市场表现 根据Sensor Tower《2024年海外手游市场洞察》最新…...

ai取名软件上哪找?一文揭秘5大ai取名生成器
在这个世界上,每一个新生命的到来都是一份奇迹,无论是一个新生儿的第一声啼哭,还是一只宠物的第一次摇尾巴,都充满了无限的希望和喜悦。 然而,给这个小生命起一个响亮、独特且富有意义的名字,往往让人煞费…...

ppt转换成pdf文件,这5个方法一键搞定!小白也能上手~
不管是工作上还是学习上,我们都会遇到转换文档格式的问题。比如常见的pdf转word,ppt转pdf,图片转pdf等。 很多软件都有自带的转换功能可以实现,但是需要保证转换后不乱码,且清晰度足够的方法还是少见的。本文整理了几个…...

中国每个软件创业者都是这个时代的“黑悟空”
作者 | 白鲸开源CEO 郭炜 我作为一个具有30游龄而20年都不碰游戏的游戏玩家,最近为了《黑神话:悟空》(简称,黑悟空),不但花重金更新了显卡,还第一次下载了Steam并绑定了支付,为的就是支持这个第…...

解决Qt多线程中fromRawData函数生成的QByteArray数据不一致问题
解决Qt多线程中fromRawData函数生成的QByteArray数据不一致问题 目录 🔔 问题背景📄 问题代码❓ 问题描述🩺 问题分析✔ 解决方案 🔔 问题背景 在开发一个使用Qt框架的多线程应用程序时,我们遇到了一个棘手的问题&…...

datax关于postsql数据增量迁移的问题
看官方文档是不支持的 数据源及同步方案_大数据开发治理平台 DataWorks(DataWorks)-阿里云帮助中心 (aliyun.com) 看了下源码有个postsqlwriter 看了下也就拼接sql 将 PostgresqlWriter中的不允许更新先注释了 让他过去先 然后看到 WriterUtil中的对应方法 getWriteTemplat…...

【Go】实现字符切片零拷贝开销转为字符串
package mainimport ("fmt""unsafe" )func main() {bytes : []byte("hello world")s : *(*string)(unsafe.Pointer(&bytes))fmt.Println(s)bytes[0] Hfmt.Println(s) }slice的底层结构是底层数组、len字段、cap字段。string的底层结构是底层…...
[sqlserver][sql]sqlserver查询执行过的历史sql
SQL是一个针对SQL Server数据库的查询执行过的历史 select * from (SELECT *FROM sys.dm_exec_query_stats QS CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) ST ) a where a.creation_time >2018-07-18 17:00:00 and charindex(delete from ckcdlist ,text)>0 an…...

python中n次方怎么表示
Python中的n次方用pow()方法来表示,pow()方法返回 xy(x的y次方)的值。 语法 以下是 math 模块 pow() 方法的语法: import math math.pow( x, y ) 内置的 pow() 方法 pow(x, y[, z]) 函数是计算x的y次方,如果z在存在&…...

Java数组怎么转List,Stream的基本方法使用教程
Stream流 Java 的 Stream 流操作是一种简洁而强大的处理集合数据的方式,允许对数据进行高效的操作,如过滤、映射、排序和聚合。Stream API 于 Java 8 引入,极大地简化了对集合(如 List、Set)等数据的处理。 一、创建 Stream 从集合创建: List<String> list = Ar…...
2024-07-12 - 基于 sealos 部署高可用 K8S 管理系统
摘要 Sealos 是一款以 Kubernetes 为内核的云操作系统发行版。它以云原生的方式,抛弃了传统的云计算架构,转向以 Kubernetes 为云内核的新架构,使企业能够像使用个人电脑一样简单地使用云。 操作实践 1、服务器规划 kubernetes集群大体上…...

Ps:首选项 - 单位与标尺
Ps菜单:编辑/首选项 Edit/Preferences 快捷键:Ctrl K Photoshop 首选项中的“单位与标尺” Units & Rulers选项卡允许用户根据工作需求定制 Photoshop 的测量单位和标尺显示方式。这对于保持工作的一致性和精确性,尤其是在跨设备或跨平台…...

DiskDigger(文件恢复工具) v2.0.3 中文授权版
DiskDigger中文版是一款实用文件恢复工具,它能从任何媒介中恢复误删除的文件。支持硬盘、USB 闪存盘、闪存卡(SD/CF/MMS)、CD、DVD 和软盘等。支持恢复任何格式的文件。DiskDigger 能彻底的扫描每个扇区来跟踪文件,从而最大限度恢复挽回文件信息。 软件…...

C/C++逆向:x96dbg(x64dbg/x86dbg)的使用
这篇文章主要来说一下x96dbg(x64/x86)的基本使用,这里还是使用上篇文章中的简单程序用来作为本篇文章的实例,因为上篇文章再生成程序时选用的解决方案平台为x86所以生成的程序则需要我们使用x32dbg来进行分析。 这边与IDA一样,我们可以将程序…...

超声波清洗机是智商税吗?专业博主分享四大必买超声波清洗机款式
有些人觉得超声波清洗机不过是个“智商税”,花几百块买个小盒子不值当,毕竟自己用手也能清洗。但这种看法过于片面。事实上,超声波清洗已经有几十年的历史,随着科技的发展,现代超声波清洗机不仅能够批量、自动清洁&…...

TIM输出比较
文章目录 前言一、TIM输出比较简介二、PWM简介2.1 PWM基本概念2.2 PWM参数2.3 PWM波形2.4 PWM基本结构2.5 PWM参数计算 三、舵机简介3.1 舵机的工作原理3.2 输入PWM信号的要求3.3 硬件电路 四、直流电机及驱动简介4.1 直流电机4.2 TB6612电机驱动芯片 前言 提示:本…...

JNPF 5.0升级钜惠,感恩回馈永远在路上
尊敬的JNPF用户们: 经过引迈团队数月的辛勤努力和不断的技术创新,JNPF快速开发平台迎来全新升级——5.0版本!此次5.0版本的迭代革新,不仅代表着我们技术实力的进一步提升,是我们对用户需求的深度理解和积极回应。为了…...

三维平面电磁铁、交流电磁铁、显微镜磁场北京大学方案
根据用户北京大学需求设计制造方案如下 三维平面电磁铁产品规格 5MPS63-25型三维平面电磁铁,X、Y方向磁场由2对正交的磁极产生,Z轴由一组同轴线圈产生; 每轴对应的两个线圈正接产生均匀磁场,反接产生梯度磁场; …...
awk引号转义问题
这是我在终端运行的脚本: for ib1 in $(seq 0 999);do ibstr$(printf sample52-%d $ib1);calculate_rmsd --reorder Motif52.pdb ${ibstr}.pdb | awk "{printf "%d %8f\n", $ib1, $0}" >> sample52_hotspots; done 但是报错: …...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...