关于 Nginx 的哪些事

关于 Nginx 的哪些事

  • 1、Nginx 主要功能
  • 2、Nginx 的常用命令
    • 2.1、启动Nginx
    • 2.2、停止 Nginx
    • 2.3、重新加载Nginx 配置
    • 2.4、检查Nginx配置文件
    • 2.5、指定配置文件
    • 2.6、检查Nginx版本
    • 2.7、显示Nginx帮助信息
  • 3、Nginx 配置文件 nginx.conf
    • 3.1、Nginx 配置文件(nginx.conf)组成部分
    • 3.2、Nginx 配置文件(nginx.conf)示例
  • 4、反向代理
    • 4.1、简单示例
    • 4.2、location 语法
      • 4.2.1、精准匹配(=)
      • 4.2.2、普通匹配(^~)
      • 4.2.3、正则匹配(~)
      • 4.2.4、默认根路径匹配(/)
      • 4.2.5、nginx内部跳转(@)
      • 4.2.6、location URI结尾带不带 /
  • 5、负载均衡
    • 5.1、简单示例
    • 5.2、常用负载均衡策略
      • 5.2.1、轮询
      • 5.2.2、权重轮询
      • 5.2.3、IP哈希
      • 5.2.4、最少连接
  • 6、动静分离
  • 7、Nginx 限流
    • 7.1、基于IP限流
    • 7.2、基于URL限流

1、Nginx 主要功能

 

Nginx主要功能:

  • 正向代理:需要在客户端配置代理服务器,进行指定网站访问。

  • 反向代理:反向代理是Nginx的常见功能之一。当客户端向服务器发送请求时,首先经过Nginx服务器,然后Nginx将请求转发给内部的Web服务器。这种代理方式使得外部网络无法直接访问内部的Web服务器,提高了安全性。

  • 负载均衡:它将网络流量分担到多个网络节点上,并行处理请求,从而提高网络系统的处理能力,减少前端用户等待响应的时间。

  • 动静分离:将动态网页和静态页面分开处理。通过动静分离,Nginx可以充分利用其高并发、高性能的特点,同时减轻后端服务器的负载,提高网站的访问速度和可维护性。

 

2、Nginx 的常用命令

 

2.1、启动Nginx

 

# 首先进入 Nginx 目录 (一般在该目录,具体根据实际安装情况而定)
cd /usr/local/nginx
# 启动 Nginx
./sbin/nginx# 或者直接执行
/usr/local/nginx/sbin/nginx

 

2.2、停止 Nginx

 

# 首先进入 Nginx 目录  (一般在该目录,具体根据实际安装情况而定)
cd /usr/local/nginx
# 停止 Nginx
./sbin/nginx -s stop
# 或者在 Nginx 目录执行
./sbin/nginx -s quit# 或者直接执行
/usr/local/nginx/sbin/nginx -s stop
# 或
/usr/local/nginx/sbin/nginx -s quit

 

2.3、重新加载Nginx 配置

 

# 首先进入 Nginx 目录  (一般在该目录,具体根据实际安装情况而定)
cd /usr/local/nginx
# 重新加载Nginx 配置
./sbin/nginx -s reload

 

2.4、检查Nginx配置文件

 

# 首先进入 Nginx 目录  (一般在该目录,具体根据实际安装情况而定)
cd /usr/local/nginx
# 检查Nginx配置文件是否正确
./sbin/nginx -t

 

2.5、指定配置文件

 

# 首先进入 Nginx 目录  (一般在该目录,具体根据实际安装情况而定)
cd /usr/local/nginx
# 指定配置文件:在命令行中添加 -c 参数。例如:
./sbin/nginx -c /usr/local/nginx/conf/nginx.conf

 

2.6、检查Nginx版本

 

# 首先进入 Nginx 目录  (一般在该目录,具体根据实际安装情况而定)
cd /usr/local/nginx
# 检查Nginx版本
./sbin/nginx -V
# 或者在Nginx目录中执行
./sbin/nginx -v

 

2.7、显示Nginx帮助信息

 

# 首先进入 Nginx 目录  (一般在该目录,具体根据实际安装情况而定)
cd /usr/local/nginx
# 显示Nginx帮助信息
./sbin/nginx -h

 

