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

Nginx详细学习记录

1. Nginx概述

  Nginx是一个轻量级的高性能HTTP反向代理服务器,同时它也是一个通用类型的代理服务器,支持绝大部分协议,如TCP、UDP、SMTP、HTTPS等。

1.1 Nginx基础架构

在这里插入图片描述
  Nginx默认采用多进程工作方式,Nginx启动后,会运行一个master进程和多个worker进程。其中master充当整个进程组与用户的交互接口,同时对进程进行监护,管理worker进程来实现重启服务、平滑升级、更换日志文件、配置文件实时生效等功能。worker用来处理基本的网络事件,worker之间是平等的,他们共同竞争来处理来自客户端的请求。
  Nginx 的主进程和工作进程协同工作,主进程负责控制和管理工作进程,而工作进程负责实际的请求处理。这种多进程模型使得 Nginx 能够高效地处理大量并发连接,提供高性能和可扩展性。主进程和工作进程的分离还提高了服务器的稳定性,因为即使一个工作进程崩溃,其他工作进程仍然可以正常工作。

·管理进程、多工作进程设计优点:
1.充分利用多核机器,增强并发处理能力。
2.负载均衡:多个 worker 工作进程通过进程间通信来实现负载均衡,即一个请求到来时更容易被分配到负载较轻的 worker 工作进程中处理。
3.Master 监控并统一管理 worker 行为。在 worker 异常后,可以主动拉起 worker 进程,从而提升了系统的可靠性。并且由 Master 进程控制服务运行中的程序升级、配置项修改等操作,从而增强了整体的动态可扩展与热更的能力。

1.1.1 Master进程

  主进程是 Nginx 的控制进程,通常以 nginx 进程的名称运行。Master进程管理工作进程的生命周期,包括启动、停止、重新加载配置和升级 Nginx 等操作。主进程会读取主配置文件(通常是 nginx.conf),解析配置并初始化各个工作进程。
  在配置更改或升级时,主进程会启动新的工作进程,然后逐步停止旧的工作进程,以确保平滑的过渡。主进程还接收来自管理员的信号,可以用于重新加载配置、停止服务等操作。

1.1.2 Worker进程

  工作进程是 Nginx 的实际请求处理者。主进程可以创建多个工作进程,每个工作进程是一个独立的操作系统进程,可以并行处理客户端请求。工作进程的数量由配置文件中的 worker_processes 指令决定。通常,根据服务器硬件和负载情况,可以设置多个工作进程以充分利用多核处理器。
  每个工作进程监听一个或多个端口,接受来自客户端的连接请求,并处理这些请求。工作进程之间是相互独立的,不共享内存。工作进程通过事件驱动的方式处理连接和请求,支持高并发和非阻塞 I/O 操作。不会因为一个请求的阻塞而影响其他请求的处理。
·worker工作模式:
  worker对于连接是采用争抢的模式,谁先抢到就先交给谁处理,如果想要重新更新配置,由于已经抢到任务的worker不会参与争抢,那些空闲的worker就会去争抢连接,拿到连接后会自动更新配置信息,当那些有任务的worker完成任务后,会自动更新配置,这样就实现了无缝热部署。由于每个worker是独立的进程,如果有其中的一个worker出现问题,并不会影响其它worker继续进行争抢,在实现请求的过程,不会造成服务中断,建议worker数和服务器的CPU数相等是最为适宜的。

1.2 Nginx主要特性

Ngnix具有以下特性:
1. 更快的响应速度。在正常情况下,单次请求会得到更快的响应;另一方面,在高峰期(如有数以万计的并发请求),Nginx可以比其他Web服务器更快地响应请求。
2. 高扩展性。Nginx的设计极具扩展性,它完全是由多个不同功能、不同层次、不同类型且耦合度极低的模块组成。因此,当对某一个模块修复Bug或进行升级时,可以专注于模块自身,无须在意其他。Nginx的模块都是嵌入到二进制文件中执行的,无论官方发布的模 块还是第三方模块都是如此。这使得第三方模块一样具备极其优秀的性能,充分利用Nginx的高并发特性。
3. 高可靠性。Nginx的高可靠性来自于其核心框架代码的优秀设计、模块设计 的简单性;另外,官方提供的常用模块都非常稳定,每个worker进程相 对独立,master进程在1个worker进程出错时可以快速“拉起”新的worker 子进程提供服务。
4. 低内存消耗。Nginx的设计优化使其占用较少的内存和CPU资源,适用于高流量的Web应用和服务器。一般情况下,10000个非活跃的HTTP Keep-Alive连接在Nginx中仅 消耗2.5MB的内存,这是Nginx支持高并发连接的基础。
5. 高并发连接能力。理论上,Nginx支持的并发连接上限取决于多个因素,包括硬件、操作系统和配置。

