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

nginx上web服务的基本安全优化、服务性能优化、访问日志优化、目录资源优化和防盗链配置简介

一.基本安全优化

1.隐藏nginx软件版本信息

2.更改源码来隐藏软件名和版本

(1)修改第一个文件(核心头文件),在nginx安装目录下找到这个文件并修改

(2)第二个文件

(3)第三个文件,内置响应信息页面

(4)第四个文件

(5)重新编译安装并重启

3.更改nginx服务的默认用户和组

(1)在编译安装时指定用户和组

(2) 更改nginx.conf,在nobody处指定

二.修改参数优化服务性能

1.优化nginx的worker进程数,并将进程绑定到不同的cpu上

2.优化nginx事件处理模型、最大连接数和进程最大打开文件数

3.开启高效传输模式和上传文件大小的限制

4.配置nginx的gzip压缩

三.优化访问日志

1.运用shell脚本优化nginx的访问日志

2.舍弃不需要的访问日志

3.日志权限设置

四.站点目录和url路径访问优化

1.根据扩展名限制程序和文件访问

2.禁止访问指定目录下的所有文件和目录

(1)拒绝访问static目录和以static开头路径下的文件

(2)禁止访问某个目录并返回状态码

3.禁止非法域名解析(防用户IP)访问网站

(1)返回501

(2)永久重写301

五.nginxweb服务防盗链

1.文件名防盗链

2.图片目录防盗链


 

一.基本安全优化

1.隐藏nginx软件版本信息

一般来讲,同一版本号的设备或软件出现漏洞或问题,那么这一批次就几乎都有被攻击的风险1,通过隐藏版本号等敏感信息,在一定成都上可以增强web服务的安全性

隐藏版本使用的是server_tokens off/on;,一般放在http块内

[root@localhost nginx-1.22.0]# curl -I 192.168.2.190
HTTP/1.1 200 OK
Server: nginx/1.22.0
Date: Sun, 13 Aug 2023 06:36:39 GMT
Content-Type: text/html
Content-Length: 4
Last-Modified: Thu, 10 Aug 2023 03:52:52 GMT
Connection: keep-alive
ETag: "64d45f14-4"
Accept-Ranges: bytes
[root@localhost conf]# vim nginx.conf 
......
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server_tokens off;
......
}
[root@localhost conf]# systemctl restart nginx.service 
[root@localhost nginx-1.22.0]# curl -I 192.168.2.190
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 13 Aug 2023 06:38:00 GMT
Content-Type: text/html
Content-Length: 4
Last-Modified: Thu, 10 Aug 2023 03:52:52 GMT
Connection: keep-alive
ETag: "64d45f14-4"
Accept-Ranges: bytes

2.更改源码来隐藏软件名和版本

[root@localhost ~]# curl -I 192.168.2.190
HTTP/1.1 200 OK
Server: nginx/1.22.0
Date: Mon, 14 Aug 2023 02:47:15 GMT
Content-Type: text/html
Content-Length: 4
Last-Modified: Thu, 10 Aug 2023 03:52:52 GMT
Connection: keep-alive
ETag: "64d45f14-4"
Accept-Ranges: bytes

(1)修改第一个文件(核心头文件),在nginx安装目录下找到这个文件并修改

[root@localhost core]# pwd
/usr/local/src/nginx-1.22.0/src/core
[root@localhost core]# vim nginx.h 

更改NGINX_VERSION,NGINX_VER,NGINX_VAR为要伪造的版本号和服务名

0523b5db55334ca6925e3ce0f1fc547d.png

(2)第二个文件

[root@localhost http]# pwd
/usr/local/src/nginx-1.22.0/src/http
[root@localhost http]# vim ngx_http_header_filter_module.c

修改此处

7c3bf502002b476187a3fbea81540c06.png

(3)第三个文件,内置响应信息页面

[root@localhost http]# pwd
/usr/local/src/nginx-1.22.0/src/http
[root@localhost http]# vim ngx_http_special_response.c

 

 修改此处

609de875760e41b5bda76cfeab9cae95.png

(4)第四个文件

[root@localhost v2]# pwd
/usr/local/src/nginx-1.22.0/src/http/v2
[root@localhost v2]# vim ngx_http_v2_filter_module.c 

