服务器技术(三)--Nginx
Nginx介绍
Nginx是什么、适用场景
Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。
Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50,000个并发连接数。
-
HTTP的反向代理服务器
- 正向代理
正向代理是在我们的客户端和服务器之间加了一个代理服务器。客户端把信息传到代理服务器上,代理服务器代替客户端,把请求信息转发,如百度、银行、文件服务等,然后把结果返回给客户端。
代理服务器的作用为提供安全功能,还可以隐藏客户端自身的信息。 - 反向代理

反向代理是为服务端开发的。反向代理是指客户端访问的时候,不直接访问所要请求的服务器,而是在多个服务器之前统一加一个代理服务器。
反向代理服务器,可以隐藏服务器信息。它除了提供安全功能之外,还有一个重要的功能就是后端多个服务器之间提供负载均衡,或者对比较慢的服务器提供缓存。

- 正向+反向代理

- 正向代理
-
负载均衡
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。

-
动静分离(动态静态资源分离)
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。

- 不分离会变慢
像css、js、图片等静态资源其实没有必要由后端服务器去提供的,因为经过服务器去处理之后,速度会被延缓。 - 静态资源无需经过Tomcat,Tomcat只负责处理动态请求。
- 后缀为gif的时候,Nginx会直接获取到当前请求的文件并返回。
- Nginx本身也是静态资源服务器,比如开发的网站只有静态资源的时候,如个人主页、博客、公司简要介绍等,可以时候Nginx当服务器,并且Nginx性能也是非常不错的。
- 不分离会变慢
Nginx的优点

- 高并发、高性能
以主流服务器配置(如32G或64G服务器),使用Nginx可以轻松达到千万级别的并发连接。 - 可扩展性好
Nginx的可扩展性主要体现在模块化设计,模块化设计非常的稳定,使得Nginx的第三方模块生态圈非常丰富。 - 高可靠性
Nginx在服务器上不间断运行长达数年之久。 - 热部署
在不停止服务的情况下可以升级Nginx。 - 开源、可商用
Nginx有BSD许可证,可开源免费使用。
Nginx的安装
这里记录的是使用yum命令,如果手动安装,需要先安装prre.tar.gz 、openssl.tar.gz、 zlib.tar.gz等依赖,再安装nginx.tar.gz,这里不再赘述。
- Linux的安装
按装依赖yum-utils,执行命令yum install yum-utils

执行vim /etc/yum.repos.d/nginx.repo输入源信息
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/7/@basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
执行yum list | grep nginx查看稳定版的源

然后选择稳定版运行yum install nginx安装(出现询问输入y)


输入nginx -v或whereis nginx验证是否安装成功

-
Mac OS的安装
通过工具brew安装
brew install nginx -
Windows不推荐安装
- 功能和Linux不完全一样
- 和实际生产相差很大
Nginx的常用命令
- /usr/sbin/nginx启动
启动后有三种验证已启动的方法-
重新执行启动命令,会提示端口已被使用

-
执行ps -aux | grep nginx查看nginx相关进程

-
通过浏览器看看能不能访问到(注:如果访问失败,可能是端口没放开,开放端口请参考服务器技术(二)–Linux进阶应用(2)–Linux用户与权限及CentOS7防火墙firewall)

-
- nginx -h 帮助

- nginx -c 读取指定配置文件
先执行nginx -s stop停止nginx
然后执行nginx -c /etc/nginx/nginx.conf按指定配置文件启动

- nginx -t 查看并测试配置文件是否正确

- nginx -v 、nginx -V 版本

- 找到正在运行的nginx的路径whereis nginx

- ps aux | grep nginx 查看nginx进程信息

