当前位置: 首页 > news >正文

[架构之路-259]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 架构设计 - 面向服务的架构SOA与微服务架构(以服务为最小的构建单位)

目录

前言:

二、软件架构层面的复用

三、什么是面向服务的架构SOA

3.1 什么是面向服务的架构

3.2 面向服务架构的案例

3.3 云服务:everything is service一切皆服务

四、什么是微服务架构

4.1 什么是微服务架构

4.2 微服务架构的案例

五、企业服务总线ESB

5.1 什么是企业服务器总线

5.2 常见的企业服务总线


前言:

随着软件规模的扩大,对软件复用的需求越发强烈,有函数级别的复用,有对象了类级别的复用,也有软件组件层的复用,也有架构层面的复用,抽象出软件架构的作用:一面是为了软件产品的需要,另一方面,成功或优秀的软件架构本身也可以被后续软件复用。

二、软件架构层面的复用

在软件架构中,复用是通过将通用的架构模式、设计模式、组件、服务等进行提取和重复使用的方式来实现的。通过复用,可以提高系统的可维护性、可扩展性和可重用性,减少重复开发的工作量,并提高开发效率和质量。实际上,前人总结出来的成功的软件架构或软件架构风格,就是为了被其他或项目复用的。

以下是一些常见的软件架构复用方式:

  1. 分层架构:将系统分为多个层次,每个层次负责不同的功能,通过定义良好的接口和约定,使得每个层次可以被多个应用程序复用。

  2. 领域驱动设计(Domain-Driven Design,DDD):将系统按照业务领域进行划分,并通过领域模型、聚合根等概念来提高领域内的复用性。

  3. 微服务架构:将系统拆分为多个小型、独立的服务,每个服务专注于完成特定的业务功能,通过服务间的通信实现复用。

  4. 中间件和框架:使用现有的中间件和框架,如数据库中间件、消息队列、Web框架等,来提供通用功能,减少开发工作。

  5. 设计模式:使用常用的设计模式,如工厂模式、单例模式、观察者模式等,来解决特定的设计问题,提高系统的可复用性。

  6. 组件化架构:将系统划分为多个组件,每个组件具有独立的功能和接口,可以在不同的应用中进行复用。

复用软件架构的关键在于良好的设计和规范,以及对通用功能和模块的抽象和封装。同时,需要注意在复用过程中平衡通用性和定制性的考虑,以保证复用的有效性和灵活性。

三、什么是面向服务的架构SOA

面向服务的架构SOA是以服务为架构的最小构建单元。

3.1 什么是面向服务的架构

面向服务的架构(Service-Oriented Architecture,SOA)是一种设计原则和架构风格,旨在实现系统的模块化、可扩展和可重用。

在面向服务的架构中,系统被分割为一组相互独立的服务,每个服务代表一个特定的业务功能。这些服务通过定义明确定义的接口和协议进行通信,可以部署在不同的服务器上,使用不同的技术和平台来实现。

以下是面向服务的架构的一些特点和优势:

  1. 松耦合:服务之间通过接口进行通信,彼此不直接依赖。这种松耦合的特点使得系统更加灵活和可维护,能够独立地更新、替换和扩展服务,而不会对其他服务造成影响。

  2. 可重用性:面向服务的架构鼓励将通用的功能封装成服务,并在系统中复用。这种复用性可以减少重复开发工作量,提高开发效率和质量。

  3. 模块化:将系统拆分为多个服务单元,每个服务专注于一个特定的业务功能。这种模块化的设计可以简化系统的复杂性,使得系统更易于理解、测试和维护。

  4. 可扩展性:每个服务可以独立地进行水平扩展,根据实际需求增加或减少服务的实例数量,从而提高系统的性能和容错性。

  5. 跨平台和跨语言:面向服务的架构允许不同的服务使用不同的技术和平台进行实现,使得系统具有更大的灵活性和互操作性。

  6. 业务驱动:面向服务的架构强调与业务需求的紧密对应,使得系统能够更好地适应变化的业务需求和业务流程。

面向服务的架构可以通过使用标准的服务协议(如SOAP、REST)和服务注册与发现机制(如服务目录、服务注册表)来实现服务之间的通信和管理。同时也需要考虑如安全性、事务处理和性能优化等方面的问题来保证系统的稳定性和可靠性。

3.2 面向服务架构的案例

