当前位置: 首页 > news >正文

Nginx优化与防盗链

Nginx优化与防盗链

📒博客主页: 微笑的段嘉许博客主页

💻微信公众号:微笑的段嘉许

🎉欢迎关注🔎点赞👍收藏⭐留言📝

📌本文由微笑的段嘉许原创!

📆CSDN首发时间:🌴2023年2月日22🌴

✉️坚持和努力一定能换来诗与远方!

🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

本文介绍

​ 在上一篇文章中已经介绍了Nginx服务器的安装配置,感兴趣的小伙伴可以点击连接阅读配置Nginx虚拟主机,本文主要介绍nginx的优化与防盗链。


📌导航小助手📌

文章目录

  • Nginx优化与防盗链
    • @[toc]
  • 详情介绍
  • 防盗链概念
  • 📝实验配置与实验
  • 一、在Centos01安装nginx服务,使用ww.duanjiaxu.com访问nginx
    • 1、在Centos01上安装nginx服务,使用www.duanjiaxu.com访问nginx
    • 2、配置IP地址和DNS
    • 3、修改nginx主配置文件
  • 二、在Centos02上安装DNS使用域名访问Centos01上使用域名www.duanjiaxu.com,centos03使用yum安装apache使用域名www.djx.com访问
    • 1、配置网卡服务
    • 2、安装DNS服务
    • 3、修改DNS配置文件
    • 4、Centos03使用yum安装apache使用域名www.djx.com访问
    • 5、修改apache的主配置文件
    • 6、验证
  • 三、在www.duanjiaxu.com域名的网站隐藏nginx版本、查看nginx管理用户、设置网页缓存、配置日志切割、配置nginx日志切割、设置超时时间
    • 1、在nginx网站隐藏nginx版本号,查看nginx管理用户
    • 2、设置网页缓存
    • 3、配置nginx日志切割、设置超时时间
    • 4、设置nginx网站服务器保持时间和进程优化
    • 1、配置nginx防盗链

详情介绍

​ Nginx (“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上ngimx,的并发能力确实在同类型的网页服务器中表现较好
Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率﹐能经受高负载的考验,有报告表明能支持高达50, 000个并发连接数。

Nginx作用:反向代理、负载均衡、动静分离等

防盗链概念

​ 防盗链简单来说就是存在我们服务中的一些资源,只有我们规定的合法的一类人才能去访问,其他人就不能去访问的资源(如css,js,img等资源)。

​ 具体点就是用户发送请求给nginx服务器,nginx服务器根据请求去寻找资源,请求的比如说是有个index.html文件,这个文件中会包含很多js,css,img等资源,这些文件在这个骨架中会被二次请求,在第二次请求时,会在请求头部上加上有个referer,这个referer只会在第二次请求时才会被加上。(referer表示第二次资源的来源地址)


📝实验配置与实验

拓扑图

image-20230212180224637

推荐步骤

  • 在Centos01上安装Nginx,设置网站根目录/www使用域名www.duanjiaxu.com访问
  • 在Centos02上安装DNS使用域名访问Centos01上使用域名www.duanjiaxu.com访问,Centos03使用yum安装apache使用域名www.djx.com访问
  • www.duanjiaxu.com域名的网站隐藏Nginx版本、查看Nginx管理用户、设置网页缓存、配置日志切割、配置Nginx日志切割、设置超时时间
  • www.bdqn.com网站配置防盗链防止www.djx.comwww.duanjiaxu.com的连接

实验步骤

一、在Centos01安装nginx服务,使用ww.duanjiaxu.com访问nginx

1、在Centos01上安装nginx服务,使用www.duanjiaxu.com访问nginx

1)上传nginx程序包

[root@centos01 ~]# mount /dev/cdrom /mnt/			//挂载系统光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos01 ~]# ls /mnt/				//查看是哦福挂载成功
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL
[root@centos01 ~]# rm -rf /etc/yum.repos.d/CentOS-*			//删除系统自带的yum仓库
[root@centos01 ~]# ls /etc/yum.repos.d/			
local.repo
[root@centos01 ~]# cat /etc/yum.repos.d/local.repo 			//查看yum仓库
[local]
name=centos
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@centos01 ~]# rz			//上传nginx源代码程序
z waiting to receive.**B0100000023be50
[root@centos01 ~]# ls			//查看是否上传成功
anaconda-ks.cfg       nginx-1.16.1.tar.gz  模板  图片  下载  桌面
initial-setup-ks.cfg  公共                 视频  文档  音乐

