猫头虎分享: 探索软件系统架构的革新之路

news2024/11/28 20:46:03

博主猫头虎的技术世界

🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能!

专栏链接

🔗 精选专栏

  • 《面试题大全》 — 面试准备的宝典!
  • 《IDEA开发秘籍》 — 提升你的IDEA技能!
  • 《100天精通鸿蒙》 — 从Web/安卓到鸿蒙大师!
  • 《100天精通Golang(基础入门篇)》 — 踏入Go语言世界的第一步!
  • 《100天精通Go语言(精品VIP版)》 — 踏入Go语言世界的第二步!

领域矩阵

🌐 猫头虎技术领域矩阵
深入探索各技术领域,发现知识的交汇点。了解更多,请访问:

  • 猫头虎技术矩阵
  • 新矩阵备用链接

在这里插入图片描述

文章目录

  • 猫头虎分享🦉: 探索软件系统架构的革新之路
    • 摘要
    • 引言
    • 正文
      • 传统单体架构🏛️
      • 传统单体架构🏛️的详细分析
        • 定义与特点
          • 主要特点包括:
        • 优点
        • 缺点
        • 适用场景
        • 小结
      • 微服务架构🔍
      • 微服务架构🔍的详细介绍
        • 定义与特点
          • 主要特点包括:
        • 优点
        • 缺点
        • 适用场景
        • 小结
      • 容器化与Docker🐳
      • 容器化与Docker🐳的详细介绍
        • 定义与特点
          • 主要特点包括:
        • 优点
        • 缺点
        • 适用场景
        • 小结
      • 云原生架构☁️
      • 云原生架构☁️的详细介绍
        • 定义与特点
          • 主要特点包括:
        • 优点
        • 缺点
        • 适用场景
        • 小结
    • 🦉未来软件架构是否会发展成为人工通用智能(AGI)?
      • 当前的软件架构与AGI
      • 软件架构向AGI的发展
      • 结论
    • 参考资料
    • 表格:核心知识点总结
    • 总结
    • 未来展望

猫头虎分享🦉: 探索软件系统架构的革新之路

在这里插入图片描述

摘要

在这篇博客中,我们将深入探讨软件系统架构的发展与革新。从单体应用到微服务,再到云原生架构,每一步都标志着技术的进步和思维的转变。对于软件工程师、架构师以及技术爱好者而言,这篇文章将提供关键的知识点和技术细节,帮助理解和把握架构设计的脉络。涵盖了微服务、容器化、DevOps、云计算等多个关键词,本文将是你理解软件架构演变的完美指南。

引言

大家好,我是猫头虎博主,今天我们将一起探索软件系统架构的改变。从传统的单体架构到现代的云原生设计,软件架构的进步不仅提高了系统的性能和可靠性,还极大地影响了我们的开发和运维方式。

正文

在这里插入图片描述

传统单体架构🏛️

单体架构是早期软件开发的基石,它的特点是将所有功能集成在一个紧密耦合的单一程序中。这种架构简单直观,易于开发和部署,但却存在着扩展性差和维护困难的问题。

传统单体架构🏛️的详细分析

定义与特点

单体架构是一种将应用程序的所有组件集成在单个包或模块中的架构风格。这种结构通常包含用户界面、业务逻辑、数据访问层等所有组件。在这种架构下,各个部分紧密耦合,共同构成一个统一的系统。

主要特点包括:
  • 紧密耦合和集中管理:应用中的所有功能在同一个环境下开发和部署。
  • 一体化部署:作为一个单一的实体进行部署,简化了部署过程。
  • 开发简单:初期开发相对直观,无需处理多个服务之间的复杂交互。
优点
  1. 简化开发与测试:由于所有功能都在同一个平台上,开发和测试过程较为简单直接。
  2. 简单的部署流程:部署单体应用通常只需要一个文件或目录,减少了部署的复杂性。
  3. 初始成本较低:对于小型项目或初创公司,单体架构可以快速启动和推进项目。
