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

LVS实验的三模式总结

文章目录

    • LVS的概念叙述
    • NAT工作模式实战案例
        • **思想:**
        • NAT工作模式的优点
          • NAT工作模式的缺点
        • NAT工作模式的应用场景
          • 大致配置
        • route:
          • 打开路由内核功能
    • 部署DR模式集群案例
        • 工作思想:
        • 大致工作图如下
        • 思路模型
      • 具体配置与事实步骤
        • 补充
    • 防火墙标签解决轮询错误
        • 工作思想:
          • 具体思想介绍
        • **防火墙标签的优点**
        • 防火墙标签的缺点
        • 第二部分命令解释
    • 常用命令选项信息

LVS的概念叙述

LVS(Linux Virtual Server)是一种基于Linux操作系统的负载均衡技术,它通过IP负载均衡和NAT(Network Address Translation)技术,将多个服务器组成一个虚拟服务器集群,从而实现高可用性和高性能的网络服务。以下是LVS的基本原理:

  1. 负载均衡调度器(Director Server)

    • LVS的核心组件是负载均衡调度器,它负责接收客户端的请求,并将这些请求分发到后端的真实服务器(Real Server)上。
    • 调度器根据一定的算法(如轮询、最少连接、IP Hash等)选择一个合适的后端服务器来处理请求。
  2. IP负载均衡

    • LVS通过修改数据包的目标IP地址,将原本发往虚拟IP地址(VIP)的请求转发到后端的真实服务器上。
    • 这种方式使得多个服务器可以共享同一个虚拟IP地址,从而对外部客户端透明地提供服务。
  3. NAT(Network Address Translation)

    • LVS利用NAT技术,在调度器上完成源地址转换(SNAT)和目的地址转换(DNAT),以实现请求的负载均衡。
    • DNAT用于将请求的目标地址从虚拟IP地址转换为后端服务器的实际IP地址,而SNAT用于将响应的源地址从后端服务器的实际IP地址转换为虚拟IP地址,以便客户端能够正确接收响应。
  4. 三种工作模式

    • NAT模式(Network Address Translation)
      • 调度器负责所有的IP报文转发,后端服务器只需要处理TCP/UDP请求。
      • 适用于后端服务器数量较少且地理位置集中的场景。
    • DR模式(Direct Routing)
      • 调度器和后端服务器位于同一个物理网络,通过MAC地址替换实现请求的直接路由。
      • 适用于后端服务器数量较多且地理位置分散的场景。
    • TUN模式(IP Tunneling)
      • 调度器和后端服务器通过IP隧道进行通信,后端服务器负责解封装和处理请求。
      • 适用于后端服务器分布在不同物理网络的场景。
  5. 健康检查和故障恢复

    • LVS支持对后端服务器的健康检查,确保只有健康的服务器参与负载均衡。
    • 当某个后端服务器出现故障时,LVS可以自动将其从服务池中移除,直到其恢复正常。

通过以上机制,LVS能够有效地实现服务器集群的负载均衡,提高系统的可用性和性能。

NAT工作模式实战案例

思想:

在我看来,nat工作模式其核心思想是通过修改数据包的源地址来实现负载均衡。在NAT模式下,LVS的调度器(Director)会接收到客户端发送的请求数据包。调度器会根据负载均衡策略选择一个后端服务器(Real Server),并将请求数据包转发给这个后端服务器。在这个过程中,调度器会修改数据包的源地址,将其改为调度器自身的IP地址。

在这里插入图片描述

NAT工作模式的优点

灵活性:NAT模式允许后端服务器使用私有IP地址,不需要每个后端服务器都有公网IP地址。这使得IP地址资源的利用更加高效。

安全性:由于后端服务器的IP地址不会暴露给外部客户端,NAT模式可以提供更好的安全性,保护后端服务器免受外部攻击。

NAT工作模式的缺点

性能损耗:NAT模式需要额外的网络地址转换操作,这会增加调度器的处理负担,可能导致一定的性能损耗。

扩展性限制:由于所有请求和响应数据包都需要通过调度器进行地址转换,NAT模式在高并发场景下的扩展性受到一定限制。
首先,两个web客户机必须安装httpd服务 ,且两台web服务器的网卡为仅主机模式,route有两个网卡一个仅主机,一个NAT

