nginx和tomcat负载均衡,动静分离

文章目录

  • 一,tomcat
    • 1.tomca用途
    • 2.tomcat重要目录
  • 二,nginx
    • 1.Nginx应用
    • 2.nginx作用
    • 3.nginx的正向代理和反向代理
      • 3.1正向代理
      • 3.2反向代理(单级)
      • 3.3反向代理(多级)
    • 4.nginx负载均衡
      • 4.1Nginx·支持的常见的分流算法
        • 1. 轮询(Round Robin):
        • 2.最少连接数(Least·Connections):
        • 3.ip哈希(IP Hash)
        • 4. 加权轮询(Weighted· Round Robin):
        • 5. 最少时间算法(Least Time):
  • 三,负载均衡和反向代理配置
    • 1.Nginx
      • 1.1关闭防火墙,强制模式
      • 1.2下载nginx的依赖包
      • 1.3创建nginx用户不创建主,,并且查看创建情况
      • 1.4解压缩到opt
      • 1.5切换到/opt/nginx-1.20.2编译安装
      • 1.6make
      • 1.7创建软链接,启动nginx验证创建软链接是否成功
      • 1.8配置 /lib/systemd/system/nginx.service
      • 1.9重新加载
      • 1.10给文件/lib/systemd/system/nginx.service授权754
      • 1.11启动nginx,开机启动nginx
      • 1.12设置主机名
      • 1.12备份
      • 1.13Nginx 配置
      • 1.14解释
      • 1.15 配置nginx静态页面和静态图片
      • 1.15重新加载nginx
    • 2.tomcat
      • 2.1关闭防火墙,强制模式
      • 2.2解压jdk-8u91-linux-x64.tar.gz 到/usr/local/
      • 2.3配置/etc/profile
      • 2.4apache-tomcat-8.5.16.tar.gz,移动到/usr/local
      • 2.5将jdk1.8.0_91从192.168.88.70传到192.168.88.80,192.168.88.90机器上
      • 2.6配置/etc/profile
      • 2.7创建目录,配置index.jsp(动静分离)
      • 2.8备份
      • 2.9配置server.xml
      • 2.10关闭启动,查看状况
    • 3验证

一,tomcat

Tomcat,全称为 Apache Tomcat,是由 Apache 软件基金会开发和维护的开源 Java Servlet 容器和 Web 服务器。Tomcat 是一个轻量级的应用服务器,广泛用于开发和部署基于 Java 的 Web 应用程序。
它支持从简单的静态网站到复杂的动态 Web 应用的各种需求,适用于中小型企业、开发者和个人项目。

1.tomca用途

1.1Web 应用程序服务器
运行 Java Web 应用程序:Tomcat 是 Java Servlet 和 JSP (JavaServer Pages) 规范的实现,它允许开发者将 Java Web 应用程序部署到 Tomcat 上运行。它可以处理动态内容生成、会话管理和请求调度等任务。
1.2开发与测试环境
轻量级开发服务器:由于 Tomcat 易于安装和配置,启动速度快,占用资源少,开发人员常用它作为开发和测试环境的 Web 服务器。它支持热部署和调试功能,使开发周期更加高效。
1.3静态内容和动态内容服务
提供静态资源服务:除了处理动态内容,Tomcat 还可以作为静态资源(如 HTML、CSS、JavaScript 文件)的服务器,将这些资源直接提供给客户端浏览器。
动态内容生成:Tomcat 运行 Servlet 和 JSP 文件,生成动态 Web 内容,并将其返回给客户端。
1.4反向代理和负载均衡
反向代理功能:通过配置,Tomcat 可以充当反向代理服务器,将客户端请求转发到其他服务器上处理,适用于分布式架构。
负载均衡:Tomcat 可以与其他 Tomcat 实例一起配置,形成集群,实现负载均衡和高可用性。
1.5WebSocket 应用支持
实时通信应用:Tomcat 支持 WebSocket 协议,可以运行需要实时双向通信的应用程序,如在线聊天、股票交易平台等。
1.6嵌入式服务器
嵌入式使用:Tomcat 可以作为嵌入式服务器,集成到 Java 应用程序中,使应用程序具备 Web 服务功能,适合开发独立的 Java Web 应用。
1.7企业级应用
中小型企业应用:Tomcat 被广泛应用于中小型企业的生产环境中,处理各种 Web 服务请求,支持企业应用的部署和运行。
RESTful Web 服务:Tomcat 支持基于 Servlet 的 RESTful Web 服务开发,可以用来构建和部署 REST API。

