08--LVS网站高并发解决方案

前言:LVS,工作稳定,抗负载能力强,属于运维基础,这里将lvs两种模式的部署方式在这里记录一下,并在示例完成后,补充一下基础概念。本章不可避免的涉及到一些网络方面知识,会形象简单的记录一下,无需纠结其原理。

1、基础概念

LVS是Linux Virtual Server,Linux虚拟服务器

LB:Load Balancing,负载均衡(增加处理能力),有一定高可用能力,但不是高可用集群,是以提高服务的并发处理能力为目的。

LVS工作在一台server上提供Directory(负载均衡器)的功能,本身并不提供服务,只是把特定的请求转发给对应的real server(真正提供服务的主机),从而实现集群环境中的负载均衡。

软件负载均衡lvs:四层路由设备
haproxy、nginx:七层负载均衡器
硬件负载均衡F5:BIG IP
深信服

2、LVS-NAT部署

原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,并发 至此RS来处理,RS处理完后把数据交给负载均衡器,负载均衡器再把数据包原IP地址改为自己的IP,将目的 地址改为客户端IP地址即可期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器

优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址

缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因 为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载 均衡器那,速度就会变慢,工作中见过的最多为一拖20!

2.1、基础环境

关闭防火墙与selinux!!!

vmware网络配置

点击确认完成虚拟网络vmnet2添加,这个相当于模拟现实中的机柜路由器功能,去本机网络设置查看是否添加完成(杀毒软件可能会影响安装)。

模拟角色IP
客户访问(物理机)192.168.1.4
lvs

192.168.1.5

192.168.150.128

服务端1号(web1)192.168.150.129
服务端2号(web2)192.168.150.130

配置完成时服务端1号网络状态如下

现有两个不同网段192.168.1.0与192.168.150.0,两个网段暂时无法通信

2.2、环境配置

2.2.1、web1配置网站和路由

注意:当前web1位于150网段,对于互联网来说处于离线状态,需配置本地源后安装网站

    #    搭建本地源
[root@localhost yum.repos.d]# mount /dev/sr0 /mnt
[root@localhost ~]# vim /etc/yum.repos.d/local.repo
[root@localhost yum.repos.d]# cat /etc/yum.repos.d/local.repo
[local]
name=Local Repository
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum makecache#    安装环境
[root@localhost yum.repos.d]# yum install -y httpd
[root@localhost yum.repos.d]# systemctl  start httpd
[root@localhost yum.repos.d]# systemctl enable httpd
[root@localhost yum.repos.d]# echo ">>>>>>>>web1<<<<<<<<" >  /var/www/html/index.html
[root@localhost yum.repos.d]# yum install -y net-tools
[root@localhost yum.repos.d]# route add -net 192.168.1.0/24 gw 192.168.150.128# route add -net (lvs上与客户端相通的网段) gw (lvs的内网ip)

2.2.2、web2配置网站和路由

[root@localhost yum.repos.d]# echo "+++++++++web2++++++++" >  /var/www/html/index.html#    其余配置与web1相同

工作环境下内容应该为相同的,这里是为了更明显的观察负载均衡效果

2.2.3、LVS-NAT配置

由于LVS处于两个网络边界,所以需要开启路由转发

[root@localhost ~]# echo  1  > /proc/sys/net/ipv4/ip_forward#    启用 IP 转发[root@localhost ~]# yum install -y ipvsadm#    ipvsadm 是一个用于管理 Linux 虚拟服务器(LVS)规则的工具,提供了添加、删除和显示负载均衡规则的功能[root@localhost ~]# ipvsadm -A -t 192.168.1.5:80 -s rr#    这个命令使用 ipvsadm 创建一个新的虚拟服务:#    -A:添加一个新的虚拟服务。#    -t 192.168.1.5:80:指定虚拟服务的 IP 地址和端口号,即客户端将访问的地址。#    -s rr:指定调度算法为“轮询”(Round Robin),这意味着流量将按顺序分配给每个真实服务器。[root@localhost ~]# ipvsadm -a -t 192.168.1.5:80 -r 192.168.150.129:80 -m#    这个命令向虚拟服务添加一个真实服务器:#    -a:向虚拟服务添加一个真实服务器。#    -t 192.168.1.5:80:指定与虚拟服务关联的 IP 地址和端口号。#    -r 192.168.150.129:80:指定真实服务器的 IP 地址和端口号。#    -m:使用 NAT 模式(Masquerading),即通过伪装真实服务器的 IP 来实现负载均衡。[root@localhost ~]# ipvsadm -a -t 192.168.1.5:80 -r 192.168.150.130:80 -m

