DevOps的原理及应用详解(一)
本系列文章简介:
在当今快速变化的商业环境中,企业对于软件交付的速度、质量和安全性要求日益提高。传统的软件开发和运维模式已经难以满足这些需求,因此,DevOps(Development和Operations的组合)应运而生,成为了解决这些问题的有效方法。
DevOps是一种强调软件开发人员(Development)和运维人员(Operations)之间紧密协作与沟通的文化、方法和工具集。它打破了传统软件开发和运维之间的壁垒,通过自动化、持续集成、持续交付、监控与反馈等手段,实现了软件交付的高效率、高质量和高可靠性。
DevOps的原理在于将开发、测试、部署和运维等各个环节紧密连接起来,形成一个闭环的反馈系统。通过自动化的工具和流程,减少人工干预,提高软件交付的效率和质量。同时,DevOps强调共享责任、持续改进和自我反馈的文化,使得整个团队能够更好地协同工作,共同追求业务目标。
在实践中,DevOps已经得到了广泛的应用,并取得了显著的成效。越来越多的企业开始采用DevOps来加速软件交付、提高系统稳定性、优化资源利用和增强安全性。通过引入DevOps,企业可以更加快速地响应市场变化、满足客户需求,提升自身的竞争力。
然而,DevOps的实施也面临着一些挑战,如文化变革、技术集成、安全问题和人员培养等。为了克服这些挑战,企业需要制定合适的策略、选择合适的工具链、建立有效的沟通机制和培训机制。
本系列文章旨在详细阐述DevOps的原理、应用及面临的挑战,并提供相应的解决方案。希望通过本系列文章的介绍,大家能够更加深入地了解DevOps的概念和实践方法,为企业实现快速、可靠和安全的软件交付提供参考。
欢迎大家订阅《Java技术栈高级攻略》专栏(PS:近期会涨价),一起学习,一起涨分!
目录
一、引言
1.1 DevOps的定义
1.2 DevOps的起源与发展
1.3 DevOps与传统IT运维的区别
二、DevOps的原理
2.1 文化变革
2.1.1 打破开发与运维的壁垒
2.1.2 共享责任与协作
2.1.3 持续改进与自我反馈
2.2 自动化
2.3 测量与反馈
2.4 安全性
2.5 共享与标准化
三、DevOps的应用
3.1 提高开发效率
3.2 增强系统稳定性
3.3 优化资源利用
3.4 增强安全性
3.5 提高客户满意度
四、DevOps的实践案例
五、DevOps面临的挑战与解决方案
六、总结与展望
七、结语
一、引言
1.1 DevOps的定义
DevOps定义
DevOps,是Development(开发)和Operations(运维)两个词的结合,是一种重视软件开发人员(Dev)和信息技术运维人员(Ops)之间沟通、合作与整合的文化、方法和实践。DevOps旨在打破传统的“开发”与“运维”之间的壁垒,通过自动化、持续集成、持续交付、监控与反馈等手段,实现软件产品从开发到部署、从运行到维护的全流程高效协同。
DevOps不仅关注技术层面的整合和优化,更强调一种跨职能团队之间的协作精神和文化变革。它鼓励团队成员共同承担责任,通过共享目标、知识和工具,来提高软件交付的速度、质量和可靠性。
DevOps的核心理念包括:
-
自动化:通过自动化工具和流程,减少手动操作和人为错误,提高软件交付的效率和可靠性。
-
持续集成与持续交付:确保代码能够频繁地集成到共享仓库中,并自动进行构建、测试和部署,以便快速响应变更和修复问题。
-
监控与反馈:通过全面的监控和反馈机制,及时发现并解决问题,确保系统的稳定性和性能。
-
共享责任:开发、测试、运维等团队成员共同承担责任,通过跨职能协作来解决问题。
-
持续改进:鼓励团队成员不断学习和改进,通过实践和经验积累来优化流程和提高效率。
DevOps的实施需要整个团队的共同努力和协作,同时也需要企业的支持和推动。通过引入DevOps,企业可以更加快速地响应市场变化、满足客户需求,提升自身的竞争力。
1.2 DevOps的起源与发展
DevOps的起源与发展可以清晰地归纳为以下几个关键阶段和要点:
起源背景
- 敏捷开发模式的兴起:在2000年前后,敏捷开发方法开始受到广泛关注。它强调跨部门、跨角色的协作与沟通,注重快速响应变化,持续交付价值。然而,这种模式也给运维带来了新的挑战,因为软件的功能不断增加,版本迭代速度加快,运维团队需要与开发团队紧密合作,但往往存在沟通壁垒。
DevOps的初现
- 概念提出:在2007年左右,Patrick Debois首次提出“DevOps”这个术语,旨在打破开发团队与运维团队之间的隔阂,促进双方之间的沟通与协作。
- 实践探索:DevOps的实践开始被一些先驱者探索,他们尝试通过改进团队协作、自动化工具和流程等方式来提高软件交付的速度和质量。
关键事件与技术发展
- 持续集成和持续交付(CI/CD)的兴起:CI/CD的概念逐渐得到推广,它强调自动化测试、持续集成和持续交付,以实现更频繁的软件交付。
- 云计算的发展:在2010年前后,云计算平台的兴起(如AWS、Azure、Google Cloud)为DevOps提供了更灵活、可伸缩的基础设施,支持快速开发和部署。
- Docker和容器技术:2013年左右,Docker的出现推动了容器技术的普及,容器化简化了应用程序的交付和部署,为DevOps实践提供了更便捷的方式。
- 微服务架构:2014年以后,微服务架构的兴起推动了软件架构的变革,使团队更容易实现独立部署和维护,与DevOps理念相辅相成。
工具与平台的发展
- DevOps工具链的丰富:随着DevOps的不断发展,出现了各种DevOps工具,如Jenkins、Ansible、Chef、Puppet等,用于自动化、配置管理和部署。
新兴趋势
- 人工智能和机器学习集成:在DevOps流程中集成人工智能(AI)和机器学习(ML)已成为必需品,它们正在改变DevOps中处理自动化、问题解决和预测分析的方式。
- DevSecOps的崛起:随着组织认识到在早期和整个DevOps流程中集成安全性的重要性,DevSecOps已成为一项标准。它强调将安全性融入整个软件开发和运维流程。
业界成功案例
- Netflix、Amazon、Etsy、Facebook等公司都通过实施DevOps实践,实现了快速交付、高质量的软件,提高了市场竞争力,为客户创造了更好的用户体验。
综上所述,DevOps的起源可以追溯到敏捷开发模式的兴起以及持续开发所带来的运维问题。随着云计算、容器技术、微服务架构等技术的发展,DevOps得到了快速发展和广泛应用。未来,随着人工智能和机器学习的集成以及DevSecOps的崛起,DevOps将继续保持健康且快速增长的态势。
1.3 DevOps与传统IT运维的区别
DevOps与传统IT运维在多个方面存在显著的区别,以下是这些区别的详细阐述:
- 目标与策略:
- DevOps主要聚焦于持续集成、持续交付(CI/CD),以及软件开发和运维的紧密结合,旨在实现更快速、更高质量的软件交付。
- 相对而言,传统IT运维主要关注系统的稳定性、可用性和安全性,经常侧重于故障恢复和系统维护。
- 工作流程与自动化:
- DevOps提倡自动化和持续改进,其工作流程涵盖了从代码开发、测试到部署等多个环节,都尽可能地实现自动化。
- 传统IT运维则往往涉及更多的手动操作,如硬件维护、软件更新和安全防护等。
- 工具与技术:
- DevOps通常使用如Jenkins、Docker和Kubernetes这类现代化工具进行自动化操作,支持CI/CD流程。
- 传统IT运维则更多使用如Nagios、Puppet或Ansible这样的传统工具,侧重于系统监控和配置管理。
- 团队结构与协作:
- DevOps鼓励开发和运维团队之间的密切合作,甚至出现了“DevOps工程师”这一跨界角色,强调跨职能团队的协作。
- 传统IT运维往往作为一个独立的部门存在,与开发团队相对隔离,团队之间的协作较少。
- 文化与思维方式:
- DevOps倡导一种开放、合作和持续改进的文化,鼓励团队成员共同承担责任,通过共享目标、知识和工具来追求业务目标。
- 传统IT运维则更多地强调规范、流程和安全性,文化上相对保守。
- 对变化的响应速度:
- DevOps通过自动化的工具和流程,能够更快速地响应市场变化和客户需求,实现快速迭代和交付。
- 传统IT运维在响应速度和灵活性上则相对较慢。
- 对业务目标的支持:
- DevOps的目标是缩短软件开发生命周期,并使用持续交付来提供高质量的软件,从而更好地支持业务目标。
- 传统IT运维则更多关注系统的稳定性和安全性,对业务目标的直接支持较少。
总结来说,DevOps通过整合开发和运维的各个环节,实现了软件交付的高效协同和持续改进,更好地支持了企业的业务目标。而传统IT运维则更多关注系统的稳定性和安全性,团队之间相对隔离,响应速度和灵活性较低。
二、DevOps的原理
2.1 文化变革
2.1.1 打破开发与运维的壁垒
DevOps的原理之文化变革,特别是在打破开发与运维的壁垒方面,主要体现在以下几个方面:
- 文化转变:
- DevOps强调软件开发和运维团队之间的协作与沟通,要求双方共同追求整体业务目标,而不是各自为政。这种文化转变促使团队成员形成相互尊重、合作共赢的意识。
- 通过制定共同的价值观和工作规范,建立良好的团队氛围,有助于打破传统开发和运维部门之间的壁垒。
- 协作与通信:
- DevOps原理强调跨功能团队之间的紧密协作与开放通信。它主张打破传统软件开发中存在的隔阂,让开发人员、运维人员以及其他相关人员共同参与到产品的生命周期中。
- 这种紧密的协作和通信有助于团队更快地解决问题,提高工作效率。实施DevOps文化要求团队成员具备跨职能的技能,鼓励持续学习和知识共享。
- 自动化:
- 自动化是DevOps的核心原则之一,通过自动化工具和流程,减少人工干预,提高软件开发、部署和运维的效率和质量。
- 自动化可以覆盖代码开发、测试、部署等所有阶段,减少人为因素带来的错误和延迟。这种自动化不仅限于技术操作,还包括在监控与日志记录方面的自动化。
- 持续集成与持续交付(CI/CD):
- CI/CD是DevOps中的关键实践,允许团队频繁地将代码更改合并到主分支,并快速地将新功能和修复部署到生产环境。
- 这种做法有助于消除长周期的发布等待,降低变更的风险,并确保软件始终处于可随时发布的状态。CI/CD的实践促进了开发与运维之间的紧密协作,共同确保软件的质量和交付速度。
- 快速反馈:
- DevOps原理强调通过快速反馈来及时调整和优化流程。这种反馈可以来源于自动化测试结果、监控系统、用户反馈等多个渠道。
- 建立一个能够迅速响应反馈的机制是确保快速反馈有效性的关键。这可能涉及调整团队结构、引入灵活的工作方法或采用更为高效的工具和技术。
2.1.2 共享责任与协作
DevOps的原理之文化变革中,共享责任与协作是核心要素之一,它强调团队之间的紧密合作和共同承担责任。以下是关于共享责任与协作的详细解释:
- 共享责任:
- DevOps打破了传统开发和运维的界限,要求团队成员共同追求整体业务目标。在这种文化下,团队成员不再各自为政,而是共同承担软件开发、部署和运维的责任。
- 通过制定共同的价值观和工作规范,团队成员形成了一种互相尊重、合作共赢的意识。每个人都认识到自己对产品的成功负有责任,从而促进了团队之间的紧密合作。
- 共享责任有助于减少责任推脱的情况,使得团队成员在面对问题时能够迅速团结起来共同应对。这种文化变革使得团队更加灵活、高效,能够更好地应对快速变化的市场需求。
- 协作:
- DevOps强调不同团队之间的持续协作,包括开发团队、运维团队、质量保障团队等。通过加强团队协作,DevOps能够提高软件交付的速度和质量,同时减少错误和延迟。
- 为了实现协作,DevOps提倡使用自动化工具和流程来减少人工干预。这些工具可以覆盖代码开发、测试、部署等所有阶段,确保团队成员之间的无缝衔接。
- DevOps还强调透明度和持续性的沟通。团队成员需要实时共享信息,避免信息孤岛的出现。通过使用ChatOps等工具,团队成员可以更加即时和有效地进行交流,促进问题的快速解决和决策的加速。
- 协作不仅限于技术层面,还包括跨部门的合作。DevOps鼓励不同部门之间的沟通和协作,以便更好地理解业务需求和市场动态,从而做出更加明智的决策。
- 文化与价值观的转变:
- DevOps的文化变革要求团队成员具备开放、合作和共享的精神。通过制定共同的目标和价值观,团队成员可以形成更加紧密的联系,并共同为实现业务目标而努力。
- 这种文化变革还需要团队成员不断学习和适应新技术、工具和最佳实践。DevOps鼓励团队成员保持持续学习的态度,并鼓励分享知识和经验,以便更好地应对快速变化的市场需求。
总之,DevOps的原理之文化变革之共享责任与协作强调团队成员之间的紧密合作和共同承担责任。通过打破传统界限、加强协作、使用自动化工具和流程以及建立透明和持续的沟通机制,DevOps能够提高软件交付的速度和质量,并帮助组织应对快速变化的市场需求。
2.1.3 持续改进与自我反馈
DevOps的原理中,文化变革是一个核心要素,它强调持续改进与自我反馈的重要性。以下是关于这两个方面的详细解释:
- 持续改进:
- 定义:持续改进是DevOps方法论的关键组成部分,它鼓励团队成员不断寻求优化和改进的机会,以提高软件交付的质量和效率。
- 实践:
- 在DevOps实践中,团队应该定期检查和评估整个软件交付过程,并针对发现的问题和瓶颈制定改进计划。
- 这种持续的改进工作有助于团队更好地理解和解决问题,并促进整个团队在技术、流程和文化方面的成长。
- 影响:
- 持续改进能够不断优化软件交付过程,提高开发速度和效率。
- 例如,通过引入自动化工具和流程,可以显著减少手动操作和人为错误,从而加快软件的开发和部署速度。
- 自我反馈:
- 定义:自我反馈是DevOps中实现持续改进的重要机制,它涉及团队对软件交付过程进行持续的监控、度量和报告,以便及时发现问题并采取相应的改进措施。
- 实践:
- 团队需要建立各种监控机制来收集与软件交付相关的数据,如测试数据、运维数据、用户反馈等。
- 通过对这些数据的分析,团队可以了解软件交付的效果和质量,并发现潜在的问题和改进机会。
- 团队需要定期回顾和分析这些反馈数据,以确定改进的方向和优先级,并制定相应的改进措施。
- 影响:
- 自我反馈机制有助于团队及时发现问题并采取相应的改进措施,从而确保软件交付的质量和可靠性。
- 通过持续的自我反馈和改进,团队可以不断提升自身的软件交付能力,并更好地满足客户需求。
综上所述,DevOps的原理中的文化变革强调持续改进与自我反馈的重要性。通过持续的改进和自我反馈,团队可以不断优化软件交付过程,提高开发速度和效率,并确保软件交付的质量和可靠性。这种文化变革有助于打破传统的开发和运维之间的壁垒,促进团队成员之间的协作和沟通,从而实现更快速、更高质量的软件交付。
2.2 自动化
详见 《DevOps的原理及应用详解(二)》
2.3 测量与反馈
详见 《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的原理及应用详解(一)
本系列文章简介: 在当今快速变化的商业环境中,企业对于软件交付的速度、质量和安全性要求日益提高。传统的软件开发和运维模式已经难以满足这些需求,因此,DevOps(Development和Operations的组合)应运而生&a…...
【冲刺秋招,许愿offer】第 三 天(水一天)
【冲刺秋招,许愿offer】第 二 天(水一天) 知识点牛客emo 知识点 今天端午,上午去摘杏下午理发,一天没咋看电脑。晚上刷刷LeetCode看看八股。 牛客 spring事务失效的情况 捕获到异常,自己手动处理 方法修…...