缺点
  1. 可扩展性差:随着应用规模的增长,单体架构的应用变得越来越难以扩展。
  2. 维护困难:当代码库变大后,理解和修改代码变得更加困难,可能导致开发速度放缓。
  3. 技术债务风险:随着时间的推移,技术债务会逐渐累积,导致系统更新和维护成本增加。
  4. 故障影响范围大:一个小故障可能会影响整个应用的稳定性和可用性。
适用场景
  • 小型或中等规模的项目:对于小型团队或有限的资源,单体架构提供了足够的简单性和可管理性。
  • 快速原型开发:当需要快速验证一个想法或概念时,单体架构可以加速开发过程。
  • 非复杂业务逻辑应用:对于业务逻辑不是特别复杂的应用,单体架构可能是一个有效的选择。
小结

虽然单体架构在现代软件开发中逐渐被微服务和云原生等更灵活、可扩展的架构所取代,但它在特定情况下仍然是一个有效且合理的选择。对于小型项目和快速原型开发,单体架构提供了简单、直接的解决方案。然而,随着项目规模的增长,它的缺点—如维护困难、扩展性差—变得越发明显,这时就可能需要考虑向更现代的架构模式过渡。

微服务架构🔍

微服务架构通过将应用程序划分为一组小的、松散耦合的服务来克服单体架构的限制。每个服务都围绕特定的业务功能构建,并且可以独立部署和扩展。

微服务架构🔍的详细介绍

定义与特点

微服务架构是一种将应用程序设计为一系列小型服务的架构方法,每个服务都执行特定的业务功能,运行在自己的进程中,并通过轻量级通信机制(通常是HTTP RESTful API)进行通信。这些服务围绕业务能力构建,可以独立部署、扩展和更新。

主要特点包括:
  • 服务分离和独立性:每个微服务负责应用的特定部分,彼此之间松耦合。
  • 独立部署:每个服务可以独立于其他服务部署,不会相互影响。
  • 技术多样性:不同的微服务可以使用不同的编程语言和数据存储技术。
  • 聚焦单一业务功能:每个微服务通常只关注一个特定的业务功能或领域。
优点
  1. 灵活性和可扩展性:可以独立地扩展最需要扩展的服务,而不是整个应用。
  2. 容错性:一个服务的失败不会导致整个应用的崩溃。
  3. 易于理解和维护:每个微服务都相对较小,更容易理解和维护。
  4. 技术和团队自治:团队可以选择最适合其服务的技术栈。
  5. 持续交付和部署:更容易实现自动化部署和持续集成。
缺点
  1. 分布式系统的复杂性:微服务之间的通信增加了网络负载和延迟。
  2. 数据一致性:保持不同服务之间数据的一致性可能是一个挑战。
  3. 运维复杂性:需要更多的运维工作来管理多个服务。
  4. 开发和测试复杂性:微服务的独立性可能增加集成和端到端测试的难度。
适用场景
  • 大型、复杂的应用:在大型应用中,微服务架构可以有效地隔离服务,使得开发和维护更加可管理。
  • 需要高度可扩展的系统:对于需要在不同维度上扩展的系统,微服务提供了更好的灵活性。
  • 快速迭代和频繁部署的环境:微服务允许独立服务的快速迭代和部署,而不影响系统的其他部分。
小结

微服务架构提供了比传统单体架构更高的灵活性和可扩展性,使得大型和复杂的应用能够更加高效地开发和维护。然而,它也带来了分布式系统固有的复杂性,要求团队具备相应的技术能力和工程实践来克服这些挑战。正确地实施微服务架构需要综合考虑组织的规模、团队结构、业务需求和技术背景。

容器化与Docker🐳

容器化技术,尤其是Docker,为微服务架构提供了理想的运行环境。容器可以封装微服务的运行环境,确保一致性,同时提供轻量级的隔离。

# 示例:使用Docker构建和运行一个微服务
docker build -t my-microservice .
docker run -p 5000:5000 my-microservice

容器化与Docker🐳的详细介绍

定义与特点

容器化是一种轻量级、可移植的软件分发方法,它封装软件的代码及其所有依赖,以便在任何环境中快速且一致地运行。Docker,作为容器化技术的代表,为开发、分发和运行应用程序提供了一个标准化的平台。