面向服务的架构已被广泛应用于各个领域,下面列举几个实际案例:

  1. 云计算平台:云计算平台如亚马逊AWS、微软Azure和谷歌云平台等采用基于服务的架构。它们将各种基础设施服务(如计算、存储、网络等)以及中间件服务(如消息队列、数据库等)作为独立的可复用服务,通过API进行调用。

  2. 电子商务平台:在线购物网站如亚马逊、eBay和淘宝等采用面向服务的架构。这些平台将商品管理、订单处理、支付服务、物流追踪等功能作为独立的服务,并通过服务间的调用来实现整个电商系统的运作。

  3. 银行和金融系统:面向服务的架构在银行和金融领域也得到广泛应用。例如,银行系统中的支付服务、账户管理、风险评估等功能可以作为独立的服务,通过服务调用来提供各种金融服务。

  4. 知识图谱和搜索引擎:大型知识图谱和搜索引擎,如谷歌搜索、百度和维基百科等,都采用了面向服务的架构。它们将数据存储、索引服务、查询服务等作为独立的服务,通过服务之间的通信和协作来提供高效的搜索和知识获取功能。

  5. 企业服务总线(Enterprise Service Bus,ESB):ESB是一种支持面向服务的架构的中间件技术,用于集成和管理企业内部的各种应用和服务。它提供了统一的消息传递、协议转换、安全性和可靠性保证等功能,使得不同的应用和服务能够无缝地进行交互和集成。

这些案例只是面向服务的架构在实际应用中的几个例子。面向服务的架构在许多领域中具有广泛的适应性和可扩展性,让系统更灵活、可维护和可扩展。

3.3 云服务:everything is service一切皆服务

"云服务:everything is service(一切皆服务)"是云计算领域的一个重要概念,强调了云计算提供的服务化模式和思维方式。

"一切皆服务"意味着将各种计算资源(如计算、存储、数据库、网络等)功能(如人工智能、大数据分析、物联网等)都以服务的形式提供一切的软件功能或实现都可以作为服务!!!!都可以被反复服用!!!

无论是企业还是个人用户,都可以通过云服务提供商的平台来消费和使用这些服务,而无需担心底层的复杂性和维护工作。

云服务采用了面向服务的架构,并通过服务级别协议(Service Level Agreements,SLAs)对服务进行约束和保证。用户可以根据实际需求灵活地选择和使用各种服务,并根据实际使用情况进行弹性扩展和付费。

以下是一些云服务的例子:

  1. 基础设施即服务(Infrastructure as a Service,IaaS):提供虚拟化的计算资源(如虚拟机、存储、网络等),用户可以在云平台上创建和管理自己的虚拟数据中心。

  2. 平台即服务(Platform as a Service,PaaS):提供开发和运行应用程序所需的平台环境,用户可以使用预置的开发工具、运行时环境等来开发和部署应用。

  3. 软件即服务(Software as a Service,SaaS):提供各种应用程序作为服务,用户通过云平台直接使用这些应用,无需关心底层的软件安装和维护。

  4. 数据库即服务(Database as a Service,DBaaS):提供数据库管理系统作为服务,用户可以使用数据库功能来存储和管理数据,无需关心数据库的部署和维护。

  5. 大数据分析即服务(Analytics as a Service,AaaS):提供大数据分析和人工智能服务,用户可以通过云平台使用各种数据分析和机器学习算法来获取洞察和优化业务。

  6. AIaaS(AI as a Service):指的是将人工智能能力作为云服务提供给用户。它允许企业和开发者利用人工智能的能力,而无需构建和维护自己的人工智能基础设施和模型。

        通过"一切皆服务"的理念,云服务将计算资源和应用功能封装成可消费的服务,为用户提供了更灵活、高效和成本效益的方式来构建和管理他们的应用和业务。

四、什么是微服务架构

4.1 什么是微服务架构

微服务架构是一种将一体化的应用程序拆分为多个小型、独立部署的服务的方法每个服务都具有自己的业务功能和相应的 API 接口。每个服务都是运行在其自己的进程中,并且可以使用不同的编程语言、数据库和技术栈。