NAT工作模式的应用场景

NAT模式适用于中小型规模的负载均衡场景,特别是在后端服务器数量不多且不需要太高性能的情况下。

大致配置

web1:
在这里插入图片描述
在这里插入图片描述
(WEB2配置一样的,只是ip变一下就行)

route:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

打开路由内核功能

在这里插入图片描述
查看是否打开成功并测试httpd服务,然后下载lvs
在这里插入图片描述
开始编辑lvs的策略
在这里插入图片描述
测试:
在这里插入图片描述

部署DR模式集群案例

工作思想:

简述:其核心思想是通过直接路由技术实现负载均衡,避免了NAT模式中需要修改数据包地址的开销。
具体分析

DR模式的基本思想
数据包的直接路由: 在DR模式下,LVS的调度器(Director)和后端服务器(Real Server)通常位于同一个物理网络中。当调度器接收到客户端发送的请求数据包时,它不会修改数据包的地址,而是根据负载均衡策略选择一个后端服务器,并直接将数据包路由到这个后端服务器。

虚拟IP地址(VIP)的共享:在DR模式下,所有调度器和后端服务器都会共享一个虚拟IP地址(VIP)。这意味着客户端只需要知道VIP,就可以发送请求到LVS集群,而不需要关心具体的后端服务器地址。

ARP协议的使用: 为了实现直接路由,DR模式利用了ARP(Address Resolution Protocol)协议。当调度器接收到请求数据包时,它会发送一个ARP响应包到后端服务器,告诉后端服务器VIP对应的硬件地址是调度器的MAC地址。这样后端服务器就可以直接将响应数据包发送回客户端,而不需要通过调度器中转。

DR模式的优点
高性能: 由于DR模式不需要修改数据包的地址,避免了NAT模式中的额外开销,因此具有更高的性能。

扩展性强:DR模式可以支持大规模的负载均衡场景,因为数据包的路由操作相对简单,不会随着后端服务器数量的增加而产生显著的性能损耗。

**灵活的后端服务器配置:**在DR模式下,后端服务器可以使用私有IP地址,也可以使用公网IP地址,具有较高的灵活性。

DR模式的缺点
复杂的网络配置: DR模式需要确保调度器和后端服务器位于同一个物理网络中,并且需要配置ARP协议的相关参数,这可能需要更多的网络配置和管理。

**不支持跨网段的负载均衡:**由于DR模式依赖于直接路由技术,它不支持跨网段的负载均衡,这在某些复杂网络环境中可能会成为一个限制。

DR模式的应用场景
DR模式适用于需要高性能和高扩展性的大型负载均衡场景,特别是在后端服务器数量较多且网络环境允许的情况下。如果网络环境较为复杂或者需要跨网段进行负载均衡,可以考虑使用其他负载均衡模式,如NAT模式或TUN(IP
Tunneling)模式。

大致工作图如下

在这里插入图片描述

在这里插入图片描述

思路模型

在这里插入图片描述
(上下二选一参考即可)
在这里插入图片描述

在这里插入图片描述

具体配置与事实步骤

lvs:
在这里插入图片描述
route:
在这里插入图片描述
在这里插入图片描述
客户端:
在这里插入图片描述

web:两个web服务器的内容差不多
在这里插入图片描述在这里插入图片描述

LVS配置:

在这里插入图片描述

补充

在执行完以上操作之后,就执行
在lvs 和 rs 中设定vip
[root@lvs ~]# ip addr add dev lo 192.168.0.100/32
[root@rs1 ~]# ip addr add dev lo 192.168.0.100/32
[root@rs2 ~]# ip addr add dev lo 192.168.0.100/32
rs1代表web1,rs2代表web2
原因
之所以将环回网卡设置为一样的IP地址,是因为:
在LVS的DR模式(Direct Routing)集群部署中,将调度器(LVS)和所有后端服务器(Real Server)的环回网卡(lo)的IP地址设置为相同的虚拟IP地址(VIP)是因为DR模式的工作原理要求所有的节点都能响应同一个VIP的ARP请求。

