Nginx基础详解5(nginx集群、四七层的负载均衡、Jmeter工具的使用、实验验证集群的性能与单节点的性能)

续Nginx基础详解4(location模块、nginx跨域问题的解决、nginx防盗链的设计原理及应用、nginx模块化解剖)-CSDN博客
 

目录

14.nginx集群(前传)

14.1如何理解单节点和集群的概念

14.2单节点和集群的比较

14.3Nginx中的负载均衡模块

15.四层、七层与DNS负载均衡

15.1四层负载均衡和七层负载均衡的概念

15.1.1四层负载均衡

15.1.2四层负载均衡的实现方法(仅作了解)

15.1.2.1F5硬负载均衡

15.1.2.2LVS四层负载均衡

15.1.2.3Haproxy四层负载均衡

15.1.2.4Nginx四层负载均衡

15.1.3七层负载均衡

15.1.4四层和七层之间的比较

15.1.5七层负载均衡的实现方法

15.1.5.1Nginx实现负载均衡(仅作了解)

15.1.5.2Haproxy实现负载均衡

15.1.5.3apache实现负载均衡

15.2地域负载均衡的原理

15.2.1地域负载均衡的优势(仅作了解)

16.jmeter工具测试网站抗负载能力

16.1Jmeter的安装

16.2Jmeter的使用

16.3开始结果测试并查看结果

16.1结果栏(Sampler result)

16.2请求栏

16.3响应栏(相应成功后Response Body显示网页内容)

16.4实验:对比集群服务器与单体服务器在访问上的区别


14.nginx集群(前传)

14.1如何理解单节点和集群的概念

        我们举一个例子,现在老板雇了一个工人,但是有10块砖,一个工人就会将他搬完;如果工人生病上不了班了,那么砖头就没有去搬了,就会造成单节点故障;多节点相当于老板雇了多个工人共同搬10块砖,这样的好处就是效率提高了好几倍,并且当一个工人生病请假的时候不会影响整体的工作,虽然效率有所下降,但是工作能正常运行(单节点经过水平扩容就会变成集群)。

14.2单节点和集群的比较

单节点模式:

  • 优点:
    • 配置简单,操作简单。
    • 性能高,因为没有网络开销和数据同步的延迟。
    • 成本低,没有备用节点,不需要其他的开支。
  • 缺点:
    • 数据容量受限于单台服务器的内存大小,无法进行横向扩展。
    • 数据安全性低,一旦服务器宕机或者数据损坏,会造成数据的丢失或不一致。
    • 可用性低,没有冗余备份,无法实现故障转移和负载均衡。
    • 可靠性保证不是很好,单节点有宕机的风险。
    • 单机高性能受限于CPU的处理能力,Redis是单线程的 。

集群模式:

  • 优点:
    • 提供了更好的扩展性,可以通过增加更多的节点来提高处理能力和存储容量。
    • 提高了系统的可用性和容错性,一个节点的故障不会导致整个系统的崩溃。
    • 可以实现负载均衡,分散请求到多个节点,提高性能。
    • 适合于需要高可用性、可扩展性和可靠性的应用场景。
  • 缺点:
    • 配置和维护复杂,需要处理节点之间的协调和数据同步。
    • 成本高,需要更多的硬件资源和软件许可。
    • 可能存在数据一致性问题,需要额外的机制来保证数据的一致性。
    • 网络分裂和脑裂可能导致数据不一致 。

        综上:我们总结出一个道理,在经济条件允许的情况下,两台2核4G的性能一定大于一台4核心8G的服务器的性能,因为两个及以上的服务器可以进行集群的操作,有1+1>2的效果!

14.3Nginx中的负载均衡模块

        nginx中使用upstream模块来控制自身的负载均衡,当客户端发来请求的时候,由nginx反向代理服务器发送到相关的网页服务器tomcat中,而这些tomcat共同组成了一个集群,那是哪台服务器优先接收到请求报文呢?这就涉及到Nginx具体的负载均衡算法了,先总述一下nginx的负载均衡共有至少6种方法(地域负载均衡、权重、轮询、hash、一致性hash、ip_hash、uri_hash)等等方法来解决集群高负载问题。很快我们就会讲解到。

15.四层、七层与DNS负载均衡

15.1四层负载均衡和七层负载均衡的概念