使用 C# 学习面向对象编程:第 6 部分
继承 亲爱的读者,继承意味着从源头继承一些东西。例如,儿子可以继承父亲的习惯。同样的概念也用于面向对象编程;它是 OOP 的第二大支柱。 继承允许创建一个新类,该新类继承另一个类或基类的属性,继承这些成员的类称为…...

分布式训练基础入门
1.单节点训练 单节点训练也会转换为等价的并行训练,如在GPU内同一wrap内的32个Thread执行同一指令,但处理不同的数据。 训练程序往往实现了一个多层神经网络的执行过程。该神经网络的执行由一个计算图(Computational Graph)表示。…...

AWS S3存储桶中如何下载文件
AWS S3存储桶中如何下载文件 1.单个下载 AWS S3 控制台提供了下载单个文件的功能,但是不支持直接在控制台中进行批量下载文件。您可以通过以下步骤在 AWS S3 控制台上下载单个文件: 1.1登录 AWS 管理控制台。 1.2转到 S3 服务页面。 1.3单击…...

「网络原理」三次握手四次挥手
🎇个人主页:Ice_Sugar_7 🎇所属专栏:计网 🎇欢迎点赞收藏加关注哦! 三次握手&四次挥手 🍉连接管理🍌三次握手🍌意义🍌四次挥手🍌TCP 状态转换…...
第二十四章 SOAP 错误处理 - 发生故障时添加 WS-Addressing 标头元素
文章目录 第二十四章 SOAP 错误处理 - 发生故障时添加 WS-Addressing 标头元素%SOAP.Fault12.Code 属性SubcodeValue %SOAP.Fault12.Text 属性Textlang 发生故障时添加 WS-Addressing 标头元素 第二十四章 SOAP 错误处理 - 发生故障时添加 WS-Addressing 标头元素 %SOAP.Fault…...