2. Nginx安装

2.1 Nginx目录结构

/nginx-1.24.0
├── client_body_temp
├── conf                               # Nginx的主配置文件所在的目录
│   ├── fastcgi.conf                # fastcgi相关参数的配置文件
│   ├── fastcgi.conf.default      # fastcgi的默认配置文件
│   ├── fastcgi_params             # fastcgi参数文件
│   ├── fastcgi_params.default
│   ├── koi-utf
│   ├── koi-win
│   ├── mime.types                 # 媒体类型
│   ├── mime.types.default
│   ├── nginx.conf                  # Nginx的主配置文件
│   ├── nginx.conf.default        # Nginx的备份配置文件
│   ├── scgi_params
│   ├── scgi_params.default
│   ├── uwsgi_params
│   ├── uwsgi_params.default
│   └── win-utf
├── fastcgi_temp
├── html                             # 默认站点目录
│   ├── 50x.html                   # 错误页面优雅替代显示文件
│   └── index.html                # 默认的首页文件,在实际环境中,大家习惯用
├── logs                             # 日志文件目录
│   ├── access.log                # 访问日志文件
│   ├── error.log                  # 错误日志文件
│   └── nginx.pid                 # Nginx的PID文件,Nginx进程启动后,这个文件会随着Nginx启动而产生
├── proxy_temp
├── sbin                            # Nginx的二进制文件目录
│   └── nginx                     # Nginx的二进制文件
├── scgi_temp
└── uwsgi_temp

主要的目录文件有:conf 配置目录、html静态文件、logs日志目录、sbin执行文件。

2.2 编译与执行

2.2.1 Nginx必备库

  1. PCRE函数库
      PCRE函数库用于解析正则表达式。如果在配置文件nginx.conf里使用了正则表达式,那么在编译 Nginx时就必须把PCRE库编译进Nginx,因为Nginx的HTTP模块要靠它来解析正则表达式。
  2. zlib库
      zlib库用于对HTTP包的内容做gzip格式的压缩,如果我们在 nginx.conf里配置了gzip on,并指定对于某些类型(content-type)的 HTTP响应使用gzip来进行压缩以减少网络传输量,那么,在编译时就 必须把zlib编译进Nginx。
  3. OpenSSL
      需要OpenSSL库来支持安全通信和加密功能,特别是在处理HTTPS(加密的HTTP)请求时。
      a) SSL/TLS支持:OpenSSL用于在客户端和服务器之间建立加密通信,以保护数据的机密性和完整性。Nginx需要OpenSSL来处理HTTPS请求,从而使得通过HTTPS协议传输的数据能够被加密和解密。
      b) 数字证书管理:OpenSSL库提供数字证书的创建、管理和验证功能。在HTTPS通信中,服务器需要使用数字证书来验证身份,并将其证书提供给客户端。客户端使用服务器的证书来验证服务器的真实性,并进行密钥协商。Nginx使用OpenSSL来支持这些数字证书操作。
      c) 加密算法:OpenSSL实现了多种加密算法,用于加密和解密数据。Nginx可以使用这些加密算法来保护数据的机密性。这对于确保数据在传输过程中不被窃取或篡改至关重要。
      d) HTTPS性能:Nginx通过与OpenSSL集成,能够有效地处理大量的HTTPS连接,因为OpenSSL本身也经过了高度优化。这使得Nginx成为一个流行的HTTPS服务器和反向代理服务器。

2.2.2 Nginx源码编译

  通过指令将Ngnix压缩包解压到指定文件夹。

指令:tar -xvf nginx-1.24.0.tar.g
-x:解压缩文件。
-v:详细输出,可以看到解压的过程。
-f:后面紧跟着要解压的文件名。

在这里插入图片描述
  进入nginx-1.24.0目录下执行:./configure、make、make install三行指令。
在这里插入图片描述