主要特点包括:
  • 环境一致性:确保开发、测试和生产环境间的一致性。
  • 隔离性:每个容器作为一个隔离的环境运行,避免了软件间的冲突。
  • 轻量级:相比于传统虚拟化技术,容器更加轻量,提高了资源利用率。
  • 可移植性:容器可以在任何支持Docker的主机上运行,无需担心依赖问题。
优点
  1. 快速部署和启动:容器化应用程序可以在几秒内启动,加快了部署速度。
  2. 提高开发效率:开发者可以使用与生产环境一致的容器,减少了“在我机器上能运行”的问题。
  3. 简化配置管理:所有环境的配置可以预先定义在容器中,降低了配置管理的复杂性。
  4. 资源高效使用:容器共享主机的系统内核,不需要额外的操作系统,更有效地使用硬件资源。
缺点
  1. 安全性问题:容器与主机系统共享内核,如果配置不当,可能会存在安全风险。
  2. 存储和网络复杂性:容器的持久化存储和网络配置可能比传统部署更复杂。
  3. 监控和管理挑战:大规模容器化部署需要复杂的监控和管理工具。
适用场景
  • 微服务架构:容器非常适合部署微服务,因为它们可以独立地封装每个服务。
  • 持续集成和持续部署(CI/CD):容器化支持自动化的测试和部署流程。
  • 多环境部署:容器可以保证应用在不同环境(开发、测试、生产)中的一致性。
  • 弹性伸缩和自动化运维:容器化应用更容易在云环境中进行自动伸缩和管理。
小结

容器化技术,特别是Docker,已成为现代软件开发的关键组成部分。它为微服务架构提供了理想的运行环境,通过确保跨环境的一致性和提供轻量级的隔离,大幅提升了开发和运维效率。然而,成功实施容器化还需要考虑安全性、数据持久性和管理监控等方面的挑战。

云原生架构☁️

云原生是指在云环境中构建和运行应用程序的方法。它利用了云计算的优势,比如自动扩展、微服务和容器。

云原生架构☁️的详细介绍

定义与特点

云原生架构是指在云环境中构建、部署和运行应用程序的一种方法。它利用云计算的强大功能,如服务的自动扩展、弹性管理、故障容忍等,以提高效率、弹性和可扩展性。云原生通常涉及微服务架构、容器化技术(如Docker)、持续集成和持续部署(CI/CD)、以及动态管理和自动化(如Kubernetes)。

主要特点包括:
  • 服务的微分化:应用分解为独立的微服务,使得管理和扩展更加灵活。
  • 容器化部署:应用和其依赖被打包在容器中,提高了可移植性和环境一致性。
  • 动态管理:通过自动化工具(如Kubernetes)进行服务部署、扩展和监控。
  • DevOps文化:强调开发和运维团队的协作,快速迭代和持续改进。
优点
  1. 弹性和可伸缩性:能够根据负载自动扩展和缩减资源。
  2. 快速迭代:云原生架构支持快速开发和部署,加快了产品迭代速度。
  3. 故障容忍:即使个别组件失败,整个系统仍然可以正常运行。
  4. 资源优化:通过容器和微服务使得资源使用更加高效。
  5. 全球部署:利用云平台,可以轻松地在全球范围内部署和管理应用。
缺点
  1. 复杂性增加:管理一个分布式系统比传统架构复杂,需要更多的技术投入。
  2. 安全挑战:云环境的安全策略和传统环境不同,需要特别关注。
  3. 成本管理:虽然云原生可以节省资源,但不当的管理可能导致成本增加。
  4. 技术门槛:需要团队掌握更多新技术和工具。
适用场景
  • 高动态扩展需求的应用:对于需要根据用户访问量动态调整资源的应用来说,云原生架构提供了理想的解决方案。
  • 全球化服务:对于需要在全球多个地区部署的服务,云原生架构能够提供高效的全球部署和管理。
  • 持续创新的企业:云原生架构支持快速迭代和部署,适合追求持续创新的企业。
小结

云原生架构通过结合微服务、容器化、CI/CD等先进的软件工程实践,充分利用了云计算环境的优势,为现代企业提供了一种灵活、高效、可扩展的软件开发和运维方式。它不仅是一种技术上的转变,更代表了组织文化和流程的变革,要求企业进行全面的技术和流程升级。