2.tomcat重要目录

  • bin:存放启动和关闭tomcat脚本
  • conf:存放tomcat不同的配置文件
  • doc:存放tomcat文档
  • lib:存放tomcat运行需要的库文件
  • logs:存放tomcat执行时的log文件
  • src:存放tomcat的源代码
  • webapps: tomcat的主要web发布目录
  • work:存放jsp编译后产生的class文件

二,nginx

Nginx(发音为 “Engine-X”)是一个开源、高性能的 HTTP 服务器和反向代理服务器,同时也是一个邮件代理服务器和通用的 TCP/UDP 代理服务器。它最初由俄罗斯开发者 Igor Sysoev 编写,并于 2004 年首次发布,旨在解决当时服务器性能瓶颈问题,特别是在处理大量并发连接的情况下。

1.Nginx应用

1.1Nginx是非常优秀的HTTP服务器软件

  • 支持高达50 000个并发连接数的响应
  • 拥有强大的静态资源处理能力
  • 运行稳定
  • 内存、CPU等系统资源消耗非常低

1.2很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力

2.nginx作用

  • 做负载均衡(一个tomcat不需要负载均衡)和反向代理
  • 静态资源直接返还客户端
  • 动态资源转发tomcat处理
  • 多个请求可以加权

3.nginx的正向代理和反向代理

3.1正向代理

正向代理是代理客户端去访问服务器,目的是为了加快访问速度。
正向代理是一种代理服务器,位于客户端和目标服务器之间,帮助客户端访问目标服务器。当客户端无法直接访问目标服务器时,可以将请求发送给正向代理服务器,由代理服务器代替客户端访问目标服务器,并将服务器的响应结果返回给客户端。
正向代理的主要特点

  1. 客户端知道目标服务器:客户端知道自己想访问哪个目标服务器,但由于某些原因(如防火墙、网络限制、地理位置等),它无法直接访问目标服务器。
  2. 目标服务器不知道客户端:目标服务器并不知道请求实际来自哪个客户端。它只知道请求来自正向代理服务器,因此客户端的真实 IP 地址被代理服务器隐藏了。
  3. 隐藏或屏蔽客户端信息:正向代理可以隐藏客户端的 IP 地址和其他信息,使目标服务器无法识别真正的请求来源。这种机制可以用于保护用户隐私、突破网络限制等。

正向代理:站在客户端一方,帮助客户端访问目标服务器,隐藏客户端信息。

3.2反向代理(单级)