1.configure:configure命令检测操作系统内核和已经安装的软件,参数的解析,中间目录的生成以及根据各种参数生成一些C源码文件、Makefile文件等。
2.make:make命令根据configure命令生成的Makefile文件编译Nginx工程,并
生成目标文件、最终的二进制文件。
3.make install命令:根据configure执行时的参数将Nginx部署到指定的安
装目录,包括相关目录的建立和二进制文件、配置文件的复制。

  ./configure命令执行成功后,生成objs目录,生成文件如下,
在这里插入图片描述
在这里插入图片描述
· Ngx_module数组:
在这里插入图片描述
  ngx_modules是非常关键的数组,它指明了每个模块在Nginx中的优
先级,当一个请求同时符合多个模块的处理规则时,将按照它们在
ngx_modules数组中的顺序选择最靠前的模块优先处理。对于HTTP过滤
模块而言则是相反的,因为HTTP框架在初始化时,会在ngx_modules数
组中将过滤模块按先后顺序向过滤链表中添加,但每次都是添加到链表
的表头,因此,对HTTP过滤模块而言,在ngx_modules数组中越是靠后
的模块反而会首先处理HTTP响应。
· 参数-v显示Nginx的版本信息;
在这里插入图片描述
· 参数-V显示编译配置编译阶段信息以及Nginx的版本信息;
在这里插入图片描述
· 参数-t测试配置文件是否正确。
在这里插入图片描述
· 参数-s stop强制停止Ngnix服务。
在这里插入图片描述
  Nginx程序通过nginx.pid文件中得 到master进程的进程ID,再向运行中的master进程发送TERM信号来快速 地关闭Nginx服务。

1. Nginx启动:./nginx
2. Nginx停止:./nginx -s stop
3. 如果用户修改了nginx.conf,需要进行刷新:./nginx -s reload

2.3 Nginx核心配置

在这里插入图片描述
  nginx.conf 是 Nginx 主要的配置文件,它定义了 Nginx 服务器的行为和各种设置。这个配置文件通常位于 Nginx 的安装目录下的 conf 子目录中。Nginx的基本功能配置是由nginx.conf提供。
在这里插入图片描述

2.3.1 配置文件分析

  1. 全局段配置
    在这里插入图片描述
      全局段配置主要包括用户或组的配置、进程数worker_process(默认为1)、Nginx进行运行文件(nginx.pid)存放地址、日志路径(error.log)及级别。
    其中,Nginx 支持的常见日志级别有:

     a)	debug:最详细的日志级别,记录非常详细的信息,通常仅在调试期间使用,因为它会产生大量日志数据。b)	info:默认日志级别,记录一般信息,用于生产环境中的基本日志记录。c)	notice:记录一般但重要的信息,通常用于记录一些不寻常但不是错误的事件。d)	warn:记录警告信息,表示可能存在问题但不一定是错误。e)	error:记录错误信息,表示出现了问题,但 Nginx 可以继续运行。f)	crit:记录严重的错误,通常是关键性问题,可能导致服务器崩溃或无法正常运行。g)	alert:记录需要立即采取行动的错误,通知管理员需要紧急处理的情况。h)	emerg:最高级别的日志,表示系统已经无法正常工作,需要立即采取行动来防止系统崩溃。
    
  2. events段配置
    在这里插入图片描述
      其中, worker_connections指定了每个工作进程能够同时处理的最大并发连接数。当达到这个限制时,新的连接将被放在等待队列中,直到有可用的连接槽。适当调整这个值可以根据服务器硬件和负载来优化性能。
      除此之外,events段还可以通过use指定 Nginx 的事件驱动模型,用于处理网络连接,例如epoll、select。multi_accept配置项控制是否允许一个连接被一个工作进程多次接受。例如,multi_accept on表示允许一个连接被一个worker进程多次接受。worker_rlimit_nofile配置项限制每个工作进程能够打开的文件描述符的最大数量。

  3. http配置请求信息
      Nginx的http配置块是用于配置全局HTTP服务器行为的部分,其中包含了关于 HTTP 请求处理的重要信息。其中,包括MIME 类型设置、访问日志设置、错误日志设置、定义HTTP服务器,包括监听端口号、主机名和域名、默认索引文件位置、静态文件缓存位置等内容。
    在这里插入图片描述
    在这里插入图片描述
    · 主要配置项说明:
    在这里插入图片描述

3. Nginx代码分析

在这里插入图片描述