在这里插入图片描述

🦉未来软件架构是否会发展成为人工通用智能(AGI)?

目前,AGI(Artificial General Intelligence)是指具有广泛认知能力的人工智能,能够像人类一样在各种任务和环境中展示智能。这与专门针对特定任务设计的人工智能(如聊天机器人、图像识别系统)有很大区别。

当前的软件架构与AGI

当前的软件架构,即使是最先进的云原生架构、微服务或AI集成系统,都远未接近AGI。它们通常设计用于处理特定的、定义良好的任务,而非展示类似人类的普遍智能。

软件架构向AGI的发展

  1. 技术难度:开发AGI是一个巨大的技术挑战,目前尚无明确的路径或时间表。软件架构在这方面的发展,尽管迅速,但主要集中在提高效率、可靠性和可扩展性上,而不是通用智能。

  2. 设计目的:大多数软件架构是为了解决特定的商业问题或需求,而AGI的设计目的是模仿人类智能的广泛能力,两者的目标和范围有显著差异。

  3. 资源和投资:AGI的研究需要巨大的资源和长期的投资。虽然许多公司和研究机构对AGI感兴趣,但它仍然是一个长期的研究领域。

  4. 伦理和安全考量:AGI的发展涉及许多伦理和安全问题,例如控制问题、责任归属和社会影响等。这些问题的复杂性可能会延缓AGI的研究和应用。

结论

综上所述,虽然未来软件架构将继续集成更多的AI元素,提高自动化和智能化水平,但成为AGI是一个跨度极大的转变,不仅涉及技术层面的突破,还需要克服伦理、安全和社会接受等多方面的挑战。因此,短期内软件架构发展成为AGI的可能性不大,这是一个更长远的愿景。

参考资料

  1. “微服务架构设计模式”
  2. “Docker容器化实践”
  3. “云原生应用架构探索”

表格:核心知识点总结

架构类型特点优点缺点
单体架构整合式设计开发部署简单扩展性维护困难
微服务架构服务分离可维护性、可扩展性好设计管理复杂
容器化应用隔离和打包环境一致性、轻量级隔离需要容器管理技术支持
云原生架构利用云计算特性自动扩展、灵活性高对云平台有依赖

总结

在探索软件系统架构的演变过程中,我们见证了从单体架构到微服务架构,再到云原生架构的转变。这一变迁不仅是技术的升级,更是对高效、灵活和可持续发展的不懈追求。单体架构以其简洁性和直接性满足了早期软件开发的需求,而微服务架构应运而生,解决了单体架构在处理大型、复杂应用时的局限性。容器化技术,特别是Docker,为微服务提供了理想的运行和部署环境,同时带来了环境一致性和高效的资源利用。最后,云原生架构的出现,利用云计算的优势,进一步推动了软件开发和运维的现代化,提高了系统的可靠性、弹性和可扩展性。

这一演变过程不仅仅是技术层面的变革,还伴随着组织结构和文化的转变。团队必须适应更加敏捷和协作的工作方式,以及持续学习和适应新技术的能力。总的来说,软件系统架构的发展既是对过去技术的优化,也是对未来需求和挑战的预见。

未来展望

未来的软件系统架构预计将进一步朝着自动化、智能化的方向发展。以下几个方面可能会成为主要趋势:

  1. 人工智能和机器学习的整合:随着AI技术的发展,将AI和ML模型更加深入地整合到软件架构中,可以实现更智能的数据处理和业务决策。

  2. 无服务器架构(Serverless)的兴起:无服务器计算将进一步简化云原生应用的开发和部署,使开发者更加专注于代码本身而不是底层基础设施。

  3. 边缘计算的发展:随着物联网(IoT)和移动设备的普及,边缘计算将变得越来越重要,以降低延迟和提高数据处理速度。

  4. 持续集成和持续部署(CI/CD)的进一步优化:自动化的测试和部署流程将变得更加成熟,提高软件交付的速度和质量。

  5. 更强调安全和合规性:随着数据安全和隐私的日益重要,软件架构将需要更加重视安全性和遵守相关法规。