修改此处 

5298c7bed4f042379b2058722815a0d2.png

(5)重新编译安装并重启

[root@localhost nginx-1.22.0]# pwd
/usr/local/src/nginx-1.22.0
[root@localhost nginx-1.22.0]# ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'[root@localhost nginx-1.22.0]# make[root@localhost nginx-1.22.0]# make install[root@localhost nginx-1.22.0]# systemctl restart nginx.service[root@localhost ~]# curl -I 192.168.2.190
HTTP/1.1 200 OK
Server: rpcbind/2.3.30
Date: Mon, 14 Aug 2023 02:47:23 GMT
Content-Type: text/html
Content-Length: 4
Last-Modified: Thu, 10 Aug 2023 03:52:52 GMT
Connection: keep-alive
ETag: "64d45f14-4"
Accept-Ranges: bytes

3.更改nginx服务的默认用户和组

(1)在编译安装时指定用户和组

[root@localhost nginx-1.22.0]# pwd
/usr/local/src/nginx-1.22.0
[root@localhost nginx-1.22.0]# ./configure --user=nginx --group=nginx 

(2) 更改nginx.conf,在nobody处指定

#user  nobody;
worker_processes  1;

 

二.修改参数优化服务性能

1.优化nginx的worker进程数,并将进程绑定到不同的cpu上

(1)一般在nginx.conf文件中是“worker_processes 1;”,指定了nginx要开启的进程数,可以设置为cpu的核数,在面对高并发流量的场合可以进一步设置为cpu核数*2

(2)nginx的进程多是运行在某个cpu或某个cpu的核内,在优化这一硬件资源不均的情况时可以将不同的nginx进程绑定到对应的cpu配置,可以在任务管理器的性能中查看cpu核数

例如我的是四核就可以这样来绑定

worker_processes  4;
worker_cpu_affinity 0001 0010 0100 1000;
#worker_cpu_affinity可以把不同的进程分给不同的cpu处理,上面4个二进制数是掩码,代表的是1-4个核,对应上面4个进程数,这个情况下每个进程会分到一个cpu核处理。

2.优化nginx事件处理模型、最大连接数和进程最大打开文件数

在Linux上使用epoll的I/O多路服用模型,最大连接数要根据具体的服务器性能和程序内存来指定,一般都放在events块内。最大文件打开数可以查询,一般和进程数放一起。

worker_processes  4;
worker_cpu_affinity 0001 0010 0100 1000;
worker_rlimit_nofile 65535;
#可以设置为这个“ulimit -HSn”命令得出来的结果
events {use epoll;#事件模块指令,放在events中指定nginx的工作模式,select-标准工作模式,poll-标准工作模式,kqueue-BDS系统高效工作模式,epoll-Linux平台首选高效工作模式,rtsig,/dev/pollworker_connections  1024;#事件模块指令,定义每个进程的最大连接数,默认1024,max_client客户端连接数=worker_processes*worker_connections,max_clients=worker_processes*worker_connections/4,当然这些设置也受文件系统打开数量限制,执行名“ulimit -n 数量”后生效
}

3.开启高效传输模式和上传文件大小的限制

sendfile可以开启文件的高效传输模式,如果将tcp_nopush和tcp_nodelay都设置为on,可以有效防止网络和磁盘的I/O阻塞,提升效率,可以通过client_max_body_size指定最大上传文件大小,一般都放在http块中

http {include       mime.types;default_type  application/octet-stream;sendfile        on;tcp_nopush      on;tcp_nodelay     on;client_max_body_size 20M;
......
}

4.配置nginx的gzip压缩

http {include       mime.types;default_type  application/octet-stream;sendfile        on;tcp_nopush      on;tcp_nodelay     on;keepalive_timeout  65;gzip  on;#开启压缩gzip_min_length 1k;#设置压缩页面的最小字节,建议设置为1K以上,小于1K会压缩变大gzip_buffers 4 16k;#压缩缓冲区大小,上面的表示是需要4个16k的内存作为压缩结果流缓存gzip_http_version 1.1;#压缩版本,用于识别http协议版本,默认1.1gzip_comp_level 2;#压缩比率,指定gzip压缩比,1的压缩比最小处理速度最快,9的压缩比最大传输速度快但处理速度最慢,较为消耗CPU资源gzip_types text/plain application/x-javascript text/css application/xml;#指定压缩类型gzip_vary on;#开启vary header,可以让前端的缓存服务器的缓存经过gzip压缩页面
......
}

