软件体系结构复习

2023-12-27 04:52
文章标签 复习 软件体系结构

本文主要是介绍软件体系结构复习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

复习参考:
一文搞懂什么是RESTful API
九种常见UML图

企业级软件开发的基本概念

  • 软件架构:在设计和构建软件系统时采用的基本结构和原则。
    它涉及到对软件系统进行模块化、组织和分解的方式,以及不同模块之间的交互和通信方式。
  • 在软件设计中,架构域包括:
    • 业务架构:定义了软件系统和 业务目标&需求 的对应关系,包括业务流程、业务规则和业务逻辑等。
      在这里插入图片描述

    • 数据架构:涉及数据的组织、存储和管理方式,包括数据模型、数据库设计和数据访问策略等。
      在这里插入图片描述

    • 产品架构:关注软件的功能和特性,以满足用户需求。产品架构通常从用户体验、功能模块和交互设计等方面进行考虑。

    • 应用架构:描述软件系统的不同组件和模块之间的关系和通信方式,包括应用程序的整体结构、模块划分和接口设计等

    • 技术架构:涉及软件系统的基础设施和技术选择,包括编程语言、开发框架、数据存储和部署架构等。

  • 软件架构:
    • 根据问题确定系统边界
    • 按一定原则进行划分
    • 建立不同模块间的沟通机制
    • 整体性交付软件功能

在这里插入图片描述

企业级软件架构特征

  • 企业级应用:指那些为商业组织、大型企业而创建并部署的解决方案和应用。
    这些大型企业级应用的结构复杂,涉及的外部资源众多、事务密集、数据量大、用户数多,有较强的安全性顾虑。
  • 企业级软件要解决的特殊问题(背景:企业级软件要承受数据量、业务量不断增加的压力):
    • 伸缩性:指企业级应用能承受日益增长的业务量。
      要求企业级应用程序能够扩展以满足新的需求,这种扩展有功能上的扩展,也有用户群的扩展。当网上潜在的有上百万的用户同时使用某个特定的应用时,应用程序不仅要处理大量的客户的请求,还要有效使用系统资源。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    • 安全性:
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    • 异构和互通
      在这里插入图片描述
      在这里插入图片描述

    • 分布式
      在这里插入图片描述

spring框架核心概念

J2EE简介

  • Java VS Java EE:两个不同概念,Java不只是指一种语言,已经代表与微软不同的另外一个巨大阵营,所以Java有时是指一种软件系统的流派,目前主要是.NET和Java两大主流体系。
  • J2EE:
    Open and standard based platform for developing, deploying and managing n-tier, Web-enabled, server-centric enterprise applications
    开放的、基于标准的平台,用以开发、部署和管理N层结构、面向Web的,以服务器为中心的企业级应用
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 框架的用处:
    • 为组件运行提供基础服务
    • 为组件开发提供基础类
    • 实现了组件之间的隔离
    • 支持组件间的协作
    • 管理组件生命周期
    • 运行于容器之内
      在这里插入图片描述

Java EE开发平台大致分为两种方式:
(1)以Spring为核心的轻量级Java EE企业开发平台。
(2)以EJB3+JPA为核心的经典Java EE开发平台。

  • Spring
    • 是一个开源框架.
    • Spring 为简化企业级应用开发而生. 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能.
    • Spring 是一个 IOC(DI) 和 AOP 容器框架.

Spring Boot概述