image-20230212184509976

2)安装nginx依赖程序

[root@centos01 ~]# useradd -M -s /sbin/nologin nginx			//创建nginx用户
[root@centos01 ~]# yum -y install pcre-devel zlib-devel		//安装nginx依赖程序

image-20230212184713747

3)解压nginx程序包

[root@centos01 ~]# tar zxf ./nginx-1.16.1.tar.gz -C /usr/src/			//解压nginx程序包

4)配置修改nginx源代码伪装版本信息

[root@centos01 ~]# vim /usr/src/nginx-1.16.1/src/core/nginx.h		//进入nginx源代码目录
---
13 #define NGINX_VERSION      "7.0"			//版本号14 #define NGINX_VER          "IIS" NGINX_VERSION			//版本信息22 #define NGINX_VAR          "IIS"
---
[root@centos01 ~]# vim /usr/src/nginx-1.16.1/src/http/ngx_http_header_filter_module.c
---49 static u_char ngx_http_server_string[] = "Server: IIS" CRLF;			//修改nginx数据包请求头部

image-20230212184829325

image-20230212184833555

5)安装nginx

[root@centos01 nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module			//安装模块
[root@centos01 nginx-1.16.1]# make && make install			//编译安装nginx程序
[root@centos01 nginx-1.16.1]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/				//优化命令

6)创建网站根目录

[root@centos01 ~]# mkdir /www			//创建网站根目录
[root@centos01 ~]# echo "www.duanjiaxu.com" > /www/index.html			//设置网站主页

2、配置IP地址和DNS

1)配置IP地址

[root@centos01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32			//进入网卡配置文件
---
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.0
DNS1=192.168.100.20
---
[root@centos01 ~]# systemctl restart network				//重新启动网卡服务
[root@centos01 ~]# cat /etc/resolv.conf 			//查看DNS是否配置成功
# Generated by NetworkManager
nameserver 192.168.100.20

3、修改nginx主配置文件

1)修改主配置文件

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf			//进入nginx主配置文件
---
2     user  nginx;			//nginx管理用户36     listen      192.168.100.10:80;			//监听的IP地址和端口39        charset utf-8;		//支持中文44             root   /www/;			//网站根目录

2)使用win10虚拟机验证是否能够正常访问网站

[root@centos01 ~]# nginx			//启动nginx服务
[root@centos01 ~]# netstat -anptu | grep nginx			//监听端口
tcp        0      0 192.168.100.10:80       0.0.0.0:*               LISTEN      4193/nginx: master

image-20230212185102177

3)在win10虚拟机安装抓包软件查看伪装

image-20230212185234672

二、在Centos02上安装DNS使用域名访问Centos01上使用域名www.duanjiaxu.com,centos03使用yum安装apache使用域名www.djx.com访问

1、配置网卡服务

1)配置IP地址和DNS

[root@centos02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32			//进入网卡配置文件
---
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.20		//IP地址
NETMASK=255.255.255.0		//子网掩码
DNS1=192.168.100.20		//DNS
----
[root@centos02 ~]# systemctl restart network			//重新启动网卡服务
[root@centos02 ~]# cat /etc/resolv.conf 			//查看DNS是否配置成功
# Generated by NetworkManager
nameserver 192.168.100.20

image-20230212190107745

2、安装DNS服务

1)挂载系统光盘

[root@centos02 ~]# mount /dev/cdrom /mnt/		//挂载系统光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos02 ~]# ls /mnt/			//查看系统光盘是否挂载成功
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL

2)安装DNS程序包