以下是具体原因:

  1. 直接路由(Direct Routing):在DR模式下,调度器和后端服务器都位于同一个物理网络中,客户端的请求直接发送到后端服务器,而不需要通过调度器进行NAT转换。因此,所有的节点都需要能够响应同一个VIP的ARP请求,以便客户端能够直接访问后端服务器。

  2. ARP响应:ARP协议用于将IP地址解析为物理地址(MAC地址)。当客户端发送一个ARP请求来查询某个IP地址对应的MAC地址时,所有接收到这个ARP请求的设备都会检查自己是否有这个IP地址。在DR模式下,调度器和后端服务器都需要能够响应这个VIP的ARP请求,以便客户端能够建立连接。

  3. 环回网卡(lo):环回网卡是一个特殊的网络接口,用于本机的网络回环。在DR模式下,通过在环回网卡上绑定VIP,可以确保每个节点都能够正确处理发往这个VIP的请求,而不是依赖于物理网络接口。

通过将调度器和所有后端服务器的环回网卡的IP地址设置为相同的虚拟IP地址,可以确保在DR模式下,所有的节点都能正确响应ARP请求,从而实现高效且透明的负载均衡。

防火墙标签解决轮询错误

工作思想:

这个策略在我看来,其核心思想就是通过在数据包上打上标签,以便LVS调度器能够识别和处理这些数据包

具体思想介绍

**数据包的标记:**在数据包通过防火墙时,防火墙可以根据一定的规则对数据包进行标记。这些标记可以用来标识数据包的特定属性,如源地址、目的地址、协议类型等。

LVS调度器的识别:LVS调度器可以通过检查数据包上的标记来识别这些数据包,并根据标记进行相应的处理。例如,调度器可以根据标记选择合适的后端服务器进行负载均衡。

负载均衡策略的实施:通过使用防火墙标签,LVS调度器可以更精确地实施负载均衡策略,避免轮询错误问题。例如,调度器可以确保来自同一客户端的请求数据包始终被转发到相同的后端服务器,从而实现会话保持。

防火墙标签的优点

灵活性:防火墙标签提供了一种灵活的方式来标识和处理数据包。通过调整防火墙的规则,可以方便地改变数据包的标记,从而影响负载均衡的策略。

可扩展性:防火墙标签可以用于支持大规模的负载均衡场景。由于标记是在数据包通过防火墙时进行的,不会对LVS调度器造成额外的负担,因此具有较高的可扩展性。

易于管理:通过使用防火墙标签,可以在防火墙层面进行数据包的管理和控制,简化了LVS调度器的配置和管理。

防火墙标签的缺点

依赖防火墙:防火墙标签的使用依赖于防火墙的功能,如果防火墙不支持数据包的标记功能,就无法使用这种方法。

额外的配置:使用防火墙标签需要进行额外的防火墙配置,可能需要调整现有的防火墙规则,增加了管理的复杂性。

防火墙标签的应用场景
防火墙标签适用于需要高灵活性和可扩展性的负载均衡场景,特别是在需要进行精细的负载均衡控制和会话保持的情况下。如果防火墙不支持数据包的标记功能,或者不需要进行复杂的负载均衡控制,可以考虑使用其他方法,如基于IP地址的负载均衡或基于URL的负载均衡。

在LVS的运维中,选择合适的负载均衡策略和方法需要根据具体的业务需求和系统架构来进行综合评估,以确保系统的高可用性和高性能。

大致配置:
其环境和DR部署模式一样,仅仅只需要在web服务器上面装上mod_ssl,然后再到lvs进行配置
在配置之前,需要先执行 ipvsadm -C将所有策略都进行清空
lvs更改的配置:
在这里插入图片描述

在这里插入图片描述
命令解释:

iptables -t mangle -A PREROUTING -d 172.25.254.200 -p tcp -m
multiport --dports 80,443 -j MARK --set-mark 99

