• 后端开发基础概念


    后端开发基础概念

    目前处于项目上手阶段,在学习项目过程中,有一些一知半解或者不明白含义的专业名词或者缩写,在此汇总。里面的内容很多都是基于个人理解,水平有限如果有出错的地方还请各位大佬批评指正。
    2023年8月31日00:34:22,已经比较晚了,后续的内容之后再补充吧,一口吃不了个胖子。

    常见缩写总结

    • PO:Persistent Object,持久层对象,用于映射数据库中的Java类。通常用于表示数据库中一条记录的Java对象,通常具有与数据库中表相同的字段和数据类型。常常作为DAO(数据访问对象)层的数据模型,以及和数据库交互的对象。PO对象中的属性与数据库表中的列相互的对应,每一行数据库表数据对应一个PO对象,PO对象中的字段值就是对应的列值。
      • 不应该包括任何对数据库的操作。
    • VO:Value Object,值对象,主要负责业务之间的值传递。VO通常表示程序中的某个值或者一组值,例如用户的姓名、年龄、地址等。VO通常用于在不同层之间传递数据,例如在Controller层和Service层之间传递数据。VO对象通常是PO对象中提取出来的一部分数据,用于与前端或其它层之间的展示和传递。
    • DO:Domain Object,领域层对象,就是从现实世界中抽象出来的有形或者无形的业务实体。通常可以代替部分PO的职责。
    • DAO:Data Access Object,数据访问对象,负责与数据库的交互。DAO是整个程序中与数据库交互的核心部分。DAO负责将数据库中的数据转换为Java对象,并将Java对象的数据保存至数据库中。DAO的主要作用是隔离上层业务逻辑和下层数据访问的细节。在Java开发中,通常使用Hibernate等ORM框架来实现DAO层。DAO的主要任务就是实现数据库的增删改查等基本操作,同时提供一些高级查询功能。

    关于DAO与PO的区别:
    DAO层主要提供的是访问底层数据源的方法,这些方法可以被Service层调用;PO主要是纯对象本身,不涉及具体的增删改查操作。

    • API:Application Programming Interface,应用程序接口。为应用外部提供功能支持。
    • APP:Application
    • MVC:
    • DDD:
    • AOP:Aspect Oriented Programming,面向切面编程。将相同的事情统一拦截到一处进行处理,是AOP的一种实现思想。通过预编译的方式和运行期间动态代理实现程序功能的同一维护的一种技术。

    常见技术简明介绍

    • Redis:Remote Dictionary Server,远程字典服务。redis是一个key-value存储系统,支持push/pop,add/remove以及取其交集并集和差集以及更丰富的操作。是高性能的key-value数据库。我的理解就是面向企业级开发的HashMap,主要面向数据库数据的存取/查找。为什么快?

    完全基于内存操作;
    C语言实现,优化过的数据结构,基于集中基础的数据结构,redis做了大量的优化,性能极高;
    使用单线程,无上下文切换成本;
    基于非阻塞的IO多路复用机制。

    • Spring:一个开源的J2EE应用程序框架,
    • SpringMVC:
    • SpringBoot:
    • MyBatis:一款优秀的持久层开源框架,其让开发者可以专注于SQL语句本身,而不再过多的关注类似于比较原始的servlet+jsp对应的JDBC中涉及到的数据库的链接以及关闭等细节操作,简化开发流程,提高了后端开发的工作效率。

    MyBatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatement)配置起来,通过Java对象和statement中的sql进行映射生成最终执行的sql语句,最后由MyBatis框架执行sql并将结果映射到Java对象并返回。

    • SpringIoC:Inverse of Control,控制反转。
    • AOP:Aspect Oriented Programming,面向切面编程。
    • RabbitMQ:一种消息队列,可以处理点对点消息队列和发布/订阅模式的消息队列;
    • Kafka:
    • Dubbo:Alibaba开发的开源服务管理框架,支持丰富的服务治理能力。依然很抽象,如何使用?
    • MQ:
    • MySQL:
    • XDB-Router:
    • ES:
    • ZK:

    框架简介

    Spring

    Spring是一款开源的轻量级Java开发框架。一般说的Spring框架,是由多模块组成的集合,包括,使用这些模块可以很方便的协助我们进行开发,比如说Spring支持IoC(Inversion of Control),和AOP(Aspect-Oriented Programming),可以很方便的对数据库访问(JDBC)、可以很方便地集成第三方组件。。。
    Spring包含很多模块,其中最重要的就是Spring-Core模块。Spring的其他模块(比如SpringMVC)的功能实现都依赖于该模块。
    核心思想是:避免重复造轮子,开箱即用,提高开发效率。(开盖即饮) 一门语言的流行,通常需要一个杀手级的应用,Spring就是Java生态的一个杀手级应用框架

    Spring包含的模块

    在这里插入图片描述

    Core Container

    Spring的核心模块,主要提供IoC依赖注入功能的支持。Spring其他所有的功能都需要依赖于该模块,

    Spring IoC

    浅显的理解:IoC,控制反转,名字乍一看比较难理解,但其实核心就是Spring框架通过容器控制Bean对象,在项目代码中通过注解@Service的形式控制,而不是程序员一个个的new来控制了。
    更加好理解的版本就是:

    IoC 解决的是对象管理和对象依赖的问题。本来Bean对象需要我们自己手动New,但是Spring的IoC特性使得对象都被交给Spring的IoC容器管理。可以把IoC当做是一个对象工厂,工厂管理这些对象的创建以及依赖关系。需要用到对象时,直接从工厂中拿取就行了。
    控制反转和依赖注入。控制反转:将原本自己的控制权交给别人(Spring容器),是一种思想或者说是设计模式。依赖注入是控制反转的具体实现方式,对象无需自行创建或者管理它的依赖关系,依赖关系将被自动注入到需要他们的对象当中去。
    IoC的好处(为什么需要控制反转?):主要的好处是将对象集中统一管理,并且降低耦合。具体:IoC可以方便单元测试、对象创建复杂、对象依赖复杂、单例等等,什么都可以交给SpringIoC。理论上,自己手动new都可以解决以上问题,但是为了管理这一整套内容,需要自己写工厂来实现相应的需求,这个工厂写好你会发现,其实就是Spring。Spring的轮子已经造就好了,直接使用就行了。并且,Spring的核心不仅仅是IoC,还有一整套的Bean声明周期管理。在这里插入图片描述

    IoC(Inversion of Control)是一种设计思想,而不是一个具体的技术实现。IoC的思想就是将原本在程序中的手动创建对象的控制权,交由Spring框架来管理。
    在这里插入图片描述
    IoC 容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。

    Spring AOP,面向切片编程

    解决的是非业务代码抽取的问题。

    AOP的底层技术是动态代理,Spring内实现依赖的是BeanPostProcessor,

    什么是Java Bean?:Bean是豆子的意思,含义是可重复利用的组件。JavaBean就是一个类,是用来包装数据,是一个中转载体。

    JavaBean的生命周期管理

    SpringBoot

    Spring是为了简化J2EE的企业级应用程序开发而产生的,SpringBoot是为了简化Spring开发而诞生的(减少配置文件,开箱即用)。
    SpringBoot只是简化了配置的步骤,如果要开发SpringMVC框架的web程序,就还是需要将SpringMVC作为MVC的架构。

    DDD

    Java中的注解

    • @Resource:用于依赖注入,在类中标识需要注入的资源或依赖项,并由容器自动进行注入。注入到了哪?为什么要注入?为应用部件(比如JavaBean)提供服务
    • @Service:用于标识一个类作为服务层的组件(Service)。通过使用@Service注解,可以将一个普通的Java类标记为服务层组件,并由Spring容器进行管理和注入。Service注解也看其来自于谁,来自于Spring(Dubbo)就由Spring(Dubbo)管理。
    • @Component:用于标识一个类作为普通的组件;
    • @Repository:用于标识一个类作为数据访问层的组件;
    • @Controller:用于标识一个类作为控制层的一个组间;
    • @
    • @
    • @
  • 相关阅读:
    Javascript知识【jQuery:查找元素操作&案例:模拟用户分组】
    select服务器和poll客户端
    【PAT甲级】1115 Counting Nodes in a Binary Search Tree
    面试必备:Thread、Runnable、Callable、Future、FutureTask,谈谈他们的关系?(荣耀典藏版)
    rust迭代器
    getenv、setenv和putenv实践
    ES6 字符串的repeat()方法
    云原生2.0时代,如何让应用拥抱云原生?
    JQuery实现图片切换(自动切换+手动切换)
    POJ2031空间站题解
  • 原文地址:https://blog.csdn.net/qq_41119146/article/details/132583127