15.1.1四层负载均衡

        在网络中第四层为传输层,所以该层的负载均衡是基于TCP/UDP报文的,是在OSI模型的传输层(TCP/UDP)上进行的。基本的实现形式为IP地址+端口号这种方法,建立一个连接之后该链接并不会消失直到会话结束才会消失,这也是我们之前讲到过的“长链接”,长链接的使用大大提高了nginx的转发效率。

以下是第四层负载均衡的一些关键特点和工作原理:

基于连接:第四层负载均衡器在建立连接时工作,它可以根据目标IP地址和端口号来决定将流量转发到后端服务器池中的哪一台服务器。

长连接:在长连接(Persistent Connection)模式下,负载均衡器为每个客户端请求创建一个连接,并在请求结束后关闭连接。这种方式可以减少频繁建立和断开连接的开销,提高效率。

会话保持:为了确保用户在多次请求中与同一服务器进行通信,第四层负载均衡器可以实现会话保持(Session Persistence)或会话亲和性(Session Affinity)。这通常是通过在负载均衡器上存储会话信息并将其与特定的后端服务器关联起来实现的。

健康检查:负载均衡器会定期对后端服务器进行健康检查,以确保它们能够处理新的连接。如果检测到服务器不健康,负载均衡器会停止将流量发送到该服务器,直到它恢复正常。

负载均衡算法:第四层负载均衡器使用各种算法来决定如何分发流量,常见的算法包括轮询(Round Robin)、最少连接(Least Connections)、加权轮询(Weighted Round Robin)和加权最少连接(Weighted Least Connections)等。

透明性:在某些配置中,第四层负载均衡器对客户端是透明的,客户端不需要知道负载均衡器的存在。在其他配置中,客户端可能需要配置DNS以指向负载均衡器的IP地址。

性能:由于第四层负载均衡器仅处理IP地址和端口号,它通常能够提供高性能的流量分发,尤其是在处理大量并发连接时。

安全性:第四层负载均衡器可以提供基本的安全功能,如基本的访问控制列表(ACLs)和防止某些类型的网络攻击。

15.1.2四层负载均衡的实现方法(仅作了解)

15.1.2.1F5硬负载均衡

        F5是一种高性能的硬件负载均衡器,它通过智能地分配用户请求到后端服务器集群中的多个节点来实现负载均衡。F5支持多种负载均衡算法,包括轮询、最小连接、基于资源的以及基于IP散列等。F5还提供会话保持功能,确保同一用户的请求能够被送往同一后端服务器,以及SSL卸载功能,减轻后端服务器的计算负担。

15.1.2.2LVS四层负载均衡

        LVS(Linux Virtual Server)是一个开源的负载均衡解决方案,它可以在Linux内核中实现网络负载均衡。LVS支持多种工作模式,包括NAT、DR、TUN和FULL-NAT模式。每种模式都有其特定的应用场景和配置方式。LVS通过ipvsadm工具进行配置和管理,支持多种调度算法,如轮询、最少连接等。

15.1.2.3Haproxy四层负载均衡

        HAProxy是一个开源的高性能负载均衡器,它可以在TCP和HTTP层面上进行负载均衡。HAProxy支持丰富的配置选项,包括多种负载均衡算法、健康检查、会话保持等。HAProxy的配置简单,性能高效,适用于需要高并发处理的场景。

15.1.2.4Nginx四层负载均衡

        Nginx不仅是一款优秀的Web服务器,也可以通过Stream模块实现四层负载均衡。Nginx的Stream模块允许进行TCP和UDP的代理和负载均衡。配置Nginx进行四层负载均衡非常简单,只需要在配置文件中定义upstream和server块即可。Nginx的四层负载均衡同样支持多种负载均衡算法,如轮询、最少连接等。

15.1.3七层负载均衡

在网络中第七层为应用层,所以该层的协议是基于HTTP协议的,也是基于URL和IP所进行的负载均衡。

15.1.4四层和七层之间的比较

四层负载均衡(黄牛)

四层负载均衡就像是一群黄牛在剧院门口卖票。他们只关心两件事情:谁在买票(IP地址)以及他们想要哪种票(端口号)。黄牛们并不在乎这场演出是什么内容,也不关心买家是谁,他们只是按照先来先服务的原则,将票卖给下一个人,并从他们手中收取费用。如果某个黄牛(服务器)太忙了,其他的黄牛就会接管新的买家,以确保每个人都能尽快买到票。

  • 优点:快速、高效,不需要了解太多细节。
  • 缺点:缺乏灵活性,无法根据票的种类(内容)或买家的偏好做出更智能的决策。

七层负载均衡(售票处)