三.优化访问日志

1.运用shell脚本优化nginx的访问日志

主要功能是将日志以一定的时间格式保存并重载配置,在测试完脚本运行无误后,可以配合定时任务使得保持访问日志的整洁,并且每天生成一个新的日志文件以进行记录

[root@localhost nginx-1.22.0]# whereis nginx
nginx: /usr/sbin/nginx.old /usr/sbin/nginx /etc/nginx
[root@localhost conf]# vim nginx_access_log_mg.sh
#!/bin/bash
cd /usr/local/src/nginx-1.22.0/logs &&\
/bin/mv access.log access_$(date +%F).log
/usr/sbin/nginx -s reload
[root@localhost conf]# bash nginx_access_log_mg.sh
[root@localhost logs]# ll
total 8
-rw-r--r-- 1 root root 1680 Aug 14 13:32 access_2023-08-14.log
-rw-r--r-- 1 root root    0 Aug 14 13:54 access.log
-rw-r--r-- 1 root root 1108 Aug 14 13:32 error.log

2.舍弃不需要的访问日志

舍弃掉一些图片资源的访问记录,以免消耗大量磁盘资源

server {listen 192.168.2.190;server_name www.aabb.com;location / {root /usr/local/src/nginx-1.22.0/html/ip;index index.html index.htm;}location ~ .*\.(jpg|JPG|jpeg|JPEG|gif|GIF)$ {access_log off;}}

3.日志权限设置

建议递归设置为700

[root@localhost nginx-1.22.0]# chmod -R 700 logs/
[root@localhost nginx-1.22.0]# pwd
/usr/local/src/nginx-1.22.0

四.站点目录和url路径访问优化

1.根据扩展名限制程序和文件访问

禁止访问images开头并php/php5/sh/pl/py结尾,static开头并以php/php5/sh/pl/py结尾,/data/attachment或/data/avatar开头以php/php5结尾的文件类型的内容

server {listen 192.168.2.190;server_name www.aabb.com;location / {root /usr/local/src/nginx-1.22.0/html/ip;index index.html index.htm;}location ~ .*\.(jpg|JPG|jpeg|JPEG|gif|GIF)$ {access_log off;}location ~ ^/images/.*\.(php|php5|sh|pl|py)$ {deny all ;}location ~ ^/static/.*\.(php|php5|sh|pl|py)$ {deny all;}location ~* ^/data/(attachment|avatar)/.*\.(php|php5)$ {deny all;}location ~ .*\.(php|php5)?$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fcgi.conf;}
}

2.禁止访问指定目录下的所有文件和目录

(1)拒绝访问static目录和以static开头路径下的文件

location ~ ^/(static)/ {deny all;
}
location ~ ^/static {deny all;
}

(2)禁止访问某个目录并返回状态码

location /xxx/ {return 404; 
}
location /xxx/ { return 403;    
}

3.禁止非法域名解析(防用户IP)访问网站

(1)返回501

server {listen 80 default_server;server_name _;return 501;
}

(2)永久重写301

