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

分布式 - 服务器Nginx:常见问题总结(二)

文章目录

      • 01. Nginx 虚拟主机怎么配置?
      • 02. Nginx location 指令的作用?
      • 03. Nginx location 指令如何与其他指令一起使用?
      • 04. Nginx root 命令的作用?
      • 05. Nginx if 模块的作用?
      • 06. Nginx include 指令的作用?
      • 07. Nginx location 指令的语法?
      • 08. Nginx 如何禁止访问某个目录?
      • 09. Nginx 如何定义错误页面?
      • 10. Nginx error_page 指令的作用?
      • 11. Nginx 中500、502、503、504 有什么区别?
      • 12. Nginx 如何精准匹配路径?
      • 13. Nginx 路径匹配优先级?
      • 14. Nginx rewrite 常用的全局变量?

01. Nginx 虚拟主机怎么配置?

① 在Nginx的配置文件中添加一个server块,用于定义虚拟主机的配置信息。例如:

server {listen 80;server_name example.com;root /var/www/example.com;index index.html;
}

其中,listen指定监听的端口号,server_name指定虚拟主机的域名,root指定虚拟主机的根目录,index指定默认的首页文件。

② 如果需要支持多个虚拟主机,则需要在Nginx的配置文件中添加多个server块,每个server块对应一个虚拟主机的配置信息。

③ 配置完成后,需要重新加载Nginx的配置文件,使其生效。可以使用以下命令:

sudo nginx -t # 检查配置文件是否正确
sudo systemctl reload nginx # 重新加载配置文件

02. Nginx location 指令的作用?

在 Nginx 中,location 指令用于匹配请求的 URL 路径,并指定相应的配置指令。它可以用来控制 Nginx 如何处理不同的请求 URL。

具体来说,location 指令可以用来:

① 指定不同的反向代理服务器或 FastCGI 服务器,以便处理不同的请求 URL。
② 指定不同的文件系统路径,以便 Nginx 可以提供静态文件服务。
③ 指定不同的缓存策略,以便 Nginx 可以缓存不同的请求 URL。
④ 指定不同的安全策略,以便 Nginx 可以对不同的请求 URL 进行访问控制。

在 Nginx 配置文件中,location 指令通常与其他指令一起使用,例如 proxy_pass、root、try_files、expires 等。通过合理使用 location 指令,可以使 Nginx 更加灵活和高效地处理不同的请求 URL。

03. Nginx location 指令如何与其他指令一起使用?

在 Nginx 中,location 指令用于匹配请求的 URI,并定义如何处理这些请求。location 指令可以与多个其他指令一起使用,包括 proxy_pass、root、try_files 和 expires 指令。

① 使用 proxy_pass 指令将请求代理到另一个服务器:

location /api {proxy_pass http://backend_server;
}

② 使用 root 指令指定文件根目录,并使用 try_files 指令查找文件:

location /static/ {root /var/www;try_files $uri $uri/ =404;
}

③ 使用 expires 指令设置缓存过期时间:

location /static/ {expires 1d;
}

需要注意的是,location 指令的匹配顺序是按照配置文件中出现的顺序进行的。因此,如果有多个 location 指令匹配同一个 URI,将使用第一个匹配的指令。如果没有匹配的指令,则使用默认的 location 指令。

04. Nginx root 命令的作用?

在 Nginx 中,root 指令用于指定服务器的根目录。具体来说,它指定了 Nginx 服务器在处理客户端请求时查找文件的根目录。当客户端请求的 URL 中包含文件路径时,Nginx 会在 root 指定的目录下查找该文件。

例如,如果 root /var/www/html,而客户端请求的 URL 是 http://example.com/index.html,那么 Nginx 会在 /var/www/html/index.html 中查找该文件。如果在 Nginx 的配置文件中没有指定 root 指令,或者指定的目录不存在或不可读,Nginx 将无法找到请求的文件,从而返回 404 错误。

需要注意的是,root 指令只能在 http、server 或 location 块中使用。在 http 块中使用 root 指令会影响所有的 server 块,而在 server 或 location 块中使用 root 指令则只会影响该块中的请求。

例如,公司的 nginx-conf 文件中配置的 root 指令,

server {listen       80 default_server;listen       [::]:80 default_server;server_name  _;root         /usr/share/nginx/html;//...
}