在这里插入图片描述
spring boot的优势就是“习惯优于配置”(将原来项目中大量的配置内容,全部剔除掉,让你无须手动进行配置,即可轻松开发)的理念让项目快速运行起来,使用spring boot很容易创建一个独立运行(运行jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,使用spring boot你可以不用或者只需要很少的spring配置

习惯优于配置:若所用工具的约定和你的期待相符,就可以省去配置;不符合的话,就要通过相关的配置来达到你所期待的结果

  • spring boot的优点:
    A:快速构建项目
    使用Spring Boot,只需20行左右的代码即可生成一个基本的Spring Web应用, Spring Boot提供自动化配置,使用Spring Boot,你只需编写必要的代码和配置必须的属性
    B:对主流开发框架的无配置集成
    C:项目可独立运行,无须外部依赖Servlet容器
    内置了tomcat,构建的Jar包通过java -jar就可以直接运行。
    D:极大的提高了开发、部署效率
    E:与云计算、微服务的天然集成
    Spring Boot非常契合微服务的概念,可以结合Spring Boot与Spring Cloud和Docker技术来构建微服务并部署到云端

Spring框架核心概念

Spring框架总览:在这里插入图片描述
Java EE逻辑结构图:
在这里插入图片描述

Spring是一种非常完整的技术,即使只使用Spring技术也能实现项目的开发。但是在实际开发中我们只是让Spring做业务逻辑层,因为Spring的业务处理能力是非常强大的。简单来说,Spring就是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
在这里插入图片描述
控制反转(IoC=Inversion of Control)IoC,用白话来讲,就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:(依赖)控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。

  • IoC也称为好莱坞原则(Hollywood Principle):“Don’t call us, we’ll call you”。即,如果大腕明星想演节目,不用自己去找好莱坞公司,而是由好莱坞公司主动去找他们(当然,之前这些明星必须要在好莱坞登记过)。
  • 依赖注入:即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。

在Spring中,bean是由Spring IoC容器来进行实例化、组装并受其管理的对象。Bean和它们 之间的依赖关系反映在窗口使用的配置元数据中。

  • 面向接口编程
    • 什么是接口?
      接口定义了行为的协议,这些行为在继承接口的类中实现。
      接口定义了很多方法,但是没有实现它们。类履行接口协议并实现所有定义在接口中的方法。
      接口是一种只有声明没有实现的特殊类。

    • 接口的优点:
      Client不必知道其使用对象的具体所属类。
      一个对象可以很容易地被(实现了相同接口的)的另一个对象所替换。
      对象间的连接不必硬绑定(hardwire)到一个具体类的对象上,因此增加了灵活性。
      松散藕合(loosens coupling)。
      增加了重用的可能性。

    • 接口的缺点:
      设计的复杂性略有增加

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • Spring 支持 3 种依赖注入的方式
    • 属性注入
    • 构造器注入
    • 工厂方法注入(很少使用,不推荐)
  • Spring Boot中的bean及依赖注入
    • 使用注解注册bean
      @Component , @Repository , @ Controller ,@Service , @Configration这些注解都是把你要实例化的对象转化成一个Bean,放在IoC容器中,等你要用的时候,它会和上面的@Autowired , @Resource配合到一起,把对象、属性、方法完美组装。
    • 使用注解注入bean
      配置好的Bean拿来用,完成属性、方法的组装;比如@Autowired , @Resource,可以通过byTYPE(@Autowired)、byNAME(@Resource)的方式获取Bean;
      @Autowired可以标注在属性上、方法上和构造器上,来完成自动装配。默认是根据属性类型,spring自动将匹配到的属性值进行注入。
    • 启用自动配置
      在主类(启动类)中使用@SpringBootApplication
      很多Spring Boot开发者总是在主类上添加@Configuration、@EnableAutoConfiguration和@ComponentScan。因为这些注解经常一起使用,Spring Boot提供了一个方便的替代方案:@SpringBootApplication。
      @SpringBootApplication =@ Configuration +@ EnableAutoConfiguration+@ ComponentScan ,
      这一个注解代替了这三个注解;
      @Configuration 和 @bean 注入定义了一个实体类;
      @EnableAutoConfiguration 启用了上下文自动配置;
      @ComponentScan 扫描指定的包,若未指定值,默认扫包范围:被注释的 class所在的包;
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

IOC操作Bean管理,bean管理是指(1)spring创建对象 (2)spring注入属性。当我们在将一个类上标注@Service或者@Controller或@Component或@Repository注解之后,spring的组件扫描就会自动发现它,并且会将其初始化为spring应用上下文中的bean

Spring MVC模式

  • MVC模式完全实现了页面表示和业务逻辑的分离。
  • MVC模式的优势之一就在于三层各施其职,互不干涉。
  • MVC模式也有它的缺点,其一就是由于它没有明确的定义,所以完全理解MVC并不容易。
    在这里插入图片描述
  • 基于Spring Boot的MVC模式
    在 Spring Boot MVC 中,Web 自动化配置会帮你减少上面的步骤。默认使用的视图是 ThymeLeaf,
  1. 编写预定义的处理请求控制器
  2. 编写默认 ThymeLeaf 视图对象
    在这里插入图片描述
  • 控制器是控制请求接收和负责响应到视图的角色,接收和处理客户端的请求
    spring通过注解控制器类,加载特定的控制器。
    在这里插入图片描述

视图技术

在这里插入图片描述
在这里插入图片描述
Thymeleaf最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个Web应用
在这里插入图片描述

  • jsp
    优点:
    1、功能强大,可以写java代码
    2、支持jsp标签(jsp tag)
    3、支持表达式语言(el)
    4、官方标准,用户群广,丰富的第三方jsp标签库
    5、性能良好。jsp编译成class文件执行,有很好的性能表现
    缺点:
    由于可以编写java代码,耦合性高,如使用不当容易破坏mvc结构。
  • thymeleaf
    优点:
    1、页面可被浏览器正确显示
    2、开发者只需将标签添加到属性中
    3、扩展性非常好,可以自定义模板属性集合
    4、官方标准,用户群广,丰富的第三方jsp标签库
    5、性能比jsp好,SpringBoot 官方推荐使用
    缺点:
    模板必须符合xml 规范。

在这里插入图片描述

  • th:each迭代循环
    1)th:each中迭代对象的类型
    迭代对象可以是java.util.List,java.util.Map,数组等数据类型;
    2)th:each循环迭代的基本语法
    th:each="obj,iterStat:${objList}”
    3)使用循环迭代的常用html标签元素有哪些?
    可以在div、tr、li等标签元素中使用;
    在这里插入图片描述

