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

Nginx核心配置详解

一、配置文件说明

nginx官方帮助文档:nginx documentation

nginx的配置文件的组成部分:

  • 主配置文件:nginx.conf
  • 子配置文件: include conf.d/*.conf
  • fastcgi, uwsgi,scgi 等协议相关的配置文件
  • mime.types:支持的mime类型,MIME(Multipurpose Internet Mail Extensions)多用途互联网邮 件扩展类型,MIME消息能包含文本、图像、音频、视频以及其他应用程序专用的数据,是设定某 种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动 使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

nginx 配置文件格式说明:

  • 配置文件由指令与指令块构成 每条指令以;分号结尾,指令与值之间以空格符号分隔
  • 可以将多条指令放在同一行,用分号分隔即可,但可读性差,不推荐
  • 指令块以{ }大括号将多条指令组织在一起,且可以嵌套指令块
  • include语句允许组合多个配置文件以提升可维护性
  • 使用#符号添加注释,提高可读性
  • 使用$符号使用变量
  • 部分指令的参数支持正则表达式

nginx 主配置文件的配置指令方式:

directive value [value2 …];

注意:

(1) 指令必须以分号结尾

(2) 支持使用配置变量

内建变量:由Nginx模块引入,可直接引用

自定义变量:由用户使用set命令定义,格式: set variable_name value

引用变量:$variable_name

主配置文件结构:

main block:主配置段,即全局配置段,对http,mail都有效#事件驱动相关的配置
event {...
} ?#http/https 协议相关配置段
http {...
} #默认配置文件不包括下面两个块
#mail 协议相关配置段
mail {...
}#stream 服务器相关配置段
stream {...
}

默认的nginx.conf配置文件格式说明

#全局配置端,对全局生效,主要设置nginx的启动用户/组,启动的工作进程数量,工作模式,Nginx的PID路
径,日志路径等。user nginx nginx;
worker_processes ?1; ? #启动工作进程数数量events {                #events #设置快,主要影响nginx服务器与用户的网络连接,比如是否允许同时接受多个                        #网络连接,使用哪种事件驱动模型 #处理请求,每个工作进程可以同时支持的#最大连接数,是否开启对多工作进程下的网络连接进行序列化等。? ? worker_connections ?1024; ? #设置单个nginx工作进程可以接受的最大并发,作为web服务器#的时候最大并发数为 #worker_connections * #worker_processes,作为反向代理的时候为#(worker_connections * worker_processes)/2
}
http {                           #http块是Nginx服务器配置中的重要部分,缓存、代理和日志格式定        #义等绝大多数功能和第三方模块都 #可以在这设置,http块可#以包含多个server块,而一个server块中又可以包含多个locatio块,? ? ? ? ?                     #server块可以配置文件引入、MIME-Type定义、日志自定义、是否启用            #sendfile、连接超时时间和 #单个链接的请求上限等。? include ? ? ? mime.types;? default_type application/octet-stream;? sendfile ? ? ? on;         #作为web服务器的时候打开sendfile加快静态文件传输,指定是否使用#sendfile系统调用来传输文件#sendfile系统调用在两个文件描述符之间直接传递数据(完全在内核中操作)#从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率很高,被称之为零拷贝,#硬盘 >> kernel buffer (快速拷贝到kernelsocket buffer) >>协议栈。? keepalive_timeout ?65; ? #长连接超时时间,单位是秒? server {                 #设置一个虚拟机主机,可以包含自己的全局快,同时也可以包含多个                #location模块?                          #比如本虚拟机监听的端口、本虚拟机的名称和IP配置,多个server #可以使用一个端口比如都使用 #80端口提供web服务? ? ? ? listen ? ? ? 80; ? #配置server监听的端口
? ? ? server_name localhost; ? #本server的名称,当访问此名称的时候nginx会调用当前serevr#内部的配置进程匹配。? ? ? ? ? ? location / {   #location其实是server的一个指令,为nginx服务器提供比较多而且灵活的指令? ? ?                 #都是在location中体现的,主要是基于nginx接受到的请求字符串? ? ?                 #对用户请求的UIL进行匹配,并对特定的指令进行处理? ? ?                 #包括地址重定向、数据缓存和应答控制等功能都是在这部分实现? ? ?                 #另外很多第三方模块的配置也是在location模块中配置。? ? ? ? ? ? ? ? root ? html; #相当于默认页面的目录名称,默认是安装目录的相对路径,#可以使用绝对路径配置。? ? ? ? ? index index.html index.htm; #默认的页面文件名称? ? ? ? ? ? ? ? }? ? ? error_page ? 500 502 503 504 /50x.html; #错误页面的文件名称? ? ? location = /50x.html { #location处理对应的不同错误码的页面定义到/50x.html? ? ?                        #这个跟对应其server中定义的目录下。? ? ? ? ? root ? html; ? #定义默认页面所在的目录? ? ? }? }? ?
#和邮件相关的配置
#mail {
# ? ? ? ? ? ? ? ...
# ? ? ? } ? ? ? ? mail 协议相关配置段
#tcp代理配置,1.9版本以上支持
#stream {
# ? ? ? ? ? ? ? ...
# ? ? ? } ? ? ? stream 服务器相关配置段
#导入其他路径的配置文件
#include /apps/nginx/conf.d/*.conf
}

二、全局配置

Main 全局配置段常见的配置指令分类

  • 正常运行必备的配置
  • 优化性能相关的配置
  • 用于调试及定位问题相关的配置
  • 事件驱动相关的配置

全局配置说明:

user nginx nginx; #启动Nginx工作进程的用户和组
worker_processes [number | auto]; #启动Nginx工作进程的数量,一般设为和CPU核心数相同
worker_cpu_affinity 00000001 00000010 00000100 00001000 | auto ; #将Nginx工作进程绑定到指定的CPU核心,默认Nginx是不进行进程绑定的,绑定并不是意味着当前nginx进
#程独占以一核心CPU,但是可以保证此进程不运行在其他核心上,这就极大减少了nginx的工作进程在不同的
#cpu核心上的来回跳转,减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务
#器的性能。CPU MASK: 00000001:0号CPU00000010:1号CPU10000000:7号CPU#示例
worker_cpu_affinity 0001 0010 0100 1000;第0号---第3号CPU
worker_cpu_affinity 0101 1010; 
#示例
worker_processes ?4;
worker_cpu_affinity 00000010 00001000 00100000 10000000;daemon off; ? #前台运行Nginx服务用于测试、docker等环境。
master_process off|on; #是否开启Nginx的master-worker工作模式,仅用于开发调试场景,默认为
on
events {
?  worker_connections 65535; ? #设置单个工作进程的最大并发连接数? use epoll; #使用epoll事件驱动,? #Nginx支持众多的事件驱动,? #比如:select、poll、epoll,只能设置在events模块中
设置? ?? accept_mutex on; ? #on为同一时刻一个请求轮流由work进程处理,? #而防止被同时唤醒所有worker? #避免多个睡眠进程被唤醒的设置,默认为off? #新请求会唤醒所有worker进程,此过程也称为"惊群"? #因此nginx刚安装完以后要进行适当的优化。建议设置为on? ? multi_accept on; #on时Nginx服务器的每个工作进程可以同时接受多个新的网络连接? #此指令默认为off,? #即默认为一个工作进程只能一次接受一个新的网络连接? #打开后几个同接受多个。建议设置为on? 
}

1、以特定的格式(进程 IDpid、命令cmd、处理器psr)列出所有正在运行的nginx相关进程信息

ps axo pid,cmd,psr | grep nginx

2、错误日志配置

语法:error_log file [debug | info | notice | warn | error | crit | alert | emerg]

#error_log logs/error.log;

#error_log logs/error.log notice;

error_log /usr/local/nginx/logs/error.log error;

3、pid文件保存路径

pid /usr/local/nginx/logs/nginx.pid;

worker_priority 0; #工作进程优先级,-20~20(19)

worker_rlimit_nofile 65536;

#所有worker进程能打开的文件数量上限,

#包括:Nginx的所有连接(例如与代理服务器的连接等)

#而不仅仅是与客户端的连接

#另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制

#最好与ulimit -n 或者limits.conf的值保持一致

4、修改pam限制

[root@Nginx ~]# vim /etc/security/limits.conf

* - nofile 10000

[root@Nginx ~]# sudo -u nginx ulimit -n

100000

三、http配置模块

#在响应报文中将指定的文件扩展名映射至MIME对应的类型
include ? ? ? ? ? /etc/nginx/mime.types;
default_type ? ? application/octet-stream; #除mime.types中的类型外#指定其它文件的默认MIME类型,浏览
器一般会提示下载
types {? text/html html;? image/gif gif;? image/jpeg jpg;
}

示例:识别php文件为text/html

[root@Nginx ~]# vim /usr/local/nginx/html/test.php
<?php? phpinfo();
?>
[root@Nginx ~]# curl -I 172.25.254.100/test.php
HTTP/1.1 200 OK
Server: nginx/1.26.1
Content-Type: application/octet-stream
Content-Length: 24
Last-Modified: Fri, 19 Jul 2024 09:38:52 GMT
Connection: keep-alive
ETag: "669a342c-18"
Accept-Ranges: bytes
[root@Nginx ~]# vim /usr/local/nginx/conf/nginx.conf
default_type text/html;
[root@Nginx ~]# nginx -s reload
[root@Nginx ~]# curl -I 172.25.254.10/test.php
HTTP/1.1 200 OK
Server: nginx/1.26.1
Date: Fri, 19 Jul 2024 09:49:49 GMT
Content-Type: text/html
Content-Length: 24
Last-Modified: Fri, 19 Jul 2024 09:38:52 GMT
Connection: keep-alive
ETag: "669a342c-18"
Accept-Ranges: bytes

四、核心配置示例

基于不同的IP、不同的端口以及不用得域名实现不同的虚拟主机,依赖于核心模块 ngx_http_core_module实现。

4.1 新建一个 PC web 站点

1、定义子配置文件路径

[root@Nginx ~]# mkdir /usr/local/nginx/conf.d/

2、编辑nginx.conf配置文件

添加以下到配置文件中

注意:

在配置文件的最后面添加此行

注意不要放在最前面,会导致前面的命令无法 生效

include /apps/nginx/conf/conf.d/*.conf;

3、创建虚拟主机网站配置

[root@Nginx ~]# vim /usr/local/nginx/conf.d/vhosts.conf

server {

listen 80;

server_name ou.qisheng.org;

location / {

root /webdata/nginx/qisheng.org/ou/html;

}

}

[root@Nginx ~]# mkdir -p /webdata/nginx/qisheng.org/ou/html

[root@Nginx ~]# echo ou.qisheng.org > /webdata/nginx/qisheng.org/ou/html/index.html

[root@Nginx ~]# nginx -s reload

4、设置本地解析

5、测试

4.2 root与alias

root:指定web的家目录,在定义location的时候,文件的绝对路径等于 root+location。

root示例:

1、编辑子配置文件

[root@Nginx ~]# vim /usr/local/nginx/conf.d/vhosts.conf

server {? listen 80;? server_name ou.qisheng.org;? location / {? ? ? root /webdata/nginx/qisheng.org/ou/html;? }? location /dirtest { #必须建立/mnt/dirtest才能访问? ? ? root /mnt;? }
}

2、创建目录,写入内容到html文件

[root@Nginx ~]# mkdir /mnt/dirtest/

[root@Nginx ~]# echo dirtest page > /mnt/dirtest/index.html

3、重启nginx并访问测试

[root@Nginx ~]# nginx -s reload

[root@Nginx ~]# curl ou.qisheng.org/dirtest/

alias:定义路径别名,会把访问的路径重新定义到其指定的路径,文档映射的另一种机制;仅能用于 location上下文,此指令使用较少。

alias示例:

1、编辑子配置文件

[root@Nginx ~]# vim /usr/local/nginx/conf.d/vhosts.conf

server {? listen 80;? server_name ou.qisheng.org;? location / {? ? ? root /webdata/nginx/qisheng.org/ou/html;? }? location /dirtest {? ? ? root /mnt;? }? location /alias { #注意about后不要加/? #使用alias的时候uri后面如果加了斜杠,则下面的路径配置必须加斜杠,否则403? ? ? ? alias /mnt/dirtest; #当访问alias的时候,会显示alias定义的/mnt/dirtest里面的内容 ? }
}

2、重启nginx并访问测试

[root@Nginx ~]# nginx -s reload

[root@Nginx ~]# curl ou.qisheng.org/alias/

注意:

location中使用root指令和alias指令的意义不同

root #给定的路径对应于location中的/uri左侧的/

alias #给定的路径对应于location中的/uri的完整路径

4.3 location的详细使用

  • 在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;

  • ngnix会根据用户请求的URI来检查定义的所有location,按一定的优先级找出一个最佳匹配

  • 而后应用其配置在没有使用正则表达式的时候,nginx会先在server中的多个location选取匹配度最 高的一个uri

  • uri是用户请求的字符串,即域名后面的web文件路径

  • 然后使用该location模块中的正则url和字符串,如果匹配成功就结束搜索,并使用此location处理 此请求。

    #语法规则:
    location [ = | ~ | ~* | ^~ ] uri { … }
    = #用于标准uri前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立
    即处理请求
    ^~ ? #用于标准uri前,表示包含正则表达式,并且匹配以指定的正则表达式开头
    #对uri的最左边部分做匹配检查,不区分字符大小写

    ~ ? #用于标准uri前,表示包含正则表达式,并且区分大小写
    ~* ? #用于标准uri前,表示包含正则表达式,并且不区分大写
    不带符号 #匹配起始于此uri的所有的uri
    ? #用于标准uri前,表示包含正则表达式并且转义字符。可以将 . * ?等转义为普通符号

4.4 nginx 账户认证功能

由 ngx_http_auth_basic_module 模块提供此功能。

1、建立用户认证

[root@Nginx ~]# htpasswd -cmb /usr/local/nginx/conf/.htpasswd admin ouqisheng

[root@Nginx ~]# htpasswd -mb /usr/local/nginx/conf/.htpasswd ouqisheng ouqisheng

2、查看用户认证是否建立成功

[root@Nginx ~]# cat /usr/local/nginx/conf/.htpasswd

3、创建目录,并将内容写入html文件

[root@Nginx ~]# mkdir /webdata/nginx/qisheng.org/ou/login

[root@Nginx ~]# echo login > /webdata/nginx/qisheng.org/ou/login/index.html

4、编辑子配置文件

[root@Nginx ~]# vim /usr/local/nginx/conf.d/vhosts.conf

 server {? ? ? listen 80;? ? ? server_name ou.qisheng.org;? ? ? location /login {? ? ? ? ? root /webdata/nginx/qisheng.org/ou/html;? ? ? ? ? index index.html;? ? ? ? ? auth_basic "login password";? ? ? ? ? auth_basic_user_file "/usr/local/nginx/conf/.htpasswd";? ? ? }
}

5、重启nginx并测试

4.5 自定义错误页面

自 定义错误页,同时也可以用指定的响应状态码进行响应, 可用位置:http, server, location, if in location

error_page code … [=[response]] uri;

1、创建目录,并将内容写到html文件中

[root@Nginx ~]# mkdir /webdata/nginx/timinglee/lee/errors -p

[root@Nginx ~]# echo error page > /webdata/nginx/errors/40x.html

2、重启nginx并访问一个不存在的页面进行测试

4.6 自定义错误日志

1、创建日志目录

[root@Nginx ~]# mkdir/var/log/testlog

2、编辑子配置文件

[root@Nginx ~]# vim /usr/local/nginx/conf.d/vhosts.conf

server {? listen 80;? server_name ou.qisheng.org;? error_page 404 /40x.html;? access_log /var/log/testlog/access.log;? error_log /var/log/testlog/error.log;? location = /40x.html {? ? ? root /webdata/nginx/errors;? }
} 

3、重启nginx并访问不存在的页面进行测试并验证是在指定目录生成新的日志文件

4.7 检测文件是否存在

try_files会按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如 果所有文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一 个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内 部500错误。

语法格式:

Syntax: try_files file … uri;

try_files file … =code;

Default: —

Context: server, location

1、创建目录,并写入内容到htmlwenj

[root@Nginx ~]# mkdir /webdata/nginx/qisheng.org/ou/html/error/

[root@Nginx ~]# echo “index.html is not exist” >/webdata/nginx/qisheng.org/ou/html/error/default.html

2、编辑子配置文件

[root@Nginx ~]# vim /usr/local/nginx/conf.d/vhosts.conf

server {? listen 80;? server_name ou.qisheng.org;? root /webdata/nginx/qisheng.org/ou/html;? error_page 404 /40x.html;? access_log /var/log/nginx/access.log;? error_log /var/log/nginx/error.log;? try_files $uri $uri.html $uri/index.html /error/default.html;? location = /40x.html {? ? ? root /webdata/nginx/errors;? }
}

3、测试

重启nginx,访问一个不存在的页面

4.8 长连接配置

keepalive_timeout timeout [header_timeout];

#设定保持连接超时时长,0表示禁止长连接, 默认为75s

#通常配置在http字段作为站点全局配置

keepalive_requests 数字;

#在一次长连接上所允许请求的资源的最大数量

#默认为100次,建议适当调大,比如:500

1、编辑nginx.conf配置文件

[root@Nginx ~]# vim /usr/local/nginx/conf/nginx.conf

开启长连接后,返回客户端的会话保持时间为60s,单次长连接累计请求达到指定次数请求或65秒就会被断 开,第二个数字60为发送给客户端应答报文头部中显示的超时时间设置为60s:如不设置客户端将不显示超时时 间。

2、重启nginx,测试

4.9 作为下载服务器配置

ngx_http_autoindex_module 模块处理以斜杠字符 “/” 结尾的请求,并生成目录列表,可以做为下载服务 配置使用。

相关指令:

autoindex on | off; #自动文件索引功能,默为off
autoindex_exact_size on | off; ?#计算文件确切大小(单位bytes),off 显示大概大小(单位K、
M),默认on
autoindex_localtime on | off ; #显示本机时间而非GMT(格林威治)时间,默认off
autoindex_format html | xml | json | jsonp; #显示索引的页面文件风格,默认html
limit_rate rate; #限制响应客户端传输速率(除GET和HEAD以外的所有方法),单位
B/s,bytes/second, #默认值0,表示无限制,此指令由
ngx_http_core_module提供
set $limit_rate 4k; #也可以通变量限速,单位B/s,同时设置,此项优级高.

实现下载站点:

注意:download不需要index.html文件

1、创建目录,编写一个文件放到目录里

[root@Nginx ~]# mkdir -p /webdata/nginx/qisheng.org/ou/html/download

2、编辑子配置文件

[root@Nginx ~]# vim /usr/local/nginx/conf.d/vhosts.conf

server {? listen 80;? server_name ou.qisheng.org;? root /webdata/nginx/qisheng.org/ou/html;? access_log /var/log/nginx/access.log;? error_log /var/log/nginx/error.log;? try_files $uri $uri.html $uri/index.html /error/default.html;? location = /40x.html {? ? ? root /webdata/nginx/errors;? }? location /download {? ? ? autoindex on; #自动索引功能? ? ? autoindex_exact_size on; #计算文件确切大小(单位bytes),此为默认值,off只显示
大概大小(单位kb、mb、gb)autoindex_localtime on; #on表示显示本机时间而非GMT(格林威治)时间,默为为off显
示GMT时间? ? ? limit_rate 1024k; #限速,默认不限速 ? }
}

3、测试

相关文章:

Nginx核心配置详解

一、配置文件说明 nginx官方帮助文档&#xff1a;nginx documentation nginx的配置文件的组成部分&#xff1a; 主配置文件&#xff1a;nginx.conf子配置文件: include conf.d/*.conffastcgi&#xff0c; uwsgi&#xff0c;scgi 等协议相关的配置文件mime.types&#xff1a;…...

智能工厂的设计软件 用“力force”的性质构造智能体原型

本文要点 在“智能工厂的设计软件”中 我将对力的研究分为三个领域&#xff1a;经典力学&#xff0c;相对论力学和量子力学&#xff0c;每个研究领域都涉及到force自身性质所具有两个侧面&#xff1a; 明示高度内聚的不可观测的内部表征-“互相性”&#xff08;哲学性质/哲学…...

Apache AGE:基于PostgreSQL的图数据库

Apache AGE&#xff08;A Graph Extension&#xff09;是一个基于 PostgreSQL 的图数据库。它以扩展插件的形式提供&#xff0c;可以在利用 PostgreSQL 先进的 SQL 查询功能和事务支持的同时&#xff0c;享受图数据库的灵活性和可扩展性。 Apache AGE 最初由 Bitnine Global In…...

RabbitMQ延迟消息的实现

RabbitMQ延迟队列的实现 延迟消息是什么延迟消息的实现死信交换机代码实现 延迟消息插件 延迟消息是什么 延迟消息是将消息发送到MQ中&#xff0c;消费者不会立即收到消息&#xff0c;而是过一段时间之后才会收到消息&#xff0c;进行处理。在一些业务中&#xff0c;可以用到延…...

SAP在中国:助力企业跨越成长的新篇章

在当今这个数字化转型风起云涌的时代&#xff0c;每一个企业都在寻求更高效、更智能的管理方式&#xff0c;以期在激烈的市场竞争中脱颖而出。在这场变革中&#xff0c;SAP作为全球领先的企业管理软件解决方案提供商&#xff0c;正以其卓越的产品与服务&#xff0c;在中国这片充…...

数据结构代码归纳

线性表 线性表的顺序表示 定义与初始化 typedef struct SqList{ElemType data[MaxSize];//ElemType *data 开动态数组 int length; }Sqlist; void InitList(SqList &L){L.length0;//若静态数组//若动态数组 //L.data(ElemType*)malloc(sizeof(ElemType)*MaxSize); } …...

数仓技术hive与oracle对比(一)

准备 包括软硬件环境、数据、测试数据三方面的准备内容。 环境 虚拟机软件virtualbox7&#xff0c;同样的虚拟机配置&#xff1a;内存2G、cpu一核&#xff0c;物理主机同一台macbookpro&#xff08;13-2020款&#xff09;&#xff0c;所以硬盘IO读写速度一致。 综上&#x…...

筑起厂区安全--叉车安全防护装置全解析

在繁忙的工业生产领域中&#xff0c;叉车作为搬运工&#xff0c;穿梭于仓储与生产线之间。然而&#xff0c;叉车的高效运作背后&#xff0c;也隐藏着诸多安全风险&#xff0c;尤其是在那些空间狭小、物流繁忙的环境中。为了降低这些潜在的危险&#xff0c;叉车安全防护装置便成…...

深入浅出云计算 ---笔记

这是博主工作闲时的一些日常学习记录&#xff0c;有些之前很熟悉的&#xff0c;但工作中不常用&#xff0c;慢慢就遗忘了&#xff0c;在这里记录&#xff0c;也是为了激励自己坚持复习&#xff0c;如果有能帮到你&#xff0c;那我将感到非常的荣幸~ 快速到达↓↓↓ IaaS篇>&…...

ARINC 标准全解析:航空电子领域多系列标准的核心内容、应用与重要意义

ARINC标准概述 ARINC标准是航空电子领域一系列重要的标准规范&#xff0c;由航空电子工程委员会&#xff08;AEEC&#xff09;编制&#xff0c;众多航空公司等参与支持。这些标准涵盖了从飞机设备安装、数据传输到航空电子设备功能等众多方面&#xff0c;确保航空电子系统的兼…...

SNMP 协议介绍

SNMP 协议详细介绍 SNMP(Simple Network Management Protocol,简单网络管理协议)是一个用于管理和监控计算机网络设备(如路由器、交换机、服务器等)的协议。它允许网络管理员通过网络查看和控制这些设备的状态、配置和性能。 SNMP 协议定义了网络设备如何与管理系统进行通…...

Python中的数据结构深入解析:从列表到字典的优化技巧

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! Python是一门以易用性和可读性著称的高级编程语言,其内置的数据结构为开发者提供了强大的工具,但了解其底层实现及性能优化策略却常被忽略。本文深入探讨Python中的核心数据结构,包括列表(list)、元组…...

如何利用Java爬虫获得商品类目

在当今数字化时代&#xff0c;数据已成为企业最宝贵的资产之一。获取和分析数据的能力对于任何希望在市场上保持竞争力的企业来说都是至关重要的。对于电子商务平台和市场研究公司而言&#xff0c;获取商品类目数据尤为重要&#xff0c;因为这些数据可以帮助他们更好地理解市场…...

力扣面试题 32 - 检查平衡性 C语言解法

题目&#xff1a; 实现一个函数&#xff0c;检查二叉树是否平衡。在这个问题中&#xff0c;平衡树的定义如下&#xff1a;任意一个节点&#xff0c;其两棵子树的高度差不超过 1。 示例 1&#xff1a; 给定二叉树 [3,9,20,null,null,15,7]3/ \9 20/ \15 7 返回 true 。 …...

【机器学习】机器学习的基本分类-监督学习-决策树-ID3 算法

ID3&#xff08;Iterative Dichotomiser 3&#xff09;是决策树的一种构造算法&#xff0c;由 Ross Quinlan 在 1986 年提出。它主要用于分类问题&#xff0c;通过信息增益选择特征来构建决策树。ID3 假设数据是离散型特征&#xff0c;且不支持连续型数据。 1. 核心思想 划分标…...

Implicit style-content separation using lora

1.Introduction 图像风格化,这个任务涉及根据某些风格参考改编图像的风格,这些参考可以是基于文本或基于图像的,同时保持其内容不变,内容指的是图像的语义信息和结构,而风格通常指的是视觉特征和模式,例如颜色和纹理。这是一个有挑战的任务,因为风格和内容之间的强关联…...

ROS[aruco_ros+easy_handeye]手眼标定(眼在手外+UR10e+realsense-d435i)

参考链接&#xff1a; https://zhuanlan.zhihu.com/p/576861119 https://blog.csdn.net/qq_32618327/article/details/120730198 本次在Docker中使用 打印Aruco码&#xff1a;https://chev.me/arucogen/ 选择Dictionary为 Original ArUco(aruco_ros默认这个&#xff0c;如果…...

第九篇:k8s 通过helm发布应用

什么是helm&#xff1f; Helm 是 Kubernetes 的包管理器。Helm 是查找、分享和使用软件构建 Kubernetes 的最优方式。 在红帽系的Linux中我们使用yum来管理RPM包&#xff0c;类似的&#xff0c;在K8s中我们可以使用helm来管理资源对象&#xff08;Deployment、Service、Ingress…...

dataTable

在 C# 中&#xff0c;DataTable 是 .NET Framework 中用于处理数据表格的一个类&#xff0c;属于 System.Data 命名空间。它是一种内存中表示数据表的结构&#xff0c;通常用于临时存储和操作数据&#xff0c;类似于数据库中的表。DataTable 的主要特点是行列结构&#xff0c;其…...

json+Tomact项目报错怎么办?

在响应请求的时候&#xff0c;如果http响应没有指定响应数据的content-type&#xff0c;浏览器就不知道按照什么格式解析响应体的数据&#xff0c;因为浏览器只知道怎样解析http的行和头&#xff0c;再从头里获取响应体的字节长度和类型&#xff0c;按照你给的长度去截流&#…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...