反向代理代理的是服务端目的是为了负载均衡
反向代理是指代理服务器位于客户端和目标服务器之间,代理客户端的请求,并将请求转发到目标服务器上,然后将目标服务器的响应结果返回给客户端。在反向代理的场景中,客户端并不知道目标服务器的真实地址,它只知道反向代理服务器的地址。
反向代理的特点
1. 隐藏后端服务器
隐藏真实 IP:反向代理服务器隐藏了后端服务器的真实 IP 地址。客户端只能看到反向代理服务器的 IP,而无法直接访问后端服务器。这增加了后端服务器的安全性,防止直接攻击。
统一访问入口:所有客户端请求都通过反向代理服务器进入,提供一个统一的入口。这使得后端服务器的架构和部署可以灵活调整,而不影响客户端的访问。
2. 负载均衡
请求分发:反向代理可以将客户端的请求分发到多个后端服务器上,从而实现负载均衡。它可以根据多种算法(如轮询、最少连接、IP 哈希)将流量均匀分布到后端服务器,优化资源利用率,提升系统的可扩展性和稳定性。
自动故障切换:如果某个后端服务器出现故障,反向代理可以自动将流量转移到其他正常运行的服务器上,确保服务的连续性和高可用性。
3. 缓存功能
提高响应速度:反向代理可以缓存来自后端服务器的静态内容(如 HTML、CSS、JavaScript 文件)或动态内容的响应。缓存减少了后端服务器的负担,并加快了客户端的响应速度,特别是在处理大量相同请求时效果显著。
减少带宽使用:通过缓存机制,反向代理可以减少对后端服务器的重复请求,从而减少带宽的使用,提高资源利用效率。
4. 安全增强
防火墙和访问控制:反向代理可以作为应用层的防火墙,过滤和限制不安全或不合法的请求,防止恶意攻击,如 DDoS 攻击、SQL 注入等。
SSL/TLS 终结:反向代理可以负责处理 SSL/TLS 加密通信,将 HTTPS 请求解密为 HTTP 请求,并将其转发给后端服务器。这减轻了后端服务器的加密解密负担,并集中管理 SSL 证书。
5. 协议转换
支持多种协议:反向代理可以处理来自不同协议的请求,如 HTTP、HTTPS、WebSocket、TCP、UDP 等,并将其转发给支持相应协议的后端服务器。这种协议转换功能使得系统能够支持更多种类的应用场景。
应用层协议的升级或降级:反向代理可以将请求从一个协议(如 HTTP/1.1)升级到另一个协议(如 HTTP/2),从而提升应用的性能和兼容性。
6. 优化网络流量
压缩和减小数据量:反向代理可以对从后端服务器返回的数据进行压缩,以减少传输的数据量,从而提高传输效率,尤其是在带宽有限的环境中。
内容优化和修改:反向代理可以动态修改或优化返回给客户端的内容,如注入 HTTP 头、重写 URL、添加或移除 Cookies 等。
7. 负载均衡之外的扩展功能
A/B 测试和蓝绿部署:反向代理可以用于进行 A/B 测试,将流量有选择地导向不同版本的后端服务器,从而评估不同版本的效果。它还可以实现蓝绿部署,平滑地推出新版本。
内容分发:反向代理可以根据客户端请求的地理位置、设备类型、语言等特征,智能地选择最合适的后端服务器或 CDN 节点,提供个性化的内容分发服务。
反向代理:站在服务器一方,帮助服务器处理客户端请求,隐藏服务器信息。

3.3反向代理(多级)

被代理的服务器是多台

4.nginx负载均衡

4.1Nginx·支持的常见的分流算法

1. 轮询(Round Robin):

轮询算法是Nginx默认分流算法。
按顺序将请求依次分配给每一台后端服务器,直到最后一台服务器,然后重新从第一台服务器开始。这种方法简单且均匀地分配了流量。
特点:请求均匀分布,无视服务器的当前负载和响应时间。
配置格式
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}

2.最少连接数(Least·Connections):

最少连接数算法将请求分配给当前活动连接数最少的服务器。
适用于请求处理时间不均匀的情况,可以有效平衡服务器的负载。
数据流向是每个请求被分配到当前连接数最少的服务器。
配置格式
upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}

3.ip哈希(IP Hash)

通过计算客户端 IP 地址的哈希值,将请求分配给特定的服务器。使用这种方法确保来自同一客户端(相同 IP 地址)的所有请求都被分配到同一台后端服务器。
配置格式
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}

4. 加权轮询(Weighted· Round Robin):

加权轮询算法允许为每台服务器设置权重,权重越大的服务器将会获得更多的请求。较少的请求分配给处理能力较弱或负载较高的服务器。 适用于服务器性能不均衡的情况。
数据流向:根据服务器设置的权重值分配请求。
特点:高权重服务器接收更多的请求,适用于服务器性能差异较大的场景。
配置格式
upstream backend {
server backend1.example.com weight=3;
server backend2.example.com weight=1;
server backend3.example.com weight=2;
}

