Nginx之核心配置指令1

        作为一款高性能的HTTP服务器软件,Nginx的核心 功能就是应对HTTP请求的处理。由于具体硬件、操作 系统及应用场景的不同,需要Nginx在对HTTP请求的处 理方法上进行不同的调整,为了应对这些差异,Nginx 提供了多种配置指令,让用户可以根据实际的软硬件及使用场景进行灵活配置。

        Nginx的配置指令很多,为了方便理解和使用,可 以按照其在代码中的分布,将其分为核心配置指令模块配置指令两大类。核心配置指令分为事件核心配置指令和HTTP核心配置指令,事件核心配置指令主要 是与Nginx自身软件运行管理及Nginx事件驱动架构有 关的配置指令;HTTP核心配置指令是对客户端从发起 HTTP请求、完成HTTP请求处理、返回处理结果,到关 闭HTTP连接的完整过程中的各个处理方法进行配置的配置指令。模块配置指令是在每个Nginx模块中对所在 模块的操作方法进行配置的配置指令。

1.配置文件解析

        Nginx默认编译安装后,配置文件都会保存 在/usr/local/nginx/conf目录下,在配置文件目录 下,Nginx默认的主配置文件是nginx.conf,这也是 Nginx唯一的默认配置入口。

        1.1 配置文件目录

[root@ansible01 nginx]# tree /etc/nginx/
/etc/nginx/
├── conf.d
├── default.d
├── fastcgi.conf
├── fastcgi.conf.default
├── fastcgi_params
├── fastcgi_params.default
├── koi-utf
├── koi-win
├── mime.types
├── mime.types.default
├── nginx.conf
├── nginx.conf.default
├── scgi_params
├── scgi_params.default
├── uwsgi_params
├── uwsgi_params.default
└── win-utf
fastcgi_paramsNginx在配置FastCGI代理服 务时会根据fastcgi_params文件的配置向FastCGI服务 器传递变量,该配置文件现已由fastcgi.conf代替
fastcgi.conf为了规范配置指令 SCRIPT_FILENAME的用法,引入FastCGI变量传递配 置
mime.typesMIME类型映射表,Nginx会根据服 务端文件后缀名在映射关系中获取所属文件类型,将 文件类型添加到HTTP消息头字段“Content-Type” 中
nginx.confNginx默认的配置入口文件
scgi_paramsNginx在配置SCGI代理服务时会 根据scgi_params文件的配置向SCGI服务器传递变量
uwsgi_paramsNginx在配置uWSGI代理服务时 会根据uwsgi_params文件的配置向uWSGI服务器传递变 量
koi-utf、koi-win、win-utf这3个文件是 KOI8-R编码转换的映射文件,因为Nginx的作者是俄罗 斯人,在Unicode流行之前,KOI8-R是使用最为广泛的 俄语编码        

        1.2 配置文件结构

main全局域Nginx 的根级别指令区域。该区域的配置指令是全局有效的,该指令名为隐性显示,nginx.conf 的整个文件内容都写在该指令域中
events指令域Nginx事件驱动相关的配置指令域
http指令域Nginx HTTP 核心配置指令域,包含客户端完整 HTTP 请求过程中每个过程的处理方法的配置指令
server指令域Nginx 用来定义服务 IP、绑定端口及服务相关的指令区域
location指令域对用户 URI 进行访问路由处理的指令区域
stream指令域Nginx 对 TCP 协议实现代理的配置指令域(负载均衡)
types指令域定义被请求文件扩展名与 MIME 类型映射表的指令区域
if指令域按照选择条件判断为真时使用的配置指令域

        打开系统默认的nginx.conf文件,可以看到整个 文件的结构如下:

[root@ansible01 nginx]# cat /etc/nginx/nginx.conf
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;events {worker_connections 1024;
}http {log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile            on;tcp_nopush          on;tcp_nodelay         on;keepalive_timeout   65;types_hash_max_size 4096;include             /etc/nginx/mime.types;default_type        application/octet-stream;# Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information.include /etc/nginx/conf.d/*.conf;server {listen       80;listen       [::]:80;server_name  11.0.1.18;# root         /usr/share/nginx/html;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {root   /usr/share/nginx/html;index  index.html index.htm;}location /shell {root /usr/share/nginx/;index index.html;}location ~ \.php$ {fastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/$fastcgi_script_name;include        fastcgi_params;}error_page 404 /404.html;location = /404.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2;
#        listen       [::]:443 ssl http2;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers HIGH:!aNULL:!MD5;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }}

        由上述配置文件可以看出,配置文件中的指令和 指令值是以类似于key-value的形式书写的。写在配置 文件全局域的指令是Nginx配置文件的核心指令,主要 是对Nginx自身软件运行进行配置的指令。其中, events和http所包含的部分分别为事件指令域和HTTP 指令域,指令域内的指令则明确约定了该区域内的指 令的应用范围。server指令域被包含于http指令域 中,同时又包含了location指令域,各指令域中的共 用范围逐层被上层指令域限定,可见各指令域匹配的 顺序是由外到内的。Nginx的配置指令按照内部设定可 以同时编写在不同指令域中,包含在最内层的指令将 对外层同名指令进行指令值覆盖,并以最内层指令配 置为最终生效配置。

2.Nginx的进程核心配置指令 

        Nginx的进程核心配置指令包含在Nginx核心代码 及事件模块代码中,按配置指令设定的功能可分为进程管理、进程调优、进程调试、事件处理4个部分。

        2.1 进程管理

        Nginx本身是一款应用软件,在其运行时,用户可 对其运行方式、动态加载模块、日志输出等使用其内 建的基础配置指令进行配置,指令说明如下表所示:

指令默认值指令说明
daemonon用于设定nginx进程是否以守护进程的方式在后台运行,on为启用,off为不启用
pidlogs/nginx.pid设定保存nginx主进程ID的文件路径
usernobody nobody用于设定nginx启动后,主进程唤起的工作进程运行的用户以及用户组
load_module-加载动态模块的指令
include-加载外部配置文件
error_loglogs/error.log error指定错误日志文件路径及文件名
pcre_jitoff用于设定在配置文件中的正则表达式是否使用pcre_jit技术,off为不适用,on为使用
ssl_engine-指定使用的OpenSSL加速引擎名称

        pcre_jit需要Nginx在配置编译时加上--withpcre-jit参数。

        error_log的日志级别可以为如下值:debug、 info、notice、warn、error、crit、alert、emerg。

        在Linux系统中,可用如下命令查看当前系统支持 的OpenSSL加速引擎信息。

[root@ansible01 nginx]# openssl engine -t

         2.2 进程调优

        Nginx是按照事件驱动架构设计的。每个外部请求 都以事件的形式被工作进程(Worker Process)响 应,并发完成各种功能的操作处理。Nginx工作进程的 性能依赖于硬件和操作系统的配置,在实际应用场景 中,用户需要按照硬件、操作系统或应用场景需求的 侧重点进行相应的配置调整。Nginx的进程调优配置指令如下表所示:

        2.2.1 线程池指令

名称线程池指令
指令thread_pool
作用域main
默认值thread_pool default threads=32 max_queue=65536;
指令说明线程池配置指令,允许调整默认线程池或创建新的线程池,用于读取和发送文件的场景中。在线程池中所有线程都繁忙时,新的请求任务将在队列中等待,默认情况下,等待队列中的最大任务数是65536。使用线程池机制时,通过配置该指令,可以在因读取和发送文件引发阻塞的场景中提升nginx读取和发送文件的处理功能
#配置样式如下:
thread_pool pool_1 threads=16;

        具体参数说明如下:

                thread_pool也可以编写在http指令域中

                threads参数定义了线程池的线程数

                max_queue参数指定了等待队列中的最大任务 数,在线程池中所有线程都处于繁忙状态时,新任务 将进入等待队列。等待队列中的最大任务数为65536

                ·线程池指令需要在编译配置时增加--with-threads参数

        2.2.2 定时器方案指令

        

名称定时器指令
指令timer_resolution
作用域main
默认值-
指令说明

nginx中的处理事件超时管理方案有两种,一种是设定一个定时器,每过一段时间就对所有超时事件进行一次扫描;另一种是先计算出距离当前时间最近的将要发生超时事件的时间,然后等待这个时间之后再去进行一次超时检测。默认配置下使用第二种超时检测方案,该方案是依据事件超时时间与当前时间的时间差进行检测的,所以每次事件返回都需要进行新的检测时间计算,在I/O事件比较多的场景下,这会导致频繁地调用时间函数gettimeofday进行计算并更新下次检测的时间,资源消耗相对较高。而设置一个指定的时间值启用第一种方案时,nginx内置的事件超时检测定时器会在指定时间周期内进行事件超时检测,无须调用时间函数gettimeofday更新时间,资源消耗相对较低。

#配置样例如下:
timer_resolution 100ms;

        在因频繁调用时间函数引发的资源消耗不大的场 景中可不设定该指令

        2.2.3 工作进程优先级指令

名称工作进程优先级指令
指令worker_priority
作用域main
默认值()
指令说明

工作进程优先级设定指令,可以通过该指令设定工作进程在Linux系统中的优先级(nice值)

#配置样例如下:
worker_priority -5;

        worker_priority指令值的取值范围是-20~19, 数值越小,优先级越高,获得的CPU时间就越多。配置生效后可以通过如下命令查看:

[root@ansible01 nginx]# ps axo command,pid,ni | grep nginx | grep -v grep
nginx: worker process         4163   0
nginx: worker process         4164   0
nginx: master process /usr/ 129572   0

        2.2.4 工作进程数指令

名称工作进程数指令
指令worker_processes
作用域main
默认值1
可配置选项number或auto
指令说明

依据nginx架构可知,工作进程数量的最佳配置是小于或等于CPU内核的数量,通过该指令可以手动设置工作进程的数量,该指令也支持auto指令值,由nginx自动分配

#配置样例如下:
worker_processes auto;

         工作进程数指令的指令值有两种类型,分别为数 字和auto。指令值为auto时,Nginx会根据CPU的内核 数生成等数量的工作进程。

        2.2.5 工作进程CPU绑定指令

名称工作进程CPU绑定指令
指令worker_cpu_affinity
作用域main
默认值-
可配置选项cpumark或auto
指令说明

nginx工作进程处于高效的工作状态是因为充分利用了进程与CPU的亲缘性,使每个工作进程均可固定在一个CPU上运行。该指令可以手动进行工作进程与CPU的绑定,当然也可以通过设定指令值auto交由nginx自动分配

#配置样例如下:
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100
00001000 00010000 00100000 01000000 10000000;

         指令值是用CPU掩码来表示的,使用与CPU数量相 等位数的二进制值来表示。单个CPU用单个二进制值表 示,多个CPU组合可用二进制值相加来表示。如配置样 例所示,CPU有8个核,分别表示绑定了从第0核到第7 核的CPU。CPU核数是从0开始计数的。

        指令值除了可以是CPU掩码外,还可以是auto。当 指令值为auto时,Nginx会自动进行CPU绑定。

#配置样例如下:
worker_processes auto;
worker_cpu_affinity auto;

        工作进程与CPU核数也可以是多种对应组合,指令 语句如下:

worker_processes 4;
worker_cpu_affinity 01 10 01 10; # 表示把第1、3工作进程绑定在2核CPU的第0核,第2、4工作进程绑定在2核CPU的第1核
worker_processes 2;
worker_cpu_affinity 0101 1010;# 表示把第1工作进程绑定在CPU的第0核和第2核,第2工作进程绑定在CPU的第1核和第3核

        2.2.6 工作进程开文件数指令

名称工作进程开文件数指令
指令worker_rlimit_nofile
作用域main
默认值-
指令说明设置nginx所有工作进程同时打开文件的最大数量,默认为操作系统的文件打开数
#配置样例如下:
worker_rlimit_nofile 65535;

         2.2.7 工作进程关闭等待时间指令

名称工作进程关闭等待时间指令
指令worker_shutdown_timeout
作用域main
默认值-
指令说明设置nginx正常关闭工作进程的超时时间,当超过设定的时间时,nginx主进程将强制关闭所有已经打开的连接,以便关闭工作进程
#配置样例如下:
worker_shutdown_timeout 10s;

         2.2.8 设置互斥锁文件指令

名称设置互斥锁文件指令
指令lock_file
作用域main
默认值logs/nginx.lock;
指令说明设置互斥锁文件指令,在开启accept_mutex进程调试模式或使用共享内存的场景下,需要用到互斥锁机制。在一些支持原子操作的操作系统中,可使用共享内存实现互斥锁。在不支持原子操作的系统环境下,需要通过该指令指定一个互斥锁文件
#配置样例如下:
lock_file logs/nginx.lock;

         2.3 进程调试

        Nginx调整配置或运行发生异常时,为了及时获知 工作进程在事件处理过程中发生的问题,可通过获取 内存中各状态机、变量等数据的内容进行调试。Nginx 为用户提供了一些调试用的配置指令,方便用户进行 进程调试。配置指令如下表所示:

        2.3.1 主进程指令

名称主进程指令
指令master_process
作用域main
默认值on
可配置选项on或off
指令说明

nginx默认是以一个主进程管理多个工作进程的工作方式,设定指令值为off时,nginx将只运行一个主进程来处理所有请求

#配置样例如下:
master_process off;

        2.3.2 调试点控制指令

名称调试点控制指令
指令debug_points
作用域main
默认值-
可配置选项stop或abort
指令说明

该指令用于进程调试点的控制,当指令值为stop时,nginx在执行到内部调试点时就会发出SIGSTOP信号,方便用户进行调试;当指令值为abort时则会停止进程并创建corefile

#配置样例如下:
debug_points stop;

         2.3.3 工作目录指令

名称工作目录指令
指令working_directory
作用域main
默认值-
指令说明在Linux操作系统中,当进程执行出错或收到终止信号时,操作系统会将执行进程过程中,内存中的内容存储到一个文件中,该文件被称为崩溃文件(corefile),当nginx进程发生这种状况时也会生成一个崩溃文件,该崩溃文件中包含当时的堆栈及寄存器等信息,方便用户排查问题产生的原因。该指令用于设定工作进程保存崩溃文件的目录,在nginx程序崩溃时向该目录中写入崩溃文件,nginx进程需要被设定有目录的写权限
#配置样例如下:
working_directory logs

         崩溃文件可以使用工具objdump、GDB进行文件分析。

        2.3.4 调试文件大小指令

名称调试文件大小指令
指令worker_rlimit_core
作用域main
默认值-
指令说明该指令是崩溃文件大小的设置指令,因为崩溃文件会存储非常详细的信息,数据量很大,很容易把磁盘空间占满,因此需要合理的限制崩溃文件的文件大小
#配置样例如下:
worker_rlimit_core 800m;

         2.4 时间处理

        Nginx是采用事件驱动式架构处理外部请求的,这 一架构使得Nginx在现有硬件架构下可以处理数以万计 的并发请求。通过事件处理指令的配置可以让Nginx与 实际运行的硬件及系统进行有效的适配,从而发挥更 加高效的并发处理能力。Nginx的事件处理指令编辑在 events指令域中,如下表所示:

        2.4.1 工作进程并发数指令

名称工作进程并发数指令
指令worker_connections
作用域events
默认值512
指令说明每个nginx工作进程可处理并发链接的最大数
#配置样例如下:
events {worker_connections 65535;
}

        Linux系统下,因为每个网络连接都将打开一个文 件描述符,Nginx可处理的并发连接数受限于操作系统 的最大打开文件数,同时所有工作进程的并发数也受 worker_rlimit_nofile指令值的限制。

        2.4.2 事件处理机制选择指令

名称事件处理机制选择指令
指令use
作用域events
默认值-
指令说明nginx内部有多种事件处理机制模型,以下简称事件模型,默认情况下,nginx会自动选择一种高效的事件模型,用户可以通过该指令自行选择事件模型进行事件处理
#配置样例如下:
events {use epoll;
}

         Nginx支持的事件模型有select、poll、kqueue、 epoll、/dev/poll、eventport。

        2.4.3 互斥锁指令 

名称互斥锁指令 
指令accept_mutex
作用域events
默认值off
可配置选项on或off
指令说明设置是否启用互斥锁模式的进程调度
#配置样例如下:
events {accept_mutex on;
}

         2.4.4 互斥锁等待时间指令

名称互斥锁等待时间指令
指令accept_mutex_delay
作用域events
默认值500ms
指令说明nginx工作进程在互斥锁模式下需要不断地争抢互斥锁,没有互斥锁的工作进程如果争抢不到互斥锁,会在等待事件结束后执行下一轮争抢。通过该指令可以将抢锁等待时间设置为一个较短的时间,以提高进程争抢互斥锁的频率
#配置样例如下:
events {accept_mutex_delay 300ms;
}

         2.4.5 多请求支持指令

名称多请求支持指令
指令multi_accept
作用域events
默认值off
可配置选项on或off
指令说明默认情况下,每个工作进程一次只接受一个新连接,如果开启该指令,则每个工作进程将接受所有的新连接
#配置样例如下:
events {multi_accept on;
}

        2.4.6 未完成异步操作最大数指令

名称未完成异步操作最大数指令
指令worker_aio_requests
作用域events
默认值32
指令说明用于设置当在epoll事件模型下使用AIO时,单个工作进程未完成异步I/0操作的最大数
#配置样例如下:
events {worker_aio_requests 128;
}

         2.4.7 调试指定连接指令

名称调试指定连接指令
指令debug_connection
作用域events
默认值off
可配置选项address或CIDR或unix;
指令说明对指定的客户端连接开启测试日志
#配置样例如下:
events {debug_connection 127.0.0.1;debug_connection localhost;debug_connection 192.0.2.0/24;debug_connection ::1;debug_connection 2001:0db8::/32;debug_connection unix:;...
}

         该指令需要Nginx在编译时通过--with-debug参数 开启。

        2.5 核心指令配置详解案例

daemon on;# 以守护进程的方式运行Nginx
pid logs/nginx.pid;# 主进程ID记录在logs/nginx.pid中
user nobody nobody;# 工作进程运行用户为nobody
load_module
"modules/ngx_http_xslt_filter_module.so"; #加载动态模块ngx_http_xslt_filter_module.so
error_log logs/error.log debug;# 错误日志输出级别为debug
pcre_jit on;# 启用pcre_jit技术
thread_pool default threads=32 max_queue=65536;# 线程池的线程数为32,等待队列中的最大任务数为65536
timer_resolution 100ms;# 定时器周期为100毫秒
worker_priority -5;# 工作进程系统优先级为-5
worker_processes auto;# 工作进程数由Nginx自动调整
worker_cpu_affinity auto;# 工作进程的CPU绑定由Nginx自动调整
worker_rlimit_nofile 65535;# 所有工作进程的最大连接数是65535
worker_shutdown_timeout 10s;# 工作进程关闭等待时间是10秒
lock_file logs/nginx.lock;# 互斥锁文件的位置是logs/nginx.lock
working_directory logs# 工作进程工作目录是logs
debug_points stop;# 调试点模式为stop
worker_rlimit_core 800m;# 崩溃文件大小为800MB
events {
worker_connections 65535;# 每个工作进程的最大连接数是65535
use epoll;# 指定事件模型为epoll
accept_mutex on;# 启用互斥锁模式的进程调度
accept_mutex_delay 300ms;# 互斥锁模式下进程等待时间为300毫秒
multi_accept on;# 启用支持多连接
worker_aio_requests 128;# 完成异步操作最大数为128
debug_connection 192.0.2.0/24;# 调试指定连接的IP地址和端口是192.0.2.0/24
}

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

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

相关文章

Nodejs 第七十六章(MQ进阶)

MQ介绍和基本使用在上一章介绍过了,不再重复 消息:在RabbitMQ中,消息是传递的基本单元。它由消息体和可选的属性组成 生产者Producer:生产者是消息的发送方,它将消息发送到RabbitMQ的交换器(Exchange&…

10款堪称神器的宝藏软件,相见恨晚

今天给大家带来10款堪称神器的宝藏软件,每一个都非常好用,让你直呼相见恨晚。 1、知犀思维导图 知犀思维导图是大家组织信息、梳理思维的重要利器,它可以帮助我们以图形化的方式呈现思维过程,让整体思路变得清晰直观。通过使用知…

【神经网络】资源

神经网络是一种模拟人脑神经元结构的计算模型,广泛应用于机器学习和深度学习领域。以下是一些关于神经网络的资源,可以帮助你从基础到高级逐步掌握相关知识: 入门教程: 《神经网络教程:从原理到实践的全面解析》提供…

3 数据类型、运算符与表达式-3.5 字符型数据-3.5.2 转义字符

3.5.2 转义字符 #include <stdio.h>main() {int a, b, c;a 5;b 6;c 7;printf("ab c\tde\rf\n");printf("hijk\tL\bM\n");return 0; }

架构师如何运用情景领导力

架构师应用情景领导力意味着根据团队成员的成熟度和项目的具体情况来调整自己的领导风格。以下是架构师如何使用情景领导力的一些方法&#xff1a; 评估团队成员的成熟度&#xff1a;架构师需要评估团队成员在技术和专业领域的成熟度&#xff0c;包括他们的专业技能、经验、解…

花键轴类零件加工方法有哪些?

花键轴零件的加工方法 一辆普通中型卡车上约含 30 个花键轴零件, 通常用在离合器、变速器、传动轴总成、差速器、转向总成等位置。 花键轴零件的加工工艺是传统的切削加工和塑形成形加工两种。传统工艺如下的8个主要工序&#xff1a; 下料→锻造毛坯→毛坯加工→外花键加工…

34、掌握线上系统:jmap和jhat带你深入了解对象分布

34.1、前文总结 在上一篇文章中,我们向大家介绍了一个在日常工作中的实用工具jstat。通过使用jstat,我们可以非常轻松便捷地了解线上系统的运行状况,包括新对象增速、Young GC触发频率及耗时,以及对象进入老年代的增速和Full GC触发频率及耗时。这些信息有助于我们全面掌握…

【C语言】青蛙跳台阶问题 - 递归算法(一种思路,针对三种不同的情况)

文章目录 1. 前言2. 题目和分析2.1 代码实现2.2 反思 (重点) 3.题目二&#xff08;变式&#xff09;3.1 分析3.2 代码实现 4. 题目三&#xff08;变式&#xff09;4.1 分析4.2 代码实现 1. 前言 相信大家看到青蛙跳台阶问题时&#xff0c;第一时间就会想到递归。那你知道为什么…

SwiftUI中结合使用Timer和onReceive

SwiftUI提供了一种现代化的方式来构建用户界面&#xff0c;其中包括对时间驱动的事件的响应。在许多应用中&#xff0c;可能需要根据时间间隔执行某些操作&#xff0c;例如更新界面或触发事件。SwiftUI通过结合使用Timer和 onReceive 来实现这一功能&#xff0c;使得处理时间相…

【免杀】C2远控-Loader加载器-动态API调用

目录 创建后门程序站在杀毒程序立场上对后门进行分析例&#xff1a;动态调用VirtualProtect函数 作用:绕过杀毒对导入表的检测定性 创建后门程序 VS新建项目 回调函数加载Loader #include <Windows.h>unsigned char shellcode[] "";void CallBack() {void* p…

FlashBrowser

本例&#xff1a;windows10 下载FlashBrowser 解决flash失效问题&#xff0c;更换浏览器 https://www.flash.cn/ 下载FlashBrowser浏览器

Redis的缓存击穿、缓存穿透和缓存雪崩是什么?怎么预防?

Redis的缓存击穿、缓存穿透和缓存雪崩是什么&#xff1f;怎么预防&#xff1f; 前言缓存击穿定义解决思路实现加锁设置过期时间Lua脚本刷新锁 缓存穿透定义实现 缓存雪崩定义解决思路 总结 前言 最近在CSDN上看到了一篇博客&#xff0c;Redis缓存击穿、雪崩、穿透&#xff01;…

深入理解Vue3.js响应式系统基础逻辑

如果您觉得这篇文章有帮助的话&#xff01;给个点赞和评论支持下吧&#xff0c;感谢~ 作者&#xff1a;前端小王hs 阿里云社区博客专家/清华大学出版社签约作者/csdn百万访问前端博主/B站千粉前端up主 此篇文章是博主于2022年学习《Vue.js设计与实现》时的笔记整理而来 书籍&a…

15-字符串处理的常用函数——查找字符串,求字符串长度,分割字符串,查找指定字符,比较字符串,连接字符串

15-字符串处理的常用函数——查找字符串&#xff0c;求字符串长度&#xff0c;分割字符串&#xff0c;查找指定字符&#xff0c;比较字符串&#xff0c;连接字符串 文章目录 15-字符串处理的常用函数——查找字符串&#xff0c;求字符串长度&#xff0c;分割字符串&#xff0c;…

C++:SLT容器-->stack

C:SLT容器--&#xff1e;stack 1. stack容器2. stack 常用接口 1. stack容器 先进后出&#xff0c;后进先出不允许有遍历行为可以判断容器是否为空可以返回元素的个数 2. stack 常用接口 构造函数 stack<T> stk; // stack采用模板类实现&#xff0c;stack对象的默认构造形…

第1期JAVA社招面试经验月报

面经哥专注互联网社招面试经验分享&#xff0c;关注我&#xff0c;每日推送精选面经&#xff0c;面试前&#xff0c;先找面经哥&#xff5c;面经哥整理了上月30篇面试经历&#xff0c;选取了较为热点高频的面试题供大家参考 基础知识类‍‍‍‍‍ 1、说下双亲委派原则以及类加…

1992-2012年美国西海岸的海面高度异常数据集

Gridded Altimeter Fields with Enhanced Coastal Coverage 具有增强海岸覆盖范围的网格化测高场 简介 具有增强的海岸覆盖范围的网格化高度计场数据产品包含美国西海岸的海面高度异常&#xff08;SSHA 或 SLA&#xff09;以及北纬 35.25 度-48.5 度和东经 227.75 度-248.5 …

Vue3 渲染函数 API(五)

h() h 函数用于创建并返回一个虚拟节点&#xff08;VNode&#xff09; h( tag, // HTML 标签名、组件对象或异步组件函数 data, // 一个包含组件的props/attrs/domProps/on 等的对象 children // 子虚拟节点 (VNodes)&#xff0c;由 h()构建而成&#xff0c; // 也可以使用字符…

解析final原理

原理 public class TestFinal {final int a 20; //final保证不能读到两个值} 字节码&#xff1a; 写屏障&#xff1a; 之前的指令不会重排序到后面去&#xff08;有序性&#xff09; 之前的修改、赋值操作之后会同步到主内存中去&#xff08;可见性&#xff09; 0: aload…

大学生如何学习JavaScript?

学习 JavaScript 对于大学生来说是一个宝贵的技能&#xff0c;因为它是现代网页开发的核心语言之一。以下是一些详细的步骤&#xff0c;帮助大学生学习 JavaScript&#xff1a; 1. 了解 Web 开发基础 学习 HTML 和 CSS&#xff0c;这是网页开发的基石。 2. 学习 JavaScript …