CSS真题合集(一)
CSS真题合集(一) 1. 盒子模型1.1 盒子模型的基本组成1.2 盒子模型的实际大小1.3 盒子模型的两种类型1.4 设置盒子模型1.5 弹性盒子模型 2. BFC2.1 主要用途2.2 触发BFC的方法2.2 解决外边距的塌陷问题(垂直塌陷) 3. 响应式布局3.1…...

Golang | Leetcode Golang题解之第144题二叉树的前序遍历
题目: 题解: func preorderTraversal(root *TreeNode) (vals []int) {var p1, p2 *TreeNode root, nilfor p1 ! nil {p2 p1.Leftif p2 ! nil {for p2.Right ! nil && p2.Right ! p1 {p2 p2.Right}if p2.Right nil {vals append(vals, p1.V…...
离奇问题:java通过poi读取excel单元格的小数时会出错
问题 java通过poi读取excel单元格的小数时会出错,分析后发现是因为会损失精度。 处理的代码 /*** DataFormatter 直接new就行:DataFormatter df new DataFormatter();*/ private String getNumericCellValue(Cell cell, DataFormatter df) {String val…...
前端框架是什么
前端框架是预先编写好的JavaScript代码集合,旨在帮助开发者快速搭建Web应用程序的界面和交互逻辑。以下是一些常见的前端框架,按照字母顺序排列,并简要介绍其特点: Angular 由Google开发,原名AngularJS,后…...
Feign的动态代理如何配置
Feign 本身已经内置了动态代理的功能,它允许你声明一个接口,并通过这个接口来发送 HTTP 请求,而不需要你手动编写发送 HTTP 请求的代码。Feign 会为你创建这个接口的代理实现,并在运行时拦截对这些方法的调用,将它们转…...

ReactRouter——路由配置、路由跳转、带参跳转、新route配置项
目录 写在前面 (一)初步使用router 1.安装react-router-dom 2.创建router结构 3.嵌套路由 4.配置not found页面 (1)确切路由报错页面 (2)未配置路由报错页面 5.重定向 (二)路由跳转 1.组件跳转 2.NavLink 3.js跳转 (三)传递参数 1.searchParams(query)参数 2…...
异步处理耗时逻辑
在 Spring Boot 中实现 RESTful 接口的快速响应,同时在后台继续处理耗时逻辑,可以使用异步处理技术。以下是一个详细的示例,展示如何使用 Async 注解和 CompletableFuture 来实现这一需求。 使用 Async 注解 步骤 1:启用异步支持…...

Switch 之 配置SNMP
Description SNMP(Simple Network Management Protocol,简单网络管理协议)是一种用于网络管理的协议,它用于在网络中对设备进行监控和管理。 SNMP定义了一种管理框架,其中包括管理站、代理和管理信息库(M…...

微软如何打造数字零售力航母系列科普13 - Prime Focus Technologies在NAB 2024上推出CLEAR®对话人工智能联合试点
Prime Focus Technologies在NAB 2024上推出CLEAR对话人工智能联合试点 彻底改变您与内容的互动方式,从内容的创建到分发 洛杉矶,2024年4月9日/PRNewswire/-媒体和娱乐(M&E)行业人工智能技术解决方案的先驱Prime Focus Techn…...

Nginx之正向代理配置示例和说明
一、NGINX正向代理功能简介 Nginx的正向代理功能允许局域网中的客户端通过代理服务器访问Internet资源。具体来说,Nginx作为一种流行的Web服务器和反向代理服务器,在正向代理方面的应用也相当实用。以下是其正向代理功能的几个关键点: 访问外…...

Linux文件与目录管理
#Linux系统基础 文件与目录管理 一、常用命令 文件、目录操作命令说明cd(cd …/ cd ~/ cd/ cd path)切换目录 cd ~等于 cd /rootls显示目录文件ls -l 或者 ll以详细信息的方式显示目录文件pwd查看当前工作目录cp (-i -r)复制文件或目录mkdir创建目录,…...
08.组件间通信-插槽
1.默认插槽 父组件 <template><div class"father"><h3>父组件</h3><div class"content"><Category title"热门游戏列表">//默认插槽内容<ul><li v-for"g in games" :key"g.id&quo…...

在AWS上运行的EKS Elastic Kubernetes Service 创建集群Cluster,Node group, Nodes
1. 前提条件 AWS Account: https://aws.amazon.com/free/Installing KubeCtl CLI https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.htmlEKS Cluster RoleIAM Role for Node GroupVPCEC2 Key Pair which can be used to SSH to the worker nodesAWS …...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...

蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...