3.1 核心模块

  在这里插入图片描述
  core文件夹包含了 Nginx 的核心功能的源代码,这些源代码负责处理 HTTP 请求、事件循环、连接管理、内存管理等核心服务器功能。核心模块的功能如下,
在这里插入图片描述

3.2 HTTP模块

  在这里插入图片描述

  HTTP 模块用于处理 HTTP 请求和响应。Nginx 支持模块化的 HTTP 功能,包括 HTTP 服务器、反向代理、负载均衡、缓存等。
在这里插入图片描述

3.3 事件模块

  事件模块用于处理底层网络事件,例如连接的建立和关闭、数据的读取和写入。
在这里插入图片描述

3.4 邮件模块

  在这里插入图片描述

  邮件模块允许 Nginx 用作邮件代理服务器,处理 SMTP、POP3、IMAP 等邮件协议。
在这里插入图片描述

4. Nginx主要功能

4.1 Nginx负载均衡

  原来单个服务器解决不了交互需求,通过增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,就是负载均衡。Nginx将来自客户端的请求均匀地分发到多个后端服务器,以提高应用程序的性能、可用性和可扩展性。Nginx负载均衡的实现方式有,

1.轮询(Round Robin):
Nginx按照后端服务器定义的顺序依次分发请求,确保每个后端服务器都接收到大致相等数量的请求。
2.IP哈希(IP Hash):
使用客户端的IP地址进行哈希计算,将同一客户端的请求始终分发给相同的后端服务器。这对于需要会话保持的应用程序很有用,以确保用户在一次会话中保持与同一后端服务器的连接。
3.最少连接(Least Connections):
Nginx会将请求分发给当前活跃连接数最少的后端服务器,这有助于将负载均衡在后端服务器之间,以最大程度地减轻繁忙服务器的负担。
4.URL哈希(URL Hash):
使用请求的URL进行哈希计算,将相同URL的请求路由到相同的后端服务器。

4.2 Nginx动静分离

  Nginx 动静分离架构将动态生成的内容(如应用程序逻辑、数据库查询等)与静态内容(如图像、CSS、JavaScript 文件等)分开处理,以便更有效地处理请求。动静分离可以通过如下两种方式实现:

1)	将静态文件独立成单独的域名,放在独立的服务器上;
2)	将动态跟静态文件混合在一起发布,通过Nginx来分开。

在这里插入图片描述

在上面的nginx.conf中,
1.upstream块定义上游服务器组web_servers,其中包含两个服务器:•server localhost : 8081:运行在本地主机的 8081 端口上。•server localhost : 8082:运行在本地主机的 8082 端口上。
这个配置允许负载均衡请求到这两个服务器之间。
2.server 块定义Nginx 的 HTTP 服务器配置,监听端口为 80,服务器名称为localhost。
3.set $doc_root /usr/local/var/www:设置变量 $doc_root,存储静态资源的根目录路径。
4.location ~* \.(gif|jpg|jpeg|png|bmp|ico|swf|css|js)$:一个正则表达式匹配的 location 块,处理静态资源请求,例如图片、CSS和JavaScript文件。•root $doc_root/img:将请求的静态资源文件从$doc_root/img目录中提供。
5.location /:通用的location块,处理所有其他请求,即动态内容请求。•proxy_pass http://web_servers:将请求代理到上游服务器组 web_servers中的 Tomcat 实例,实现反向代理功能。•proxy_set_header Host $host:$server_port:设置请求头,将请求的原始主机和端口信息传递给上游服务器。
6.error_page 块定义一组错误页面,包括 500、502、503 和 504 错误。当发生这些错误时,将发生内部跳转到 /50x.html 页面。•location = /50x.html:处理内部跳转到/50x.html页面的请求。•root $doc_root:从根目录$doc_root中提供50x.html页面。

在这里插入图片描述

4.3 正向代理与反向代理

· 反向代理
  在没有Nginx之前,客户端是直接请求目标服务器,由目标服务器直接完成请求处理工作。引入Nginx之后,客户端到目标服务器的所有请求都先经过Nginx,再由其进行分发到具体的服务器处理,处理完成后再返回Nginx,最后由Nginx将最终的响应结果返回给客户端,这是Nginx的负载均衡或反向代理。反向代理服务器可以提高系统的性能、可用性、安全性,并提供更多的灵活性和控制权。
在这里插入图片描述
· 反向代理Nginx配置示例:
在这里插入图片描述