server {listen 80 default_server;server_name _;rewrite ^(.*) http://xxx/$1 permanent;
}#恶意域名解析IP
server {if ($host !~ ^www/xxx/.com$){rewrite ^(.*) http//www.xxx.com$l permanent;
}

五.nginxweb服务防盗链

1.文件名防盗链

location ~* \.(gif|jpg|png|swf|flv)$ { valid_referers none blocked xxx.com ; #valid_referers可以设置允许访问资源的引用者列表,none表示不允许任何引用这直接访问,blocked表示拒绝所有引用者,允许xxx.com域名下的引用者访问资源if ($invalid_referer) {rewrite ^/ http://xxx.com/retrun.html;#如果引用者不在允许列表中,请求将会被重写到http://xxx.com/retrun.html,引用者在允许列表中则返回请求的资源,如上配置,xxx.com域名下的引用者可以获取资源#return 404;}
}

2.图片目录防盗链

location /images/ {  #匹配/images、开头的请求valid_referers none blocked server_names xxx;#none,blocked含义同文件名防盗链,server_names后加上允许的域名列表if ($invalid_referer) {  #如上配置,引用者不在允许域名列表中则403拒绝访问,在列表中则则返回其请求的资源return 403;}
}

 

 

 

 

相关文章:

nginx上web服务的基本安全优化、服务性能优化、访问日志优化、目录资源优化和防盗链配置简介

一.基本安全优化 1.隐藏nginx软件版本信息 2.更改源码来隐藏软件名和版本 (1)修改第一个文件(核心头文件),在nginx安装目录下找到这个文件并修改 (2)第二个文件 (3)…...

himall3.0商城源码

目录 1 himall3.0商城源码 1.1 /// 获取待评价订单数量 1.2 /// 保存支付订单信息,生成支付订单 1.3 /// 取最近time分钟内的满足打印的订单数据 himall3.0商城源码 /// <summary>...

【LeetCode75】第二十九题 删除链表的中间节点

目录 题目&#xff1a; 示例; 分析: 代码: 题目&#xff1a; 示例; 分析: 给我们一个链表&#xff0c;让我们把链表中间的节点删了。 那么最直观最基础的办法是遍历两边链表&#xff0c;第一遍拿到链表长度&#xff0c;第二次把链表中间节点删了。 这个暴力做法我没事过…...

Floyd(多源汇最短路)

Floyd求最短路 给定一个 n 个点 m 条边的有向图&#xff0c;图中可能存在重边和自环&#xff0c;边权可能为负数。 再给定 k 个询问&#xff0c;每个询问包含两个整数 x 和 y&#xff0c;表示查询从点 x 到点 y 的最短距离&#xff0c;如果路径不存在&#xff0c;则输出 impo…...

Pycharm找不到Conda可执行文件路径(Pycharm无法导入Anaconda已有环境)

在使用Pycharm时发现无法导入Anaconda创建好的环境&#xff0c;会出现找不到Conda可执行文件路径的问题。 解决 在输入框内输入D:\anaconda3\Scripts\conda.exe&#xff0c;点击加载环境。 注意前面目录是自己Anaconda的安装位置&#xff0c;之后就可以找到Anaconda的现有环…...

国产之光:讯飞星火最新大模型V2.0

大家好&#xff0c;我是herosunly。985院校硕士毕业&#xff0c;现担任算法研究员一职&#xff0c;热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名&#xff0c;CCF比赛第二名&#xff0c;科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…...

通讯录实现【C语言】

目录 前言 一、整体逻辑分析 二、实现步骤 1、创建菜单和多次操作问题 2、创建通讯录 3、初始化通讯录 4、添加联系人 5、显示联系人 6、删除指定联系人 ​7、查找指定联系人 8、修改联系人信息 9、排序联系人信息 三、全部源码 前言 我们上期已经详细的介绍了自定…...

pcl欧式聚类

欧式聚类实现方法大致是&#xff1a; 1、找到空间中某点 p 1 p_1 p1​&#xff0c;用KD-Tree找到离他最近的n个点&#xff0c;判断这n个点到 p 1 p_1 p1​的距离。将距离小于阈值r的点 p 2 、 p 3 、 p 4 p_2、p_3、p_4 p2​、p3​、p4​…放在类Q里 2、在 Q ( p 1 ) Q(p_1…...

macOS Ventura 13.5.1(22G90)发布(附黑/白苹果系统镜像地址)

系统镜像下载&#xff1a;百度&#xff1a;黑果魏叔 系统介绍 黑果魏叔 8 月 18 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.5.1 更新&#xff08;内部版本号&#xff1a;22G90&#xff09;&#xff0c;本次更新距离上次发布隔了 24 天。 本次更新重点修复了…...

分布式监控平台——Zabbix

市场上常用的监控软件&#xff1a; 传统运维&#xff1a;zabbix、 Nagios 一、zabbix概述 作为一个运维&#xff0c;需要会使用监控系统查看服务器状态以及网站流量指标&#xff0c;利用监控系统的数据去了解上线发布的结果&#xff0c;和网站的健康状态。 利用一个优秀的监…...

【OpenGauss源码学习 —— 列存储(创建表)】

列存储 什么是列存储&#xff1f;语法实现语法格式参数说明示例源码分析&#xff08;创建表&#xff09;语法层&#xff08;Gram.y&#xff09;子模块&#xff08;utility.cpp&#xff09; 总结 声明&#xff1a;本文的部分内容参考了他人的文章。在编写过程中&#xff0c;我们…...

Jenkins 监控dist.zip文件内容发生变化 触发自动部署

为Jenkins添加plugin http://xx:xx/manage 创建一个任务 构建触发器 每3分钟扫描一次&#xff0c;发现指定文件build.zip文件的MD5发生变化后 触发任务...

Linux系列讲解 —— FTP协议的应用

简单介绍一下FTP文件传输协议在linux系统中的应用。 目录 0. 基本概念1. FTP Server1.1 安装FTP Server1.2 FTP Server开启和关闭1.3 查看FTP Server是否开启1.4 FTP服务器配置 2. FTP Client2.1 lftp2.2 ftp2.3 sftp2.4 文件资源管理器集成的ftp和sftp 3. ftp常用命令 0. 基本…...

Rancher-RKE-install 部署k8s集群

一、为什么用Rancher-RKE-install 1.CNCF认证的k8s安装程序。 2.有中文文档。 二、安装步骤 1.下载Rancher-Rke的二进制包-下面是项目的地址 GitHub - rancher/rke: Rancher Kubernetes Engine (RKE), an extremely simple, lightning fast Kubernetes distrib…...

PHP8的正则表达式-PHP8知识详解

在网页程序的时候&#xff0c;经常会有查找符合某些复杂规则的字符串的需求。正则表达式就是描述这些规则的工具。 正则表达式是把文本或者字符串按照一定的规范或模型表示的方法&#xff0c;经常用于文本的匹配操作。 例如&#xff1a;我们在填写手机号码的时候&#xff0c;…...

SpringCloud实用篇7——深入elasticsearch

目录 1 数据聚合1.1 聚合的种类1.2 DSL实现聚合1.2.1 Bucket聚合语法1.2.2 聚合结果排序1.2.3 限定聚合范围1.2.4 Metric聚合语法1.2.5.小结 1.3 RestAPI实现聚合1.3.1 API语法1.3.2 业务需求1.3.3 业务实现 2 自动补全2.1 拼音分词器2.2 自定义分词器2.3 自动补全查询2.4 实现…...

uni-app 经验分享,从入门到离职(二)—— tabBar 底部导航栏实战篇

文章目录 &#x1f4cb;前言⏬关于专栏 &#x1f3af;关于小程序 tabbar 的一些知识&#x1f3af;创建一个基本的 tabBar&#x1f4dd;最后 &#x1f4cb;前言 这篇文章的内容主题是关于小程序的 tabBar 底部导航栏的入门使用和实战技巧。通过上一篇文章的基础&#xff0c;我们…...

Java虚拟机(JVM):内存区域

一、内存区域介绍 Java虚拟机&#xff08;JVM&#xff09;内存可以分为以下几个区域&#xff1a; 程序计数器&#xff08;Program Counter Register&#xff09;&#xff1a;用于记录当前线程执行的字节码指令的地址&#xff0c;属于线程私有的区域。在任意时刻&#xff0c;一…...

11 - git stash 开发中临时加塞了紧急任务怎么处理

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 开发中临时加塞了紧急任务怎么处理 开发中临时加塞了紧急任务怎么处理 当你此时工作区已经修改了 Readme 文件&#xff0c;然后突然需要解决其他问题&#xff08;紧急问题、新任务&…...

高效的WMS系统手持盘点方案

WMS系统手持盘点就是指利用WMS系统支持的手持式电子盘点设备进行库存盘点的方式。 具体来说: - 手持盘点设备是一种小型的电子设备,具有移动条形码扫描功能,可以实时与WMS系统联通。 - WMS系统利用手持设备,可以给仓储人员下发具体的盘点任务,例如需要盘点的货位、商品等信息…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...