总体而言,未来的软件架构将更加注重灵活性、可扩展性、自动化和智能化,同时在满足快速发展的业务需求的同时,也要确保数据安全和合规性。


如果对本文有任何疑问,欢迎点击下方名片,了解更多详细信息!

在这里插入图片描述

👉 更多信息:有任何疑问或者需要进一步探讨的内容,欢迎点击下方文末名片获取更多信息。我是猫头虎博主,期待与您的交流! 🦉💬

🚀 技术栈推荐
GoLang, Git, Docker, Kubernetes, CI/CD, Testing, SQL/NoSQL, gRPC, Cloud, Prometheus, ELK Stack

💡 联系与版权声明

📩 联系方式

  • 微信: Libin9iOak
  • 公众号: 猫头虎技术团队

⚠️ 版权声明
本文为原创文章,版权归作者所有。未经许可,禁止转载。更多内容请访问猫头虎的博客首页。

点击下方名片,加入猫头虎领域社群矩阵。一起探索科技的未来,共同成长。

🔗 猫头虎社群 | 🔗 Go语言VIP专栏| 🔗 GitHub 代码仓库 | 🔗 Go生态洞察专栏

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

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

相关文章

【AI视野·今日Sound 声学论文速览 第四十九期】Wed, 17 Jan 2024

AI视野今日CS.Sound 声学论文速览 Wed, 17 Jan 2024 Totally 23 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers From Coarse to Fine: Efficient Training for Audio Spectrogram Transformers Authors Jiu Feng, Mehmet Hamza Erol, Joon Son Chung,…

[FFmpeg学习]从视频中获取图片

从视频中获取图片是一个比较直观的例子,这里从一个基础的例子来查看FFmpeg相关api的使用,从mp4文件中获取一帧图像,保存为jpeg格式图片,mp4文件比较好准备,一般手机录屏文件就是mp4格式。 原理还是比较清楚&#xff0…

六、Redis之数据持久化及高频面试题

6.1 数据持久化 官网文档地址:https://redis.io/docs/manual/persistence/ Redis提供了主要提供了 2 种不同形式的持久化方式: RDB(Redis数据库):RDB 持久性以指定的时间间隔执行数据集的时间点快照。AOF&#xff0…

车载诊断协议DoIP系列 —— DoIP会话模式(安全与非安全)

车载诊断协议DoIP系列 —— DoIP会话模式(安全与非安全) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖…

LLVM的中间表示

概括 选择编译器IR的决策很重要,它决定了优化过程将拥有多少信息来使代码运行得更快。 一方面非常高层级的IR允许优化器轻松地提取原始源代码的相关信息。 另一方面,低层的IR更加贴近目标机器,这样编译器更容易为特定的硬件生成相应的代码…

MyBatis篇----第三篇

系列文章目录 文章目录 系列文章目录前言一、模糊查询 like 语句该怎么写?二、如何获取自动生成的(主)键值三、在 mapper 中如何传递多个参数?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,…

Golang中的fmt包:格式化输入输出的利器

Golang中的fmt包:格式化输入输出的利器 在软件开发的世界里,fmt包就像是一位忠实的伙伴,始终陪伴着开发人员。它简化了格式化输入输出的过程,让打印和扫描数据变得轻松自如。无论是向控制台输出简单的消息,还是处理复杂…

零基础学Python(10)— 序列通用操作

前言:Hello大家好,我是小哥谈。本节课就带大家认识下Python语言中常见的序列通用操作!~🌈 目录 🚀1.索引 🚀2.切片 🚀3.序列加法 🚀4.序列乘法 🚀5.检查某个元素是…

React18原理: 时间分片技术选择

渲染1w个节点的不同方式 1 &#xff09;案例1&#xff1a;一次渲染1w个节点 <div idroot><div><script type"text/javascript">function randomHexColor() {return "#" ("0000" (Math.random() * 0x1000000 << 0).toS…

在Docker中安装ubuntu镜像并安装Vim,将镜像命名