1.第一部分指定 Nginx 服务器监听的端口号。Nginx 服务器将监听 HTTP 请求,使用默认的 HTTP 端口 80。此外, server_name 指令定义了此虚拟主机的域名或主机名localhost,表示该配置将用于处理访问本地主机的请求。
2.第二部分是 location 块,将匹配所有请求路径 (/)。具体配置如下:•proxy_pass http://localhost:8081;:proxy_pass 指令将请求代理到另一个服务器。在这里,请求会被代理到 http://localhost:8081,也就是本地主机的 8081 端口。这意味着 Nginx 将充当反向代理,将请求传递给运行在本地的另一个服务器。•proxy_set_header Host $host:$server_port;:这一行通过 proxy_set_header 指令设置请求头。它将在请求头中添加一个名为 Host 的字段,该字段的值是客户端请求的主机名或 IP 地址和端口号。这有助于保留客户端请求的原始主机信息。•proxy_set_header X-Forwarded-For $remote_addr;:同样使用 proxy_set_header 指令,将一个名为 X-Forwarded-For 的字段添加到请求头中。该字段的值是客户端的 IP 地址。这是一种常见的做法,用于传递客户端的真实 IP 地址给后端服务器,以便记录日志或其他目的。•proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;:这一行定义了在与上游服务器通信时,Nginx 应该如何处理不同类型的错误情况。如果上游服务器返回错误、超时或无效的响应头,或者返回 HTTP 状态码 500、502 或 503,则 Nginx 将尝试从可用的上游服务器中选择另一个,并继续代理请求。

· 正向代理
  客户端通过Nginx来访问互联网上的其他服务器,称为正向代理,Nginx用作正向代理服务器。正向代理服务器会将客户端的请求转发到目标服务器,并将目标服务器的响应返回给客户端。这种配置有助于隐藏客户端的真实 IP 地址,并提供一些其他有用的功能,如访问控制、缓存和安全性。

4.4 Nginx请求分发

  Nginx 请求分发基于其作为反向代理服务器的功能。当客户端发送请求时,Nginx 接收到请求并将其转发到一个或多个后端服务器,然后将后端服务器的响应返回给客户端。以下是 Nginx 请求分发的基本原理:

  1. 监听端口:Nginx 作为网络服务器,首先会在一个或多个监听端口上侦听来自客户端的请求。这些请求可以是 HTTP 或 HTTPS 请求,通常监听端口 80(HTTP)和 443(HTTPS)。
  2. 请求到达:当客户端发送请求到 Nginx 的监听端口时,Nginx 接收到这些请求。
  3. 请求分发:Nginx 使用配置文件中的负载均衡策略将请求分发到一个或多个后端服务器。负载均衡策略可以是轮询、最小连接数、IP hash 等,这些策略有助于均衡请求在后端服务器之间的分布。
  4. 后端服务器:Nginx 可以代理请求到一个或多个后端服务器,这些服务器通常是应用程序服务器,例如应用服务器集群、数据库服务器或其他服务。Nginx 将请求发送到后端服务器的 IP 地址和端口。
  5. 等待响应:Nginx 将请求转发给后端服务器后,等待后端服务器的响应。
  6. 响应返回:一旦后端服务器处理完请求并生成了响应,Nginx 将响应返回给客户端。这可以包括 HTML 页面、静态资源、JSON 数据等,具体取决于请求的性质。
  7. 缓存:如果配置了缓存,Nginx 可以在响应中缓存一些静态内容,以减少对后端服务器的请求。这提高了性能和响应时间。
  8. 日志记录:Nginx 可以记录每个请求和响应的详细信息,这对于监控和分析流量以及故障排除非常有用。
  9. 安全性:Nginx 可以用于保护后端服务器免受一些常见的网络攻击,例如 DDoS 攻击、SQL 注入和 XSS 攻击。
  10. SSL 终止:如果启用了 SSL/TLS,Nginx 可以终止 SSL 连接并将未加密的请求转发给后端服务器。这有助于减轻后端服务器的负担。

相关文章:

Nginx详细学习记录

1. Nginx概述 Nginx是一个轻量级的高性能HTTP反向代理服务器,同时它也是一个通用类型的代理服务器,支持绝大部分协议,如TCP、UDP、SMTP、HTTPS等。 1.1 Nginx基础架构 Nginx默认采用多进程工作方式,Nginx启动后,会运行…...

golang gin——中间件编程以及jwt认证和跨域配置中间件案例