① listen 指令用于指定服务器监听的端口号和协议,这里监听的是 80 端口,同时支持 IPv4 和 IPv6。
② server_name 指令用于指定服务器的域名,这里使用了通配符 _,表示匹配所有域名。
③ root 指令用于指定服务器的根目录,这里设置为 /usr/share/nginx/html,表示访问服务器时默认会访问该目录下的文件。如果您的nginx服务器接收到一个请求 http://example.com/index.html,nginx将在 /usr/share/nginx/html/index.html 路径下查找该文件。

[root@master01 ~]# cd /usr/share/nginx/html
[root@master01 html]# ll
total 20
-rw-r--r--. 1 root root 3332 Jun 10  2021 404.html
-rw-r--r--. 1 root root 3404 Jun 10  2021 50x.html
-rw-r--r--. 1 root root 3429 Jun 10  2021 index.html
-rw-r--r--. 1 root root  368 Jun 10  2021 nginx-logo.png
-rw-r--r--. 1 root root 1800 Jun 10  2021 poweredby.png

05. Nginx if 模块的作用?

nginx的 if 模块是一个用于根据条件判断是否执行某些操作的模块。if模块可以根据请求的URI、请求方法、请求头、请求参数等条件进行判断,并根据判断结果执行相应的操作,如重定向、返回特定的HTTP状态码、设置响应头等。

if 模块的语法如下:

if (condition) {// do something
}

其中,condition是一个表达式,可以是任何能够返回布尔值的表达式,如比较运算符、逻辑运算符等。如果condition的值为true,则执行if块中的代码;否则跳过if块,继续执行后面的代码。

需要注意的是,if模块的使用应该尽量避免,因为它会影响nginx的性能。在nginx中,if模块的执行是在请求处理阶段进行的,而请求处理阶段是在nginx的事件模型中的一个阶段,它会阻塞其他请求的处理。因此,如果if模块的使用不当,会导致nginx的性能下降。建议使用其他模块,如rewrite模块、map模块等来替代if模块。

nginx的 if 模块可以根据请求的URI、请求方法、请求头、请求参数等条件进行判断。具体的判断条件可以使用nginx提供的变量来实现 :

  • $uri:请求的URI
  • $request_method:请求的方法
  • $http_user_agent:请求头中的User-Agent字段
  • $arg_xxx:请求参数中的xxx字段

① 例如,限制 HTTP 请求方法只能是 GET、POST、PUT、DELETE 或 PATCH,如果请求方法不在这些范围内,就返回 403 状态码,表示禁止访问。

if ($request_method !~ ^(GET|POST|PUT|DELETE|PATCH)$ ) {return 403;
}

② 例如,判断请求的URI以/api/开头,并且请求方法为POST,如果满足条件,则执行if语句中的代码块:

if ($uri ~* ^/api/ && $request_method = POST) {# 处理/api/开头的POST请求
}

06. Nginx include 指令的作用?

Nginx的include指令用于在Nginx配置文件中包含其他文件的内容。这个指令可以让你将一个大的配置文件分成多个小的文件,使得配置文件更加易于维护和管理。

使用include指令,你可以将其他文件中的配置内容包含到主配置文件中,这些文件可以是任何文本文件,包括其他Nginx配置文件、shell脚本、环境变量等等。这个指令可以在任何Nginx配置块中使用,包括http、server和location等。

① 例如,你可以在Nginx的http块中使用include指令来包含其他文件中的配置内容:

http {include /etc/nginx/conf.d/*.conf;
}

这个例子中,Nginx会在/etc/nginx/conf.d/目录下查找所有以.conf结尾的文件,并将它们的内容包含到http块中。

② 例如,通过 include 指令引入了 /etc/nginx/default/view.conf 文件中的配置信息:

server {include /etc/nginx/default/view.conf;
}

07. Nginx location 指令的语法?

nginx中location指令用于匹配请求的URI,并指定相应的处理方式。其语法如下:

location [ = | ~ | ~* | ^~ ] uri {... 
}

其中,location为指令名称,uri为要匹配的URI。=、~、~*、^~为匹配符号,具体含义如下:

  • =:精确匹配,只有当请求的URI与指定的uri完全相同时才匹配成功。
  • ~:区分大小写的正则表达式匹配。
  • ~*:不区分大小写的正则表达式匹配。
  • ^~:普通字符匹配,如果请求的URI以指定的uri开头,则匹配成功。

在location块中,可以指定一系列指令来处理匹配成功的请求,例如 proxy_pass、root、alias等。如果有多个location块匹配成功,则会按照定义的顺序选择第一个匹配成功的location块进行处理。

① 示例:

location /AUTH/api/v2/login {deny all;
}

它的作用是禁止所有用户访问 /AUTH/api/v2/login 这个路径下的资源。具体来说,它使用了 deny all 指令,表示拒绝所有用户的访问请求。这个指令通常用于保护敏感的登录接口,确保只有授权的用户才能够访问。

② 示例:

location = /AUTH/api/v2/users/inner/exact {deny all;
}

用于限制访问 /AUTH/api/v2/users/inner/exact 这个 URL 路径的资源。具体来说,它使用了 deny 指令,表示拒绝所有访问该路径的请求。因此,任何尝试访问该路径的请求都将被拒绝,并返回一个 403 Forbidden 的 HTTP 响应。

③ 示例:

location = /BFF/api/v1/auth/login {proxy_pass http://bff.platform.svc.cluster.local:8082$request_uri;proxy_set_header Current-Project-Id fx-projec-62c5c5b97c631a7d274fb1;
}

用于将请求转发到名为"bff.platform.svc.cluster.local"的后端服务的特定路径"/BFF/api/v1/auth/login"。其中,$request_uri变量表示原始请求的URI,会被传递给后端服务。此外,还设置了一个名为"Current-Project-Id"的HTTP头,其值为"fx-projec-62c5c5b97c631a7d274fb1",用于向后端服务传递当前项目的ID。

④ 示例:

location ~ ^/BFF/api/v[0-9]+ {proxy_pass http://bff.platform.svc.cluster.local:8082;
}

它的作用是将以/BFF/api/v[0-9]+开头的请求代理到 http://bff.platform.svc.cluster.local:8082这个地址。

具体来说,这个配置使用了正则表达式^/BFF/api/v[0-9]+来匹配请求的URL,其中^表示匹配URL的开头,/BFF/api/是固定的路径,v[0-9]+表示以v开头,后面跟着一个或多个数字的字符串。例如,/BFF/api/v1、/BFF/api/v2等都会被匹配。

当匹配成功后,proxy_pass指令会将请求代理到http://bff.platform.svc.cluster.local:8082这个地址,也就是将请求转发给了一个名为bff的后端服务。

⑤ 示例:

location ~ ^/PORTAL/api/v4 {proxy_pass http://portal-go.platform.svc.cluster.local:8082;
}

它的作用是将所有以/PORTAL/api/v4开头的请求转发到http://portal-go.platform.svc.cluster.local:8082这个地址。

具体来说,~表示使用正则表达式匹配URL,^表示匹配URL的开头,/PORTAL/api/v4是要匹配的URL的正则表达式,proxy_pass指令表示将匹配到的请求转发到指定的地址。在这个例子中,所有匹配到的请求都会被转发到http://portal-go.platform.svc.cluster.local:8082这个地址。

⑥ 示例:

# 开放oauth2 client相关的接口
location ~ ^/AUTH/api/v1/oauth2/client {proxy_pass http://auth:8081;
}

它将所有以/AUTH/api/v1/oauth2/client开头的请求代理到http://auth:8081这个地址。这个配置的作用是开放OAuth2客户端相关的接口,让客户端可以通过这个接口与认证服务器进行交互,完成OAuth2的认证流程。具体的接口实现需要在http://auth:8081这个地址上进行。

⑦ 示例:

location ~ ^/soc/[-A-Za-z0-9]+/api/v[0-9]+ {# 禁止通过nginx直接访问AUTH的接口if ($request_uri ~* ^/soc/AUTH/api) {return 403;}#合并bigscreen和overview到report微服务的转发if ($request_uri ~* ^/soc/(BIGSCREEN|OVERVIEW|REPORT)/api) {proxy_pass http://report.platform.svc.cluster.local:8101;}if ($request_uri ~* ^/soc/LINKAGE/api) {proxy_pass http://linkage:8130;}#合并VULNERABILITY和NOTIFICATION到INCIDENT微服务的转发if ($request_uri ~* ^/soc/(VULNERABILITY|NOTIFICATION|INCIDENT)/api) {proxy_pass http://incident:8091;}if ($request_uri ~* ^/soc/VIEW/api) {proxy_pass http://view.platform.svc.cluster.local:8122;}
}

用于匹配以/soc/开头,后面跟着一个由字母、数字和破折号组成的字符串,再接着/api/v后面跟着一个数字的请求路径。该配置中包含了一些规则:

  • 禁止直接访问AUTH的接口,如果请求路径中包含/soc/AUTH/api,则返回403错误。
  • 将BIGSCREEN、OVERVIEW和REPORT的请求转发到 report.platform.svc.cluster.local:8101。
  • 将LINKAGE的请求转发到 linkage:8130。
  • 将VULNERABILITY、NOTIFICATION和INCIDENT的请求转发到 incident:8091。
  • 将VIEW的请求转发到 view.platform.svc.clustaer.local:8122。

这些规则可以根据实际需求进行修改和扩展。

08. Nginx 如何禁止访问某个目录?

可以通过在 Nginx 的配置文件中添加如下指令来禁止访问某个目录:

server {listen 80;server_name example.com;location /path/to/directory {deny all;}# 其他配置项
}

其中,/path/to/directory 是要禁止访问的目录路径。deny all 指令表示拒绝所有访问该目录的请求。当用户访问 example.com/path/to/directory 时,Nginx 会返回 403 Forbidden 错误,表示禁止访问该目录。

09. Nginx 如何定义错误页面?

在Nginx中,可以通过配置错误页面来定义错误提示页面。具体步骤如下:

① 打开Nginx配置文件,一般为/etc/nginx/nginx.conf。

② 在http块中添加以下代码:

error_page 404 /404.html;
location = /404.html {root /usr/share/nginx/html;internal;
}

上述代码中,error_page指定了错误码为404时的错误页面路径为/404.html,location指定了该路径对应的本地文件路径为/usr/share/nginx/html/404.html。

③ 保存配置文件并重启Nginx服务。

这样,当访问的页面不存在时,Nginx就会自动跳转到定义的404错误页面。同样的,也可以定义其他错误码的错误页面,只需要在http块中添加相应的error_page和location配置即可。

10. Nginx error_page 指令的作用?

server {listen       80;server_name  example.com;root         /usr/share/nginx/html;error_page 404 /404.html;location = /40x.html {}
}
  • root 指定了服务器的根目录为 /usr/share/nginx/html。
  • error_page 404 /404.html 指定了当访问的页面不存在时,返回 /404.html 页面。
  • location = /40x.html {} 指定了当访问的页面为 /40x.html 时,不做任何处理。

在这个Nginx服务器配置中,root指令指定了Nginx服务器的根目录,即服务器上存储网站文件的主目录。root指令将网站文件的根目录设置为/usr/share/nginx/html。这意味着当用户访问example.com时,Nginx服务器将在/usr/share/nginx/html目录中查找网站文件并将其提供给用户。如果在该目录中找不到请求的文件,Nginx服务器将返回一个404错误页面,该页面的位置由error_page指令指定。

11. Nginx 中500、502、503、504 有什么区别?

这些状态码都是指向 Nginx 服务器的错误响应,具体区别如下:

① 500:表示服务器内部错误,通常是由于 Nginx 无法处理请求而导致的。这可能是由于配置错误、程序错误或其他问题引起的。

② 502:表示网关错误,通常是由于 Nginx 作为代理服务器时无法从上游服务器(如应用服务器)获取响应而导致的。这可能是由于上游服务器故障、网络问题或其他问题引起的。

③ 503:表示服务不可用,通常是由于 Nginx 无法处理请求,因为服务器过载或正在进行维护。这可能是由于服务器资源不足、应用程序错误或其他问题引起的。

④ 504:表示网关超时,通常是由于 Nginx 作为代理服务器时无法在预定时间内从上游服务器(如应用服务器)获取响应而导致的。这可能是由于上游服务器响应时间过长、网络问题或其他问题引起的。例如程序需要执行20秒,而nginx最大响应等待时间为10秒,这样就会出现超时。

总的来说,这些状态码都表示服务器或代理服务器无法正常处理请求,但具体原因可能不同。在排除问题时,需要根据具体的状态码和错误信息来确定问题的根本原因。

12. Nginx 如何精准匹配路径?

Nginx可以使用location指令来精准匹配路径。具体来说,可以使用以下几种方式:

① 精确匹配:使用“=”前缀,例如:

location = /path/to/resource {匹配精确路径 /path/to/resource
}

② 前缀匹配:使用“^~”前缀,例如:

location ^~ /path/to/ {# 匹配以 /path/to/ 开头的路径
}

③ 正则表达式匹配:使用“”或“*”前缀,例如:

location ~* \.(gif|jpg|jpeg)$ {匹配以 .gif、.jpg 或 .jpeg 结尾的路径
}

需要注意的是,Nginx会按照配置文件中location指令的顺序依次匹配请求的路径,因此应该将精确匹配放在前面,以避免被前缀匹配或正则表达式匹配覆盖。

13. Nginx 路径匹配优先级?

在 Nginx 中,路径匹配的优先级如下:

① 精确匹配:如果请求 URI 与某个 location 指令的前缀完全匹配,则使用该 location 指令处理请求。

② 前缀匹配:如果请求 URI 以某个 location 指令的前缀开头,则使用该 location 指令处理请求。

③ 正则表达式匹配:如果请求 URI 与某个 location 指令的正则表达式匹配,则使用该 location 指令处理请求。

如果有多个 location 指令匹配请求 URI,则使用最长的前缀匹配或正则表达式匹配的 location 指令处理请求。如果有多个最长匹配的 location 指令,则使用先定义的 location 指令处理请求。

需要注意的是,如果使用了 rewrite 指令,则重写后的 URI 会再次进行路径匹配,因此可能会匹配到不同的 location 指令

14. Nginx rewrite 常用的全局变量?

Nginx rewrite 常用的全局变量包括:

$args:请求中的参数部分,例如 /index.php?id=1 中的 id=1。
$uri:请求的 URI,例如 /index.php。
$request_uri:请求的 URI 包括参数,例如 /index.php?id=1。
$request_method:存放了客户端的请求方式,如 get,post 等。
$request_filename:存放当前请求的资源文件的路径名。
$document_root:当前请求的文档根目录。
$request_filename:当前请求的文件路径,由 root 或 alias 指令与 URI 组合而成。
$host:请求中的主机名,例如 www.example.com。
$http_user_agent:客户端浏览器的 User-Agent 字符串。
$http_referer:客户端浏览器的 Referer 字符串,表示用户是从哪个页面链接过来的。
$remote_addr:客户端的 IP 地址。
$server_name:当前请求的服务器名。
$server_port:当前请求的服务器端口号。

这些变量可以在 Nginx 的 rewrite 模块中使用,用于重写 URL 或者进行其他的操作。例如,可以使用 $uri 变量来重写 URL,或者使用 $http_user_agent 变量来根据客户端浏览器类型进行不同的处理。

相关文章:

分布式 - 服务器Nginx:常见问题总结(二)

文章目录 01. Nginx 虚拟主机怎么配置?02. Nginx location 指令的作用?03. Nginx location 指令如何与其他指令一起使用?04. Nginx root 命令的作用?05. Nginx if 模块的作用?06. Nginx include 指令的作用?07. Nginx…...

【Paper Reading】CenterNet:Keypoint Triplets for Object Detection

背景 首先是借鉴Corner Net 表述了一下基于Anchor方法的不足: anchor的大小/比例需要人工来确认anchor并没有完全和gt的bbox对齐,不利于分类任务。 但是CornerNet也有自己的缺点 CornerNet 只预测了top-left和bottom-right 两个点,并没有…...

【BASH】回顾与知识点梳理(三)

【BASH】回顾与知识点梳理 三 三. 命令别名与历史命令3.1 命令别名设定: alias, unalias3.2 历史命令:history同一账号同时多次登入的 history 写入问题无法记录时间 该系列目录 --> 【BASH】回顾与知识点梳理(目录) 三. 命令…...

C#设计模式之---单例模式

单例模式(Singleton) 单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例。 1)普通单例模式 using System; namespace SingletonPattern {/// /// 单例模式(非线程安全)/// …...

Git工具安装

Git 工具安装 1. 下载Git安装包2. 安装Git工具3. 简单的使用配置用户名 1. 下载Git安装包 打开官网 https://git-scm.com/downloads点击下载 2. 安装Git工具 右击以管理员身份运行 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9a99a73d54824800bc87db64f71f7602.png…...

深度学习——注意力机制、自注意力机制

什么是注意力机制? 1.注意力机制的概念: 我们在听到一句话的时候,会不自觉的捕获关键信息,这种能力叫做注意力。 比如:“我吃了100个包子” 有的人会注意“我”,有的人会注意“100个”。 那么对于机器来说…...

STM32入门学习之定时器中断

1.STM32的通用定时器是可编程预分频驱动的16位自动装载计数器。 STM32 的通用定时器可以被用于:测量输入信号的脉冲长度 ( 输入捕获 ) 或者产生输出波 形 ( 输出比较和 PWM) 等。 使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形 周…...

基本数据类型与包装数据类型的使用标准

Reference:《阿里巴巴Java开发手册》 【强制】所有的 POJO 类属性必须使用包装数据类型。【强制】RPC 方法的返回值和参数必须使用包装数据类型。【推荐】所有的局部变量使用基本数据类型。 比如我们如果自定义了一个Student类,其中有一个属性是成绩score,如果用Integer而不用…...

小研究 - 基于 SpringBoot 微服务架构下前后端分离的 MVVM 模型(二)

本文主要以SpringBoot微服务架构为基础,提出了前后端分离的MVVM模型,并对其进行了详细的分析以及研究,以此为相关领域的工作人员提供一定的技术性参考。 目录 4 SpringBoot 4.1 技术发展 4.2 技术特征 4.3 SpringBoot项目构建 4.4 目录结…...

ArmSoM-W3之RK3588安装Qt+opencv+采集摄像头画面

1. 简介 场景:在RK3588上做qt开发工作 RK3588安装Qtopencv采集摄像头画面 2. 环境介绍 这里使用了OpenCV所带的库函数捕获摄像头的视频图像。 硬件环境: ArmSoM-RK3588开发板、(MIPI-DSI)摄像头 软件版本: OS&…...

基于长短期神经网络的风速预测,基于LSTM的风速预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的风速预测 完整代码: https://download.csdn.net/download/abc991835105/88171311 效果图 结果分析 展望 参考论文 背影 风速预测是一种比较难的预测,随机性比较大,长短期神经网络是一种改进党的RNN…...

Mybatis引出的一系列问题-spring多数据源配置

在日常开发中我们都是以单个数据库进行开发,在小型项目中是完全能够满足需求的。但是,当我们牵扯到像淘宝、京东这样的大型项目的时候,单个数据库就难以承受用户的CRUD操作。那么此时,我们就需要使用多个数据源进行读写分离的操作…...

Vue-组件二次封装

本次对el-input进行简单封装进行演示 封装很简单,就给激活样式的边框(主要是功能) 本次封装主要使用到vue自带的几个对象 $attrs:获取绑定在组件上的所有属性$listeners: 获取绑定在组件上的所有函数方法$slots: 获取应用在组件内的所有插槽 …...

[C++]02.选择结构与循环结构

02.选择结构与循环结构 一.程序流程结构1.选择结构1.1.if语句1.2.三目运算符1.3.switch语句 2.循环结构2.1.while语句2.2.do-while语句2.3.for语句2.4.break语句2.5.continue语句2.6.goto语句 一.程序流程结构 C/C支持的最基本的运行结构: 顺序结构, 选择结构, 循环结构顺序结…...

C语言案例 按序输出多个整数-03

难度2复杂度3 题目:输入多个整数,按从小到大的顺序输出 步骤一:定义程序的目标 编写一个C程序,随机输入整数,按照从小到大的顺序输出 步骤二:程序设计 整个C程序由三大模块组成,第一个模块使…...

如何获取vivado IP列表

TCL命令如下: set fid [open "vivado_included_ip_[version -short].csv" w] puts $fid "Name;Version" set ip_catalog [get_ipdefs *] foreach ip $ip_catalog{ set ipname [get_property DISPLAY_NAME [get_ipdefs $ip]]set iplib [get_p…...

计算机网络的定义和分类

计算机网络的定义和分类 计算机网络的定义 计算机网络的精确定义并未统一计算机网络最简单的定义是:一些互相连接的、自治的计算机的集合 互连:指计算机之间可以通过有线或无线的方式进行数据通信自治:是指独立的计算机,它有自己的硬件和软件&#xff…...

【css】超过文本显示省略号

显示省略号的前提:必须有指定宽度 一、单行文本超出部分显示省略号 属性取值解释overflowhidden当内容超过盒子宽度, 隐藏溢出部分white-spacenowrap让文字在一行内显示, 不换行text-overflowellipsis如果溢出的内容是文字, 就用省略号代替 .one-line{overflow:h…...

Java 8 中使用 Stream 遍历树形结构

在实际开发中,我们经常会开发菜单,树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来,然后通过流式处理,我们一起来看看&#x…...

网络安全防火墙体验实验

网络拓扑 实验操作: 1、cloud配置 2、防火墙配置 [USG6000V1]int GigabitEthernet 0/0/0 [USG6000V1-GigabitEthernet0/0/0]ip add 192.168.200.100 24 打开防火墙的所有服务 [USG6000V1-GigabitEthernet0/0/0]service-manage all permit 3、进入图形化界面配置…...

YOLOv5引入FasterNet主干网络,目标检测速度提升明显

目录 一、背景介绍1.1 目标检测算法简介1.2 YOLOv5简介及发展历程 二、主干网络选择的重要性2.1 主干网络在目标检测中的作用2.2 YOLOv5使用的默认主干网络 三、FasterNet简介与原理解析3.1 FasterNet概述3.2 FasterNet的网络结构3.2.1 基础网络模块3.2.2 快速特征融合模块3.2.…...

SpringBoot运行时注入一个Bean

描述 使用GenericApplicationContext类的registerBean方法可以在项目运行时注入一个bean,获取GenericApplicationContext可以继承ApplicationContextAware,重写setApplicationContext,里面的参数就是ApplicationContext。 继承ApplicationC…...

Pyspark

2、DataFrame 2.1 介绍 在Spark语义中,DataFrame是一个分布式的行集合,可以想象为一个关系型数据库的表,或者一个带有列名的Excel表格。它和RDD一样,有这样一些特点: Immuatable:一旦RDD、DataFrame被创…...

Spring Boot 项目五维度九层次分层架构实现实践研究——持续更新中

说明:本博文主要参考来自 https://blog.csdn.net/BASK2311/article/details/128198005 据实践内容及代码持续总结更新中。 五个分层维度:SpringBoot工程分层实战 1 分层思想 计算机领域有一句话:计算机中任何问题都可通过增加一个虚拟层解…...

stm32常见数据类型

stm32的数据类型的字节长度 s8 占用1个byte,数据范围 -2^7 到 (2^7-1) s16 占用2个byte,数据范围 -2^15 到 (2^15-1) s32 占用 4个byte,数据范围 -2^31 到 (231-1)231 2147483647 int64_t占用8个byte,数据范围 -2^63 到 (2^63-1)…...

mac m1使用docker安装kafka

1.拉取镜像 docker pull zookeeper docker pull wurstmeister/kafka 2.启动zookeeper docker run -d --name zookeeper -p 2181:2181 zookeeper 3.设置zookeeper容器对外服务的ip Zookeeper_Server_IP$(docker inspect zookeeper --format{{ .NetworkSettings.IPAddress }}…...

SpringBoot核心配置和注解

目录 一、注解 元注解 基本注解 启动注解 二、配置 格式介绍 读取配置文件信息 案例演示1 嵌套读取bean信息 案例演示2 读取Map,List 以及 Array 类型配置数据 案例演示3 三、总结 一、注解 之前我们了解了SpringBoot基础和AOP简单应用,这期来讲…...

第三章 图论 No.3 flody之多源汇最短路,传递闭包,最小环与倍增

文章目录 多源汇最短路:1125. 牛的旅行传递闭包:343. 排序最小环:344. 观光之旅345. 牛站 flody的四个应用: 多源汇最短路传递闭包找最小环恰好经过k条边的最短路 倍增 多源汇最短路:1125. 牛的旅行 1125. 牛的旅行 …...

Leetcode-每日一题【剑指 Offer 17. 打印从1到最大的n位数】

题目 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。 示例 1: 输入: n 1输出: [1,2,3,4,5,6,7,8,9] 说明: 用返回一个整数列表来代替打印 n 为正整数 解题思路 前置知识 M…...

远程调试MySQL内核

1 vscode 需要安装remote-ssh插件 安装成功后,登录: 默认远程服务器的登录 ssh rootip注意,Linux需要设置root远程登录; 2 安装debug扩展 C\C extemsion Pack C\C3 设置Attach进程 {// Use IntelliSense to learn about poss…...