1、运行环境&#xff0c;腾讯云Ubuntu Server 22.04 LTS 64bit。默认用户名ubuntu&#xff0c;密码自己设置的啥写啥呗。 2、在docker中安装。 sudo docker pull ubuntu 3、查看docker中的镜像。 sudo docker images 4、 以交互模式进入容器。 sudo docker run -it ubuntu…

幻兽帕鲁服务器配置参数说明(Palworld官方汉化)

创建幻兽帕鲁服务器配置参数说明&#xff0c;Palworld服务器配置参数与解释&#xff0c;阿腾云atengyun.com分享&#xff1a; 自建幻兽帕鲁服务器教程&#xff1a; 阿里云教程 https://t.aliyun.com/U/bLynLC腾讯云教程 https://curl.qcloud.com/oRMoSucP 幻兽帕鲁服务器 幻…

Git中Idea操作git及Git Flow

目录 一、Idea中使用Git 1.idea配置Git和Gitee 2.实践操作 1.将本地项目推送到远程 2.从远程库克隆项目到本地 二、Git Flow 1.什么是Git Flow 2.工作流程 3.实践操作 一、Idea中使用Git 1.idea配置Git和Gitee 第一步&#xff1a;设置git.exe的安装路径 在设置中的…

预处理详解(上)

1. 预定义符号 C语言设置了一些预定义符号&#xff0c;可以直接使用&#xff0c;预定义符号也是在预处理期间处理的。 __FILE__ //进行编译的源文件 __LINE__ //文件当前的行号 __DATE__ //文件被编译的日期 __TIME__ //文件被编译的时间 __STDC__ //如果编译器遵循ANSIC&…

Linux--目录结构

目录 一、Linux的目录结构二、常用的目录介绍 一、Linux的目录结构 Linux的目录结构是一个树型结构。 Windos 系统可以拥有多个盘符&#xff0c;如C盘&#xff0c;D盘,E盘。 Linux 木有盘符这个概念&#xff0c;只有一个根目录 /&#xff08;相当于文件夹&#xff09;&#xf…

掌握C语言文件操作:从入门到精通的完整指南!

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C语言学习 贝蒂的主页&#xff1a;Betty‘s blog 1. 什么是文件 文件其实是指一组相关数据的有序集合。这个数据集有一个名称&a…

MPLAB V8.92 printf

Compile error “A heap is required, but has not been specified” Set printf function #if 0 //for UART1 int fputc(int ch, FILE *f) { IFS1bits.U2TXIF 0; // if (runConfig.printOn 1) { // usart_data_transmit(USART0, (uint8_t)ch); U2TXREG ch; // while (RESE…

二分查找算法及其简单应用(C语言实现)

目录 二分查找算法介绍 二分查找算法的简单应用 二分查找算法介绍 二分查找算法&#xff0c;指在一组有序的数组内查找数值&#xff0c;查找的数值与查找范围内的中间数值进行比较&#xff0c;如果比中间数值小&#xff0c;则在原范围内的左侧范围内重复与该范围内的中间数值…

RK3568笔记十四:yolov8pose部署

若该文为原创文章&#xff0c;转载请注明原文出处。 本篇参考山水无移大佬文章&#xff0c;并成功部署了yolov8pose在RK3568板子上&#xff0c;这里记录下全过程。 在此特感谢所有分享的大佬&#xff0c;底部附大佬的链接。 一、环境 1、平台&#xff1a;rk3568 2、开发板: …

微信小程序 民宿预订租赁系统uniApp

通过山青水磨APP办理租房相关业务&#xff0c;线上解决预定、退订的业务&#xff0c;旅客在使用时更加灵活&#xff0c;实现了快速找房&#xff0c;在线沟通、便捷租赁等操作&#xff0c;除此以外&#xff0c;还能帮助旅客获取周边资讯、当地特色活动服务&#xff0c;提升旅客的…

C++,stl,函数对象,谓词,内建函数对象

目录 1.函数对象使用 2.谓词 1.一元谓词 2.二元谓词 3.内建函数对象 1.算术仿函数 2.关系仿函数 3.逻辑仿函数 1.函数对象使用 #include<bits/stdc.h> using namespace std;class add { public:int operator()(int v1,int v2){return v1 v2;} };class print { p…