nginx和tomcat负载均衡

news2024/11/13 10:48:27

文章目录

  • 一,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:$PATH

source /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:$PATH

source /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.80
 scp -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.coloradmin.cn/o/2058303.html

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

相关文章

OLED整体刷新到结合switch刷新方式演变

OLED整体刷新到结合switch刷新方式演变 引言 OLED刷新模式, 其实很简单, 就和prinf输出一样, 只是我们这里利用OLED来输出我们所需要的东西了。 至于OLED单独整体刷新, 还是利用switch刷新, 都是形而上学, 形的东西, 至于底层, 江协科技大佬已经帮我整理好了, 我们是站在巨人的…

[ 全部搞定 - 发票导出表格 ] PDF发票提取到表,图片发票提取到表格,扫描件发票提取到表格,全电发票PDF,全电发票扫描件识别导出EXCEL表格

最近很多朋友说找PDF发票提取Excel表格的&#xff0c;找到了图片识别Excel表格的&#xff0c;有的找图片识别Excel表格的&#xff0c;找到了PDF发票提取表格的&#xff0c;所以就很难搞&#xff0c;还有的说都想要 今天一篇文章&#xff0c;全部搞定所有发票【电子发票&#x…

运维学习————nginx3-keepalived及高可用nginx集群

目录 一、高可用nginx规划图 二、克隆一个nginx 启动测试 ​编辑 三、keepalived简介 四、安装配置keepalived保活nginx 4.1、安装 ​编辑 4.2、配置 4.2.1、主机配置&#xff08;nginx1(主)配置&#xff09; 4.2.2、从机配置&#xff08;nginx2(主)配置&#xff09;…

敏捷架构框架:数字化转型的核心驱动力

在数字化转型的浪潮中&#xff0c;传统的企业架构和组织结构正面临严峻挑战。为了在快速变化的市场环境中保持竞争力&#xff0c;企业不仅需要灵活的开发流程&#xff0c;还需要一种能够支持敏捷方法的架构体系。《数字化时代的敏捷架构》提出的敏捷架构框架&#xff08;Agile …

建筑物规则化(实现) --- 特征边分组、重构、直角化

规则化建筑物 一、摘 要 建筑物多边形在地图综合中的两类处理模型:化简与直角化。 建筑物矢量数据来源广泛&#xff0c;在数据获取过程中&#xff0c;受GPS精确度、遥感影像分辨率或人为因素的影响&#xff0c;数据往往存在不同程度的误差。其中&#xff0c;图像分割、深度学习…

规范化JavaBean

Java Bean 是一个很常见的概念&#xff0c;简单来说就是一个 Java 类&#xff0c;其中的内容就是各种属性&#xff0c;以及各个属性的 getter/setter 。例如&#xff1a; class Student {private String name;private int age;public String getName() {return this.name;}pub…

网络协议与Netty

1、讲一讲什么是RPC&#xff1f; 说到RPC就必须要聊一聊单体项目和分布式/微服务项目 单体项目时&#xff1a;一次服务调用发生在同一台机器上的 同一个进程内部 &#xff0c;也就是说调用发生在本机内部&#xff0c;因此也被叫作本地方法调用。 分布式/微服务项目时&#x…

负载均衡:定义与核心作用

负载均衡&#xff1a;定义与核心作用 一、负载均衡的定义二、负载均衡的核心作用 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 负载均衡&#xff0c;作为网络技术的重要一环&#xff0c;对优化资源利用和提升服务器响应速度至关重要。本文…

Ps:首选项 - 界面

Ps菜单&#xff1a;编辑/首选项 Edit/Preferences 快捷键&#xff1a;Ctrl K Photoshop 首选项中的“界面” Interface选项卡可以定制 Photoshop 的界面外观和行为&#xff0c;从而创建一个最适合自己工作习惯和需求的工作环境。这些设置有助于提高工作效率&#xff0c;减轻眼…

快速带你玩转高性能web服务器

目录 一.Web 服务基础介绍 ​编辑1.1 互联网发展历程回顾 1.2 Web 服务介绍 1.2.1 Apache的图标 1.2.2 NGINX的图标&#xff1a; 1.2.3 Apache 经典的 Web 服务端 1.2.3.1 Apache prefork 模型 1.2.3.2 Apache worker 模型 1.2.3.3 Apache event模型 1.2.4 Nginx-高性能的 Web …

PanDownload 网页复刻版最新PHP源码

源码介绍 PanDownload 网页复刻版&#xff0c;PHP语言版&#xff0c;PanDownload在线解析下载的优点&#xff0c;速度快&#xff0c;受用户自身带宽限制&#xff0c;就是说你的宽度交多少决定你下载的速度&#xff0c;不用下载百度网盘客户端&#xff0c;你可以直接使用解析所…

PingCAP 携手 CCF 数据库专委会打造“开源数据库领域拔尖创新人才培育计划”,共塑数据库教育未来丨NDBC 2024

2024 年 8 月 7 日 - 10 日&#xff0c;由中国计算机学会主办、中国计算机学会数据库专业委员会和新疆大学承办、新疆 IT 三会等单位协办的第 41 届中国数据库学术会议&#xff08;NDBC 2024&#xff09;在新疆乌鲁木齐成功举办。 大会上 PingCAP 联合创始人黄东旭发表了主题演…

LabVIEW深度监测系统

随着果园机械化作业的迅速发展&#xff0c;传统的人工监测方式已难以满足现代农业的高效率与精准性需求。本文介绍了一种基于LabVIEW软件的果园开沟深度监测系统&#xff0c;该系统通过集成先进的传感技术与数据处理算法&#xff0c;实现了对开沟深度的实时精确监测和自动控制&…

11.SPI通信

SPI理论 常规四线&#xff1a;SCLK、CS、MOSI(主向从发)、MISO(从向主发) 同步、串行、全双工、速率(MHz) 一主一从、一主多从、不能多主 工作模式&#xff1a; CPOL 0&#xff1a;总线空闲状态时钟为低电平&#xff0c;1&#xff1a;总线空闲状态时钟为高电平 CPHA 0&#…

【Python系列】执行 Shell 命令的六种方法

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

0.91寸OLED迷你音频频谱

一、简介 音频频谱在最小0.91寸OLED 屏幕上显示&#xff0c;小巧玲珑 二、应用场景 本模块为音频频谱显示模块&#xff0c;用来获取声音频谱并展示频谱&#xff0c;跟随音乐声音律动 三、产品概述 基于主控芯片设计的将声音采集分析频谱&#xff0c;显示到0.91寸OLED的功能…

【Git】常见命令的使用

Git 介绍流程安装常见命令本地仓与远程仓关联 介绍 Git、Svn&#xff1a;版本控制器&#xff08;用于多人团队协作&#xff09; Svn&#xff1a;集中式版本控制器&#xff1b;版本库集中放在中央服务器&#xff0c;操作非常简单&#xff0c;鼠标右键提交、新增、下载 Git&…

华为OD机试 - 模拟目录管理 - 栈(Java 2024 D卷 100分)

华为OD机试 2024D卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;D卷C卷A卷B卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测…

博弈论,CF 1600E - Array Game

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1600E - Array Game 二、解题报告 1、思路分析 记最长递增前缀长度为L&a…

点云倒角距离(Chamfer Distance,CD)

本文为专栏《Python三维点云实战宝典》系列文章&#xff0c;专栏介绍地址“【python三维深度学习】python三维点云从基础到深度学习_python3d点云从基础到深度学习-CSDN博客”。配套书籍《人工智能点云处理及深度学习算法》提供更加全面和系统的解析。 点云倒角距离&#xff08…