微服务架构的主要特点如下:

  1. 独立性:每个服务都是独立且自治的,这意味着系统中的其他服务不会因为其中一个服务故障或故障而受到影响。每个服务都有自己的数据存储和处理能力,可以独立管理和扩展。

  2. 灵活性:每个服务可以独立开发、测试和部署,这使得服务的迭代速度更快,可以更快地响应用户需求和市场变化。

  3. 可组合性:每个服务都提供 API 接口,这使得不同的服务可以组合成一个完整的应用程序。这使得应用程序可以更加灵活、可拓展和可维护。

  4. 可替换性:由于每个服务是自治的,所以可以使用不同的技术栈和解决方案来实现每个服务。如果服务出现问题,可以更换使用新技术栈的服务,而不会影响整个系统。

  5. 可扩展性:由于每个服务都是独立的,可以根据需要自由地增加或减少服务的数量。这使得系统可以更加灵活地应对流量高峰以及应用程序规模的变化。

微服务架构的本质是一个分布式系统,需要考虑分布式架构中的各种问题,如服务发现、负载均衡、故障转移、数据管理和安全性等。微服务架构要求开发团队具备更高的技术能力和团队协作能力,但在应对快速变化的市场和业务需求方面具有非常明显的优势。

4.2 微服务架构的案例

微服务架构已经被广泛地应用于众多成功的应用程序中,下面是几个比较具有代表性的案例:

  1. Netflix

Netflix 是一个知名的在线视频平台,它以微服务架构来构建其应用程序。Netflix 将其应用程序拆分为超过 500 个微服务,每个微服务都有自己的部署管道和数据存储方案。Netflix 的微服务架构允许其快速地适应市场,构建并提供新功能和服务。

  1. Uber

Uber 是一家非常成功的系统级的物流运输和出行平台,它主要基于微服务架构构建Uber 的微服务架构允许其将应用程序拆分为多个独立的服务,包括订单管理、支付、定位和路线规划等服务。这使得 Uber 能够快速响应市场需求和路况变化。

  1. Amazon

Amazon 是最早引入微服务架构的公司之一,它使用微服务架构来构建其云服务、市场和库存管理系统。微服务架构为 Amazon 提供了更为灵活和可扩展的系统架构,同时也减少了系统重构的风险。

  1. Airbnb

Airbnb 是一个在线房屋出租平台,它利用微服务架构来构建其核心系统。Airbnb 的微服务架构允许其将应用程序拆分为多个小型服务,包括搜索、订阅、预订和房源管理等服务。微服务架构为 Airbnb 提供了更大的敏捷性,更快的迭代速度和更佳的维护性。

这些公司都已经证明了微服务架构在构建复杂、高度可扩展的应用程序方面的巨大价值,它已经成为构建现代应用程序的一种主流方法。

五、企业服务总线ESB

5.1 什么是企业服务器总线

企业服务总线(Enterprise Service Bus,ESB)是一种中介软件架构,用于促进企业内部不同应用系统之间的集成和通信。ESB 提供了一种统一的、可靠的消息传递机制,以及服务管理和转换功能,使各个系统能够以松耦合的方式相互通信。

ESB 主要包含以下组件和特性:

  1. 消息传递:ESB 通过在不同应用程序之间传递消息来实现集成。消息可以是一种标准格式,如 XML 或 JSON,也可以是特定于某个应用程序的自定义格式。ESB 可以确保消息的可靠投递,并提供消息路由和转换等功能。

  2. 中介器:ESB 充当应用程序之间中介器,负责接收、处理和路由消息。它可以处理不同协议之间的转换,例如将消息从一个应用程序的 SOAP Web 服务转换为另一个应用程序的 REST API。

  3. 服务管理ESB 提供服务注册和发现机制,允许应用程序发布其提供的服务订阅其他服务。这使得应用程序可以通过 ESB 轻松地发现和使用其他应用程序的功能,促进了服务的重用和集成。

  4. 安全性和身份验证:通过提供安全机制和身份验证功能,ESB 可以确保通信在不同系统之间是安全和可信的。它可以处理身份验证和授权,保护敏感数据的传输,并实施访问控制策略。

  5. 监控和日志记录:ESB 提供监控和日志记录功能,可以跟踪消息的流动和处理情况。这使得开发人员和管理员可以实时了解系统的状态和性能,并进行故障排除和优化。

        ESB 的目标是简化企业内部系统集成,并提供灵活、可扩展和可靠的集成解决方案。它使企业能够更容易地实现应用程序之间的互操作性,降低集成成本和复杂性,并加快新功能的开发和交付。

5.2 常见的企业服务总线

