软件架构概念和面向服务的架构

2023-05-16

摘要

软件架构作为软件开发过程的一个重要组成部分,有着各种各样的方法和路线图,它们都有一些共同的原则。基于架构的方法作为控制系统构建和演化复杂性的一种手段得到了推广。

引言

在计算机历史中,软件变得越来越复杂。也提出了许多方法来解决不同层次的复杂性,例如“结构化编程”[1],以及Fred Brooks的“概念完整性”思想[2]。软件生命周期的设计阶段通常分为高层设计和详细设计。架构将有助于描述软件,这就产生了“软件架构”一词。软件架构的概念已经成为解决高度复杂问题的设计方案。在1994年底,Denning和Dargan为一个新的软件学科提出了“软件架构”[3]。Garlan和Shaw在1996年指出“明确关注架构作为软件设计的一个独立层次是相对较新的”,因此他们的书的副标题是“对一门新兴学科的展望”[4]。面向服务的架构(SOA)是一种模块化服务的架构。然后,可以将这些服务的集合与业务流程协调起来,可以以各种形式重新组合这些服务,以实现新的或改进的业务流程。SOA的新颖之处在于,它能够更灵活地为服务提供者和使用者选择技术实现。抽象服务接口还允许供应商和消费者独立发展,只要接口保持稳定[5]。SOA的好处主要来自于:接口服务的稳定性。与系统更改的总百分比相比,这种稳定性在实现服务的开发过程中将服务与使用者隔离开来。这种隔离限制了变更的范围和后续修订的成本。如果能够重用现有的服务,就可以借用更多的优势。重用避免了重新实现或修改封装在服务中的功能[5]。

软件架构

软件架构是设计系统、解决问题或满足需求的“第一步”。软件架构的真正含义是,它实际上是一种计划资产,用于指导企业信息基础设施的选择、构建、修改和完美使用,以实现所需的业务未来状态。架构涉及架构元素的选择、它们之间的相互作用以及对这些元素及其相互作用的约束,它还可以被视为用于解决问题框图和线条图。

  • 框定义系统的元素或“组件”。
  • 线定义了零件之间的相互作用。
    要提供一个框架,以满足要求,并作为设计的基础。设计的一般含义是,设计涉及到设计元素的模块化和详细的接口,它们的算法和过程,以及支持架构和满足需求所需的数据类型[6]。因此需要考虑一下内容:
  • 业务的当前和未来愿景。
  • 包括投资选择在内的质量决策。
  • 以符合业务运营的经济高效的方式使用软件。
  • 减少冗余。
  • 重用信息和软件组件。
  • 利用新的技术解决方案。
  • 共享系统和数据。
  • 跨企业集成。
  • 共同标准。
  • 减少应用程序接口的数量。
  • 缺失数据的识别和规划。

软件架构通常在需求和实现之间起着桥梁的作用(见图1)。通过提供系统的抽象描述,架构公开某些属性,同时隐藏其他属性。软件架构至少可以在软件开发的六个方面发挥重要作用[7]。
在这里插入图片描述
图1

  • 理解:软件架构简化了我们理解大型系统的能力,方法是将它们呈现在一个抽象的层次上,在这个层次上,系统的高级设计很容易理解。
  • 重用:架构描述支持多层次的重用。当前关于重用的工作主要集中在组件库上。此外,架构设计既支持大型组件的重用,也支持将组件集成到其中的框架。
  • 构造:架构描述通过指出主要组件及其之间的依赖关系,为开发提供部分蓝图。
  • 演化:软件架构可以揭示系统演化的维度。通过明确系统的“承重墙”,系统维护人员可以更好地理解变更的后果,从而更准确地估计修改的成本。
  • 分析:架构描述为分析提供了新的机会,包括系统一致性检查[8]、[9]、与架构样式施加的约束的一致性[10]、与质量属性的一致性[11]、依赖性分析[12]以及针对特定样式中构建的架构的特定领域分析[13]。
  • 管理:经验表明,成功的项目将实现可行的软件架构视为工业软件开发过程中的一个关键里程碑。对架构的批判性评估通常会导致对需求、实现策略和潜在风险的更清晰理解[14]。