七层负载均衡则像是剧院内部的售票处。售票员不仅知道剧院的座位布局(服务器的健康状况和负载情况),还了解不同演出的详细信息(应用层的内容,如HTTP头、URL等)。他们可以根据演出的热度、座位的可用性、甚至是买家的会员等级来分配座位(请求)。如果某个区域的座位已经满了,或者某个演出非常受欢迎,他们可以将更多的买家引导到这些区域。

  • 优点:更加智能和灵活,可以根据复杂的规则和策略来分配请求。
  • 缺点:处理每个请求需要更多的信息和时间,可能会稍微降低效率。

15.1.5七层负载均衡的实现方法

15.1.5.1Nginx实现负载均衡(仅作了解)

        Nginx在七层负载均衡中就像是一个现代化的电子售票系统。它可以根据用户的浏览历史、购票偏好、甚至实时的流量情况来推荐座位。Nginx通过检查HTTP请求头来决定将请求转发到哪个服务器,并且可以缓存常见的响应来提高效率。

15.1.5.2Haproxy实现负载均衡

        HAProxy则像是一个经验丰富的售票主管,它不仅了解每场演出的细节,还能够实时监控每个售票员(服务器)的状态。HAProxy可以根据实时数据来优化票的分配,确保每个买家都能得到最佳的座位,同时保持剧院的运营效率。

15.1.5.3apache实现负载均衡

        Apache作为一个负载均衡器,就像是一个传统的售票处,它遵循先来先服务的原则,但也提供了一些基本的调度策略,比如根据演出的类型或者座位区域来分配票。Apache可能没有Nginx或HAProxy那样灵活,但它稳定且易于配置。但是如果呈现上百万的买票者(访问量)的话,apache也是扛不住的,性能会持续下降。

15.2地域负载均衡的原理

        当我们客户端想要访问某个服务器的时候,该服务器在全国有两个(假设),北京一个、上海一个。假设我们的客户端在河北,你认为会分配到上海的服务器吗?

        显然不会(如果你不可以去分配上海的服务器或者北京的服务器没坏),我们在发送请求的时候将我们自身的IP地址发送到DNS服务器之后DNS会根据服务器的就近原则还给你一个最近服务器的公网的IP地址。反之我们到南方访问某服务器还是会根据地域分配给你一个相应的IP地址。

        如果还是不明白的话大家玩过Steam游戏吧,游戏内我们想要挂加速器的话是不是“内港澳台韩日新”这些位置的服务器速度比较快,如果你挂一个瑞士的服务器或者挂到南美洲,相比之下速度是不是没有距离我们近的服务器速度快?这也是地域负载均衡的一种体现,距离近的服务器速度快、体验好。

15.2.1地域负载均衡的优势(仅作了解)

        降低延迟:通过将用户请求路由到最近的服务器,减少数据传输距离,从而降低延迟,提高用户体验。

        提高可用性:如果一个地区发生故障,流量可以被重定向到其他地区的服务器,保证服务的连续性。

        优化资源利用:可以根据每个地区的用户访问量和服务器性能,合理分配资源,提高资源利用率。

        增强容灾能力:在不同地理位置部署服务器,可以在自然灾害或其他不可预见的事件发生时,保证服务不受影响。

        支持灵活的流量管理:可以根据实际需求,灵活地调整流量分配策略,以应对不同的业务场景。

        提高安全性:可以通过负载均衡设备在七层进行安全策略的设置,过滤特定报文,提高系统整体安全。

        支持业务增长:随着业务的扩展,可以在新的地区部署服务器,并通过地域负载均衡进行流量分发,支持业务的全球化发展。

        成本效益:通过合理分配流量,可以避免过度依赖单一数据中心,降低成本。

        支持混合云部署:可以与云服务提供商的全球网络结合,实现云资源和本地资源的优化配置。

16.jmeter工具测试网站抗负载能力

        我们网站搭建好了之后如何完成测试呢?假设我们想要测一测网站是否可以满足200个人同时各发送100个请求共20000各请求,网站服务器能不能扛得住呢?异常率是多少?单体和集群的数据上的差别到底在哪里?这就用到了我们测试工具Jmeter了。

16.1Jmeter的安装

先找到下载地址“点我下载Jmeter”进入的主界面如下图

        下载完成之后找到本地的安装包并解压,找到Jmeter-server.bat工具双击即可运行,如果您是Mac用户双击jmeter打开后的界面如下

16.2Jmeter的使用