3、Nginx 配置文件 nginx.conf

 

       Nginx 配置文件路径,一般在 /etc/nginx/nginx.conf/usr/local/nginx/conf/nginx.conf

 

3.1、Nginx 配置文件(nginx.conf)组成部分

 

  • ① 全局块:从配置文件开始到events块之间的内容,主要设置一些影响nginx服务器整体运行的配置命令,如worker_processes、worker_processes值等。

  • ② events块:主要配置Nginx服务器与用户的网络连接,包括是否开启对多work process下的网络连接进行序列化,是否允许同时接收多个网络连接等。

  • ③ http块:这是Nginx服务器配置中最频繁的部分,包括http全局块、server块等。http全局块配置指令包括文件引入、MIME-TYPE定义、日志定义、连接超时时间、单链接请求数上限等。

此外,Nginx还支持对stream和server块的配置,stream块用于配置HTTP和SMTP代理服务器的代理设置,server块用于配置虚拟主机的设置。

 

3.2、Nginx 配置文件(nginx.conf)示例

 

# 指定Nginx服务器的用户
user  nginx;  
# 指定Nginx服务器的工作进程数。
worker_processes  1;  
# 指定错误日志存放路径  
error_log  /var/log/nginx/error.log;  
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;# 指定Nginx进程的存放路径。
pid        /var/run/nginx.pid;  events {  # 指定每个worker process的最大连接数worker_connections  1024;  # 指定Nginx服务器的工作进程数。# worker_processes 20;# 指定是否允许一个worker process同时接收多个网络连接。multi_accept on;  
}  http {  include       /etc/nginx/mime.types;  default_type  application/octet-stream;  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 2048;  # gzip:开启gzip压缩,减少传输数据量。# gzip  on;# 该 server 配置了Nginx作为反向代理服务器,# 将所有以example.com为域名的HTTP请求转发到192.168.1.100:8080的目标服务器。server {  # listen:指定Nginx监听的端口号。例如,listen 80,表示Nginx将监听80端口。listen 80;  # server_name:指定服务器名称,可以是一个域名或多个域名。# 指定Nginx要代理的域名,表示Nginx将代理example.com域名的请求。server_name example.com;  # charset:设置字符集。# charset koi8-r;# access_log  logs/host.access.log  main;# 指定要代理的请求路径。例,location / { ... }表示Nginx将对所有请求进行代理# location /:匹配所有以该主机名开头的URL路径。location / {  # 指定代理的目标服务器。# 这里指Nginx将所有请求代理到192.168.1.100:8080的目标服务器。proxy_pass http://192.168.1.100:8080;  # index:指定默认页面,可以是index.html、index.htm或index.nginx-debian.html。# index  index.html index.htm;# try_files:用于尝试访问本地文件或定义的其他动作,如重定向、返回特定状态码等。# try_files $uri $uri/ /index.html;}  # error_page:指定错误页面,用于处理特定错误码的页面。#error_page  404              /404.html;# redirect server error pages to the static page /50x.html# error_page:指定错误页面,用于处理特定错误码的页面。error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}  # 该server段落,配置了Nginx作为反向代理和HTTPS代理服务器。# 这里将所有以example.com为域名的HTTPS请求,转发到192.168.1.100:8080的目标服务器,     # 并使用SSL证书进行加密传输。server {  # listen:指定Nginx监听的端口号。listen 443 ssl;  # server_name:指定服务器名称,可以是一个域名或多个域名。# 指定Nginx要代理的域名,表示Nginx将代理example.com域名的请求。server_name example.com;  # ssl_certificate:指定SSL证书的路径。# 这里表示Nginx将使用位于/etc/nginx/ssl/nginx.crt的SSL证书。ssl_certificate /etc/nginx/ssl/nginx.crt;  ssl_certificate_key /etc/nginx/ssl/nginx.key;  # ssl_session_cache    shared:SSL:1m;# ssl_session_timeout  5m;# ssl_ciphers  HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers  on;# location 用于匹配特定URL,并定义相应的代理规则或静态文件路径。location / {  # proxy_pass:定义反向代理规则。proxy_pass http://192.168.1.100:8080;  }  }  # #server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;# index:指定默认页面,可以是index.html、index.htm或index.nginx-debian.html。#        index  index.html index.htm;#    }#}}

 

4、反向代理

 

4.1、简单示例

 

       在下面示例中,Nginx作为反向代理服务器,将所有以example.com为域名的HTTP请求转发到192.168.1.100:8080的目标服务器。同时,通过proxy_set_header指令设置了一些必要的请求头信息,以便目标服务器正确地处理请求。该示例仅适用于HTTP协议的代理配置。

 

server {  listen 80;  server_name example.com;  # location /:匹配所有以该主机名开头的URL路径。location / {  proxy_pass http://192.168.1.100:8080;  proxy_set_header Host $host;  proxy_set_header X-Real-IP $remote_addr;  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  }  
}

 

注意:目标服务器,需要对外开放访问的端口

# 以下是基于 CentOS7 版本的防火墙相关命令。# 查看防火墙状态
firewall-cmd --state# 如果防火墙处于关闭状态,先启动它
systemctl start firewalld.service# 防火墙开放8080 端口号
firewall-cmd --add-port=8080/tcp --permanent# 重启防火墙以使更改生效
systemctl restart firewalld.service# 重新加载防火墙配置
firewall-cmd –reload# 查看已经开放的端口号
firewall-cmd --list-all

 

4.2、location 语法

 
        在NGINX中,location指令用于定义请求匹配的URL路径和相应的配置。它是在NGINX配置文件中的server块内使用的。下面是location指令的基本语法:
 

location [=|~|~*|^~] /path {  # 配置指令  
}# 说明:
=   :表示完全匹配指定的路径。
~   :表示使用正则表达式匹配路径。
~*  :表示不区分大小写的正则表达式匹配路径。
^~  :表示前缀匹配路径,但不使用正则表达式。

 
location 匹配优先级:
= 大于 ^~ 大于 ~ | ~* 大于 最长前缀匹配 大于 /

 

4.2.1、精准匹配(=)

 

精准匹配的符号标记为“=”,示例:

# 如果请求URI和精准匹配的模式字符串/api完全相同,那么精准匹配通过.
# 在所有的匹配类型中,精准匹配的优先级最高.
location = /api {proxy_pass http://192.168.1.100:8080;  
}# 假设 server_name example.com;  
# 只匹配http://example.com/abc
# http://example.com/api [匹配成功]
# http://example.com/api/index [匹配失败]

 

4.2.2、普通匹配(^~)

 
普通匹配的符号标记为“~”,普通匹配是前缀匹配,也是Nginx默认的匹配类型。类型符号“~”可以省略,如果location没有任何匹配类型,就为普通的前缀匹配。示例:

# 普通匹配:如果请求路径URI头部,匹配到location的模式字符串,那么匹配成功。
# 如果匹配到多个前缀,那么最长模式匹配优先
# 匹配以"/api/"开头的所有请求
location ^~ /api/ {proxy_pass http://192.168.1.100:8080;  
}location ^~ /api/demo {proxy_pass http://192.168.1.101:8081;  
}# 假设 server_name example.com;  
#以 /api/ 开头的请求,都会匹配上
#http://example.com/api/index.page  [匹配成功]
#http://example.com/error/error.page [匹配失败]# 以上 http://example.com/api/demo/index.page 请求  [匹配成功] 
# 且 http://example.com/api/demo/index.page 请求,优先匹配目标:http://192.168.1.101:8081location ^~ /api/ {proxy_pass http://192.168.1.100:8080;  
}
# 等同于
location /api/ {proxy_pass http://192.168.1.100:8080;  
}

 