在导致架构不成功的各种因素有,缺乏足够的架构能力和/或经验,在架构设计和分析上花费了足够的时间,无法恰当地记录和传达架构,认识到“标准不能替代软件架构”,充分理解架构和实现之间的直接关系,随着架构的发展更新文档等[15]。

面向服务的架构

SOA是一种按需连接业务和计算资源(主要是组织、应用程序和数据)的设计,以实现服务使用者(可以是最终用户或其他服务)所需的结果。OASIS1[16]将SOA定义为:一种组织和利用分布式功能的范例。它提供了一种统一的方法来提供、发现、交互和使用能力,以产生符合可测量的前提条件和期望的预期效果。
面向服务的架构(SOA)是20世纪90年代基于组件的架构、基于接口的设计(面向对象)和分布式系统的发展,如DCOM[17]、CORBA[18]、J2EE[19]和Internet。

在分析SOA的细节之前,首先探讨软件架构的概念是很重要的,它由软件的粗粒度结构组成。软件架构描述了系统的组件以及它们在高层的交互方式。这些组件不一定是实体bean或分布式对象。它们是作为一个单元部署到带有其他组件的服务器上的抽象软件模块。组件之间的交互称为连接器。组件和连接器的配置描述了系统的结构和行为方式,如图2所示。
在这里插入图片描述
图2

面向服务的架构是一种特殊的软件架构,具有许多独特的特点。对于服务设计者和开发人员来说,理解SOA的概念非常重要,这样他们就可以在自己的环境中最有效地使用Web服务。SOA是一个相对较新的术语,但与软件服务相关的术语“服务”至少在20世纪90年代初就出现了,当时它在Tuxedo中被用来描述“服务”和“服务过程”[20]。图3显示了可以使用其他技术来实现面向服务的架构。
在这里插入图片描述

图3

每个系统的软件架构反映了设计者使用的不同原则和权衡。面向服务的软件架构具有以下特征[21]:

1、可发现和动态绑定:SOA支持服务发现的概念。需要服务的服务使用者在运行时根据一组条件发现要使用的服务。服务使用者要求注册中心提供满足其需要的服务。

2、自包含和模块化:服务是自包含和模块化的。SOA最重要的方面之一是模块化的概念。服务支持一组接口。这些接口应该是内聚的,这意味着它们都应该在模块的上下文中相互关联。在设计支持应用程序的服务时,应该遵循模块化原则,这样服务就可以很容易地聚合到具有一些众所周知的依赖关系的应用程序中。因为在创建服务时这是一个非常重要的概念,所以我们将解释模块化的一些原则,特别是它们如何应用于服务的创建。Bertrand Meyer[22]概述了确定组件是否具有足够模块化的以下五个标准。当确定服务是否足够模块化时,这些标准同样适用。

  • 模块化可分解性:服务的模块化可分解性是指将一个应用程序分解为许多更小的模块。每个模块负责应用程序中的一个单独的、不同的功能。这有时被称为“自顶向下的设计”,在这种设计中,较大的问题被迭代地分解成较小的问题。可分解性的主要目标是可重用性。服务设计的目标是确定可在不同上下文中重用的最小软件单元。
  • 模块化可组合性:服务的模块化可组合性是指软件服务的生产,这些服务可以作为一个整体与其他服务自由组合以生产新的系统。服务设计人员应该创建足够独立的服务,以便在完全不同的应用程序中重用,而这些应用程序与它们最初的目的完全不同。这有时被称为自下而上的设计。
  • 模块化可理解性:服务的模块化可理解性是一个人在不了解任何其他服务的情况下理解服务功能的能力。例如,如果银行应用程序实现了一个支票账户服务,该服务不实现存款功能,而是依赖于客户机使用一个单独的存款服务;这将降低该服务的模块化可理解性。
  • 模块化连续性:服务的模块化连续性是指一个服务中的更改对其他服务或服务使用者的影响。如果接口没有充分隐藏服务的实现细节,则在需要更改时会产生多米诺效应。当服务的内部实现发生更改时,它将需要更改使用该服务的其他服务和应用程序。每个服务都必须隐藏有关其内部设计的信息。公开此信息的服务将限制其模块化的连续性,因为内部设计决策是通过接口公开的。
  • 模块化保护:如果服务中的异常情况没有级联到其他服务或使用者,那么服务的模块化保护就足够了。