第一步:新建测试文件并保存

        在TestPlan中可以修改测试计划的名称,我们将其改为单节点tomcat,修改后保存到某一位置。我保存到了D盘的JmeterTestProject目录下了。

第二步:新建线程组并编辑

        编辑线程组的内容(例子为50个用户将在1秒内全部启动,每个用户将发送100个请求,总共是5000个请求。这些请求将在整个测试期间发送,直到所有用户都完成了他们的100个请求。)

第三步:添加取样器并编辑(右击线程组1->Add->Sampler->Http Request)表示我们添加了取样器(Sampler)中的http请求的取样器(还可以对其他类型进行取样,我们先实验对http报文进行取样)

接下来我们编辑取样器

第四步:添加聚合报告

第五步:添加查看结果树

第六步:添加用“表格查看结果”

完成之后的界面如下

16.3开始结果测试并查看结果

单击上方Start绿色按钮开始结果测试,我们可以查看测试完成后的聚合报告

对于下方13列的信息我来给大家解释一下:

Label: 这是图表的标签,通常用于描述图表的内容。

# Samples: 表示采样次数,即请求的总数。

Average: 平均值,所有请求的平均响应时间(单位为毫秒)。

Median: 中位数,所有请求响应时间的中值,表示一半请求比这个值快,一半请求比这个值慢(单位为毫秒)。

90% Line: 90%表示5000个请求中第90%个报文的响应时间或第90%个报文的平均响应时间(单位为毫秒)。

95% Line: 95%表示5000个请求中第95%个报文的响应时间或第95%个报文的平均响应时间(单位为毫秒)。

99% Line: 99%表示5000个请求中第99%个报文的响应时间或第99%个报文的平均响应时间(单位为毫秒)。

Min: 最小值,所有请求中的最小响应时间。

Maximum: 最大值,所有请求中的最大响应时间。

Error%: 错误率,失败请求占总请求的百分比。

Throughput: 吞吐量,单位时间内完成的请求数,通常以每秒完成的请求数(requests/sec)来表示。

Received KB/sec: 每秒接收的数据量(以KB为单位)。

Sent KB/sec: 每秒发送的数据量(以KB为单位)。

11-13列与网络带宽挂钩,带宽越大,这三列性能越高

显然,50个请求对于tomcat还是吃得消的,但如果我们将请求的用户数量增大呢?50-->200

再来查看报告

        这时我们发现Maximum数值变得异常大,如果以毫秒为单位的话相当于4s多了,在计算机中4s算是相当长的时间了,所以我们单台tomcat对于多用户的请求会慢慢的吃不消。

我们再来分析一下结果树的信息

16.1结果栏(Sampler result)

        Thread Name: 线程的名称,例如线程图1 1-396,这可能表示在JMeter测试计划中的第一个线程组中的第396个线程。

        Sample Start: 样本开始时间,例如2024-10-02 11:19:39 CST,表示请求发送的时间。

        Load time: 请求的加载时间,这里为7毫秒。

        Connect Time: 建立连接所需的时间,这里为0毫秒。

        Latency: 延迟时间,从发送请求到收到第一个响应字节的时间,这里为7毫秒。

        Size in bytes: 响应的总字节大小,这里为7858字节。

        Sent bytes: 发送的字节数,这里为117字节。

        Headers size in bytes: 响应头的大小,这里为310字节。

        Body size in bytes: 响应体的大小,这里为7548字节。

        Sample Count: 样本计数,这里为1,表示这个请求被执行了一次。

        Error Count: 错误计数,这里为0,表示没有错误。

        Data type: 响应数据的类型,这里为text和binT,text表示文本数据,bin是二进制数据。

        Response code: 响应代码,200表示HTTP请求成功。错误则显示一段英语Non......

        Response message: 响应消息,OK表示请求成功。

        HTTPSampleResult fields: 这是一系列与HTTP请求结果相关的字段。

        ContentType: 内容类型,text/html;charset=UTF-8表示响应的内容类型是HTML,字符编码是UTF-8。

        DataEncoding: 数据编码,这里也是UTF-8。

16.2请求栏

上图为请求报文的内容

上图为请求体内容

16.3响应栏(相应成功后Response Body显示网页内容)

相应成功后显示的响应报头