这段命令是在向iptables的mangle表中添加一个新的规则,具体解释如下:

  • iptables: 这是用于配置Linux内核防火墙规则的命令行工具。
  • -t mangle: 指定要操作的表为mangle。iptables有多个表,mangle表用于修改数据包的IP头信息,比如改变TOS(Type of
    Service)或者设置标记(MARK)。
  • -A PREROUTING: 指定要添加规则的链为PREROUTINGPREROUTING链是数据包进入主机后,路由判断之前的第一个链。
  • -d 172.25.254.200: 指定目标IP地址为172.25.254.200的数据包。
  • -p tcp: 指定协议为TCP。
  • -m multiport --dports 80,443: 使用multiport模块来指定多个目标端口,这里是HTTP服务的端口80和HTTPS服务的端口443。
  • -j MARK --set-mark 99: 指定动作(jump)为MARK,即对匹配的数据包设置一个内核路由决策使用的标记(mark),这里设置的标记值为99。
    在LVS(Linux Virtual Server)的运维中,这种标记通常用于负载均衡的调度决策。通过设置标记,可以在LVS的调度器上实现更复杂的负载均衡策略。例如,根据数据包的源IP、目标IP、端口等特征,决定如何将数据包分发到后端服务器。对于标记为99的数据包,后续可以通过其他iptables规则或LVS的配置来进一步处理这些数据包,实现特定的负载均衡策略。
    如果添加多了或者错误,将-A '换成-D即可
第二部分命令解释

第一条命令:
ipvsadm -A -f 99 -s rr ipvsadm: 这是用于管理IPVS的命令行工具。
-A: 指定操作为添加(add)。
-f 99: 指定数据包的标记(firewall mark)为99。这与前面提到的iptables命令中的标记值对应。
-s rr: 指定调度算法为轮询(round-robin)。这意味着IPVS将按照轮询的方式将数据包分发到后端服务器。 这条命令的作用是添加一个新的虚拟服务到IPVS中,该服务会处理那些被iptables标记为99的数据包,并且使用轮询算法来调度这些数据包到后端服务器。

第二条命令:
ipvsadm -a -f 99 -r 172.25.254.20 -g ipvsadm:
同上,是用于管理IPVS的命令行工具。
-a: 指定操作为添加(add)。
-f 99: 同上,指定数据包的标记为99。
-r 172.25.254.20: 指定后端服务器的IP地址为172.25.254.20。
-g: 指定该后端服务器为网关(gateway)模式。这意味着数据包将被直接转发到这个后端服务器,而不是通过NAT(网络地址转换)方式。 这条命令的作用是将一个后端服务器(IP地址为172.25.254.20)添加到IPVS的虚拟服务中,该服务处理那些被iptables标记为99的数据包,并且使用网关模式直接将数据包转发到这个后端服务器。

在LVS的运维中,这些命令用于动态地管理和配置负载均衡策略,确保系统的高可用性和高性能。

测试:
在客户机上进行测试
在这里插入图片描述

常用命令选项信息

在这里插入图片描述

在这里插入图片描述

相关文章:

LVS实验的三模式总结

文章目录 LVS的概念叙述NAT工作模式实战案例**思想:**NAT工作模式的优点NAT工作模式的缺点 NAT工作模式的应用场景大致配置 route:打开路由内核功能 部署DR模式集群案例工作思想:大致工作图如下思路模型 具体配置与事实步骤补充 防火墙标签解…...

游戏安全入门-扫雷分析远程线程注入

前言 无论学习什么,首先,我们应该有个目标,那么入门windows游戏安全,脑海中浮现出来的一个游戏 – 扫雷,一款家喻户晓的游戏,虽然已经被大家分析的不能再透了,但是我觉得自己去分析一下还是极好…...

bert-base-chinese模型的完整训练、推理和一些思考

前言 使用google-bert/bert-base-chinese模型进行中文文本分类任务,使用THUCNews中文数据集进行训练,训练完成后,可以导出模型,进行预测。 项目详细介绍和数据下载 数据集下载地址 Github完整代码 现记录训练过程中的一些感悟…...

JS基础5(JS的作用域和JS预解析)

JS的作用域 1. 全局作用域 全局作用域是在代码的任何地方都能访问到的最外层作用域。在浏览器环境下,全局作用域就是window对象,因此所有在全局作用域中声明的变量和函数都会成为window对象的属性和方法。 var globalVar "I am global"; …...

Doris 夺命 30 连问!(中)

导言 抱歉,作为从 S2 开始的骨灰级玩家看到 EDGUZI 官宣首发上线,兴奋之余忘了写文档 - -||,还望各位看官老爷见谅,这次错了,下次还敢 ^_^ 这是继上次的 30 问上篇的中篇,也是 10 个问题,有些…...