[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm 
警告:/mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...1:bind-32:9.9.4-50.el7             ################################# [100%]
[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm 
警告:/mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...1:bind-chroot-32:9.9.4-50.el7      ################################# [100%]

3、修改DNS配置文件

1)修改DNS主配置文件

[root@centos02 ~]# echo "" > /etc/named.conf			//清空主配置文件
[root@centos02 ~]# vim /etc/named.conf				//进入主配置文件
---
options {listen-on port 53 { any; };
};
zone "duanjiaxu.com" IN {type master;file "var/named/duanjiaxu.com.zone";
};
zone "djx.com" IN {type master;file "var/named/djx.com.zone";
};
[root@centos02 ~]# named-checkconf /etc/named.conf			//检查主配置文件是否修改正确

image-20230212190437618

2)修改第一个DNS区域配置文件

[root@centos02 ~]# vim /var/named/duanjiaxu.com.zone		//进入第一个区域配置文件
---
$TTL            86400
@               SOA             duanjiaxu.com.  root.duanjiaxu.com. (20230205101H15M1W1D
)
@               NS              centos02.duanjiaxu.com.
centos02        A               192.168.100.20
www             A               192.168.100.10
---
[root@centos02 ~]# named-checkzone duanjiaxu.com /var/named/duanjiaxu.com.zone 		//查看区域配置文件语法是否有误
zone duanjiaxu.com/IN: loaded serial 2023020510
OK

3)修改第二个DNS区域配置文件

[root@centos02 ~]# cp /var/named/duanjiaxu.com.zone /var/named/djx.com.zone			//复制第一个区域配置文件
[root@centos02 ~]# vim /var/named/djx.com.zone			//进入第二个区域配置文件
---
:%s/duanjiaxu.com/djx.com/g			//把duanjiaxu.com替换为djx.com
$TTL            86400
@               SOA             djx.com.        root.djx.com. (20230205101H15M1W1D
)
@               NS              centos02.djx.com.
centos02        A               192.168.100.20
www             A               192.168.100.30		//IP地址修改为第二台apache服务器的IP地址
---
[root@centos02 ~]# named-checkzone djx.com /var/named/djx.com.zone			//查看区域配置文件修改是否有误
zone djx.com/IN: loaded serial 2023021010
OK

image-20230212190539385

image-20230212190542269

4)重新启动DNS服务

[root@centos02 ~]# systemctl restart named		//重新启动DNS服务
[root@centos02 ~]# netstat -anptu | grep named		//监听网卡
tcp        0      0 192.168.100.20:53       0.0.0.0:*               LISTEN      41066/named         
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      41066/named         
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      41066/named         
tcp6       0      0 ::1:953                 :::*                    LISTEN      41066/named         
udp        0      0 192.168.122.1:53        0.0.0.0:*                           41066/named         
udp        0      0 192.168.100.20:53       0.0.0.0:*                           41066/named         
udp        0      0 127.0.0.1:53            0.0.0.0:*                           41066/named  

5)使用win10虚拟机验证第一台apache服务器是否能够正常访问

image-20230212190639466

4、Centos03使用yum安装apache使用域名www.djx.com访问

1)配置网卡服务

[root@centos03 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 			//进入网卡配置文件
---
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.30
NETMASK=255.255.255.0
DNS1=192.168.100.20
[root@centos03 ~]# systemctl restart network				//重新启动网卡服务
[root@centos03 ~]# cat /etc/resolv.conf 				//查看DNS配置是否生效
# Generated by NetworkManager
nameserver 192.168.100.20
2)挂载系统光盘
[root@centos03 ~]# mount /dev/cdrom /mnt/			//挂载系统光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos03 ~]# ls /mnt/			查看是否挂载成功
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL
[root@centos03 ~]# rm -rf /etc/yum.repos.d/CentOS-*			//删除系统自带的yum源
[root@centos03 ~]# ls /etc/yum.repos.d/
local.repo
[root@centos03 ~]# cat /etc/yum.repos.d/local.repo 
[local]
name=centos
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@centos03 ~]# yum -y install httpd			//使用yum仓库安装apache服务

5、修改apache的主配置文件

1)设置网站主页

[root@centos03 ~]# mkdir /www			//新建网站根目录
[root@centos03 ~]# echo "www.djx.com" > /www/index.html			//设置网站主页