数据持久化

ORM基本概念

对象关系映射(Object Relational Mapping,简称ORM)模式是为了解决面向对象和关系数据库存在的互不匹配的现象的技术。
换言之,ORM是通过使用描述对象和数据库之间映射的元数据,把程序中的对象自动持久化到关系数据库中。
ORM和关系型数据库 构造 伪面向对象数据库系统
在这里插入图片描述
ORM把数据库映射成对象
在这里插入图片描述

JPA简介

Java Persistence API,就是java持久化api。
JPA是ORM规范,Hibernate、TopLink等是JPA规范的具体实现,这样的好处是开发者可以面向JPA规范进行持久层的开发,而底层的实现则是可以切换的。Spring Data Jpa则是在JPA之上添加另一层抽象(Repository层的实现),极大地简化持久层开发及ORM框架切换的成本。
在这里插入图片描述
JPA组成:
在这里插入图片描述

  • 实体类
    • 实体是轻量级的持久化域对象。
    • 通常,实体表示关系数据库中的表,并且每个实体实例对应于该表中的行(记录-》对象)
    • 实体的主要编程工件是实体类,尽管实体可以使用辅助类
      在这里插入图片描述

在这里插入图片描述

Spring -Data-JPA

在这里插入图片描述
在这里插入图片描述

MyBatis

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

流程图

在这里插入图片描述

软件架构模式

体系结构简称为架构或构架

软件架构的基本概念

软件架构也称为软件体系结构。

  • 软件体系结构定义了软件局部和总体 计算部件的构成,以及这些部件之间的相互作用关系。
    体系结构=组件+连接件+约束

在这里插入图片描述

常用软件架构

在这里插入图片描述

单体结构

在这里插入图片描述

分层架构

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

微服务集群结构

在这里插入图片描述
负载均衡:
在这里插入图片描述
session共享:
在这里插入图片描述
在这里插入图片描述

分布式结构

在这里插入图片描述
在这里插入图片描述

微服务架构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

serverless

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

前后端分离

在这里插入图片描述
在这里插入图片描述

前后端未分离

在这里插入图片描述
在这里插入图片描述

前后端半分离

在这里插入图片描述

前后端分离

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

docker

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
docker相比虚拟机更为轻量,不会去模拟底层硬件,只会为每一个应用提供一个完全隔离的运行环境

在这里插入图片描述

在这里插入图片描述
docker常用操作:
A)获取镜像 docker pull ***
B)删除指定镜像 docker rmi ***
C)查看所有镜像 docker images
D)新建并启动容器 docker run ***
E)启动容器 docker start ***
F)停止容器 docker stop ***

nginx

nginx基础知识

在这里插入图片描述

nginx常用命令

在这里插入图片描述

在这里插入图片描述

nginx核心功能配置

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 正向代理vs反向代理:
    • 正向代理(代理的客户端client):人可以感知到,但服务器感知不到
    • 反向代理(代理的服务端server):人不可以感知到,但服务器可以感知到
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

redis

redis简介

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

redis数据类型和操作