书生.浦江大模型实战训练营——(四)书生·浦语大模型全链路开源开放体系

最近在学习书生.浦江大模型实战训练营,所有课程都免费,以关卡的形式学习,也比较有意思,提供免费的算力实战,真的很不错(无广)!欢迎大家一起学习,打开LLM探索大门&#xf…...

SpringBoot 整合 RabbitMQ 实现延迟消息

一、业务场景说明 用于解决用户下单以后,订单超时如何取消订单的问题。 用户进行下单操作(会有锁定商品库存、使用优惠券、积分一系列的操作);生成订单,获取订单的id;获取到设置的订单超时时间&#xff0…...

Cilium:基于开源 eBPF 的网络、安全性和可观察性

基于 eBPF 的网络、安全性和可观察性 Cilium 是一种开源的云原生解决方案,它利用 Linux 内核中的 eBPF 技术来提供、保护和监控工作负载之间的网络连接。 什么是 eBPF? eBPF 是一项源自 Linux 内核的技术,允许沙盒程序在特权上下文&#x…...

Axios 详解与使用指南

Axios 详解与使用指南 1. Axios 简介 Axios 是一个基于 Promise 的 HTTP 客户端,能够在浏览器和 Node.js 环境中运行。它提供了一种简便的方式来执行 HTTP 请求,并支持多种请求方法,如 GET、POST、PUT、DELETE 等。Axios 的配置灵活&#x…...

深度学习 —— 个人学习笔记20(转置卷积、全卷积网络)