- nginx -s 信号
- stop 立即停止
- quit 优雅停止
- reload 重启
先检查新的配置文件语法有效性,如果不通则不会重启,如果语法没问题,启动一个新的进程,直到旧的进程把拥有的任务处理完毕之后让旧的进程退出 - reopen 更换日志文件
Nginx配置文件
- 配置文件语法
- ;结尾
- {}组织多条指令
- include 引入
- # 注释
- $ 变量
- 默认配置文件
- nginx.conf
/etc/nginx/nginx.conf
- nginx.conf
## 全局块:从配置文件开始到events块之间的内容,主要设置一些影响整体运行的配置指令
# 运行用户,默认是nginx
user nginx;
# nginx进程数,一般默认为何cpu核数一样
worker_processes auto;# 全局错误日志路径
error_log /var/log/nginx/error.log notice;
# 进程pid路径
pid /var/run/nginx.pid;## events块:涉及的指令主要影响Nginx服务器与用户的网络连接
events {# 最大连接数worker_connections 1024;
}## http块,包括http全局块和server块,Nginx服务器配置中最频繁的部分
#设置http服务器
http {include /etc/nginx/mime.types;default_type application/octet-stream;# 日志格式log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';# 访问的日志access_log /var/log/nginx/access.log main;# 开启高效传输模式sendfile on;#tcp_nopush on;# 长链接超时时间,单位秒keepalive_timeout 65;# 传输的时候是否需要压缩#gzip on;# 加载其他配置文件include /etc/nginx/conf.d/*.conf;
}
default.conf
/etc/nginx/conf.d/default.conf
## server块,包括全局server块和location块,这块和虚拟主机有密切关系
server {# 端口号listen 80;#服务器名称server_name localhost;#access_log /var/log/nginx/host.access.log main;# 默认情况下/代表的路径location / {# 默认转发的路径root /usr/share/nginx/html;# 默认主页index index.html index.htm;}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html# 发生错误的时候所要请求的页面error_page 500 502 503 504 /50x.html;# 当请求某个错误文件的时候转发的地址location = /50x.html {root /usr/share/nginx/html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {# proxy_pass http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {# deny all;#}
}
所以只要在/usr/share/nginx/html路径下的文件都可以访问打开。
搭建静态资源服务器
通过文件上传工具,如SecureFX上传测试项目到/usr/share/nginx/web目录下


修改文件/etc/nginx/conf.d/default.conf的location

然后重启nginx浏览器访问

可以打开/var/log/nginx/access.log查看日志

Nginx配置实例-反向代理
-
实现效果
- 打开浏览器,在浏览器地址栏输入地址www.123.com,跳转到linux系统tomcat主页面中
-
准备工作
- 在linux系统安装tomcat,使用默认端口8080,安装步骤参考服务器技术(二)–Linux进阶应用(2)–Linux用户与权限及CentOS7防火墙firewall
-
访问过程的分析

-
具体配置
- 第一步 在windows系统的host文件进行域名和ip对应关系的配置,这边直接用 SwitchHosts工具配置

- 第二步 在nginx进行请求转发的配置(反向代理配置)
修改配置文件/etc/nginx/conf.d/default.conf

然后nginx -c /etc/nginx/nginx.conf启动nginx,浏览器访问www.123.com

- 第一步 在windows系统的host文件进行域名和ip对应关系的配置,这边直接用 SwitchHosts工具配置
Nginx配置实例-反向代理实例2
-
实现效果
使用nginx反向代理,根据访问的路径跳转到不同端口的服务器中
nginx监听端口为9001
访问 http://127.0.0.1:9001/edu/ 直接跳转到127.0.0.1:8080
访问 http://127.0.0.1:9001/vod/ 直接跳转到127.0.0.1:8081 -
准备工作
- 准备两个tomcat服务器,一个8080端口,一个8081端口,方法是再复制一套tomcat再把server.xml配置文件的端口改掉就行



- 创建文件夹和测试页面


- 准备两个tomcat服务器,一个8080端口,一个8081端口,方法是再复制一套tomcat再把server.xml配置文件的端口改掉就行
-
具体配置
- 找到nginx配置文件,进行反向代理配置

location后的~用于表示uri包含正则表达式,并且区分大小写。如果为~*不区分大小写。
- 找到nginx配置文件,进行反向代理配置
-
启动nginx后测试


Nginx配置实例-负载均衡
- 实现效果
- 浏览器地址栏输入http://192.168.1.128/edu/a.html,负载均衡效果,平均8080和8081端口中
- 准备工作
- 准备两台tomcat服务器,一台8080,一台8081
- 在两台tomcat里面webapps目录中,创建名称是edu文件夹,在edu文件夹中创建页面a.html,用于测试
- 在nginx的配置文件中进行负载均衡的配置


- 启动nginx后测试


Nginx分配服务器策略
- 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 - weight
weight代表权重默认为1,权重越高被分配的客户端越多。 - ip_hash
每个请求按访问ip的hash结果分配,这样每个访问固定访问一个后端服务器 - fair
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
Nginx配置实例-动静分离
-
什么是动静分离

通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用 Expires 来缓存),我这里设置 3d,表示在这 3 天之内访问这个 URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码 304,如果有修改,则直接从服务器重新下载,返回状态码 200。 -
准备工作
- 在 Linux 系统中准备静态资源,用于进行访问

- 在 Linux 系统中准备静态资源,用于进行访问
-
具体配置
- 在 nginx 配置文件中进行配置

- 在 nginx 配置文件中进行配置
-
最终测试