以下是一些常见的企业服务总线(ESB)实例:

  1. Oracle Service Bus:Oracle Service Bus 是 Oracle 公司提供的一款综合性 ESB 解决方案。它通过提供中央集成架构、消息路由、转换和基于规则的业务流程编排等功能,帮助企业实现应用系统之间的集成和通信

  2. MuleSoft Anypoint Platform:MuleSoft Anypoint Platform 是一种全面的集成平台,其中包括 ESB 功能。它提供了用于构建、部署和管理 API、应用程序和数据集成的工具和服务。MuleSoft Anypoint Platform 的灵活性和可扩展性使其成为了企业中广泛采用的 ESB 解决方案之一。

  3. IBM Integration Bus:IBM Integration Bus(前身为 IBM WebSphere Message Broker)是 IBM 公司提供的一款企业级 ESB 解决方案。它提供了高度可靠的消息传递、数据转换和路由功能,允许企业内部的多个应用系统相互通信和集成。

  4. Apache ServiceMix:Apache ServiceMix 是一个基于开源的 ESB 和集成平台。它使用 Apache Camel 作为核心引擎,提供了消息路由、转换和流程编排等功能。Apache ServiceMix 具有灵活的插件架构,可以与其他开源技术无缝集成。

  5. TIBCO ActiveMatrix BusinessWorks:TIBCO ActiveMatrix BusinessWorks 是一种全面的集成功能平台,其中包括 ESB 功能。它提供了强大的消息传递、数据转换和流程编排能力,可帮助企业实现不同应用系统之间的高效集成和通信。

这些是一些常见的企业服务总线实例,它们提供了丰富的功能和工具,帮助企业实现应用程序之间的集成和交流。选择适合企业需求的 ESB 解决方案需要综合考虑架构要求、性能需求、可靠性和成本等因素。

相关文章:

[架构之路-259]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 架构设计 - 面向服务的架构SOA与微服务架构(以服务为最小的构建单位)

目录 前言: 二、软件架构层面的复用 三、什么是面向服务的架构SOA 3.1 什么是面向服务的架构 3.2 面向服务架构的案例 3.3 云服务:everything is service一切皆服务 四、什么是微服务架构 4.1 什么是微服务架构 4.2 微服务架构的案例 五、企业…...

7z压缩成jar包

比如我们要改下jar包中的某个文件,或者更换一下,那么就要先解压。解压后是这样的 弄好后,使用7z进行压缩,7z默认是标准压缩,会把BOOT-INF\lib 目录下的jar包也进行一次压缩,这会导致java -jar 会报 jar包相…...

python-缩进式编码+算术运算符+定义与赋值代码示例

文章目录 一、​缩进式编码二、算术运算符三、定义与赋值关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 一、​…...

APM性能分享观看有感

应用性能监控是什么 应用 ios,app,pc 性能 performance用户体验,注重快:流畅,稳:崩溃,省:资源占用省 监控那些性能 一,快: 1.启动监控:冷启…...

免费好用的API接口攻略

台风信息查询:提供西北太平洋及南海地区过去两年及当前年份所有编号台风的信息查询,包括台风实时位置、过去路径、预报路径及登陆信息等要素。短信验证码:可用于登录、注册、找回密码、支付认证等等应用场景。支持三大运营商,3秒可…...

五、C#笔记

/// <summary> /// 第八章&#xff1a;理解值和引用 /// </summary> namespace Chapter8 { class Program { static void Main(string[] args) { //8.1复制值类型的变量和类 int i 42; int copyi i…...

Oracle的错误信息帮助:Error Help

今天看手册时&#xff0c;发现上面有个提示&#xff1a; Error messages are now available in Error Help. 点击 View Error Help&#xff0c;显示如下&#xff0c;其实就是oerr命令的图形化版本&#xff1a; 点击Database Error Message Index&#xff0c;以下界面等同于命令…...

阿里云磁盘在线扩容

我们从阿里云的控制面板中给硬盘扩容后结果发现我们的磁盘空间并没有改变 注意&#xff1a;本次操作是针对CentOS 7的 &#xfeff;#使用df -h并没有发现我们的磁盘空间增加 #使用fdisk -l发现确实还有部分空间 运行df -h命令查看云盘分区大小。 以下示例返回分区&#xf…...

OpenCV图像相似性比对算法