中间件编程jwt认证 在不改变原有方法的基础上,添加自己的业务逻辑。相当于grpc中的拦截器一样,在不改变grpc请求的同时,插入自己的业务。 简单例子 func Sum(a, b int) int {return a b }func LoggerMiddleware(in func(a, b int) int) f…...

如何快速制作令人惊叹的长图海报

在当今的数字时代,制作一张吸引人的长图海报已成为许多人的需求。无论是为了宣传活动,还是展示产品,一张设计精美的长图海报都能引起人们的注意。下面,我们将介绍一种简单的方法,使用在线海报制作工具来创建长图海报。…...

D (1092) : DS循环链表—约瑟夫环(Ver. I - A)

Description N个人坐成一个圆环(编号为1 - N),从第S个人开始报数,数到K的人出列,后面的人重新从1开始报数。依次输出出列人的编号。 例如:N 3,K 2,S 1。 2号先出列,然…...

Python爬虫(二十二)_selenium案例:模拟登陆豆瓣

本篇博客主要用于介绍如何使用seleniumphantomJS模拟登陆豆瓣,没有考虑验证码的问题,更多内容,请参考:Python学习指南 #-*- coding:utf-8 -*-from selenium import webdriver from selenium.webdriver.common.keys import Keysimp…...

1. Flink程序打Jar包

文章目录 步骤注意事项 步骤 用 maven 打 jar 包&#xff0c;需要在 pom.xml 文件中添加打包插件依赖 <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><ver…...

水波纹文字效果动画

效果展示 CSS 知识点 text-shadow 属性绘制立体文字clip-path 属性来绘制水波纹 工具网站 CSS clip-path maker 效果编辑器 页面整体结构实现 使用多个 H2 标签来实现水波纹的效果实现&#xff0c;然后使用clip-path结合动画属性一起来进行波浪的起伏动画实现。 <div …...

【1.1】神经网络:关于神经网络的介绍

✅作者简介&#xff1a;大家好&#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式&#xff0c;持续分享Java技术内容。 &#x1f34e;个人主页&#xff1a;Meteors.的博客 &#x1f49e;当前专栏&#xff1a; 神经网络&#xff08;随缘更新&#xff09; ✨特色…...

java项目中git的.ignore文件设置

在Git中&#xff0c;ignore是用来指定Git应该忽略的故意不被追踪的文件。它并不影响已经被Git追踪的文件。我们可以通过.ignore文件在Git中指定要忽略的文件。 当我们执行git add命令时&#xff0c;Git会检查.gitignore文件&#xff0c;并自动忽略这些文件和目录。这样可以避免…...

11.3 读图举例

一、低频功率放大电路 图11.3.1所示为实用低频功率放大电路&#xff0c;最大输出功率为 7 W 7\,\textrm W 7W。其中 A \textrm A A 的型号为 LF356N&#xff0c; T 1 T_1 T1​ 和 T 3 T_3 T3​ 的型号为 2SC1815&#xff0c; T 4 T_4 T4​ 的型号为 2SD525&#xff0c; T 2…...

黑马JVM总结(二十八)

&#xff08;1&#xff09;语法糖-foreach &#xff08;2&#xff09;语法糖-switch-string &#xff08;3&#xff09;语法糖-switch-enum &#xff08;4&#xff09;语法糖-枚举类 枚举类 &#xff08;5&#xff09;语法糖-twr1...

2023年DDoS攻击发展趋势的分析和推断

DDoS是一种非常“古老”的网络攻击技术&#xff0c;随着近年来地缘政治冲突对数字经济格局的影响&#xff0c;DDoS攻击数量不断创下新高&#xff0c;其攻击的规模也越来越大。日前&#xff0c;安全网站Latest Hacking News根据DDoS攻击防护服务商Link11的统计数据&#xff0c;对…...

RT-Thread 内存管理(学习二)

内存堆管理应用示例 这是一个内存堆的应用示例&#xff0c;这个程序会创建一个动态的线程&#xff0c;这个线程会动态申请内存并释放&#xff0c;每次申请更大的内存&#xff0c;当申请不到的时候就结束。 #include <rtthread.h>#define THREAD_PRIORITY 25 #defi…...

怎么修改jupyter lab 的工作路径而不是直接再桌面路径打开