3、互操作性:面向服务的架构强调互操作性,即使用不同平台和语言的系统相互通信的能力。

4、松散耦合:耦合是指模块之间依赖的数量。联轴器有两种类型:松式和紧式。松散耦合的模块有一些众所周知的依赖关系。紧耦合模块有许多未知的依赖关系。每个软件架构都力求实现模块之间的松散耦合。面向服务的架构促进了服务使用者和服务提供者之间的松散耦合,以及消费者和提供者之间的一些众所周知的依赖关系。

5、位置透明性:位置透明性是面向服务架构的一个关键特性。服务的使用者直到在注册表中找到服务时才知道它的位置。运行时对服务的查找和动态绑定允许服务实现在客户端不知情的情况下从一个位置移动到另一个位置。移动服务的能力提高了服务可用性和性能。通过使用负载均衡器将请求转发到多个服务实例而服务客户机不知情,我们可以获得更高的可用性和性能。

6、可组合性:服务的可组合性与其模块化结构有关。模块化结构允许将服务组装到开发人员在设计服务时不知道的应用程序中。使用预先存在的、经过测试的服务极大地提高了系统的质量,并且由于易于重用而提高了投资回报率。服务可以用三种方式组合:应用程序组合、服务联合和服务编排。

  • 应用程序:通常是服务、组件和应用程序逻辑的集合,它们将这些功能绑定在一起以实现特定的目的。
  • 服务联合:是在更大的服务域中一起管理的服务集合。例如,支票账户服务、储蓄账户服务和客户服务可以组成更大的银行账户服务。
  • 服务编排:是执行影响组织中一个或多个服务的单个事务。它有时被称为业务流程。它由多个步骤组成,每个步骤都是服务调用。如果任何服务调用失败,整个事务应该回滚到事务执行之前的状态。

对于要组合到事务应用程序、联合或编排中的服务,服务方法本身应该是子事务的。也就是说,它们不能自己执行数据提交。

7、自我修复:随着现代分布式应用程序的规模和复杂性,系统从错误中恢复的能力变得越来越重要。自愈系统是一种在执行过程中无需人工干预就能从错误中恢复的系统。

可靠性实际上衡量系统在受到干扰时的性能。在面向服务的架构中,服务将不时地上下浮动。这对于通过互联网上多个组织的服务组装的应用程序尤其如此。系统自愈的程度取决于几个因素。可靠性取决于硬件从故障中恢复的能力。网络还必须允许在运行时动态连接到不同的系统。现代互联网网络协议固有地提供了这种能力。

一种人工智能平台架构

在这里插入图片描述

结论

在过去的十年中,软件架构作为一门学科正在兴起[7]。系统软件架构在较高的层次上描述了它的粗粒度结构和属性。只要该技术考虑到这些结构和属性,就可以使用该技术实现架构。例如,Jini是一种支持面向服务架构的技术,因为SOA的属性。充分利用软件架构这一新技术的概念对于应用软件架构是非常重要的。面向服务的架构是通过Web服务和其他技术实现的,但是由于Web服务的出现,这些术语和概念最近得到了广泛的应用。例如,二十年来,计算机行业一直被用来描述各种平台。SOA的一些特性得到了一些比其他技术更好的支持。