Nginx配置高可用的集群
- 什么是nginx高可用
- 需要两台nginx服务器
- 需要keepalived
- 需要虚拟ip
- 配置高可用的准备工作
- 需要两台服务器(可以克隆虚拟机)
- 在两台服务器安装nginx
- 在两台服务器安装keepalived
使用 yum 命令进行安装
yum install keepalived -y
- 完成高可用配置(主从配置)
- 修改/etc/keepalived/keepalived.conf配置文件
# 全局配置
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.1.129smtp_connect_timeout 30router_id LVS_DEVEL # 访问到主机
}
# 脚本配置
vrrp_script chk_http_port {script "/usr/local/src/nginx_check.sh"interval 2 #检测脚本执行的间隔weight 2 # 权重
}
# 虚拟IP配置
vrrp_instance VI_1 {state BACKUP # 备份服务器将 MASTER 改为 BACKUPinterface ens33 # 网卡virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同priority 90 # 主、 备机取不同的优先级,主机值较大,备机值较小advert_int 1 # 每隔多长时间发送心跳,检测服务器是否活着authentication { # 权限校验方式 PASS为密码 auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.120 # VRRP H虚拟地址}
}
- 在/usr/local/src添加检测脚本nginx_check.sh
#!/bin/bash
A=`ps -C nginx -no-header |wc -l`
if [ $A -eq 0 ]; then/usr/sbin/nginxsleep 2if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keepalivedfi
fi
- 把两台服务器上nginx和keepalived启动
启动nginx: nginx -c /etc/nginx/nginx.conf
启动keepalived: systemctl start keepalived.service - 最终测试
- 在浏览器地址栏中输入 虚拟ip地址:192.168.1.120

可以输入ip a查看绑定的虚拟ip

- 把主服务器 nginx 和 keepalived 停止,再输入虚拟地址访问,依然正常显示。
systemctl stop keepalived.service
nginx -s stop

- 在浏览器地址栏中输入 虚拟ip地址:192.168.1.120
Nginx原理
-
master 和 worker


-
worker 如何进行工作的