2.2.4、测试

使用本机浏览器访问,未防止缓存干扰使用firefox的隐私浏览模式

 再次刷新

查看 LVS 配置及当前连接列表,负载均衡已经完成

[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.5:80 rr-> 192.168.150.129:80           Masq    1      0          2         -> 192.168.150.130:80           Masq    1      0          2         
[root@localhost ~]# ipvsadm -Lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 00:37  TIME_WAIT   192.168.1.4:3521   192.168.1.5:80     192.168.150.130:80
TCP 01:19  TIME_WAIT   192.168.1.4:3545   192.168.1.5:80     192.168.150.129:80
TCP 00:44  TIME_WAIT   192.168.1.4:3556   192.168.1.5:80     192.168.150.130:80
TCP 00:17  TIME_WAIT   192.168.1.4:3489   192.168.1.5:80     192.168.150.129:80

3、LVS-DR部署

原理:负载均衡器和RS都使用同一个IP对外服务但只有DR对ARP请求进行响应,所有RS对本身这个IP的 ARP请求保持静默也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度 算法,找出对应的RS,把目的MAC地址改为RS的MAC(因为IP一致),并将请求分发给这台RS这时RS收到 这个数据包,处理完成之后,由于IP一致,可以直接将数据返给客户,则等于直接从客户端收到这个数据 包无异,处理后直接返回给客户端,由于负载均衡器要对二层包头进行改换,所以负载均衡器和RS之间必 须在一个广播域,也可以简单的理解为在同一台交换机上

优点:和TUN(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户 端,与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。

缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须与物理网卡在一个物理段上。

3.1、基础环境

IP该IP使用途径
192.168.189.151模拟客户访问
192.168.189.148

lvs通信地址

192.168.189.149

web1通信地址

192.168.189.150

web2通信地址

192.168.189.145

lvs,web1,web2共用的虚拟ip地址

 这里使用的均为虚拟网络nat模式

3.2、LVS服务器配置

3.2.1、LVS准备VIP与路由

添加vip

[root@localhost ~]# ifconfig ens33:0 192.168.189.145 broadcast 192.168.1.255 netmask 255.255.255.0 up#    这条命令的作用是在Linux系统上创建一个名为 ens33:0 的虚拟网络接口,并将其IP地址设置为 192.168.189.145,子网掩码为 255.255.255.0,然后激活这个虚拟网络接口。[root@localhost ~]# route add -host 192.168.189.145 dev ens33:0#    这条命令的作用是将目标主机 192.168.189.145 添加到路由表中,指定数据包通过虚拟网络接口 ens33:0 发送到该主机。

配置路由转发

[root@localhost ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 
[root@localhost ~]# echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf 
[root@localhost ~]# echo "net.ipv4.conf.ens32.send_redirects = 0" >> /etc/sysctl.conf 
[root@localhost ~]# echo "net.ipv4.conf.default.send_redirects = 0" >> /etc/sysctl.conf #    开启路由功能#    禁止转发重定向报文#    禁止ens32转发重定向报文#    禁止转发默认重定向报文这里是为了避免lvs参与其他的路由功能

3.3.2、LVS设置负载均衡规则

[root@localhost ~]# yum install -y ipvsadm
[root@localhost ~]# ipvsadm -A -t 192.168.189.145:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.189.145:80 -r 192.168.189.149:80 -g#    有人找145把他转到149 使用dr模型(网关型)
[root@localhost ~]# ipvsadm -a -t 192.168.189.145:80 -r 192.168.189.150:80 -g

3.3.3、配置永久生效

[root@localhost ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@localhost ~]# cat /etc/sysconfig/ipvsadm
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 192.168.189.149:http -g -w 1
-a -t localhost.localdomain:http -r 192.168.189.150:http -g -w 1
[root@localhost ~]# systemctl enable ipvsadm
Created symlink from /etc/systemd/system/multi-user.target.wants/ipvsadm.service to /usr/lib/systemd/system/ipvsadm.service.

3.3、web服务器配置

与上个示例相似,出了网页内容不同,其他操作如下,两台web服务器通用

3.3.1、部署web服务

[root@localhost ~]# yum install -y nginx
[root@localhost ~]# echo ">>>>>>>>>>>>>>web1<<<<<<<<<<<<" > /usr/share/nginx/html/index.html
[root@localhost ~]# cat /usr/share/nginx/html/index.html 
>>>>>>>>>>>>>>web1<<<<<<<<<<<<
[root@localhost ~]# systemctl start nginx
[root@localhost ~]# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

3.3.2、配置vip

给两个web服务器的lo网卡设置子网掩码为32位vip,按理来说是无法在两台不同机器上部署相同IP,但此处ip并非用来通信,这里我们使用超网掩码32位(32位1),经过逻辑与运算后会发现ip仍为设定的ip,这种写法会使计算机认为全网只有自己一台主机。

[root@localhost ~]# ifconfig lo:0 192.168.189.145/32#    使用模拟接口lo构建模拟接口,好处是这个接口永远不会宕机

效果如图

3.3.3、设置内核参数

这里是为了防止虚拟ip配置后,后端的web服务器越过lvs去接受请求

[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore#    忽略非本地arp响应 ,不允许收[root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce#    为了让vip发包出去,但允许发

3.4、测试

 查看 LVS 配置及当前连接列表,负载均衡已经完成

4、概念补充

此处概念需要着重记忆

4.1、LVS模式

lvs除了上述两种模式外,还有两种模式:

TUN-IP隧道模式

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将在客户端请求报文的首部再封装一层IP报文,将源地址改为DIP,目标地址改为RIP,并将此包发送给RS。

③.RS收到请求报文后,会首先拆开第一层封装,然后发现里面还有一层IP首部的目标地址是自己lo接口上的VIP,所以会处理次请求报文,并将响应报文通过lo接口送给eth0网卡直接发送给客户端。

原理:首先要知道,互联网上的大多Internet服务的请求包很短小,而应答包通常很大,那么隧道模式 就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解 开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器。注意,由于RS需要对负载均衡器发过 来的数据包进行还原,所以说必须支持IPTUNNEL协议,所以,在RS的内核中,必须编译支持IPTUNNEL这个选项

优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户,所以,减少了 负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨大的请求量,这种方式,一 台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。

缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上

图示:

FULL-NAT模式

严格意义上它并不属于独立的一种模式,称为全网nat,属于nat模式的变种,有的面试官问lvs有几种的时候喜欢拿这个当脑筋急转弯,工作中并不常见。

解决的是LVS和RS跨VLAN的问题,而跨VLAN问题解决后,LVS和RS不再存在VLAN上的从属关系,可以做到多个LVS对应多个RS,解决水平扩容的问题。

4.2、轮询算法

我们在两个示例中使用的都是rr选项

 常见的轮询算法如下

Fixed Scheduling Method 静态调服方法 

RR 轮询

Round-Robin:调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

WRR 加权轮询

调度器通过"加权轮叫"调度算法,根据真实服务器的不同处理能力.来调度访问请求。这样可以保证处理能力强的服务器,处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值

DH 目标地址hash

"目标地址散列"调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

根据客户点的菜找对应厨师处理

SH 源地址hash

"源地址散列"调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

根据客户找对应的厨师处理

Dynamic Scheduling Method 动态调服方法

LC 最少连接

调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。

找排队最短的打饭窗口

WLC 加权最少连接

在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

比较好吃的打饭窗口,人数差不多也会在这里处理

LBLC 基于本地的最少连接

"基于局部性的最少链接" 调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器 是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用"最少链接"的原则选出一个可用的服务 器,将请求发送到该服务器。

LBLCR 带复制的基于本地的最少连接

"带复制的基于局部性最少链接"调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个 目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务 器组,按"最小连接"原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器,若服务器超载;则按"最小连接"原则从这个集群中选出一 台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的 程度。

4.3、负载均衡常见模式

http重定向、DNS负载均衡、7层反向代理负载均衡、4层IP网络层负载均衡、数据链路层负载均衡、F5硬件负载均衡(性能最好的负载均衡,成本极高)

1)4层IP网络层负载均衡:

lvs-nat

在网络层和传输层(IP和端口)通过修改目标地址进行负载均衡。 用户访问请求到达负载均衡服务器,负载均衡服务器在操作系统内核进程获取网络数据包,根据算法得到一台真实服务器地址,然后将用户请求的目标地址修改成该真实服务器地址,数据处理完后返回给负载均衡服务器,负载均衡服务器收到响应后将自身的地址修改成原用户访问地址后再讲数据返回回去。类似于反向服务器负载均衡。

优点:在响应请求时速度较反向服务器负载均衡要快。

缺点:无法处理更高级的请求(负载均衡只能看到ip和端口信息

2)数据链路层负载均衡:

lvs-dr

在数据链路层修改Mac地址进行负载均衡。 负载均衡服务器的IP和它所管理的web 服务群的虚拟IP一致; 负载均衡数据分发过程中不修改访问地址的IP地址,而是修改Mac地址; 通过这两点达到不修改数据包的原地址和目标地址就可以进行正常的访问。

优点:不需要负载均衡服务器进行IP地址的转换。 数据响应时,不需要经过负载均衡服务器。

缺点:负载均衡服务器的网卡带宽要求较高

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/30624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#.Net筑基-集合知识全解

01、集合基础知识 .Net 中提供了一系列的管理对象集合的类型&#xff0c;数组、可变列表、字典等。从类型安全上集合分为两类&#xff0c;泛型集合 和 非泛型集合&#xff0c;传统的非泛型集合存储为Object&#xff0c;需要类型转。而泛型集合提供了更好的性能、编译时类型安全…

华为数通——ACL

ACL基本介绍 ACL:访问控制列表&#xff0c;通过端口对数据流进行过滤&#xff0c;ACL判别依据是五元组&#xff1a;源IP地址&#xff0c;源端口&#xff0c;目的IP地址&#xff0c;目的端口、协议。&#xff08;ACL工作于OSI模型第三层&#xff0c;是路由器和三层交换机接口的…

SpringBoot的配置文件和YAML文件的语法

1.SpringBoot的有两种格式的全局配置文件&#xff0c;使用任何一个功能都是一样的 注意&#xff1a;SpringBoot的全局配置文件名都是固定的application.xxx ① application.properties&#xff0c; 这个是默认Spring initializr默认自动生成的配置文件&#xff0c;也是我们属…

2024免费数据恢复工具EasyRecovery电脑必备软件

&#x1f389; 数据安全小能手&#xff0c;EasyRecovery最新功能揭秘 &#x1f513; 亲爱的小红书的朋友们&#xff01;你们有没有因为不小心删除了重要文件而焦急万分&#xff1f;或者因为电脑突然崩溃&#xff0c;担心珍贵的资料丢失&#xff1f;别怕&#xff0c;今天我就来给…

岁月长河中的温柔等待

在那个年代&#xff0c;爱情往往像是一条静静流淌的小河&#xff0c;不动声色却又波澜不惊。在一个小村庄里&#xff0c;住着一对中年夫妻&#xff0c;人们叫他们李大叔和赵阿姨。他们的故事&#xff0c;就像是那个时代的缩影&#xff0c;承载着岁月的沧桑与深情的守候。 李大…

【CT】LeetCode手撕—160. 相交链表

目录 题目1- 思路2- 实现⭐160. 相交链表——题解思路 3- ACM 实现 题目 原题连接&#xff1a;160. 相交链表 1- 思路 模式识别&#xff1a;相交链表 ——> 判断是否相交 思路 保证 headA 是最长的那个链表&#xff0c;之后对其开始依次遍历 2- 实现 ⭐160. 相交链表—…

基于振弦采集仪的地下综合管廊工程安全监测技术研究

基于振弦采集仪的地下综合管廊工程安全监测技术研究 地下综合管廊工程是一项重要的城市基础设施工程&#xff0c;承载着城市供水、供电、供热、排水等重要功能。为了确保地下综合管廊工程的安全运行&#xff0c;需要进行有效的安全监测。本文将重点研究基于振弦采集仪的地下综…

Socket编程之多进程模型

一、多进程模型概述 基于最初的阻塞网络 I/O &#xff0c;若服务器要为多个客户端提供支持&#xff0c;在较为传统的手段中&#xff0c;多进程模型是常用的选择&#xff0c;即为每个客户端都分配一个进程来处理其请求。 服务器的主进程主要负责对客户连接的监听&#xff0c;一旦…

局域网共享文件夹怎么加密?方法很简单

局域网共享文件夹是企业内部信息、数据传递沟通的重要工具&#xff0c;而为了保护共享文件夹数据安全&#xff0c;我们需要使用专业的加密软件加密保护局域网共享文件夹。下面我们就来了解一下局域网共享文件夹加密方法。 局域网共享文件夹加密 在加密共享文件夹时&#xff0c…

PyCharm新手入门

前言 在之前《Python集成开发工具的选择》一文中介绍了python初学者可以使用Jupyter Notebook&#xff0c;Jupyter Notebook简单易用&#xff0c;可以用来练习代码编写&#xff0c;但是实际生产开发环境使用这个工具是远远不够用的&#xff0c;因为实际软件开发中需要软件调试…

计算机组成原理(Wrong Question)

目录 一、计算机系统概述 *1.1 计算机发展历程 1.2 计算机系统层次结构 1.3 计算机的性能指标 二、 数据的表示和运算 2.1 数制和编码 2.2 运算方法和运算电路 2.3 浮点数的表示与运算 三、存储系统 3.1 存储器概述 3.2 主存储器 3.3 主存储器与CPU的连接 3.4 外部…

MFC扩展库BCGControlBar Pro v35.0

LINK : fatal error LNK1104: 无法打开文件“BCGCBPRO2800U140.lib” BCGControlBar v25.0版本 环境VS2015&#xff0c;在运行程序时出现提示错误 &#xff1a;LINK : fatal error LNK1104: 无法打开文件“BCGCBPRO2800U140.lib” 1、需要编译一下BGCControlBar&#xff0c;在…

串口rx + RAM + LCD

REVIEW 昨天摸鱼怪发现高两位的数据写入or读出存在问题&#xff1a; RAM 串口的简单应用-CSDN博客 1. 今日摸鱼任务 UART_RX RAM LCD 来显示一下是 rx or tx 的问题 2. 代码部分 rx_ram_lcd.v module rx_ram_lcd(input clk ,input reset_n ,input uart_rx ,output …

数据结构试题 20-21

真需要就死记吧 二叉树遍历-先序(非递归)【图解代码】_哔哩哔哩_bilibili 解释一下步骤&#xff1a; 一个循环为&#xff1a; 1.取节点 2.放右子树 3.放左子树 每次循环&#xff0c;都要从栈里取出一个节点 先放右子树&#xff0c;再放左子树 那这道题就是&#xff0c;先放1&am…

计算机组成原理必备知识点

计算机组成原理必备知识点 前言 本文档由本人复习计算机组成原理期末考试所总结&#xff0c;所有习题以及知识点的页数参考2025年王道计算机组成原理 中断处理过程 硬件完成 1.关中断 2.保存断点 3.中断服务程序寻址 中断程序完成 4.保存现场和屏蔽字 5.开中断 6.执…

【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验2 MAC地址,IP地址,ARP协议

一、实验目的 1.掌握计算机网络的寻址问题&#xff1b; 2.验证MAC地址与IP地址的关系&#xff1b; 3.了解ARP协议的作用。 二、实验要求 1.使用Cisco Packet Tracer仿真平台&#xff1b; 2.观看B站湖科大教书匠仿真实验视频&#xff0c;完成对应实验。 三、实验内容 1.构建网络…

ASP.NET MVC企业级程序设计(增删,页面水平排列,字符串拼接,非空,添加框内默认提示)

目录 题目&#xff1a; 实现过程 控制器代码 DAL BLL Index Deile 题目&#xff1a; 实现过程 控制器代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using MvcApplication1.Models;namespac…

双通道-程控绝缘测试电阻箱的性能

双通道-程控绝缘测试电阻箱是高精度、高性能的电气测量设备&#xff0c;广泛应用于电力系统、电气设备、电子设备等领域。采用先进的数字式电阻测量技术&#xff0c;具有高精度、高稳定性的测量性能。其测量误差小于0.05%&#xff0c;能够满足各种精密测量的需求。 双通道-程控…

MacBook Air M3的电脑怎么样 新买MacBook Air提示内存不足 苹果电脑内存不够用怎么办

Apple的MacBook Air系列一直是轻薄便携笔记本电脑的代表&#xff0c;最新推出的MacBook Air M3因其出色的性能和优雅的设计而受到广泛关注。然而&#xff0c;许多用户在购买全新的MacBook Air后反应他们遇到了内存不足的提示。 本文将探讨MacBook Air M3的电脑怎么样&#xff0…

Java 集合框架:Vector、Stack 的介绍、使用、原理与源码解析

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 015 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…