2)修改apache主配置文件

[root@centos03 ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak			//备份主配置文件避免修改错误原文件丢失
[root@centos03 ~]# vim /etc/httpd/conf/httpd.conf			//进入主配置文件
---
119 DocumentRoot "/www"			//修改网站根目录
131 <Directory "/www">			//授权网站根目录
132     Options Indexes FollowSymLinks
133     AllowOverride None
134     Require all granted
135 </Directory>
---
[root@centos03 ~]# httpd -t			//检查主配置文件是否修改正确
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe38:619c. Set the 'ServerName' directive globally to suppress this message
Syntax OK
[root@centos03 ~]# systemctl restart httpd			//重新启动apache服务
[root@centos03 ~]# netstat -anptu | grep httpd			//监听网卡
tcp6       0      0 :::80                   :::*                    LISTEN      1829/httpd

6、验证

1)使用域名www.duanjiaxu.com访问nginx网站

image-20230212191035356

2、使用域名www.djx.com访问apache网站

image-20230212191057882

三、在www.duanjiaxu.com域名的网站隐藏nginx版本、查看nginx管理用户、设置网页缓存、配置日志切割、配置nginx日志切割、设置超时时间

1、在nginx网站隐藏nginx版本号,查看nginx管理用户

1)修改主配置文件隐藏版本号

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf			//进入nginx主配置文件
---
7     include       mime.types;8     default_type  application/octet-stream;9     sendfile    on;10     keepalive_timeout  65;11     server_tokens off;
---
[root@centos01 ~]# killall nginx			//停止nginx服务
[root@centos01 ~]# nginx			//启动nginx服务

image-20230212191314686

2)使用抓包软件查看版本号是否已经隐藏

image-20230212191358690

3)使用命令查看

[root@centos01 ~]# curl -I www.duanjiaxu.com
HTTP/1.1 200 OK
Server: IIS			//版本号已经隐藏掉
Date: Sat, 11 Feb 2023 11:34:31 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 18
Last-Modified: Sat, 11 Feb 2023 11:12:58 GMT
Connection: keep-alive
ETag: "63e7783a-12"
Accept-Ranges: bytes

image-20230212191419324

4)查看nginx用户

[root@centos01 ~]# ps -ef | grep nginx
root      51114      1  0 19:30 ?        00:00:00 nginx: master process nginx
nginx     51115  51114  0 19:30 ?        00:00:00 nginx: worker process
root      51254  47883  0 19:43 pts/0    00:00:00 grep --color=auto nginx

2、设置网页缓存

1)修改nginx主配置文件

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf			//进入nginx主配置文件11     server_tokens off;12     server {13         listen      192.168.100.10:80;14         server_name  www.duanjiaxu.com;15         charset utf-8;16         access_log  logs/www.duanjiaxu.com.access.log;17     18         location / {19             root   /www;20             index  index.html index.htm;21             expires 1d;		//缓存时间1天22         }
---
[root@centos01 ~]# killall nginx			//停止nginx服务
nginx: no process found
[root@centos01 ~]# nginx			//启动nginx服务

2)使用win10虚拟机访问验证

image-20230212191528533

3、配置nginx日志切割、设置超时时间

1)创建目录存储切割日志后数据

[root@centos01 ~]# mkdir /nginx_log

2)创建日志切割脚本

[root@centos01 ~]# vim /opt/nginx_log_bak.sh
---
#/bin/bash
#Filename:duanjiaxu
d=$(date -d "-1 day" "+%Y%m%d")
logs_path="/nginx_log"
pid_path="/usr/local/nginx/logs/nginx.pid"
[-d $logs_path] || mkdir -p $logs_path
mv /usr/local/nginx/logs/www.duanjiaxu.com.access.log ${logs_path}/www.duanjiaxu
.com-access.log-$d
kill -USR1 $(cat $pid_path)
find $logs_path -mtime +30 |xargs rm -rf
---
[root@centos01 ~]# chmod +x /opt/nginx_log_bak.sh			//添加执行权限

image-20230212191701858

3)设置计划任务周期备份nginx日志,每间隔两分钟备份一次日志