16.4实验:对比集群服务器与单体服务器在访问上的区别

        实验前提:我们有两台服务器,一台tomcat服务器,另一台nginx服务器(nginx服务器上也配置了tomcat服务),tomcat服务器的ip为192.168.154.140,nginx服务器的IP地址为192.168.154.142,现在我们将这两个服务器设置成一个集群来使用,使用Jemeter服务测试集群服务器是否比单台服务器的性能高。

        并且我们将tomcat服务器编写上h1标签为tomcat1,nginx服务器编写上标签为tomcat2,重复刷新界面我们发现既可以刷新到tomcat1的界面,也可以刷新到tomcat2的界面。
需要注意的是:我们手动编辑tomcat的默认界面的位置在

apache-tomcat的目录下/webapp/ROOT/index.jsp

我们在nginx中nginx.conf的配置如下图所示

接下来我们使用测试工具Jmeter对网页进行访问测试,并与先前的单台进行对比:

集群的结果如下

单台的结果如下

我们发现最后三列不论是吞吐量还是数据的收发能力都是集群的服务器高。重复刷新界面查看显示的网页一样吗?我们发现不一样!相同的ip却是访问到了两台tomcat服务器,这正是负载均衡最简单的、最有力的证明!

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

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

相关文章

QT入门教程攻略 QT入门游戏设计:贪吃蛇实现 QT全攻略心得总结

Qt游戏设计:贪吃蛇 游戏简介 贪吃蛇是一款经典的休闲益智类游戏,玩家通过控制蛇的移动来吃掉地图上的食物,使蛇的身体变长。随着游戏的进行,蛇的移动速度会逐渐加快,难度也随之增加。当蛇撞到墙壁或自己的身体时&…

Laravel Filament 如何配置多语言支持

演示 一、安装拓展包outerweb/filament-translatable-fields composer require outerweb/filament-translatable-fields配置模型 该套件包含一个名为 HasTranslations 的特性,用于使 Eloquent 模型具备多语言功能。翻译值以 JSON 格式存储,并不需要额外…

Run the FPGA VI 选项的作用

Run the FPGA VI 选项的作用是决定当主机 VI 运行时,FPGA VI 是否会自动运行。 具体作用: 勾选 “Run the FPGA VI”: 当主机 VI 执行时,如果 FPGA VI 没有正在运行,系统将自动启动并运行该 FPGA VI。 这可以确保 FPG…

夜间数据库IO负载飙升?MySQL批量删除操作引发的问题排查

目录 问题现象 问题分析 修改建议 总结 问题现象 近日,某用户反馈他们的MySQL数据库实例在凌晨时段会频繁出现IO负载急剧上升的情况,这种状态会持续一段时间,随后自行恢复正常。为了查明原因,该用户通过DBdoctor工具收集了相…

第十三章 Redis短信登录实战(基于Redis)

目录 一、概述 1.1. Session复制 1.2. 使用Redis 二、基于Redis实现共享Session登录 2.1. 实现思路 2.2. 功能实现的主要代码 2.2.1. 用户业务接口 2.2.2. 用户业务接口实现类 2.2.3. 用户控制层 2.2.4. 登录拦截器 2.2.5. 拦截器配置类 2.3. 优化登录拦截器 完…

电池大师 2.3.9 | 专业电池管理,延长寿命优化性能

Battery Guru 显示电池使用情况信息,测量电池容量(mAh),并通过有用技巧帮助用户改变充电习惯,延长电池寿命。支持显示电池健康状况,优化电池性能。 大小:9.6M 百度网盘:https://pan…

26.删除有序数组中的重复项

题目::26. 删除有序数组中的重复项 - 力扣&#xff08;LeetCode&#xff09; 思路:只要不和前面的数一样就可以移动指针&#xff0c;进行赋值 代码: class Solution { public:int removeDuplicates(vector<int>& nums) {int slow 0 ;for(int fast 1; fast < …

髓质脊髓三叉神经核文献阅读笔记

文献阅读 1.RNA-seq 对于大量RNA测序&#xff0c;收集第30天的类器官。使用FastPure细胞/组织总RNA分离试剂盒根据制造商的方案提取总RNA。采用Nanodrop 2000分光光度计测定RNA浓度和纯度。使用Agilent 2100生物分析仪和2100 RNA纳米6000检测试剂盒评估RNA样品的完整性。简单…

选型工单管理系统,从原理到应用全面解读

工单管理系统提升客户支持效率&#xff0c;优化内部协作&#xff0c;强化数据分析。选型需明确需求&#xff0c;比较系统功能和特性&#xff0c;评估试用后选择最适合的系统。ZohoDesk凭其多渠道支持、智能分配、自动化工具、协作工具和数据分析能力&#xff0c;成为企业优选。…