要修改Jupyter Lab的工作路径&#xff0c;你可以按照以下步骤操作&#xff1a; 打开终端或命令提示符窗口。 输入 jupyter lab --generate-config 命令来生成Jupyter Lab的配置文件。 找到生成的配置文件&#xff0c;通常会位于 ~/.jupyter/jupyter_notebook_config.py。 使…...

高精度NTP时钟服务器(时间同步服务器)技术方案探讨

高精度NTP时钟服务器&#xff08;时间同步服务器&#xff09;技术方案探讨 高精度NTP时钟服务器&#xff08;时间同步服务器&#xff09;技术方案探讨 四分天下目前&#xff0c;全球的 GPS卫星同步系统处于“四分天下”状态&#xff0c;以美俄两国的系统处于领导地位&#xff…...

LFU 缓存 -- LinkedHashSet

相关题目&#xff1a; 460. LFU 缓存 相关文章 LRU 缓存 – 哈希链表 # 460. LFU 缓存 # Python中和 LinkedHashSet 相似的数据结构 OrderedDict from collections import OrderedDict class LFUCache:# key 到 val 的映射&#xff0c;我们后文称为 KV 表keyToVal {}# key 到…...

用IDEA操作数据库--MySQL

IDEA集成了DataGrip的操作数据库的功能 就可以省略我们下载SQLyog/Navicat/DataGrip这些图形化操作工具了 以下是IDEA的使用 输入数据库的用户和密码...

扫雷游戏的递归解法

目录 一&#xff0c;题目 二&#xff0c;题目接口 三&#xff0c;解题思路 四&#xff0c;解题代码 一&#xff0c;题目 让我们一起来玩扫雷游戏&#xff01; 给你一个大小为 m x n 二维字符矩阵 board &#xff0c;表示扫雷游戏的盘面&#xff0c;其中&#xff1a; M 代表一…...

java练习 day5

一、Nim 游戏 1、题目链接 点击跳转到题目位置 2、代码 class Solution {public boolean canWinNim(int n) {if(n % 4 0){return false;}return true;} }3、知识点 (1) 通过模拟来寻找 规律。 二、区域和检索 - 数组不可变 1、题目链接 点击跳转到题目位置 2、代码 …...

腾讯云轻量和CVM有啥区别?怎么选择服务器配置?

腾讯云轻量服务器和云服务器有什么区别&#xff1f;为什么轻量应用服务器价格便宜&#xff1f;是因为轻量服务器CPU内存性能比云服务器CVM性能差吗&#xff1f;轻量应用服务器适合中小企业或个人开发者搭建企业官网、博客论坛、微信小程序或开发测试环境&#xff0c;云服务器CV…...

服务器or虚拟机安装SSH和虚拟机or服务器设置远程服务权限

第一步 服务器/虚拟机安装SSH工具,这是外部SSH终端连接服务器/虚拟机的第一步! sudo apt update && sudo apt upgrade#更新apt sudo apt install openssh-server#安装SSH工具 service ssh status#查看SSh运行状态 sudo systemctl enable --now ssh#运行SSH工具第二步…...

Sentinel入门

文章目录 初始Sentinel雪崩问题服务保护技术对比认识Sentinel微服务整合Sentinel 限流规则快速入门流控模式关联模式链路模式 流控效果warm up排队等待 热点参数限流全局参数限流热点参数限流 隔离和降级FeignClient整合Sentinel线程隔离熔断降级慢调用异常比例、异常数 授权规…...

Mac解压缩软件BetterZip免费版注册码下载

软件介绍 BetterZip免费版是一款适用于Mac系统的解压缩软件&#xff0c;软件具备了专业、实用、简单等特点&#xff0c;它可以让用户更快捷的向压缩文件中添加和删除文件&#xff0c;同时兼容性也十分优秀&#xff0c;支持ZIP &#xff0c; SIT &#xff0c; TAR、BZIP2 &…...

在win10里顺利安装了apache2.4.41和php7.4.29以及mysql8.0.33

一、安装apache和php 最近在学习网站搭建。其中有一项内容是在windows操作系统里搭建apachephp环境。几天前根据一本书的上的说明尝试了一下&#xff0c;在win10操作系统里安装这两个软件&#xff1a;apache2.4.41和php7.4.29&#xff0c;安装以后apche能正常启动&#xff0c;…...

云服务仿真:完全模拟 AWS 服务的本地体验 | 开源日报 No.45