4.2.3、正则匹配(~)

 

正则匹配的类型,根据类型符号的不同,可以细分为以下4种 :

  • ~:标准正则匹配,区分字母大小写,进行正则表达式测试,若测试成功,则匹配成功。

  • ~*:标准正则匹配,不区分字母大小写,进行正则表达式测试,若测试成功,则匹配成功。

  • !~:反向正则匹配,区分字母大小写,进行正则表达式测试,若测试不成功,则匹配成功。

  • !~*:反向正则匹配,不区分字母大小写,进行正则表达式测试,若测试不成功,则匹配成功。

 

# ~ :区分字母大小写
location ~ /Api/ {proxy_pass http://192.168.1.100:8080;  
}
# 假设 server_name example.com; 
#http://example.com/Api/ [匹配成功]
#http://example.com/api/ [匹配失败]# ~* :不区分字母大小写
location ~* /Api/ {proxy_pass http://192.168.1.100:8080;  
}
# 假设 server_name example.com; 
# 则会忽略 uri 部分的大小写
#http://example.com/Api/ [匹配成功]
#http://example.com/api/ [匹配成功]

4.2.4、默认根路径匹配(/)

 
根路径的路径规则就是使用单个“/”符号,示例:
 

# 匹配所有以该主机名开头的URL路径。
location  /  {proxy_pass http://192.168.1.100:8080; 
}