Redis篇(缓存机制 - 基本介绍)(持续更新迭代)

目录 一、缓存介绍 二、经典三缓存问题 1. 缓存穿透 1.1. 简介 1.2. 解决方案 1.3. 总结 2. 缓存雪崩 2.1. 简介 2.2. 解决方案 2.3. 总结 3. 缓存击穿 3.1. 简介 3.2. 解决方案 3.3. 总结 4. 经典三缓存问题出现的根本原因 三、常见双缓存方案 1. 缓存预热 1…

MySQL进阶 - 索引

01 索引概述 【1】概念&#xff1a;索引就是一种有序的数据结构&#xff0c;可用于高效查询数据。在数据库表中除了要保存原始数据外&#xff0c;数据库还需要去维护索引这种数据结构&#xff0c;通过这种数据结构来指向原始数据&#xff0c;这样就可以根据这些数据结构实现高…

一个月学会Java 第8天 方法与递归

Day8 方法与递归 方法这个东西我们之前讲过&#xff0c;但是只是讲了原理并没有详细的讲解东西&#xff0c;还有构造器这个东西&#xff0c;也只是介绍过全貌&#xff0c;构造器其实就是一个特殊的方法&#xff0c;但是由于特殊&#xff0c;所以我们之后再讲&#xff0c;还有一…

yolov8/9/10/11模型在中医舌苔分类识别中的应用【代码+数据集+python环境+GUI系统】

yolov8、9、10、11模型在中医舌苔分类识别中的应用【代码数据集python环境GUI系统】 背景意义 目前随着人们生活水平的不断提高&#xff0c;对于中医主张的理念越来越认可&#xff0c;对中医的需求也越来越多。 传统中医的舌诊主要依赖于医生的肉眼观察&#xff0c;仅仅通过这…

69.【C语言】动态内存管理(重点)(2)

本文为数据结构打下基础 备注:数据结构需要掌握指针,结构体和动态内存管理 承接68.【C语言】动态内存管理(重点)(1)文章 目录 3.free函数 cplusplus网的翻译 提炼要点 使用 x86debug环境下, 打开内存窗口 建议 3.free函数 cplusplus的介绍 点我跳转 cplusplus网的翻译…

计算机网络:计算机网络概述:网络、互联网与因特网的区别

文章目录 网络、互联网与因特网的区别网络分类 互联网因特网基于 ISP 的多层次结构的互连网络因特网的标准化工作因特网管理机构因特网的组成 网络、互联网与因特网的区别 若干节点和链路互连形成网络&#xff0c;若干网络通过路由器互连形成互联网 互联网是全球范围内的网络…

信息安全工程师(40)防火墙技术应用

一、防火墙的基本概念 防火墙是一种网络安全设备&#xff0c;用于监控和控制网络流量&#xff0c;以保护网络免受未经授权的访问和攻击。它可以是装配多张网卡的通用计算机&#xff0c;也可能是通用的物理设备。防火墙通过在网络之间设置访问控制策略&#xff0c;对进出的通信流…

JAVA开源项目 加油站管理系统 计算机毕业设计

本文项目编号 T 003 &#xff0c;文末自助获取源码 \color{red}{T003&#xff0c;文末自助获取源码} T003&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

vue3中el-input在form表单按下回车刷新页面

摘要&#xff1a; 在input框中点击回车之后不是调用我写的回车事件&#xff0c;而是刷新页面&#xff01; 如果表单中只有一个input 框则按下回车会直接关闭表单 所以导致刷新页面 再写一个input 表单 &#xff0c;并设置style“display:none” <ElInput style"display…

[Python] 使用Python自定义生成二维码

文章目录 目录 安装 qrcode 库生成简单的二维码代码讲解 生成自定义样式的二维码代码讲解 生成带有链接的二维码代码讲解 Demo代码实现代码讲解 总结 收录专栏: [Python] 二维码是现在非常常用的一种信息存储和传递方式&#xff0c;我们可以通过扫描二维码来快速获取文本、链接…

论文精读之Label-Augmented Dataset Distillation (LADD)标签增强数据集蒸馏

[TOC](论文精度之Label-Augmented Dataset Distillation (LADD)标签增强数据集蒸馏) 0.前言 现在开始要不断培养我自身的阅读论文的能力,我的方法不一定是对的,但是不犯错的前提就在于要先犯错,提早去培养自己该方面的能力,其实很早之前就了解到了一些论文学习的方法,但自己总…