-
一个 master 和多个 worker 的好处
- 可以使用 nginx -s reload 热部署
- 每个 worker 是独立的进程,如果其中一个 worker 出现问题,其他 worker 独立的继续进行争抢,实现请求过程不会造成服务中断。
-
设置多少个worker合适
worker 数和服务器的 cpu 数相等是最为事宜的。 -
连接数 worker_connection
- 发送请求,占用了 worker 的几个连接数?
2 或 4 个 - nginx 有一个 master,有四个 worker ,每个 worker 支持最大的连接数为1024 , 支持的最大并发数是多少?
普通的静态访问最大并发数是: worker_connection * worker_processes / 2,也就是1024 * 4 / 2 = 2048。
而如果是 HTTP 作为反向代理来说,最大并发连接数应该是 worker_connection * worker_processes / 4,也就是1024 * 4 / 4 = 1024。
- 发送请求,占用了 worker 的几个连接数?
相关文章:
服务器技术(三)--Nginx
Nginx介绍 Nginx是什么、适用场景 Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。 Nginx专为性能优化而开发,性能是其最重要的考量…...
OpenCV——总结《车牌识别》之《常用的函数介绍》
1. cv2.getStructuringElement(cv2.MORPH_RECT, (10, 10))element cv2.getStructuringElement(shape, ksize[, anchor])用于创建形态学操作的结构元素(structuring element)。 参数解释: shape:结构元素的形状,可以…...
chatgpt赋能python:如何利用Python进行自动化办公
如何利用Python进行自动化办公 在现代办公环境中,自动化成为了一种趋势。利用计算机程序自动处理重复性劳动,可以提高生产效率和工作质量,同时也能够让工作更加轻松。Python作为一种常用的编程语言,在自动化办公中发挥了重要作用…...
linux-2.6.22.6内核网卡驱动框架分析
网络协议分为很多层,而驱动这层对应于实际的物理网卡部分,这也是最底层的部分,以cs89x0.c这个驱动程序为例来分析下网卡驱动程序框架。 正常开发一个驱动程序时,一般都遵循以下几个步骤: 1.分配某个结构体 2.设置该结…...
机器学习7:特征工程
在传统的软件工程中,核心是代码,然而,在机器学习项目中,重点则是特征——也就是说,开发人员优化模型的方法之一是增加和改进其输入特征。很多时候,优化特征比优化模型带来的增益要大得多。 笔者曾经参与过一…...
coverage代码覆盖率测试介绍
coverage代码覆盖率测试介绍 背景知识补充 1、什么是覆盖率 测试过程中提到的覆盖率,指的是已测试的内容,占待测内容的百分比,在一定程度上反应测试的完整程度。 覆盖率有可以根据要衡量的对象细分很多种,比如接口覆盖率、分支…...
使用 Debian、Docker 和 Nginx 部署 Web 应用
前言 本文将介绍基于 Debian 的系统上使用 Docker 和 Nginx 进行 Web 应用部署的过程。着重介绍了 Debian、Docker 和 Nginx 的安装和配置。 第 1 步:更新和升级 Debian 系统 通过 SSH 连接到服务器。更新软件包列表:sudo apt update升级已安装的软件…...
Redis原理 - 内存策略
原文首更地址,阅读效果更佳! Redis原理 - 内存策略 | CoderMast编程桅杆https://www.codermast.com/database/redis/redis-memery-strategy.html Redis 本身是一个典型的 key-value 内存存储数据库,因此所有的 key、value 都保存在之前学习…...
【计算机网络】IP 地址处理函数
目录 1.struct sockaddr_in的结构 2.一般我们写的结构 3.常见的“点分十进制” 到 ” uint32_t 的转化接口 3.1. inet_aton 和 inet_ntoa (ipv4) 3.2. inet_pton 和 inet_ntop (ipv4 和 ipv6) 3.3. inet_addr 和 inet_network 3…...
9i物联网浏览器(cef_114.2.110114.2.100支持H264视频)WinForm-CefSharp114(5735)视频版本体验
更新:2023.6.25 版本:Cef_114.2.110和114.2.100+chromium-114.0.5735.134的32位和64位 说明:支持图片,mp3,mp4(H264)多媒体 测试环境:windows server 2019 测试网址:www.html5test.com 1.包下载地址 1.1 https://www.nuget.org/packages/CefSharp.Common/ 1.2 https…...
如何在本地运行一个已关服但具有客户端的游戏
虽然游戏服务器关闭后,我们通常无法再进行在线游戏,但对于一些已经关服但仍保留客户端的游戏来说,我们仍然可以尝试在本地进行游玩。本文将介绍如何在本地运行一个已关服但具有客户端的游戏的方法。 一、获取游戏客户端 要在本地运行一个已关…...
C语言编程—预处理器
预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。我们将把 C 预处理器(C Preprocessor)简写为 CP…...
使用 Maya Mari 设计 3D 波斯风格道具(p1)
今天瑞云渲染小编给大家带来了Simin Farrokh Ahmadi 分享的Persian Afternoon 项目过程,解释了 Maya 和 Mari 中的建模、纹理和照明过程。 介绍 我的名字是西敏-法罗赫-艾哈迈迪,人们都叫我辛巴 在我十几岁的时候,我就意识到我喜欢艺术和创造…...
Redis分布式问题
Redis实现分布式锁 Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系Redis中可以使用SETNX命令实现分布式锁。当且仅当 key 不存在,将 key 的值设为 value。 若给定的 key 已经存在&…...
synchronized原理
目录 一、基本特点 二、加锁过程 2.1、偏向锁 2.2、轻量级锁 2.3、重量级锁 三、其它的优化操作 3.1、锁消除 3.2、锁粗化 一、基本特点 synchronized有以下特性: 开始是乐观锁,如果锁冲突频繁,就转换为悲观锁。开始是轻量级锁,…...
10G光模块能兼容千兆光口吗
当涉及到光网络设备和光模块的兼容性时,确保正确的匹配是至关重要的。本期文章内容,我们将探讨10G光模块与千兆光口之间的兼容性。 一、10G光模块和千兆光口的基本概念 首先,我们需要了解10G光模块和千兆光口的基本概念。10G光模块是一种用…...
css 显示省略号 和 动态显示省略号
省略是非常常见的功能。 简单的实现省略号 下面的代码就可以实现省略号,超过宽度的时候就会出现省略号 .text-name{//宽高是一定要设置的不然是会无效延伸的width: 200rpx;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;}稍微复杂点的情况&#…...
LeetCode 1253. 重构 2 行二进制矩阵
【LetMeFly】1253.重构 2 行二进制矩阵 力扣题目链接:https://leetcode.cn/problems/reconstruct-a-2-row-binary-matrix/ 给你一个 2 行 n 列的二进制数组: 矩阵是一个二进制矩阵,这意味着矩阵中的每个元素不是 0 就是 1。第 0 行的元素之…...
【八股】【C++】内存
这里写目录标题 内存空间分配new和delete原理C有几种newmalloc / free 与 new / delete区别malloc和free原理?delete和delete[]区别?C内存泄漏malloc申请的存储空间能用delete释放吗?malloc、calloc函数、realloc函数C中浅拷贝与深拷贝栈和队列的区别C里…...
数据库G等待
> db^Cgbasedbtpc:~$ dbaccess db10 -Database selected.> call insert_t();Routine executed.Elapsed time: 811.630 sec 磁盘逻辑日志,无BUF库> ^Cgbasedbtpc:~$ gbasedbtpc:~$ dbaccess db10 -Database selected.> call insert_t();Routine executed.Elapse…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