背景 在做图像处理或者计算机视觉相关的项目的时候&#xff0c;很多时候需要我们对当前获得的图像和上一次的图像做相似性比对&#xff0c;从而找出当前图像针对上一次的图像的差异性和变化点&#xff0c;这需要用到OpenCV中的一些图像相似性和差异性的比对算法&#xff0c;在O…...

RedHat8.1安装mysql5.6(GLIBC方式)

安装包下载链接下载链接 https://dev.mysql.com/downloads/file/?id492142 [rootlocalhost ~]# ls //查看压缩包 anaconda-ks.cfg Desktop Documents Downloads initial-setup-ks.cfg Music mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz Pictures Public Templates…...

数据结构之插入排序

目录 前言 插入排序 直接插入排序 插入排序的时间复杂度 希尔排序 前言 在日常生活中&#xff0c;我们不经意间会遇到很多排序的场景&#xff0c;比如在某宝&#xff0c;某东上买东西&#xff0c;我们可以自己自定义价格是由高到低还是由低到高&#xff0c;再比如在王者某…...

2023年江西省“振兴杯”网络信息行业(信息安全测试员)职业技能竞赛 Write UP

文章目录 一、2023csy-web1二、2023csy-web2三、2023csy-web3四、2023csy-web4五、2023csy-misc1六、2023csy-misc2七、2023csy-crypto1八、2023csy-re1 一、2023csy-web1 该题提供一个web靶场&#xff0c;《伟大的挑战者》&#xff0c;分值&#xff1a;5分 web页面一直在播放c…...

【5G PHY】5G NR 如何计算资源块的数量?

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…...

解决oracle.sql.TIMESTAMP序列化转换失败问题 及 J2EE13Compliant原理

目录 报错现象报错内容处理方法Oracle驱动源码总结 报错现象 oracle表中存在TIMESTAMP类型的列时&#xff0c;jdbc查出来做序列化时报错 报错内容 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframewo…...

QQ2023备份

需要修改的路径&#xff08;共3处&#xff09; 这三处路径中&#xff0c;只有一处是需要修改的 QQPC端-主菜单-设置-基本设置-文件管理 点击上面的“”自定义“”&#xff0c;然后修改路径即可 修改路径后提示 然后等一会才会关干净QQ的相关进程&#xff0c;关闭后才会有自动…...

HNU计算机结构体系-实验2:CPU动态指令调度Tomasulo

文章目录 实验2 CPU动态指令调度Tomasulo一、实验目的二、实验说明三、实验内容问题1&#xff1a;问题2&#xff1a;问题3&#xff1a;问题4&#xff1a;问题5&#xff1a; 四、思考题问题1&#xff1a;问题2&#xff1a; 五、实验总结 实验2 CPU动态指令调度Tomasulo 一、实验…...

智慧城市是什么?为什么要建智慧城市?

智慧城市是一个通过现代科技手段推动城市管理和服务创新的概念。 具体来说&#xff0c;它利用信息技术和创新概念&#xff0c;将城市的各个系统和服务集成起来&#xff0c;以提升城市运行效率、优化城市管理和服务&#xff0c;改善市民的生活质量。 为什么要建智慧城市呢&…...

数据结构线性表-栈和队列的实现

1. 栈(Stack) 1.1 概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 …...

IntelliJ IDEA 的 HTTP 客户端的高级用法

本心、输入输出、结果 文章目录 IntelliJ IDEA 的 HTTP 客户端的高级用法前言HTTP 请求对 gRPC 请求的支持对 GraphQL 和 WebSocket 请求的支持环境文件OpenAPI 补全用于持续集成的 HTTP 客户端 CLI花有重开日,人无再少年实践是检验真理的唯一标准IntelliJ IDEA 的 HTTP 客户端…...

代码随想录算法训练营第四十六天 _ 动态规划_198.打家劫舍、213.打家劫舍II、337.打家劫舍 III。

学习目标&#xff1a; 动态规划五部曲&#xff1a; ① 确定dp[i]的含义 ② 求递推公式 ③ dp数组如何初始化 ④ 确定遍历顺序 ⑤ 打印递归数组 ---- 调试 引用自代码随想录&#xff01; 60天训练营打卡计划&#xff01; 学习内容&#xff1a; 198.打家劫舍 动态规划五步曲&a…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的&#xff0c;需要先安…...

ArcGIS Pro+ArcGIS给你的地图加上北回归线!

今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等&#xff0c;设置经线、纬线都以10间隔显示。 2、需要插入背会归线&#xf…...