当前位置: 首页 > 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系统利用手持设备,可以给仓储人员下发具体的盘点任务,例如需要盘点的货位、商品等信息…...

Oracle分页技术

1、使用两层嵌套 SELECT *FROM (SELECT A.*, ROWNUM RNFROM (SELECT * FROM edw_t100_bal_all) AWHERE ROWNUM < 40)WHERE RN > 21; 2、使用between..and.. SELECT *FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM edw_t100_bal_all) A)WHERE RN between 21 and 40…...

2023-08-15 Untiy进阶 C#知识补充6——C#7主要功能与语法

文章目录 一、字面值改进二、out 内部声明 / 弃元三、ref 返回值四、本地函数五、抛出表达式六、元组七、模式匹配 ​ 注意&#xff1a;在此仅提及 Unity 开发中会用到的一些功能和特性&#xff0c;对于不适合在 Unity 中使用的内容会忽略。 ​ C# 7 对应 Unity 版本&#xff1…...

logstash配置文件

input { kafka { topics > “xxxx” bootstrap_servers > “ip:port” auto_offset_reset > “xxxx” group_id > “xxxx” consumer_threads > 3 codec > “json” } } filter { grok { match > { “message” > ‘%{IP:client_ip} - - [%{HTTPDATE:…...

docker搭建lnmp(nginx+mysql57+php7.4)

docker搭建lnmp(nginxmysql57php7.4) 1. 准备工作 docker安装 $ sudo yum update $ sudo sudo yum install -y yum-utils device-mapper-persistent-data lvm2 $ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo $ sudo…...

专访 BlockPI:共建账户抽象未来的新一代 RPC 基础设施

在传统 RPC 服务板块上&#xff0c;开发者一直饱受故障风险、运行环境混乱等难题的折磨。实现 RPC 服务的去中心化&#xff0c;且保持成本优势和可扩展性&#xff0c;始终是区块链基础设施建设的重要命题之一。从 2018 年观察中心化 RPC 供应商服务现状开始&#xff0c;BlockPI…...

js fetch请求中断的几种方式

1、通过AbortController 这是官方标准手段&#xff0c;真正意义的阻止请求&#xff08;不支持ie&#xff09; 后端接口设置的两秒返回数据 function myFetch() {const controller new AbortController();const signal controller.signal;fetch(http://localhost:3000/aaa/…...

Python自动化实战之使用Selenium进行Web自动化详解

概要 为了完成一项重复的任务&#xff0c;你需要在网站上进行大量的点击和操作&#xff0c;每次都要浪费大量的时间和精力。Python的Selenium库就可以自动化完成这些任务。 在本篇文章中&#xff0c;我们将会介绍如何使用Python的Selenium库进行Web自动化&#xff0c;以及如何…...

“之江数据安全治理论坛”暨《浙江省汽车数据处理活动规定(专家建议稿)》研讨会顺利召开

研讨会主题 8月10日&#xff0c;“之江数据安全治理论坛”暨《浙江省汽车数据处理活动规定&#xff08;专家建议稿&#xff09;》研讨会在浙江大学计算机创新技术研究院举办。 本次研讨会的主题聚焦于“智能网联汽车的数据安全与数据合规”&#xff0c;邀请行业主管部门和数据…...

消息中间件面试题

异步发送(验证码、短信、邮件…) MYSQL和Redis&#xff0c;ES之间的数据同步 分布式事务 削峰填谷 RabbitMQ如何保证消息不丢失&#xff1f; 开启生产者确认机制&#xff0c;确保生产者的消息能到达队列 开启持久化功能&#xff0c;确保消息未消费前在队列中不会丢失 开启消费…...

麻辣烫数据可视化,麻辣烫市场将持续蓬勃发展

麻辣烫&#xff0c;这道源自中国的美食&#xff0c;早已成为人们生活中不可或缺的一部分。它独特的香辣口味&#xff0c;让人忍不住每每流连忘返。与人们的关系&#xff0c;简直如同挚友一般。每当寒冷的冬日或疲惫的时刻&#xff0c;麻辣烫总是悄然走进人们的心房&#xff0c;…...

大数据课程J1——Scala的概述

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Scala的特点; ⚪ 了解Scala的开发环境搭建; ⚪ 了解Scala的开发工具; 一、概述 1.简介 Scala既是面向对象的语言,也是面向函数的语言。scala可以为你在做大量代码重用和扩展是提…...

第二章:25+ Python 数据操作教程(第十三节NUMPY 教程与练习)

NumPy(“Numerical Python”或“Numeric Python”的缩写)是 Python 中对数组和矩阵进行快速数学计算的最基本的软件包之一。在处理多维数据时它也非常有用。集成C、C++和FORTRAN工具是一件幸事。它还提供了许多傅里叶变换 (FT) 和线性代数函数。 为什么使用 NumPy 而不是列…...

【Java面试】如果一个线程两次调用start(),会出现什么问题?

这个问题出自阿里p6岗位第一面的提问&#xff0c;你会回答吗&#xff1f; 在Java里面&#xff0c;一个线程只能调用一次start()方法&#xff0c;第二次调用会抛出IllegalThreadStateException异常。 一个线程本身是具备一个生命周期的。 在Java里面&#xff0c;线程的生命周…...

购买steam余额有风险吗?以及N种被红锁的情况

购买steam余额有风险吗&#xff1f;以及N种被红锁的情况 无论是打游戏的玩家&#xff0c;还是像我们这类靠倒卖装备赚钱的小商贩&#xff0c;都面临充值美金余额的问题&#xff0c;我们现在主要是找的专业充值渠道做代充。 最近我发现群里有极个别学员通过自己的方法找到了一…...

使用 BERT 进行文本分类 (02/3)

​ 一、说明 在使用BERT&#xff08;1&#xff09;进行文本分类中&#xff0c;我向您展示了一个BERT如何标记文本的示例。在下面的文章中&#xff0c;让我们更深入地研究是否可以使用 BERT 来预测文本是使用 PyTorch 传达积极还是消极的情绪。首先&#xff0c;我们需要准备数据…...

基于Hadoop的表级监管

现状 大数据平台中,采用hadoop的方式存储数据,hdfs本质上是文件系统,而文件系统对数据的监管能力有限,但是数据安全领域问题日渐凸显,现目前,大数据平台一般以分层结构进行授权,但是对于一线开发人员而言,是能够接触到整个大数据平台中的所有表的,那么如何实现这样一…...

【学习日记】【FreeRTOS】延时列表的实现

前言 本文在前面文章的基础上实现了延时列表&#xff0c;取消了 TCB 中的延时参数。 本文是对野火 RTOS 教程的笔记&#xff0c;融入了笔者的理解&#xff0c;代码大部分来自野火。 一、如何更高效地查找延时到期的任务 1. 朴素方式 在本文之前&#xff0c;我们使用了一种朴…...

​LeetCode解法汇总833. 字符串中的查找与替换

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 你会得到一…...

ide internal errors【bug】

ide internal errors【bug】 前言版权ide internal errors错误产生相关资源解决1解决2 设置虚拟内存最后 前言 2023-8-15 12:36:59 以下内容源自《【bug】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是h…...

阿里云与中国中医科学院合作,推动中医药行业数字化和智能化发展

据相关媒体消息&#xff0c;阿里云与中国中医科学院的合作旨在推动中医药行业的数字化和智能化发展。随着互联网的进步和相关政策的支持&#xff0c;中医药产业受到了国家的高度关注。这次合作将以“互联网 中医药”为载体&#xff0c;致力于推进中医药文化的传承和创新发展。…...

【Redis】Redis 的学习教程(五)之 SpringBoot 集成 Redis

在前几篇文章中&#xff0c;我们详细介绍了 Redis 的一些功能特性以及主流的 java 客户端 api 使用方法。 在当前流行的微服务以及分布式集群环境下&#xff0c;Redis 的使用场景可以说非常的广泛&#xff0c;能解决集群环境下系统中遇到的不少技术问题&#xff0c;在此列举几…...

github以及上传代码处理

最近在github上传代码的时候出现了&#xff1a; /video_parser# git push -u origin main Username for https://github.com: gtnyxxx Password for https://gtny2010github.com: remote: Support for password authentication was removed on August 13, 2021. remote: Plea…...

【PACS源码】认识PACS的架构和工作流程

&#xff08;一&#xff09;PACS系统的组成及架构 PACS系统的基本组成部分包括&#xff1a;数字影像采集、通讯和网络、医学影像存储、医学影像管理、各类工作站五个部分。 而目前PACS系统的软件架构选型上看&#xff0c;主要有C/S和B/S两种形式。 C/S架构&#xff0c;即Client…...

【C++】开源:跨平台Excel处理库-libxlsxwriter配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍Excel处理库-libxlsxwriter配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&…...

前端-轮询

一、轮询定义 轮询是指在一定的时间间隔内&#xff0c;定时向服务器发送请求&#xff0c;获取最新数据的过程。轮询通常用于从服务器获取实时更新的数据。 二、轮询和长轮询区别 轮询是在固定的时间间隔内向服务器发送请求&#xff0c;即使服务器没有数据更新也会继续发送请求…...

Python “贪吃蛇”游戏,在不断改进中学习pygame编程

目录 前言 改进过程一 增加提示信息 原版帮助摘要 pygame.draw pygame.font class Rect class Surface 改进过程二 增加显示得分 改进过程三 增加背景景乐 增加提示音效 音乐切换 静音切换 mixer.music.play 注意事项 原版帮助摘要 pygame.mixer pygame.mix…...

Linux网络编程_Ubuntu环境配置安装

文章目录&#xff1a; 一&#xff1a;基于vmware虚拟机安装Ubuntu系统&#xff08;虚拟机&#xff09; 1.vmware下载 2.Ubuntu系统下载 3.配置 3.1 无法连网&#xff1a;这里很容易出现问题 3.2 更换国内源 3.3 无法屏幕适配全屏 3.4 汉化 二&#xff1a;直接安装Ubun…...

gradle java插件

gradle java插件 1. 由来 Gradle是一种现代化的构建工具&#xff0c;Java插件是Gradle官方提供的插件&#xff0c;用于支持和管理Java项目的构建过程。 2. 常见五种示例和说明 示例1&#xff1a;配置源代码目录和编译选项 plugins {id java }sourceSets {main {java {srcD…...

神经网络基础-神经网络补充概念-48-rmsprop

概念## 标题 RMSProp&#xff08;Root Mean Square Propagation&#xff09;是一种优化算法&#xff0c;用于在训练神经网络等机器学习模型时自适应地调整学习率&#xff0c;以加速收敛并提高性能。RMSProp可以有效地处理不同特征尺度和梯度变化&#xff0c;对于处理稀疏数据和…...

分析Flink,源和算子并行度不一致时,运行一段时间后,看似不再继续消费的问题,提供解决思路。

文章目录 背景分析 问题来了比较一开始的情况解决方式 背景 之前有分析过一次类似问题&#xff0c;最终结论是在keyby之后&#xff0c;其中有一个key数量特别庞大&#xff0c;导致对应的subtask压力过大&#xff0c;进而使得整个job不再继续运作。在这个问题解决之后&#xff…...