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官方帮助文档:nginx documentation nginx的配置文件的组成部分: 主配置文件:nginx.conf子配置文件: include conf.d/*.conffastcgi, uwsgi,scgi 等协议相关的配置文件mime.types:…...

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

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

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

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

数据结构代码归纳
线性表 线性表的顺序表示 定义与初始化 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,同样的虚拟机配置:内存2G、cpu一核,物理主机同一台macbookpro(13-2020款),所以硬盘IO读写速度一致。 综上&#x…...

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

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

ARINC 标准全解析:航空电子领域多系列标准的核心内容、应用与重要意义
ARINC标准概述 ARINC标准是航空电子领域一系列重要的标准规范,由航空电子工程委员会(AEEC)编制,众多航空公司等参与支持。这些标准涵盖了从飞机设备安装、数据传输到航空电子设备功能等众多方面,确保航空电子系统的兼…...

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

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

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

力扣面试题 32 - 检查平衡性 C语言解法
题目: 实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7]3/ \9 20/ \15 7 返回 true 。 …...
【机器学习】机器学习的基本分类-监督学习-决策树-ID3 算法
ID3(Iterative Dichotomiser 3)是决策树的一种构造算法,由 Ross Quinlan 在 1986 年提出。它主要用于分类问题,通过信息增益选择特征来构建决策树。ID3 假设数据是离散型特征,且不支持连续型数据。 1. 核心思想 划分标…...

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

ROS[aruco_ros+easy_handeye]手眼标定(眼在手外+UR10e+realsense-d435i)
参考链接: https://zhuanlan.zhihu.com/p/576861119 https://blog.csdn.net/qq_32618327/article/details/120730198 本次在Docker中使用 打印Aruco码:https://chev.me/arucogen/ 选择Dictionary为 Original ArUco(aruco_ros默认这个,如果…...

第九篇:k8s 通过helm发布应用
什么是helm? Helm 是 Kubernetes 的包管理器。Helm 是查找、分享和使用软件构建 Kubernetes 的最优方式。 在红帽系的Linux中我们使用yum来管理RPM包,类似的,在K8s中我们可以使用helm来管理资源对象(Deployment、Service、Ingress…...

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

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

Flume——sink连接Hive的参数配置(属性参数)
目录 配置文件官网属性参数例子 配置文件官网 可以参考官网的说明 属性参数 属性名默认值说明type无(必须指定)组件类型名称,必须是"hive"hive.metastore无(必须指定)元数据仓库地址,例如&…...

Netty面试内容整理-Netty 的应用场景
Netty 是一个高性能、异步的事件驱动网络框架,广泛应用于各种需要高并发、高吞吐量的网络通信场景。以下是 Netty 的常见应用场景: RPC 框架 ● 应用描述: ○ 远程过程调用(RPC)框架用于跨网络调用远程服务,就像调用本地方法一样。 ○...

波特图方法
在电路设计中,波特图为最常用的稳定性余量判断方法,波特图的根源是如何来的,却鲜有人知。 本章节串联了奈奎斯特和波特图的渊源,给出了其对应关系和波特图相应的稳定性余量。 理论贯通,不在于精确绘…...

服务器数据恢复—硬盘掉线导致热备盘同步失败的RAID5阵列数据恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障&#…...

在Ubuntu中运行和管理AppImage
文章目录 什么是AppImage?如何在Ubuntu中运行AppImage?如何管理AppImage?安装AppImageLauncher如何添加AppImage到系统?如何从系统中移除AppImage? 总结 什么是AppImage? AppImage是一种将应用程序打包为单…...

如何查看电脑的屏幕刷新率?
1、按一下键盘的 win i 键,打开如下界面,选择【系统】: 2、选择【屏幕】-【高级显示设置】 如下位置,显示屏幕的刷新率:60Hz 如果可以更改,则选择更高的刷新率,有助于电脑使用起来界面更加流…...

浏览器数据存储方法深度剖析:LocalStorage、IndexedDB、Cookies、OPFS 与 WASM - SQLite
在当今的 Web 开发领域,选择合适的浏览器数据存储方法对于构建高效、功能丰富的应用程序至关重要。随着 Web 应用的不断演进,从早期的静态 HTML 页面到如今复杂的单页应用和本地优先应用,数据存储需求也日益多样化。本文将深入探讨 LocalStor…...

面向金融场景的大模型 RAG 检索增强解决方案
概述 在现代信息检索领域,检索增强生成(Retrieval-Augmented Generation, RAG)模型结合了信息检索与生成式人工智能的优点,从而在特定场景下提供更为精准和相关的答案。在特定场景下,例如金融等领域,用户通…...

经典蓝牙(BT/EDR)蓝牙配对与连接
经典蓝牙的连接过程包括跳频,扫描,配置交换等过程。对ACL链路以及sco的连接过程也做详细的分析。 1. 为什么不配对便无法建立连接? 任何无线通信技术都存在被监听和破解的可能,蓝牙SIG为了保证蓝牙通信的安全性,采用…...

Flask: flask框架是如何实现非阻塞并发的
写在前面:Flask框架是通过多线程/多进程+阻塞的socket实现非阻塞,其本质是基于python的源库socketserver实现的 前言 认识WSGI协议 认识Werkzeug flask是如何实现非阻塞的 本文使用的flask框架为最新的1.1.1版本,所有代码基于python3运行 一:前言 使用过flask或者其他web框…...