localstack/localstack Stars: 48.7k License: NOASSERTION LocalStack 是一个云服务仿真器&#xff0c;可以在您的笔记本电脑或 CI 环境中以单个容器运行。它提供了一个易于使用的测试/模拟框架&#xff0c;用于开发云应用程序。主要功能包括&#xff1a; 在本地机器上完全…...

css实现不规则图片文字环绕效果

依旧,先上效果图,可以看见,文字环绕这个椭圆形的图片, 依旧是遵循开源精神,代码就直接放下面了 (点个赞或者给个评论啥的吧,我就发现我的文章全是光看不点赞,不评论的的) <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&quo…...

Day-05 CentOS7.5 安装 Docker

参考 &#xff1a; Install Docker Engine on CentOS | Docker DocsLearn how to install Docker Engine on CentOS. These instructions cover the different installation methods, how to uninstall, and next steps.https://docs.docker.com/engine/install/centos/ Doc…...

激光雷达:自动驾驶的眼睛

激光雷达&#xff1a;自动驾驶的眼睛 文章目录 引言激光雷达的原理自动驾驶中的应用激光雷达的优势激光雷达的挑战结论结论 2023星火培训【专项营】Apollo开发者社区布道师倾力打造&#xff0c;包含PnC、新感知等的全新专项课程上线了。理论与实践相结合&#xff0c;全新的PnC培…...

Scratch3.0下载

通俗易懂&#xff0c;直接上链接 链接&#xff1a;https://pan.baidu.com/s/1n-QFEQWT8im8BHQu1wIjtg?pwd1016 提取码&#xff1a;1016...

多功能频率计周期/脉宽/占空比/频率测量verilog,视频/代码

名称&#xff1a;多功能频率计周期、脉宽、占空比、频率测量verilog 软件&#xff1a;Quartus 语言&#xff1a;Verilog 代码功能&#xff1a; 多功能频率计&#xff0c;可测量信号的周期、脉冲宽度、占空比、频率&#xff0c;语言为verilog&#xff0c;quartus软件设计仿真…...

wordpress 主题重置/千锋教育地址

下面的代码是涉及图像的非常简单的测试.每当我向System.in发送“ a”时,它应该重新绘制图像,而当我发送“ q”时,它应该退出程序.问题在于只有出口有效&#xff1a;永远不会调用paint()方法,我也不为什么.我检查了对“ super.paint()”的调用,尝试用paintCompoenent(Graphics g…...

什么网站可以做高数/五年级下册数学优化设计答案

基于注解方式的Bean管理 AOP 写法一:匿名内部类 写法二: AOP操作&#xff08;AspectJ注解&#xff09; AOP操作&#xff08;AspectJ配置文件&#xff09; JdbcTemplate(概念和准备&#xff09;...

电商网站建设公司哪家好/友链价格

前言 随着k8s 作为容器编排解决方案变得越来越流行&#xff0c;有些人开始拿 Docker 和 k8s进行对比&#xff0c;不禁问道&#xff1a;Docker 不香吗&#xff1f; k8s 是kubernets的缩写&#xff0c;’8‘代表中间的八个字符。 其实 Docker 和 k8s 并非直接的竞争对手&#xff…...

网站建设需要审批吗/网站开发技术

本文以实际的光波为基础讲述了布拉格光纤光栅的基本原理&#xff0c;能够帮助大家理解光纤光栅应力传感器、光纤光栅应变传感器和光纤光栅温度传感器的内在机理。本文为了解北京大成永盛科技有限公司所生产的北诺毛细系列无缝钢管光纤光栅传感器的前置科普性文章。在上一篇《北…...

画册设计1p一般多少钱/网站seo优化

数位DP 什么是数位DP 数位DP是DP的一种&#xff0c;顾名思义&#xff0c;按每一个数位来进行DP。 什么时候使用 题目的要求与一个数字相关&#xff0c;并且它能通过每一个数位来进行转移。 例题&#xff1a;求所有nnn位数中能被mmm整除的数的个数。 怎么使用 一般的DP是多…...

移动应用开发大专出来做什么/seo优化方案策划书

试题编号&#xff1a; 201703-1试题名称&#xff1a; 分蛋糕时间限制&#xff1a; 1.0s内存限制&#xff1a; 256.0MB问题描述&#xff1a;问题描述小明今天生日&#xff0c;他有n块蛋糕要分给朋友们吃&#xff0c;这n块蛋糕(编号为1到n)的重量分别为a1, a2, …, a…...