在这里插入图片描述

redis在项目中的实践应用

在这里插入图片描述

nacos

微服务架构介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

springCloud介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

springCloud Alibaba简介

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

springCloud Alibaba实践

在这里插入图片描述

这篇关于软件体系结构复习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/541926

相关文章

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(

计算机基础知识复习9.6

点对点链路:两个相邻节点通过一个链路相连,没有第三者 应用:PPP协议,常用于广域网 广播式链路:所有主机共享通信介质 应用:早期的总线以太网,无线局域网,常用于局域网 典型拓扑结构:总线型 星型(逻辑总线型) 介质访问控制  静态划分信道 信道划分介质访问控制 频分多路复用FDM 时分多路复用TDM 波分多路复用WDM 码分多路复用CDM 动态分配信道 轮询访问介质访问控

【抽代复习笔记】28-群(二十二):四道子群例题

例1:证明,循环群的子群是循环群。 证:设G = (a),H ≤ G。 (1)若H = {e},则H是一阶循环群; (2)设H至少包含2个元素,即设H = {...,a^(-k),a^(-j),a^(-i),a^0,a^i,a^j,a^k,...}, 其中a^i是H中正指数最小的元素,0<i<j<k, 下证a^i是H的生成元: 对任意的a^t∈H(t∈Z),存在q∈Z,使得t = qi

西方社会学理论教程复习重点

一.名词解释 1.社会静力学:旨在揭示人类社会的基本秩序。它从社会的横断面,静态的考察人类社会的结构和制度,寻找确立和维护人类社会的共存和秩序的原则。 2.社会动力学:纵观人类理性和人类社会发展的先后必要阶段,所叙述的是这一基本秩序在达到实证主义这一最终阶段之前所经过的曲折历程。 3.社会事实:一切行为方式,不论它是固定的还是不固定的,凡是能从外部给予个人以约束的,或者说是普遍存在于该社会各

完整版自考西方文论选复习笔记资料

西方文论选读复习资料 1.柏拉图:古希腊哲学家,苏格拉底的学生。公园前387年在雅典城外建立学园开始授徒讲学,撰写对话。柏拉图的作品即《柏拉图文艺对话集》中讨论美学和文艺理论问题较多的有:《大希庇阿斯》、《伊安》、《高吉阿斯》、《会饮》、《斐德若》、《理想国》、《斐利布斯》、《法律》等。 ▲柏拉图《伊安》和《斐若德》内容:主要阐述了"迷狂说"和"灵魂回忆说":柏拉图认为,高明的诗人都是凭灵

ia复习笔记

HCIA 常用配置以及快捷键:! 查看时间:display clock;修改时间:clock datetime 11:11:11 2023-1-1 查看设备当前的配置:display current-configuration;查看已保存的配置:display saved-configuration;保存配置:save;查看历史的十条命令:display history-command;

android kotlin复习 Anonymous function 匿名函数

1、还是先上个图,新建kt: 2、代码: package com.jstonesoft.myapplication.testfun main(){val count = "helloworld".count()println(count);println("------------------------")var count2 = "helloworld".count(){it ==

C++复习day05

类和对象 1. 面向对象和面向过程的区别是什么?(开放性问题) 1. **抽象级别**:- **面向对象**:以对象(数据和方法的集合)为中心,强调的是数据和行为的封装。- **面向过程**:以过程(函数或子程序)为中心,强调的是步骤和顺序。2. **数据和方法的关系**:- **面向对象**:数据和处理数据的方法封装在对象中,对象可以包含数据和操作数据的方法。- **面向过程**:数据和处理

java复习第十课,方法的本质,形参和实参(很重要)

java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,声明格式: 修饰符[public]  修饰符2[static]  返回值类型[int、String等]  方法名 (形参列表){ java语句列表..... } 形式参数:在方法被调用时用于接受外界输入的数据 实参:调用方法时实际传递给方法的数据 返回值:方法在执行完毕后返还给调用它的环境的数据 返回值类型:事先约

java复习第九课,break和continue语句

break:终止整个循环。在任何循环语句的主题部分,均可用break控制循环流程。break用于强行推出循环,不执行循环剩下的语句。 比如:当我循环打印1到10的数字,在数字8后加break,遇到break语句后,强行跳出循环体,不在往下执行。 continue:终止当次循环,执行下一次。语句用在循环语句体重,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环