参考文献
[1] O. J. Dahl, E. W. Dijkstra, and C. A. Hoare, Structured Programming. Academic Press, 1972.
[2] F. P. Brooks, The Mythical Man-Month: Essays On Software Engineering, Anniversary Edition. Addison-Wesley, 1995.
[3] P. J. Denning and P. A. Dargan, “A discipline of software architecture,” interactions, vol. 1, no. 1, pp. 55–65, 1994.
[4] M. Shaw and D. Garlan, Software Architecture: Perspectives on an Emerging Discipline. Prentice- Hall, 1996.
[5] P. Brown, Implementing soa: total architecture in practice. AddisonWesley Professional, 2008.
[6] D. E. Perry and A. L. Wolf, “Foundations for the study of software architecture,” ACM SIGSOFT SOFTWARE ENGINEERING NOTES,
vol. 17, no. 4, October 1992.
[7] D. Garlan, “Software architecture: a roadmap,” in ICSE ’00: Proceedings of the Conference on The Future of Software Engineering. New York,
NY, USA: ACM, 2000, pp. 91–101.
[8] R. Allen and D. Garlan, “Formalizing architectural connection,” in ICSE’94: Proceedings of the 16th International Conference on Software Engineering, Sorrento, Italy, May 1994, pp. 71–80.
[9] D. C. Luckham, L. M. Augustin, J. J. Kenny, J. Veera, D. Bryan, and W. Mann, “Specification and analysis of system architecture using rapide,” IEEE Transactions on Software Engineering, vol. 21, no. 4, pp. 336–355, April 1995.
[10] G. Abowd, R. Allen, and D. Garlan, “Using style to understand descriptions of software architecture,” in SIGSOFT ’93: Proceedings of the 1st ACM SIGSOFT symposium on Foundations of software engineering. New York, NY, USA: ACM, 1993, pp. 9–20.
[11] P. Clements, L. Bass, R. Kazman, and G. Abowd, “Predicting software quality by architecture-level evaluation,” in Proceedings of the Fifth International Conference on Software Quality, Austin, Texas, October 1995.
[12] J. A. Stafford, D. J. Richardson, and A. L. Wolf, “Aladdin: A tool for architecture-level dependence analysis of software,” University of Colorado at Boulder, Technical Report CU-CS-858-98, April 1998.
[13] L. Coglianese and R. Szymanski, “Dssa-adage: An environment for architecture-based avionics development,” in AGARD’93, 1993.
[14] B. Boehm, P. Bose, E. Horowitz, and M. J. Lee, “Software requirements negotiation and renegotiation aids: A theory-w based spiral approach,” in ICSE ’95: Proceedings of the 17th international conference on Software engineering. New York, NY, USA: ACM, 1995, pp. 243–253.
[15] L. Northrop, “Software architecture and product quality,” Presentation for the Boston SPIN, Software Engineering Institute, Carnegie Mellon University, May 2003.
[16] Organization for the advancement of structured information standards. [Online]. Available: http://www.oasis-open.org
[17] Distributed component object model. [Online]. Available: www.microsoft.com/com
[18] Corba basics frequently asked questions. [Online]. Available: www.omg.org/gettingstarted/corbafaq.htm
[19] Java EE at a glance. [Online]. Available: http://java.sun.com/j2ee
[20] P. Herzum, “Web services and service-oriented architectures,” Cutter Distributed Enterprise Architecture Advisory Service, Executive Report, 2002.
[21] G. Bieber and J. Carpenter, “Introduction to service-oriented programming,” Online whitepaper: www.openwings.org/download/specs, 2001.
[22] B. Meyer, Object Oriented Software Construction, 2nd ed., ser. International Series in Computer Science. Prentice-Hall, 1997.
[23] United nations centre for trade facilitation and electronic business. [Online]. Available: http://www.unece.org/cefact

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件架构概念和面向服务的架构 的相关文章

  • ROS中package.xml文件标签

    原地址 xff1a https www cnblogs com qixianyu p 6669687 html 目录 概述格式2 xff08 推荐 xff09 基本结构所需标签依赖关系Metapackages附加标签格式1 xff08 遗产
  • Linux驱动开发(十七)---树莓派PWM驱动

    前文回顾 Linux驱动开发 xff08 一 xff09 环境搭建与hello world Linux驱动开发 xff08 二 xff09 驱动与设备的分离设计 Linux驱动开发 xff08 三 xff09 设备树 Linux驱动开发 x
  • Gazebo仿真中.sdf/.world文件标签

    sdf 文件 详细代码 xff1a lt xml version 61 34 1 0 34 gt lt sdf version 61 34 1 5 34 gt lt model name 61 34 cafe 34 gt lt static
  • Jetson TX2核心板系统烧录、烧写

    1 从官网https developer nvidia com embedded jetpack 中下载sdkmanager xff0c 需登录事先在官网注册的账号 xff08 免费 xff09 xff0c 但Jetpack4 3版本一直无
  • C语言实现汉诺塔详细步骤(递归与非递归)及代码

    前言 C语言汉诺塔问题是一个经典的问题 xff0c 在学习编程的初学者中非常流行 它涉及到了递归的思想 xff0c 能够帮助我们理解递归的基本原理 首先 xff0c 我们来了解一下汉诺塔的问题 汉诺塔问题是指 xff1a 有三根柱子A B
  • C语言 | 输出月份的英文

    要成为绝世高手 xff0c 并非一朝一夕 xff0c 除非是天生武学奇才 xff0c 但是这种人 万中无一 包租婆 这道理放在C语言学习上也一并受用 在编程方面有着天赋异禀的人毕竟是少数 xff0c 我们大多数人想要从C语言小白进阶到高手
  • C语言实例:3个数从小到大排序

    需求 任意输入3个整数 xff0c 对这3个整数由小到大进行排序 xff0c 并将排序后的结果输出 源码 64 author 冲哥 64 date 2021 5 7 13 37 64 description 实现对这3个整数由小到大进行排序
  • C 预处理指令

    C 预处理指令 C语言 C 语言的预处理器 用于在编译器处理程序之前预扫描源代码 xff0c 完成头文件的包含 宏扩展 条件编译 行控制 xff08 line control xff09 等操作 编译的四个阶段 C语言标准规定 xff0c
  • c语言怎么输入3个数输出最大值

    方法 xff1a 首先使用scanf 接收从键盘输入的三个数 xff1b 然后使用 if else 语句比较三个数的大小 xff0c 获得最大值 xff1b 最后使用print 函数将最大值输出即可 c语言输入3个数输出最大值 includ
  • C 运算符中不能重载的是哪些

    C 运算符中不能重载的有 xff1a 1 条件运算符 xff1b 2 成员访问运算符 xff1b 3 域运算符 xff1b 4 长度运算符 sizeof xff1b 5 成员指针访问运算符 gt 和 重载 xff1a 让操作符可以有新的语义
  • scanf在c语言中的作用是什么?

    scanf 函数 scanf 是C语言中的一个输入函数 与printf函数一样 xff0c 都被声明在头文件stdio h里 xff0c 因此在使用scanf函数时要加上 include xff08 在有一些实现中 xff0c printf
  • C语言中字符串的结束标志是什么

    C语言中字符串的结束标志是 39 0 39 C语言中没有专门的字符串变量 xff0c 通常用一个字符数组来存放一个字符串 xff0c 字符串总是以 39 0 39 作为结束符 39 0 39 就是8位的00000000 xff0c 因为字符
  • Linux驱动开发(十八)---网络(网卡)驱动学习

    前文回顾 Linux驱动开发 xff08 一 xff09 环境搭建与hello world Linux驱动开发 xff08 二 xff09 驱动与设备的分离设计 Linux驱动开发 xff08 三 xff09 设备树 Linux驱动开发 x
  • c语言源文件经过编译后生成文件的后缀是什么?

    c语言源文件经过编译后 xff0c 生成文件的后缀是 obj C语言源文件后缀名是 c xff0c 编译生成的文件后缀名是 obj xff0c 连接后可执行文件的后缀名是 exe C语言创建程序的步骤 xff1a 编辑 xff1a 就是创建
  • C语言strcmp函数用法

    C语言strcmp函数用法 strcmp函数语法为 int strcmp char str1 char str2 xff0c 其作用是比较字符串str1和str2是否相同 xff0c 如果相同则返回0 xff0c 如果不同 xff0c 前者
  • C++ 空指针和野指针

    点击蓝字 关注我们 来源于网络 xff0c 侵删 1 空指针 指针变量指向内存中编号为0的空间为空指针 空指针指向的内存空间是不可以访问的 代码 xff1a include lt iostream gt using namespace st
  • 如何用C++实现动态放烟花(附源码)

    点击蓝字 关注我们 来源于网络 xff0c 侵删 一 前言 C 43 43 实现的放烟花程序 用到了EGE图形库 xff0c 没有的需要自行安装 可调项 xff1a 背景图和背景音乐 粒子模糊度 亮度以及上升速度的参数 实现的动态烟花非常好
  • C语言内存泄漏问题及其检视方法

    点击蓝字 关注我们 来源于网络 xff0c 侵删 通过介绍内存泄漏问题原理及检视方法 xff0c 希望后续能够从编码检视环节就杜绝内存泄漏导致的网上问题发生 本文通过介绍内存泄漏问题原理及检视方法 xff0c 希望后续能够从编码检视环节就杜
  • C语言进阶之 回调函数详解

    点击蓝字 关注我们 因公众号更改推送规则 xff0c 请点 在看 并加 星标 第一时间获取精彩技术分享 来源于网络 xff0c 侵删 在讲回调函数之前 xff0c 我们需要了解函数指针 我们都知道 xff0c C语言的灵魂是指针 xff0c
  • C语言和C++的区别和联系,大多数人都说错了

    点击蓝字 关注我们 因公众号更改推送规则 xff0c 请点 在看 并加 星标 第一时间获取精彩技术分享 来源于网络 xff0c 侵删 C语言和C 43 43 到底是什么关系 xff1f 首先C 43 43 和C语言本来就是两种不同的编程语言