声明 本文章为个人学习使用,版面观感若有不适请谅解,文中知识仅代表个人观点,若出现错误,欢迎各位批评指正。 三十九、转置卷积 import torch from torch import nndef trans_conv(X, K):h, w K.shapeY torch.zeros((X.shape[…...

解决Mac系统Python3.12版本pip安装报错error: externally-managed-environment的问题

遇到的问题 在Mac安装了Python3.12.x版本(3.12.3、3.12.4)后,当尝试pip3 install xxx的时候,总是报错:error: externally-managed-environment error: externally-managed-environment This environment is external…...

lvm知识终结

、什么是 LVM LVM 是 Linux 下对磁盘分区进行管理的一种工具,适合管理大存储设备,并允许用户动态调整文件系统的大小 lvm 常用的命令 功能 PV 管理命令 VG 管理命令 LV 管理命令 scan 扫描 pvscan vgscan lvscan create 创建 pvcreate v…...

ESP32S3 IDF 对 16路输入输出芯片MCP23017做了个简单的测试

这次还是使用了idf老版本4.4.7,上次用了5.3,感觉不好用,官方的MCP23017芯片是英文版,真的很难读明白,可能是我英语水平不够吧。先看看每个寄存器的功能: IODIRA 和 IODIRB: 输入/输出方向寄存器 IPOLA 和 I…...

【技术前沿】Flux.1部署教程入门--Stable Diffusion团队最前沿、免费的开源AI图像生成器

项目简介 FLUX.1 是一种新的开源图像生成模型。它由 Stable Diffusion 背后的团队 Black Forest Labs 开发。 官网中有以下功能开源供大家参考: FLUX.1 擅长在图像中准确再现文字,因此非常适合需要清晰文字或短语的设计。无论是标牌、书籍封面还是品牌…...

Redis 的 STREAM 和 RocketMQ 是两种不同的消息队列和流处理解决方案,它们在设计理念、功能和用途上有显著区别。以下是它们的主要区别:

20240813 Redis 的 STREAM 和 RocketMQ 是两种不同的消息队列和流处理解决方案,它们在设计理念、功能和用途上有显著区别。以下是它们的主要区别:1. 使用 Redis 的 Sorted Set 数据结构连接到 Redis示例用法添加事件获取滑动窗口内的事件移除过期事件连接…...

Visual Studio Code安装与C/C++语言运行(上)

Visual Studio Code(VS Code)作为微软开发的一款轻量级但功能强大的源代码编辑器,广泛应用于各种编程语言的开发,包括C/C。以下将详细介绍VS Code的安装过程以及与C/C语言运行环境的配置。 一、Visual Studio Code的安装 1. 准备…...

探索数据可视化,数据看板在各行业中的应用

数据可视化是一种通过图形化手段将数据呈现出来的技术,它将复杂的数据和信息转化为易于理解的图表、地图、仪表盘等视觉元素,使得数据的模式、趋势和关系更加直观地展现出来。通过数据可视化,用户可以快速识别重要信息、发现潜在问题&#xf…...

haralyzer 半自动,一次性少量数据采集快捷方法

使用场景:半自动,一次性少量数据采集需求在工作中还是不少遇到的,无论使用模拟的方式,或者破解都不太划算。其实这种需求,使用半自动爬虫是最简单的。不需要考虑网站反爬虫的问题,因为你使用的就是真实的浏…...

mall-admin-web-master前端项目下载依赖失败解决

碰壁后的总结 pythone 环境 2.XX版本,切记不要3.0以上的。node 16.x不能太高 错误案例 npm ERR! code 1 npm ERR! path D:\workspace\springBootMall\mall-admin-web-master\node_modules\node-sass npm ERR! command failed npm ERR! command C:\windows\system…...

【07】JVM是怎么实现invokedynamic的

在Java中,方法调用会被编译为invokeStatic,invokeSpecial,invokVirtual以及invokeInterface四种指令。这些指令与包含目标方法类名、方法名以及方法描述符的符号引用捆绑,在实际运行之前,JVM根据这个符号引用链接到具体…...

使用API有效率地管理Dynadot域名,查看参与的拍卖列表

前言 Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮箱&…...

Linux 基本指令讲解

linux 基本指令 clear 清屏 Alt Enter 全屏/退出全屏 pwd 显示当前用户所处路径 cd 改变目录 cd /root/mikecd … 返回上级目录cd - 返回最近所处的路径cd ~ 直接返回当前用户自己的家目 roor 中:/root普通用户中:/home/mike mkdir 创建一个文件夹(d) …...

PRE_EMPHASIS

PRE_EMPASIS属性用于提高高频信号的信号完整性 其通过传输线遭受高频损耗。发射机 预加重(pre_EMPASIS)功能允许对某些信号驱动器进行预加重 I/O标准。 提示:发射机的预加重可以与接收机的均衡相结合,以提高 整体信号完整性。 理想…...

【QT常用技术讲解】多线程处理+全局变量处理异步事件并获取多个线程返回的结果

前言 QTableView加入勾选项后(参考【QT常用技术讲解】QTableView添加QCheckBox、QPushButton),如果支持右键菜单功能,此时就有统一执行多个异步事件,并且统一输出到界面的需求了,本篇结合多线程共享全局变量…...

数组列表中的最大距离

给定 m 个数组,每个数组都已经按照升序排好序了。现在你需要从两个不同的数组中选择两个整数(每个数组选一个)并且计算它们的距离。两个整数 a 和 b 之间的距离定义为它们差的绝对值 |a-b| 。你的任务就是去找到最大距离 示例 1:…...

C语言新手小白详细教程(7)指针和指针变量

希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 关注 收藏支持一下笔者吧~ 阅读指南: 开篇说明1、指针的定义接下来我们用图示的形式来解释一下 指针:2、申明指针变量3、取地址符 &4、为指针…...

Kafka保证消息不丢失

Kafka保证消息不丢失 生产者发送消息到Broker丢失 设置异步发送 回调方法中的参数Exception e如果为空 代表发送成功,如果不为空代表发送失败出现异常 消息在Broker中丢失 kafka集群中存在分区机制 分区中分为leader和follower副本 leader负责读写,而follower只负责数据…...

数据结构+基数排序算法

一、问题描述 实现英文单词按字典序排列的基数排序算法 编写一个程序,采用基数排序方法将一组英文单词按字典顺序排 列。假设单词均由小写字母或空格构成,最长的单词有 MaxLen 个 字母,用相关数据进行测试并输出各趟的排序结果。 用例&#…...

C++ list【常用接口、模拟实现等】

1. list的介绍及使用 1.1 list的介绍 1.list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2.list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前…...

12.面试题——Spring Boot

1.Spring Boot是什么? Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。 2.为什么要用 …...