5. 最少时间算法(Least Time):

基于后端服务器的响应时间和当前的连接数,将新的请求分配给预计能最快完成请求处理的服务器。这种算法不仅考虑了每台服务器的当前负载,还考虑了各服务器的历史响应时间,从而更加精确地进行负载均衡。在Nginx 1.15.3 及以后版本中可以使用
数据流是每个请求分配到响应时间最短或平均连接时间最短的服务器。
特点:进一步优化了最少连接算法,适用于高负载环境下的动态负载均衡。
配置格式
upstream backend {
least_time header;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}


6.一致性哈希(Consistent Hashing)
一致性哈希能有效地将数据项均匀分布到各个节点上,从而平衡负载,避免某些节点过载 。
数据流向是根据请求的某个特定参数(如 URL、Cookie 或其他 Header),进行哈希计算,将请求分配到哈希值对应的服务器。
特点:适应服务器节点变动,减少请求的重新分配,适合缓存敏感的场景。
配置格式
需要第三方模块如 ngx_http_upstream_hash_module
upstream backend {
hash $request_uri consistent;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}

三,负载均衡和反向代理配置

Nginx 服务器:192.168.88.20:80
Tomcat服务器1:192.168.88.60:8080
Tomcat服务器2:192.168.88.70:8080
Tomcat服务器3:192.168.88.80:8080
将压缩包上传设备/opt
nginx-1.20.2.tar

1.Nginx

1.1关闭防火墙,强制模式

systemctl stop NetworkManager
systemctl stop firewalld
setenforce 0

1.2下载nginx的依赖包

yum install -y pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

1.3创建nginx用户不创建主,并且查看创建情况

useradd -M -s /sbin/nologin nginx
tail -1 /etc/passwd

1.4解压缩到opt

tar xf nginx-1.20.2.tar.gz -C /opt

1.5切换到/opt/nginx-1.20.2编译安装

cd /opt/nginx-1.20.2/
./configure --prefix=/usr/local/nginx --user=nginx \
--group=nginx \
--with-file-aio \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_flv_module \
--with-stream \
--with-http_ssl_module 

1.6make

make -j 2 && make install

1.7创建软链接,启动nginx验证创建软链接是否成功

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx
lsof -i:80

1.8配置 /lib/systemd/system/nginx.service

vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

1.9重新加载

systemctl daemon-reload

1.10给文件/lib/systemd/system/nginx.service授权754

chmod 754 /lib/systemd/system/nginx.service

1.11启动nginx,开机启动nginx

systemctl start nginx.service
systemctl enable nginx.service

1.12设置主机名

hostnamectl set-hostname nginx01
bash

image.png

1.12备份

cp /usr/local/nginx/conf/nginx.conf{,_bak}

1.13Nginx 配置