随机推荐

  • 深入理解C语言中的malloc,malloc() 与 free() 原理图解

    点击蓝字 关注我们 因公众号更改推送规则 xff0c 请点 在看 并加 星标 第一时间获取精彩技术分享 来源于网络 xff0c 侵删 本文分为三个等级自顶向下地分析了glibc中内存分配与回收的过程 本文不过度关注细节 xff0c 因此只是
  • C语言项目:灰度处理技术

    Hello xff0c 今天给大家带来的是一个比较简单的图形处理技术 灰度处理技术 那么到底什么是灰度处理技术呢 xff1f 简单来说 xff0c 所谓的灰度处理技术就是把一张彩色的图片变成一张灰色的图片 如下图所示 xff0c 左边是原图
  • React Native重启APP

    有时会用到APP重启操作 xff0c 比如更新代码或者特殊情况的用户注销 0 62及以上版本 只重启JS部分 import DevSettings from 39 react native 39 DevSettings reload 详细请
  • 树莓派3 Ubuntu系统 SD卡或U盘启动

    之前先用SD卡装过Ubuntu系统后 xff0c 用着用着SD卡满了 xff0c 就拿了个U盘来重装一遍 xff0c 发现U盘按照SD卡那样的流程安装之后 xff0c 树莓派配置成可以U盘启动 xff0c 再修改刻录好的U盘里的两个文件就可
  • 手把手教你安装黑苹果之openCore-0.6.3 EFI制作全过程,非常详细

    文章目录 前言一 EFI是什么 xff1f 二 获取EFI1 Hackintosh黑苹果长期维护机型整理清单2 搜索efi 二 自制EFI1 OC Gen X图形化一键自动生成EFI 推荐 2 手动下载EFI所需要的文件下载哪些文件下载op
  • OpenCore 启动菜单界面美化增加gui界面

    前言 OpenCore 默认启动界面是类似于命令行一样的黑乎乎的界面 习惯了clover华丽的启动界面的小伙伴可能不适应了 甚至我之前以为OpenCore启动界面就是这样的不能变呢 xff1f 第一次看到感觉还是clover讨喜 其实Ope
  • secoclient全版本下载分享

    前言 工作需要使用 secoclient xff0c 同事们大多都用 Windows环境 客户提供的客户端也是Windows版本的 这就让使用Mac几个同事难受啦 用Windows虚拟机 xff1f 根据我的经验 xff0c 一般的VPN客
  • Centos升级ruby

    CentOS7 安装的ruby默认版本是 xff1a ruby v span class token punctuation span 11 43 53 span class token punctuation span ruby 2 0
  • Windows 11下载

    Windows 11是微软于2021年推出的Windows NT系列操作系统 xff0c 为Windows 10的后继者 正式版本于2021年10月5日发行 xff0c 并开放给符合条件的Windows 10设备通过Windows Upda
  • docker容器安装图形桌面

    文章目录 视频教程版本信息创建一个CONTAINERubuntu官方国内源docker镜像unminimize中文环境设置中文环境 安装安装TigerVNC Server安装 xfce4精简版本 配置设置vnc密码 vnc xstartup
  • ubuntu官方国内源

    背景 之前我一直在使用中科大的源 xff0c 还是挺快的 一直也没有感觉有什么问题 直到最近在折腾vnc xff0c 发现中科大的源有一些包会404 xff0c 安装不了 而我在vmware中的正好是默认的cn archive ubuntu
  • mame新版ROM下载网站推荐

    网站地址 https www retroroms info index php 中文插件安装 浏览器插件 https www tampermonkey net UP主自己写的脚本 已经失效 https gitee com lxyoucan
  • RuoYi若依打包发布与部署

    上一节我们已经讲过了如果搭建开发环境 xff0c 那么如果代码写完了 xff0c 如何打包发布 部署到生产环境呢 xff1f RuoYi开发实战 搭建开发环境 https blog csdn net lxyoucan article det
  • vscode设置Prettier为默认格式化插件

    1 目的 xff1a ctrl 43 s保存 xff0c 自动格式化文档 2 所需插件Prettier 3 操作步骤 先打开vscode软件 xff0c 左下角点击设置 gt 打开设置 gt 在右上方有一个搜索框 先设定自动保存文件 xff
  • ASUS X415安装系统找不到硬盘解决办法

    同事让我帮忙安装系统 xff0c 笔记本电脑型号是ASUS X415 原本以为是手到擒来的事情 xff0c 结果我在上面还是消耗了不少时间 现象 老毛桃PE 无法识别到硬盘 微PE可以识别到硬盘 xff0c 但是系统安装以后 xff0c 无
  • archlinux中navicat无法使用fcitx5输入法

    现象 archlinux中navicat无法使用fcitx5输入法 而我在ubuntu中使用navicat调用fcitx输入法是可以正常使用的 在网上搜索了很久 xff0c 这方面的文章比较少 而我的其他程序输入法又是正常的 解决办法 参考
  • JetBrains Gateway IDEA远程开发

    为什么进行远程开发 xff1f 无论身处何处数秒内连接至远程环境 充分利用远程计算机的强大功能 在任何笔记本电脑上都可以轻松工作 xff0c 无论其性能如何 借助远程计算机的计算资源 xff0c 充分利用最大规模的数据集和代码库 在远程服务
  • ubuntu 22.04安装nvm

    执行安装脚本 span class token function sudo span span class token function apt span span class token function install span spa
  • 手推DNN,CNN池化层,卷积层反向传播

    反向传播算法是神经网络中用来学习的算法 xff0c 从网络的输出一直往输出方向计算梯度来更新网络参数 xff0c 达到学习的目的 xff0c 而因为其传播方向与网络的推理方向相反 xff0c 因此成为反向传播 神经网络有很多种 xff0c
  • 软件架构概念和面向服务的架构

    摘要 软件架构作为软件开发过程的一个重要组成部分 xff0c 有着各种各样的方法和路线图 xff0c 它们都有一些共同的原则 基于架构的方法作为控制系统构建和演化复杂性的一种手段得到了推广 引言 在计算机历史中 xff0c 软件变得越来越复