4.2.5、nginx内部跳转(@)

 

location /index/ {error_page 404 @index_error;
}
location @index_error {.....
}
#以 /index/ 开头的请求,如果链接的状态为 404。则会匹配到 @index_error 这条规则上。

 

4.2.6、location URI结尾带不带 /

 

        在 Nginx 中,location指令用于匹配请求的 URL,并根据匹配的结果来配置相应的代理、重定向、静态文件服务等操作。在 location指令中,URL最后是否带有斜杠(/)会对匹配的结果产生一些区别。浏览器在发起请求的时候,默认加上了 / 。虽然很多浏览器在地址栏里也不会显示 /

  1. URL最后带有斜杠(/):
    • 当 URL 以斜杠结尾时,location指令会精确匹配该 URL。例如,如果配置了location /foo/,则只有请求的 URL 为 /foo/ 时才会匹配,但不匹配 /foo/foo123 等。
    • 如果请求的 URL 是 /foo/bar,则不会匹配 location /foo/,因为最后有一个额外的路径片段(bar)。
    • 如果需要匹配以foo结尾的所有 URL,包括/foo//foo/bar等,可以使用正则表达式,例如location ~ ^/foo/$
  2. URL最后没有斜杠(/):
    • 当 URL 不以斜杠结尾时,location指令会匹配以该 URL 为前缀的所有 URL。例如,如果配置了location /foo,则请求的 URL 为/foo/foobar/foo/bar等以/foo为前缀的 URL 都会匹配。
    • 如果请求的 URL 是/foo/bar,则会匹配location /foo,因为/foo是该 URL 的前缀。

 
        总结起来,是否在 location指令的 URL 最后加上斜杠,决定了是精确匹配还是前缀匹配。具体使用哪种方式取决于你的需求,如果需要精确匹配某个 URL,可以使用斜杠结尾;如果需要匹配某个前缀的所有 URL,则可以去掉斜杠。

 

5、负载均衡

 

5.1、简单示例

 