[root@centos01 ~]# crontab -e
---
*/2     *       *       *       *       /opt/nginx_log_bak.sh

4)查看生成的日志

[root@centos01 ~]# ls /nginx_log/
www.duanjiaxu.com-access.log-20230210	 			//生成的日志

4、设置nginx网站服务器保持时间和进程优化

1)修改nginx主配置文件保持时间和进程优化

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf			//进入nginx主配置文件
---
user  nginx;
worker_processes  5;			//启动5个nginx进程
pid     log/nginx.pid;
events {worker_connections  2048;
}
http {include       mime.types;default_type  application/octet-stream;access_log logs/access.log;sendfile    on;keepalive_timeout  10;client_header_timeout 15;		//设置客户端向服务器发送请求头的超时时间为15秒client_body_timeout 15;			//设置服务器向客户端发送请求头的超时时间为15秒server_tokens off;server {listen      192.168.100.10:80;server_name  www.duanjiaxu.com;charset utf-8;access_log  logs/www.duanjiaxu.com.access.log;location / {root   /www;index  index.html index.htm;expires 1d;}}
}

image-20230212191851264

2)重新启动nginx服务

[root@centos01 ~]# killall nginx			//停止nginx服务
nginx: no process found
[root@centos01 ~]# nginx			//启动nginx服务
[root@centos01 ~]# netstat -anptu | grep nginx			//监听网卡
tcp        0      0 192.168.100.10:80       0.0.0.0:*               LISTEN      52521/nginx: master

3)查看启动的nginx进程

[root@centos01 ~]# ps -ef | grep nginx
root      52521      1  0 21:05 ?        00:00:00 nginx: master process nginx
nginx     52522  52521  0 21:05 ?        00:00:00 nginx: worker process
nginx     52523  52521  0 21:05 ?        00:00:00 nginx: worker process
nginx     52524  52521  0 21:05 ?        00:00:00 nginx: worker process
nginx     52525  52521  0 21:05 ?        00:00:00 nginx: worker process
nginx     52526  52521  0 21:05 ?        00:00:00 nginx: worker process
root      52562  47883  0 21:07 pts/0    00:00:00 grep --color=auto nginx

四、在www.duanjiaxu.com网站配置防盗链防止www.djx.com盗www.duanjiaxu.com的链接

1、配置nginx防盗链

1)上传图片

[root@centos01 www]# rz			//上传图片
z waiting to receive.**B0100000023be50
[root@centos01 www]# rz
z waiting to receive.**B0100000023be50
[root@centos01 www]# ls			//查看图片是否上传成功
error.png  index.html  logo.jpg

2)设置nginx网站图片

[root@centos01 www]# vim index.html	//进入网站根目录
---
www.duanjiaxu.com</br>
<img src="./logo.jpg"/>	//插入图片

3)访问nginx图片

image-20230212192351164

4)复制nginx网站的图片链接

image-20230212192414886

5)设置apache盗用nginx链接

[root@centos03 ~]# vim /www/index.html			//进入apache网站根目录
---
www.djx.com
<img src="http://www.duanjiaxu.com/logo.jpg"/>

6)防止apache网站查看是否盗链接成功

image-20230212192513251