vim /usr/local/nginx/conf/nginx.conf#取消server内的字符集注释,修改成下面
charset utf-8; #在httpd里面#gzip on后面添加upstream tomcat_server {server 192.168.88.70:8080 weight=1;server 192.168.88.80:8080 weight=1;server 192.168.88.90:8080 weight=1;}#在server后面添加一个localtion
location ~ .*\.jsp$ {proxy_pass http://tomcat_server;proxy_set_header HOST $host; proxy_set_header X-Real-IP $remote_addr; #要使用这个需要把log_format  main的注释取消proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}      #配置Nginx处理静态图片请求,将 .jsp文件请求转发到Tomcat服务器处理,在server里面添加
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {root /usr/local/nginx/html/img;expires 10d;
}nginx -t

image.png

1.14解释

proxy_pass http://tomcat_server;
#设置后端的Web服务器可以获取远程客户端的真实IP
##设定后端的Web服务器接收到的请求访问的主机名(域名或IP、端口),默认HOST的值为proxy_pass指令设置的主机名。如果反向代理服务器不重写该请求头的话,那么后端真实服务器在处理时会认为所有的请求都来在反向代理服务器,如果后端有防攻击策略的话,那么机器就被封掉了。
proxy_set_header HOST KaTeX parse error: Expected 'EOF', got '#' at position 10: host; #̲#把remote_addr赋值给X-Real-IP,来获取源IP
proxy_set_header X-Real-IP $remote_addr;
##在nginx 作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来

1.15 配置nginx静态页面和静态图片

echo '<html><body><h1>这是静态页面</h1></body></html>' > /usr/local/nginx/html/index.html
mkdir /usr/local/nginx/html/img
cp /root/g.jpg /usr/local/nginx/html/img

切换到/usr/local/nginx/html/img上传图片

1.15重新加载nginx

nginx -s reload

2.tomcat

上传jdk-8u91-linux-x64.tar.gz ,apache-tomcat-8.5.16.tar.gz 压缩包到设备
192.168.88.70,192.168.88.80,192.168.88.90分别设置主机名tomcat01,tomcat02,tomcat03

2.1关闭防火墙,强制模式

192.168.88.70,192.168.88.80,192.168.88.90都要操作

systemctl stop NetworkManager
systemctl stop firewalld
setenforce 0

2.2解压jdk-8u91-linux-x64.tar.gz 到/usr/local/

192.168.88.70,192.168.88.80,192.168.88.90都要操作

tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local/

2.3配置/etc/profile

192.168.88.70,192.168.88.80,192.168.88.90都要操作

vim /etc/profile
export JAVA_HOME=/usr/local1/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATHsource /etc/profile

2.4apache-tomcat-8.5.16.tar.gz,移动到/usr/local

192.168.88.70,192.168.88.80,192.168.88.90都要操作

tar xf apache-tomcat-8.5.16.tar.gz 
mv apache-tomcat-8.5.16 /usr/local/tomcat

2.5将jdk1.8.0_91从192.168.88.70传到192.168.88.80,192.168.88.90机器上

scp -r /usr/local/jdk1.8.0_91 /usr/local/tomcat/ 192.168.88.80:/usr/local/
scp -r /usr/local/jdk1.8.0_91 /usr/local/tomcat/ 192.168.88.90:/usr/local/

2.6配置/etc/profile

192.168.88.70,192.168.88.80,192.168.88.90都要安装

vim /etc/profile
export JAVA_HOME=/usr/local1/jdk1.8.0_91   #有问题
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATHsource /etc/profile

2.7创建目录,配置index.jsp(动静分离)

192.168.88.70,192.168.88.80和192.168.88.90都需要,分别是test1,test2,test3

 mkdir /usr/local/tomcat/webapps/test1 #有问题vim /usr/local/tomcat/webapps/test1/index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>   
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>
</html>

2.8备份

192.168.88.70,192.168.88.80,192.168.88.90都要操作

cp /usr/local/tomcat/conf/server.xml {,_bak}

2.9配置server.xml

192.168.88.70,192.168.88.80,192.168.88.90都要操作

vim /usr/local/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true"></Context>
</Host>scp -r /usr/local/tomcat/conf/server.xml 192.168.88.80:/usr/local/tomcat/conf/ #把配置好的传给192.168.88.80scp -r /usr/local/tomcat/conf/server.xml 192.168.88.90:/usr/local/tomcat/conf/ #把配置好的传给192.168.88.80

2.10关闭启动,查看状况

192.168.88.70,192.168.88.80,192.168.88.90都要操作

/usr/local/tomcat/bin/catalina.sh start 
lsof -i :8080
或
netstat -antulp|grep java

image.pngimage.pngimage.png

3验证

image.pngimage.png

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

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

相关文章

[MRCTF2020]Hello_ misc

解压得一个png图片和一个flag.rar 图片拖入010editor 选择带zip头的这段蓝色全部复制&#xff0c;file-new-new Hex File&#xff0c;黏贴到新文件&#xff0c;另存为为1.zip 要密码,线索中断&#xff08;当然try to restore it.png&#xff0c;隐藏了zip压缩包&#xff0c;可…

uniapp - plugins的组件配置使用

点击进入到uniapp中mp-weixin的配置中 点击进入小程序的plugin的配置 在项目中&#xff0c;我们可引用插件的使用&#xff0c;例如一些快递100&#xff0c;点餐插件的业务引入 添加插件 在使用插件前&#xff0c;首先要在小程序管理后台的“设置-第三方服务-插件管理”中添加…

java ssl使用自定义证书或忽略证书

1.证书错误 Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 2.生成客户端证书 openssl x509 -in <(openssl s_client -connect 192.168.11.19:8101 -prexit 2>/dev/null) -ou…

C HTML格式解析与生成

cmake报错替换 if(NOT MyHTML_BUILD_WITHOUT_THREADS OR NOT MyCORE_BUILD_WITHOUT_THREADS) set(CMAKE_THREAD_PREFER_PTHREAD 1) if (WIN32) set(CMAKE_USE_WIN32_THREADS_INIT ON) set(CMAKE_THREAD_PREFER_PTHREADS TRUE) set(THREADS_PR…

windows配置jmeter定时任务

场景&#xff1a; 需要让脚本在指定的执行 步骤&#xff1a; 准备jmeter脚本&#xff0c;保证在命令行中可以调用脚本且脚本运行正常&#xff1a;"C:\Apache\jmeter\bin\jmeter.bat" -n -t C:\tests\test_plan.jmx -l C:\tests\results.jtl -t : 指定执行jmeter脚…

异步交互技术Ajax-Axios

目录 一、同步交互和异步交互 二、Ajax 1.概述 2.如何实现ajax请求 三、异步传输数据乱码的问题 regist.html页面代码 服务端代码处理 四、Axios 1. Axios的基本使用 &#xff08;1&#xff09;引入Axios文件 &#xff08;2&#xff09;使用Axios发送请求&#xff0…

通过Python绘制不同数据类型适合的可视化图表

在数据可视化中&#xff0c;对于描述数值变量与数值变量之间的关系常见的有散点图和热力图&#xff0c;以及描述数值变量与分类变量之间的关系常见的有条形图&#xff0c;饼图和折线图&#xff0c;可以通过使用Python的matplotlib和seaborn库来绘制图表进行可视化表达&#xff…

【大数据】什么是数据中台?

随着企业规模不断扩大、业务多元化——中台服务架构的应运而生。“中台”早期是由美军的作战体系演化而来的&#xff0c;技术上说的“中台”主要是指学习这种高效、灵活和强大的指挥作战体系。阿里在今年发布“双中台ET”数字化转型方法论&#xff0c;“双中台”指的是数字中台…

ResNet网络学习

简介 Residual Network 简称 ResNet (残差网络) 下面是ResNet的网络结构&#xff1a; ResNet详细介绍 原理 传统方法的问题&#xff1a; 对于一个网络&#xff0c;如果简单地增加深度&#xff0c;就会导致 梯度消失 或 梯度爆炸&#xff0c;我们采取的解决方法是 正则化。…

卸载nomachine

网上的方法:提示找不到命令 我的方法: step1. 终端输入 sudo find / -name nxserver 2>/dev/null确认 NoMachine 的实际安装路径。你可以使用 find 命令在系统中查找 nxserver 脚本的位置。 找到路径后,你可以使用该路径来卸载 NoMachine。 如下图,紫色框中是我的路径…

ProtoBuf简要介绍与快速上手使用(C++版)

文章目录 一、 初识ProtoBuf1. 序列化和反序列化概念2. ProtoBuf是什么3. ProtoBuf的使用特点 二、 讲解说明三、 快速上手1. 创建 .proto 文件2. 编译 contacts.proto 文件&#xff0c;生成C文件3. 序列化与反序列化的使用4. 小结 ProtoBuf 使用流程 一、 初识ProtoBuf 1. 序…

Linux权限维持实战

目录 介绍步骤 介绍 攻击者在获取服务器权限后&#xff0c;会通过一些技巧来隐藏自己的踪迹和后门文件 查看/tmp目录下的flag文件 查看/root目录下具有特殊文件属性的文件 操作机中共有几个SUID文件 操作机中共有几个SGID文件 查看操作机中ssh公私钥免密登陆 查看strace后门 …

Web3链上聚合器声呐已全球上线,开启区块链数据洞察新时代

在全球区块链技术高速发展的浪潮中&#xff0c;在创新发展理念的驱动下&#xff0c;区块链领域的工具类应用备受资本青睐。 2024年8月20日&#xff0c;由生纳&#xff08;香港&#xff09;国际集团倾力打造的一款链上应用工具——“声呐链上聚合器”&#xff0c;即“声呐链上数…

24暑假算法刷题 | Day39 | 动态规划 VII | LeetCode 198. 打家劫舍,213. 打家劫舍 II,337. 打家劫舍 III

目录 198. 打家劫舍题目描述题解 213. 打家劫舍 II题目描述题解 337. 打家劫舍 III题目描述题解 打家劫舍的一天 &#x1f608; 198. 打家劫舍 点此跳转题目链接 题目描述 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷…

贪心+栈。。

前言&#xff1a;这个题目一开始我没想通的就是如果s当前的一个字符或者之后的一个字符和当前t的尾巴是一样的&#xff0c;那么优先选哪一个&#xff0c;其实这个就要优先选t的 class Solution { public:string robotWithString(string s) {string ans;int cnt[26]{}, min 0; …

<C++> 二叉搜索树

目录 二叉搜索树 1. 概念 2. 二叉搜索树操作 2.1 基础结构 2.2 非递归版 1. 查找 2. 插入 3. 删除 2.3 递归版 1. 查找 2. 插入 3. 删除 2.4 拷贝构造函数 2.5 赋值运算符重载 2.6 析构函数 2.7 完整代码 3. 二叉搜索树的应用 4. 二叉搜索树的性能 二叉搜索树 1. 概念 二叉搜索…

SpringBoot+Vue3整合minio,实现分布式文件存储

文章目录 几种常用的文件存储安装和使用minioSpringBoot整合minio 基本所有的软件项目都会需要文件存储功能&#xff0c;图片、视频存储。 几种常用的文件存储 经常用的几种方案&#xff0c;直接存在本地文件夹&#xff0c;开发一个简单的系统当然没有问题。随机系统所需的资源…

微服务多个模块启动,端口被占用,yml配置文件读不到

刚刚提交到gitee自己的仓库&#xff0c;拉下来还是报错&#xff0c;然后看到一个解决方法&#xff1a; <build><resources><resource><directory>src/main/java</directory><includes><include>**/*.yml</include><includ…

推荐一个java低代码开发平台-橙单

文章目录 前言一、项目介绍二、技术选型三、项目特点四、基础功能介绍五、源码下载六、官方文档总结 前言 大家好&#xff0c;今天为大家推荐一个开箱即用&#xff0c;快速开发的低代码平台。项目采用 Boot3 Flowable7 Sa-Token Vue3技术栈。 一、项目介绍 橙单中台化低代…

Datawhale AI 夏令营(第五期) 李宏毅苹果书 Task 1 《深度学习详解(入门)》- 1.1 通过案例了解机器学习

预测本频道观看人数&#xff08;上&#xff09; - 机器学习基本概念简介_哔哩哔哩_bilibili 1 隐藏任务&#xff1a;找出本篇中形如回归&#xff08;regression&#xff09;加粗字体的术语&#xff0c;并用自己的话进行解释&#xff0c;列成表格 术语解释机器学习&#xff08;…