# 使用 upstream 块定义了一个名为 backend 的后端服务器组。
# 在该后端服务器组中,列出了三个后端服务器 
# 192.168.1.100:8080、192.168.1.101:8081 和 192.168.1.102:8082
upstream backend {  server 192.168.1.100:8080;  server 192.168.1.101:8081;  server 192.168.1.102:8082;  
}  server {  listen 80;  server_name example.com;  location / {  proxy_pass http://backend;  # 在这里配置其他相关的反向代理设置  }  
}

 

5.2、常用负载均衡策略

 
以下是几种常见的策略:轮询、权重、IP哈希、最少连接。

 

5.2.1、轮询

 
        轮询(Round Robin):每个请求按时间顺序逐一分配到不同的后端服务器。如果后端服务器down掉,Nginx会自动剔除该服务器。
 

# 默认采用轮询策略,示例:
upstream backserver {  server 192.168.0.14;  server 192.168.0.15;  
}

 

5.2.2、权重轮询

 
        权重轮询(Weighted Round Robin):在轮询策略的基础上,指定每个后端服务器的轮询几率,权重值越高的服务器被选择的可能性就越大。
 

# 使用示例:
upstream backserver {  server 192.168.0.14 weight=2;  server 192.168.0.15 weight=1;  
}

 

5.2.3、IP哈希

 
        IP哈希(IP Hash):指定负载均衡器按照基于客户端IP的分配方式。这个方法确保了相同的客户端的请求一直发送到相同的后端服务器,以保持会话一致性。
 

# 使用示例:
upstream backserver {  ip_hash;  server 192.168.0.14;  server 192.168.0.15;  
}

 

5.2.4、最少连接

 
        最少连接(Least Connections):把请求转发给连接数最少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。使用最少连接策略可以更好地平衡负载。
 

# 使用示例:
upstream backserver {  least_conn;  server 192.168.0.14;  server 192.168.0.15;  
}

 

6、动静分离

 

Nginx 的动静分离,是指将动态请求和静态请求,分发到不同的后端处理。

动态请求通常需要与数据库等进行交互,处理逻辑较为复杂。而静态请求,则是指只需要直接返回静态文件或资源的请求,处理速度较快。

通过动静分离,可以将动态请求交给专门的动态服务器处理,而静态请求则可以由更高效的静态服务器处理,从而提高整体的处理性能和响应速度。

 

server {  listen 80;  server_name example.com;  # 动态请求location /dynamic {  proxy_pass http://dynamic_server;}location /css {  # root指令用于指定静态文件的根目录root /path/to/css;  }  location /js {  # root指令用于指定静态文件的根目录root /path/to/js;  }  # 页面访问方式一:location /front {root /data;index index.html;}# 页面访问方式二:location /web {alias /data/front;index index.html;}# 图片访问方式一:location /static {root /data/front; }# 图片访问方式二:location /photo {alias /data/front/static;}
}

 

注意:aliasroot指令都是用于指定文件路径的,但它们的使用方式和效果有所不同。

alias指令用于指定匹配的URL段对应的文件或目录的路径。当请求的URL匹配location块中配置的URL段时,NGINX会将其重定向到alias指令指定的路径下对应的文件或目录。这意味着请求的URL将会发生变化,从原来的URL变为新的URL。

例如,下面的配置将请求的URL为/images/example.jpg重定向到/var/www/html/images/example.jpg

location /images {  alias /var/www/html/images;  
}

 

root指令则是指定最上层目录的定义,它不会改变请求的URL。当请求的URL匹配location块中配置的URL段时,NGINX会在指定的目录下查找对应的文件。

例如,下面的配置将请求的URL为/images/example.jpg映射到/var/www/html/images/example.jpg

location /images {  root /var/www/html;  
}

 

7、Nginx 限流

 

nginx可以通过以下方式实现限流:基于IP限流、基于URL限流、基于时间限流。
 

7.1、基于IP限流

 
        基于IP的限流,可以有效地控制每个IP地址的请求频率和请求数,有助于防止恶意攻击和保护服务器的性能。

        需要注意的是,限流区域的配置和限流指令的应用,需要根据实际需求进行调整和优化。
 
示例配置:

# 创建限流区域one,限制每个IP的请求频率为1次/秒
# $binary_remote_addr 是用于存储限流信息的共享内存名称,使用了10MB的共享内存
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;  
# 创建限流区域two,限制每个IP的请求频率为2次/秒
limit_req_zone $binary_remote_addr zone=two:10m rate=2r/s;  server {  location / {  # 使用limit_req指令,指定使用one限流区域# 设置burst参数为1,表示允许每个IP在突发情况下最多多发送一个请求。limit_req zone=one burst=1;  ...  }  
}

 

  • 限流算法:

    • nginx的限流算法使用了漏桶算法。

    • 当请求到达时,会先检查对应的限流桶中的请求数量是否已经达到限制速率。

    • 如果未达到限制速率,则允许请求通过,并在限流桶中增加一个请求。

    • 如果达到限制速率,则需要检查是否允许突发请求。

      • 如果允许突发请求,则允许请求通过,并在限流桶中增加一个请求,同时记录突发请求数;

      • 如果不允许突发请求,则直接拒绝请求。

 

7.2、基于URL限流

 
        基于URL的限流,可以有效地控制每个URL的请求频率和请求数,有助于保护服务器的性能和防止滥用。

        基于URL的限流方式,适用于限制某些频繁访问的URL,或者限制对某些重要接口的请求频率,以保护服务器资源或者控制某些URL的使用。

        需要注意的是,限流区域的配置和限流指令的应用,需要根据实际需求进行调整和优化。

示例配置:

# 实现基于URL的限流,要先配置限流区域 limit_req_zone,限流区域是一个存储URL和相关统计信息的缓存区。
# $uri 用于存储限流信息的共享内存名称,这里创建了一个名为one的限流区域,使用了10MB的共享内存。
# rate 是每个URL的请求限制速率,这里限制了每个URL的请求频率为1次/秒。
limit_req_zone $uri zone=one:10m rate=1r/s;location /api/ {  # 针对/api/路径进行限流,limit_req指令来指定使用限流区域为one# burst参数为10,表示允许每个URL在突发情况下最多多发送10个请求。limit_req zone=one burst=10;  ...  
}

 

  • 限流算法:
    • nginx的限流算法使用了漏桶算法。
    • 当请求到达时,会先检查对应的限流桶中的请求数量,是否已经达到限制速率。
    • 如果未达到限制速率,则允许请求通过,并在限流桶中增加一个请求。
    • 如果达到限制速率,则需要检查是否允许突发请求。
      • 如果允许突发请求,则允许请求通过,并在限流桶中增加一个请求,同时记录突发请求数;
      • 如果不允许突发请求,则直接拒绝请求。

 
 
 
 
 
 
 
 
.

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

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

相关文章

NLP:生成熟悉NLP开源工具,如NLTK、 HanLP等,并搜寻、下载和熟悉PKU、 CoreNLP, LTP MSR, AS CITYI 等语料库。

目录 一、NLTK 二、HanLP 三、PKU 四、CoreNLP 五、LTP 六、MSR 一、NLTK NLTK(Natural Language Toolkit)是Python的一个开源自然语言处理库。它提供了大量已经预处理好的文本数据和语料库,以及一些常用的文本处理算法和NLP工具。例如&…

插入排序——希尔排序

1、简述: 希尔排序(Shells Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。 希尔排…

[杂谈]-快速了解直接内存访问 (DMA)

快速了解直接内存访问 (DMA) 文章目录 快速了解直接内存访问 (DMA)1、使用 DMA 需要什么?2、DMA介绍3、DMA 中的数据传输如何进行?4、DMA接口5、DMAC 控制器寄存器6、DMA 控制器编程模式6.1 突发模式(Burst Mode)6.2 循环窃取模式…

无人机集群路径规划MATLAB:孔雀优化算法POA求解无人机集群三维路径规划

一、无人机模型简介 单个无人机三维路径规划问题及其建模_IT猿手的博客-CSDN博客 二、孔雀优化算法POA介绍 孔雀优化算法( Peafowl Optimization Algorithm, POA), 是由 Jingbo Wang 等于2022 年提出的一种群体智能优化算法。其灵感来源于孔雀的群体行为。 智能优化算法&am…

2023年度AWS SAP直冲云霄训练营学习分享

AWS在公有云市场一直处于行业领先地位,其培训认证体系也是非常的完善的。而且经常在国内组织一些技术论坛,技术分享,公开课,训练营等技术活动。 AWS训练营适合希望学习和考取AWS助理级架构师/专家级架构师(AWS SAA/AW…

Nebula数据库安装

1、什么是nebula NebulaGraph是一款开源的、分布式的、易扩展的原生图数据库,能够承载包含数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。 2、利用docker-compose安装Nebula数据库 1、前提条件 主机中安装了docker主机中安装了Docke…

基于改进莱维飞行和混沌映射的粒子群优化BP神经网络分类研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【git】【IDEA】在idea中使用git

目录 一、 在IDEA中配置git 二、 获取git仓库 2.1 本次初始化仓库 2.2 从远程仓库克隆 三、 本地仓库操作 3.1 将文件加入暂存区 3.2 将暂存区的文件提交到版本库 3.3 快捷键 使用快捷键 实现加入到暂存区与提交到版本库 3.4 查看日志 Show History 四、 远程仓库操…

springboot初试elasticsearch

引入依赖 elasticsearch的依赖版本与你elasticsearch要一致 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency> 索引库的操作 创建索引库 impo…

Scikit-learn:全面概述

引言&#xff1a; 在机器学习领域&#xff0c;Python已经成为一种重要的编程语言&#xff0c;这得益于其简洁、多功能和丰富的库。在这些库中&#xff0c;Scikit-learn作为其中最受欢迎和强大的之一&#xff0c;脱颖而出。它提供了各种工具、算法和功能&#xff0c;使用户能够…

MySQL性能分析工具的使用

1. 数据库服务器的优化步骤 当我们遇到数据库调优问题的时候&#xff0c;该如何思考呢&#xff1f;这里把思考的流程整理成下面这张图。 整个流程划分成了 观察&#xff08; Show status &#xff09; 和 行动&#xff08; Action &#xff09; 两个部分。字母 S 的部分…

2023-python-import耗时是为什么?

场景 场景&#xff1a; 树莓派4B 离线安装【arch64架构】 了 torch,sklearn等机器学习库 运行程序文件时候&#xff0c; import的时间总共花了 10s&#xff0c;无法忍受。 查阅下网站&#xff1a; import官方说辞 看蒙了&#xff0c;太多了&#xff1b; 反正就看看大概&…

手写Spring:第9章-Aware感知容器对象

文章目录 一、目标&#xff1a;Aware感知容器对象二、设计&#xff1a;Aware感知容器对象三、实现&#xff1a;Aware感知容器对象3.1 工程结构3.2 Spring感知接口类图3.3 定义标记接口和容器感知类3.3.1 定义标记接口3.3.2 对象工厂感知接口3.3.3 类加载感知接口3.3.4 对象名称…

Java“牵手”唯品会商品详情数据,唯品会商品详情API接口,唯品会API接口申请指南

唯品会平台商品详情接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取唯品会商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片等详细信息 。 获取商品详情接口API是一种用于获取电商平台上商品详情数据的接口&#xff0c;…

前端element表格导出excel

一&#xff1a;安装依赖 npm install xlsx file-saver --save二&#xff1a;在组件中导入 import FileSaver from file-saver import XLSX from xlsx三&#xff1a;给对应表格添加id&#xff0c;绑定方法 <el-table idtableDom> <el-button click"exportExc…

大数据Flink(七十四):SQL的滑动窗口(HOP)

文章目录 SQL的滑动窗口(HOP) SQL的滑动窗口(HOP) 滑动窗口定义:滑动窗口也是将元素指定给固定长度的窗口。与滚动窗口功能一样,也有窗口大小的概念。不一样的地方在于,滑动窗口有另一个参数控制窗口计算的频率(滑动窗口滑动的步长)。因此,如果滑动的步长小于窗口大…

ASP.NET Core 8 的 Web App

Web App Web App 与 Web API 的不同之处在于包含 UI 部分&#xff0c;所谓的 UI 就是 HTML 页面。 Web App 支持几种渲染HTML 的方式&#xff1a; 服务端渲染客户端渲染混合渲染 服务端渲染 服务端渲染UI是在浏览器请求的时候&#xff0c;服务端生成 HTML&#xff0c;然后返…

JDBC学习汇总

概念 JDBC&#xff1a;JDBC是Java提供的一套用来操作数据库的接口 通过Java代码操作数据库 1.确定数据库是可以正常使用&#xff08;MySQL服务是否正常开启&#xff09; 2.确定MySQL的账号和密码是正确的 3.确定MySQL版本和MySQL驱动版本匹配 4.在工程&#xff08;module&#…

UNext:基于 MLP 的快速医学图像分割网络

UNext 会议分析摘要贡献方法整体框架1.Shifted MLP2.Tokenized MLP Stage 实验1.对比实验2.消融实验2.1 模块的消融实验2.2 通道数的探索 可借鉴参考 会议分析 期刊&#xff08;会议&#xff09;名&#xff1a; MICCAI 2022 会议信息&#xff1a; 属于顶会了 有代码&#xff1…

【经验分享】如何使用VSCode对比两个文件

问题&#xff1a; 当有两个不同版本的文件&#xff0c;如何使用VSCode对比两个文件 解决办法 长按ctrl选择想要对比的两个文件-----右键选择将已选项进行比较----大功告成 大功告成