7)修改nginx主配置文件防止盗链接

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf			//进入nginx主配置文件
---1 user  nginx;2 worker_processes  5;3 events {4     worker_connections  2048;5 }6 http {7     include       mime.types;8     default_type  application/octet-stream;9     access_log logs/access.log;10     sendfile    on;11     keepalive_timeout  10;12     client_header_timeout 15;13     client_body_timeout 15;14     server_tokens off;15     server {16         listen      192.168.100.10:80;17         server_name  www.duanjiaxu.com;18         charset utf-8;19         access_log  logs/www.duanjiaxu.com.access.log;20 21         location / {22             root   /www;23             index  index.html index.htm;24             expires 1d;25         }26         location ~*\.(jpg|gif|swf)$ {27                 valid_referers none blocked *.duanjiaxu.com duanjiaxu.com;28                 if ($invalid_referer) {29                 rewrite ^/ http://www.duanjiaxu.com/error.png;			//跳转到错误图片30              }31       }32   }33 }

image-20230212192550980

8)重启nginx服务

[root@centos01 ~]# killall nginx			//停止nginx服务
nginx: no process found
[root@centos01 ~]# nginx			//启动nginx服务
[root@centos01 ~]# netstat -anptu | grep nginx			//监听网卡
tcp        0      0 192.168.100.10:80       0.0.0.0:*               LISTEN      53654/nginx: master

9)使用win10虚拟机验证

image-20230212192633154


🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

img

相关文章:

Nginx优化与防盗链

Nginx优化与防盗链 &#x1f4d2;博客主页&#xff1a; 微笑的段嘉许博客主页 &#x1f4bb;微信公众号&#xff1a;微笑的段嘉许 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐留言&#x1f4dd; &#x1f4cc;本文由微笑的段嘉许原创&#xff01; &#x1f4c…...

自动驾驶路径规划概况

文章目录前言介绍1. 路径规划在自动驾驶系统架构中的位置2. 全局路径规划的分类2.1 基础图搜索算法2.1.1 Dijkstra算法2.1.2 双向搜索算法2.1.3 Floyd算法2.2 启发式算法2.2.1 A*算法2.2.2 D*算法2.3 基于概率采样的算法2.3.1 概率路线图&#xff08;PRM&#xff09;2.3.2 快速…...

某某银行行面试题目汇总--HashMap为什么要扩容

一、HashMap啥时候扩容&#xff0c;为什么扩容&#xff1f; HashMap的默认大小是16。在实际开发过程中&#xff0c;我们需要去存储的数据量往往是大于存储容器的默认大小的。所以&#xff0c;出现容量默认大小不能满足需求时&#xff0c;就需要扩容。而这个扩容的动作是由集合自…...

求职者:“我有五年测试经验”面试官: “不,你只是把一年的工作经验用了五年”

最近看到很多软件测试由于公司裁员而需要重新求职的。他们普遍具有4年甚至更长的工作经验。但求职结果往往都不太理想。 我在与部分软件测试求职者交谈的过程中发现&#xff0c;很多人的工作思路不清晰&#xff0c;技能不扎实&#xff0c;没有持续学习的习惯&#xff0c;但对于…...

Nacos配置中心

什么是配置中心所谓配置中心:在微服务的环境下,将项目需要的配置信息保存在配置中心,需要读取时直接从配置中心读取,方便配置管理的微服务工具我们可以将部分yml文件的内容保存在配置中心一个微服务项目有很多子模块,这些子模块可能在不同的服务器上,如果有一些统一的修改,我们…...

【故障】6、yum不可用

文章目录[toc]一、yum命令不能使用1&#xff09;报错2&#xff09;问题分析3&#xff09;完全删除python及yum重新安装1、删除python2、删除yum3、下载Python依赖rpm包4、下载yum依赖rpm包5、强制安装python6、强制安装yum7、测试一、yum命令不能使用 1&#xff09;报错 Ther…...

深度解读 | 数据资产管理面临诸多挑战,做好这5个措施是关键

日前&#xff0c;大数据技术标准推进委员会&#xff08;中国通信标准化协会下&#xff08;CCSA&#xff09;的专业技术委员会&#xff0c;简称TC601&#xff09;发布《数据资产管理实践白皮书》&#xff08;6.0 版&#xff09;&#xff08;以下简称&#xff1a;报告&#xff09…...

双检测人脸防伪识别方法(活体检测+人脸识别+关键点检测+人像分割)

双检测人脸防伪识别=人脸检测+活体检测+人脸识别 1.人脸关键点+语义分割 使用mediapipe进行视频人脸关键点检测和人像分割: import time import cv2 import mediapipe as mp import numpy as npmp_drawing = mp.solutions.drawing_utils mp_drawing_styles = mp.solution…...

2023年3月 - 笔记

内容已复习 采用下划线标识内容已重写 并补充优化 新建文章并添加超链接 背景颜色 绿色 Python 2023年3月1日 Python 把列表转成元组 # 1、Python 把列表转成元组 使用tuple 即可 list_a [1, 2, 3, 4, 5, 6] list_b tuple(list_a) print(list_b)# 2、如果想把 元组转成列…...

浅谈Redisson实现分布式锁对原理

1.Redisson简介 Redis 是最流行的 NoSQL 数据库解决方案之一&#xff0c;而 Java 是世界上最流行&#xff08;注意&#xff0c;我没有说“最好”&#xff09;的编程语言之一。虽然两者看起来很自然地在一起“工作”&#xff0c;但是要知道&#xff0c;Redis 其实并没有对 Java…...

struts1.2升级struts2.5.30问题汇总

严重: 配置应用程序监听器[org.apache.struts2.tiles.StrutsTilesListener]错误java.lang.NoClassDefFoundError: org/apache/tiles/web/startup/AbstractTilesListenerat java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(ClassLoader…...

电动汽车充放电的优化调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

《JeecgBoot系列》 如何设计表单实现“下拉组件二级联动“ ? 以省市二级联动为例

《JeecgBoot系列》 如何设计表单实现"下拉组件二级联动" ? 以省市二级联动为例 一、准备字典表 1.1 创建字典表 CREATE TABLE sys_link_table ( id int NULL, pid int NULL, name varchar(64) null );1.2 准备数据 idpidname1全国21浙江省32杭州市42宁波市51江苏…...

数学小课堂:数学的线索(从猜想到定理再到应用的整个过程)

文章目录 引言I 勾股定理1.1 勾三股四弦五1.2 数学和自然科学的三个本质差别1.3 总结引言 从猜想到定理再到应用的整个过程是数学发展和体系构建常常经历的步骤。 I 勾股定理 勾股定理: 直角三角形两条直角边的平方之和等于斜边的平方,这个定理在国外都被称为毕达哥拉斯定理…...

Collecting package metadata (current_repodata.json): failed

一、问题描述 安装anaconda之后&#xff0c;想创建环境&#xff0c;用了下面这段代码&#xff1a; conda create -n pytorch python3.7 conda创建环境报错了&#xff0c;报了如下这一堆&#xff1a; Collecting package metadata (current_repodata.json): failedUnavailab…...

几十亿工单表,查询优化案例

前言: 之前在某大型保险公司担任技术经理&#xff0c;负责优化话务系统模块&#xff0c;由于系统已经运行10年之久&#xff0c;尤其在话务系统中&#xff0c;沉积了几十亿的话务信息表&#xff0c;业务人员反馈&#xff0c;话务系统历史数据查询部分已经完全查询不动&#xff0…...

LabVIEW应用程序(EXE)无法正确动态调用插件

LabVIEW应用程序&#xff08;EXE&#xff09;无法正确动态调用插件正在构建一个应用程序并使用插件架构&#xff0c;以便可以动态调用将来创建的VI&#xff08;插件&#xff09;。应用程序在LabVIEW开发环境中可以正常运行&#xff0c;但不能作为可执行程序运行。运行可执行文件…...

到了35岁,软件测试职业发展之困惑如何解?

35岁&#xff0c;从工作时间看&#xff0c;工作超过10年&#xff0c;过了7年之痒&#xff0c;多数IT人都已经跳槽几次。 35岁&#xff0c;发展比较好的软件测试人&#xff0c;已经在管理岗位&#xff08;测试经理甚至测试总监&#xff09;或已经成为测试专家或测试架构师。发展…...

Google Guice 3:Bindings(1)

1. 序言 上一篇博客&#xff0c;《Google Guice 2&#xff1a;Mental Model》&#xff0c;讲述了Guice的建模思路&#xff1a;Guice is a map Guice官网认为&#xff1a;binding是一个对象&#xff0c;它对应Guice map中的一个entry&#xff0c;通过创建binding就可以向Guice …...

学习国家颁布的三部信息安全领域法律,理解当前工作中的信息安全合规要求

目录三部信息安全领域的法律文件三部法律的角色定位与联系三部法律的适用范围三部法律的主要履职部门三部法律条文章节结构中的共性三部法律中的一些次重点章节网络安全法的重点章节数据安全法的重点章节个人信息保护法的重点章节关于工业和信息化部行政执法项目清单三部信息安…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...