Nginx详解 二:配置文件部分
文章目录
- 1. Nginx 配置文件
- 1.1 主配置文件
- 1.2 子配置文件
- 1.3 全局配置
- 1.3.1 修改启动的进程数
- 1.3.2 cpu和work进程绑定(nginx调优)
- 1.3.3 修改PID路径
- 1.3.4 nginx进程的优先级(work进程的优先级)
- 1.3.5 调试work进程打开的文件的个数
- 1.3.6 只有 master进程没有 work进程 (仅测试用)
- 2. event 事件
- 3. http设置
- 3.1 http事件类型
- 3.2 mime
- 3.3 sever 下的 root
- 3.4 server块构建虚拟主机
- 3.4.1 基于域名
- 3.4.2 基于端口
- 3.4.3 基于IP地址
- 3.5 路径别名-----alias
- 3.6 localion模块
- 3.6 语法规则
- 3.7 基于四层的访问控制 ----- access模块
- 3.7.1 IP地址访问限制(允许或拒绝特定的IP地址访问)
- 3.7.2 请求方法访问控制(允许或拒绝特定HTTP请求方法)
- 3.7.3 URI访问控制(允许或拒绝特定URI或URI模式的访问)
- 3.8 验证模块
- 3.8.1 htpasswd命令
- 3.8.2 示例
- 3.9 自定义错误页面
- 3.10 修改日志位置存放
- 3.10.1 示例
- 3.11 检测文件是否存在
- 3.12 keepalive ---长连接
- 3.12.1 keepalive_timeout
- 3.12.2 keepalive_requests
- 3.12.3 keepalive_disable
- 3.13 作为下载服务器配置
- 3.13 其他设置
1. Nginx 配置文件
1.1 主配置文件
主配置文件:nginx.conf
#主配置文件格式main block:主配置段,即全局配置段,对http,mail都有效#事件驱动相关的配置 同步
event {...
}
#http/https 协议相关配置段
http {...
}
#默认配置文件不包括下面两个块
#mail 协议相关配置段
mail {...
}
#stream 服务器相关配置段
stream {负载均衡...
}
#yum安装的nginx.conf示例
vim /etc/nginx/nginx.conf
1.2 子配置文件
子配置文件: include conf.d/*.conf
ss
子配置文件一般在主配置文件的http部分。
http
块中可以包含多个子配置文件,常见的子配置文件
server
块:用于配置HTTP服务器的具体行为,包括监听的端口、虚拟主机的配置、请求处理逻辑等。
location
块:用于指定不同URL请求的处理方式,例如静态文件的服务、反向代理等。
upstream
块:用于配置反向代理的目标服务器列表。
include
指令:用于引入其他的子配置文件,可以将一些通用的配置项单独放在一个文件中,然后通过include指令引入。
1.3 全局配置
1.3.1 修改启动的进程数
通过使用 auto 参数,Nginx 可以根据系统的负载情况智能地分配工作进程,以提供更好的性能和资源利用率。
修改配置文件中worker_processes项
vim /apps/nginx/conf/nginx.conf
#编辑主配置文件
nginx -s reopen
#重新加载
ps axo pid,cmd,psr,ni|grep nginx
#查看nginx的 worker数量
1.3.2 cpu和work进程绑定(nginx调优)
将Nginx工作进程绑定到指定的CPU核心极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能
worker_cpu_affinity 块指令用于控制 worker 进程与 CPU 的亲和性
vim /apps/nginx/conf/nginx.conf
#编辑配置文件user nginx;
worker_processes 2;
worker_cpu_affinity 00000001 00000010;
#绑定到 第一 和 第二块cpu上
error_log /apps/nginx/logs/error.log;
#指定报错文件的路径
nginx -t
#语法检查
ps axo pid,cmd,psr,ni|grep -v grep |grep nginx|sort -n
1.3.3 修改PID路径
vim /app/nginx/conf/nginx.conf
1.3.4 nginx进程的优先级(work进程的优先级)
当你想将nginx的work进程的优先级调高 可以使用nice设置
nice的优先级是 -20 到 19worker_priority 0;
#工作进程优先级,-20~20(19)
#首先查看优先级ps axo pid,cmd,psr,ni|grep nginx|sort -n
#查看默认优先级,默认优先级为0
worker_priority -20;
#添加此项
nginx -t
#语法检查
nginx -s reload
#重新加载ps axo pid,cmd,psr,ni|grep nginx|sort -n
#查看优先级
1.3.5 调试work进程打开的文件的个数
所有worker进程能打开的文件数量上限,包括:Nginx的所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制.最好与ulimit -n 或者limits.conf的值保持一致,只要机器性能够多加几个也没问题
vim /apps/nginx/conf/nginx.conf
#首先修改主配置文件#添加
worker_rlimit_nofile 65536;
临时修改
ulimit -n 30000
#修改单个进程能打开的最大文件数为 30000
#仅应用于当前会话即不会永久修改限制ulimit -a
#显示当前用户的所有资源限制信息
永久修改(需要修改pam认证模块)
vim /etc/security/limits.conf
#最后加入* soft core unlimited
* hard core unlimited
* soft nproc 1000000
* hard nproc 1000000
* soft nofile 1000000
* hard nofile 1000000
* soft memlock 32000
* hard memlock 32000
* soft msgqueue 8192000
* hard msgqueue 8192000`nproc`(最大进程数限制)的软限制和硬限制都设置为 1000000,当前用户在单个会话中可以创建的最大进程数为 1000000`nofile`(打开文件描述符限制)的软限制和硬限制都设置为 1000000,这意味着当前用户在单个会话中可以使用的最大文件描述符数将被限制为 1000000。软限制是软性限制,用户可以根据需要进行调整,而硬限制是硬性限制,一旦设定,用户无法超过该限制`memlock`(锁定内存限制)的软限制和硬限制都设置为 32000,这意味着当前用户在单个会话中可以锁定的最大内存量为 32000KB`msgqueue`(消息队列限制)的软限制和硬限制都设置为 8192000,这意味着当前用户在单个会话中可以使用的最大消息队列大小为 8192000字节
reboot
#重启生效ulimit -a
#显示当前用户的所有资源限制信息
1.3.6 只有 master进程没有 work进程 (仅测试用)
实际生产中使用较少
master_process off|on;
#是否开启Nginx的master-worker工作模式,仅用于开发调试场景,默认为on
2. event 事件
在Nginx的主配置文件中,events事件用于配置Nginx服务器的事件模块相关参数,控制Nginx服务器在处理连接请求时的行为
常见配置参数
-
worker_connections:指定每个工作进程可以同时处理的最大连接数。
-
multi_accept:指定是否一次接受多个连接。默认情况下,Nginx在每个循环中只接受一个连接,但设置multi_accept为"on"后可以同时接受多个连接。
-
use:指定Nginx使用的事件模块。常见的事件模块有"epoll"、"kqueue"和"eventport"等。
#示例
events {worker_connections 2048; #设置单个工作进程的最大并发连接数use epoll;accept_mutex on; onmulti_accept on;
#指定了每个工作进程可以处理的最大连接数为2048,启用了多个连接同时接受,以及使用了epoll事件模块
3. http设置
3.1 http事件类型
include
:引入其他配置文件,通常用于加载 MIME 类型配置文件。
default_type
:指定默认的 MIME 类型。
server
:定义一个或多个虚拟主机。
listen
:指定该虚拟主机监听的端口。
server_name
:指定域名,用于匹配请求的主机头。
root
:指定虚拟主机的根目录。
location
:用于匹配不同的 URL,并定义相关配置规则。
#基础格式
http {...... #各server的公共配置server { #每个server用于定义一个虚拟主机,第一个server为默认虚拟服务器...}server { ...server_name #虚拟主机名root #主目录alias #路径别名location [OPERATOR] URL { #指定URL的特性...if CONDITION {...}}}
}
#协议配置详解
http {include mime.types; #导入支持的文件类型,是相对于/apps/nginx/conf的目录default_type application/octet-stream; #除mime.types中文件类型外,设置其它文件默认类型,访问其它类型时会提示下载不匹配的类型文件
#日志配置部分#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 logs/access.log main;
#自定义优化参数sendfile on; #tcp_nopush on; #在开启了sendfile的情况下,合并请求后统一发送给客户端。#tcp_nodelay off; #在开启了keepalived模式下的连接是否启用TCP_NODELAY选项,当为off时,延迟0.2s发送,默认On时,不延迟发送,立即发送用户响应报文。#keepalive_timeout 0;keepalive_timeout 65 65; #设置会话保持时间,第二个值为响应首部:keepAlived:timeout=65,可以和第一个值不同#gzip on; #开启文件压缩server {listen 80; #设置监听地址和端口server_name localhost; #设置server name,可以以空格隔开写多个并支持正则表达式,如:*.kgc.com www.kgc.* ~^www\d+\.kgc\.com$ default_server #charset koi8-r; #设置编码格式,默认是俄语格式,建议改为utf-8#access_log logs/host.access.log main;location / {root html;index index.html index.htm;}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#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$ { #以http的方式转发php请求到指定web服务器# proxy_pass http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ { #以fastcgi的方式转发php请求到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 { #拒绝web形式访问指定文件,如很多的网站都是通过.htaccess文件
来改变自己的重定向等功能。# deny all;#}location ~ /passwd.html {deny all;}}# another virtual host using mix of IP-, name-, and port-based configuration##server { #自定义虚拟server
3.3.1 MIME
范例: 识别php文件为text/html# listen 8000;# listen somename:8080;# server_name somename alias another.alias;# location / { # root html;# index index.html index.htm; #指定默认网页文件,此指令由
ngx_http_index_module模块提供# }#}# HTTPS server##server { #https服务器配置# listen 443 ssl;# server_name localhost;# ssl_certificate cert.pem;# ssl_certificate_key cert.key;# ssl_session_cache shared:SSL:1m;# ssl_session_timeout 5m;# ssl_ciphers HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers on;# location / {# root html;# index index.html index.htm;# }#}
3.2 mime
在Nginx中,“mime” 是一种配置指令,用于设置 MIME 类型与文件扩展名的映射关系
vim /etc/nginx/mime.types
#查看当前nginx配置mime类型表
3.3 sever 下的 root
在Nginx配置中,"root"指令用于设置服务器块(server block)的根目录,即指明软件的根目录。
通常,"root"指令位于Nginx配置文件中的服务器块(server block)中。
server {listen 80;server_name example.com;root /var/www/html;location / {...}...
}
#指定了服务器块的根目录为"/var/www/html"
#访问该服务器的网站时,Nginx会在"/var/www/html"文件夹中查找并提供相应的静态文件
3.4 server块构建虚拟主机
以PC端和手机端示例:
3.4.1 基于域名
vim /etc/nginx/nginx.conf
#修改配置文件 要放在 http 模块里#添加
include /apps/nginx/conf.d/*.conf;
mkdir -p /apps/nginx/conf.d/
#建立子配置文件vim pc.conf
vim mobile.conf
#分别编写PC端和手机端配置文件#PC端
server{listen 192.168.67.100:80;server_name www.pc.com;location / {root /data/nginx/html/pc;}
}#mobile端
server {listen 80;server_name www.mobile.com;root /data/nginx/html/mobile/;
}
mkdir /data/nginx/html/pc -pv
mkdir /data/nginx/html/mobile -pv
#构建数据文件夹
echo pc > /data/nginx/html/pc/index.html
echo moblie > /data/nginx/html/mobile/index.html#构建数据文件
##切换到测试机
#编辑本地hosts文件,添加地址映射vim /etc/hosts
#测试是否成功
curl www.mobile.com
curl www.pc.com
3.4.2 基于端口
服务端
#编辑子配置文件 mobile.conf,修改端口号
server{listen 192.168.67.100:8080;server_name www.mobile.com;root /data/nginx/html/moblie;}#computer.conf 不变
server{listen 192.168.67.100:80;server_name www.pc.com;root /data/nginx/html/pc;
}
#测试
curl 192.168.67.100:80
curl 192.168.67.100:8080
3.4.3 基于IP地址
#服务端
#配置新网卡
#编辑子配置文件mobile.conf,修改IP地址
cd /apps/nginx/conf.d/
vim mobile.confserver{listen 192.168.67.155:80;server_name www.mobile.com;root /data/nginx/html/mobile;}#computer.conf不变
server{listen 192.168.67.100:80;server_name www.pc.com;root /data/nginx/html/pc;
}nginx -t reload
#重新加载
#测试
curl 192.168.67.155
curl 192.168.67.100
3.5 路径别名-----alias
在 Nginx 中,alias 用于创建一个路径别名的指令。
别名可以用于将文件或目录从一个位置映射到另一个位置,提供更灵活的访问控制
server {listen 192.168.67.155:80;server_name www.mobile.com;location /test {alias /data/nginx/html/mobile;
}
}
3.6 localion模块
在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;
#官方帮助
http://nginx.org/en/docs/http/ngx_http_core_module.html
3.6 语法规则
#格式
location [ = | ~ | ~* | ^~ ] uri { ... }= #用于标准uri前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立即处理请求
^~ #用于标准uri前,表示包含正则表达式,并且匹配以指定的正则表达式开头,对URI的最左边部分做匹配检查,不区分字符大小写
~ #用于标准uri前,表示包含正则表达式,并且区分大小写
~* #用于标准uri前,表示包含正则表达式,并且不区分大写
不带符号 #匹配起始于此uri的所有的uri\ #用于标准uri前,表示包含正则表达式并且转义字符。可以将 . * ?等转义为普通符号#匹配优先级从高到低:
=, ^~, ~/~*, 不带符号
#示例
location = / {[ configuration A ]
}
location / {[ configuration B ]
}
location /documents/ {[ configuration C ]
}
location ^~ /images/ {[ configuration D ]
}
location ~* \.(gif|jpg|jpeg)$ {[ configuration E ]
}访问路径是 / # A B 能匹配,A优先级高 ,A
访问路径是 /index.html #只有B
访问路径是 /documents/document.html #B C能匹配 C精确度高 所以C
访问路径是 /images/1.gif # B D E 能匹配,D的优先级高,D
访问路径是 /documents/1.jpg # B C E 能匹配, E
3.7 基于四层的访问控制 ----- access模块
Nginx的access模块允许用户定义基于IP地址、请求方法、URI等条件的访问规则,以控制客户端对NGINX服务器上特定资源的访问
3.7.1 IP地址访问限制(允许或拒绝特定的IP地址访问)
location / {deny 192.168.67.1;
}
#仅拒绝192.168.67.1访问
location / {allow 192.168.67.0/24;deny all;
}
#仅允许192.168.67.0网段访问
3.7.2 请求方法访问控制(允许或拒绝特定HTTP请求方法)
if ($request_method != GET) {return 403;
}
#所有不是GET方法的访问返回403
3.7.3 URI访问控制(允许或拒绝特定URI或URI模式的访问)
location /image {deny all;
}
#拒绝特定URI的访问
location ~ ^/www/ {allow all;
}
#允许特定URI模式的访问
3.8 验证模块
3.8.1 htpasswd命令
yum install httpd-tools -y
#安装命令
#常用命令
-c 代表新建用户名和密码对应的文件
-b 将密码跟在用户名后
第一次
htpasswd -c 文件路径 姓名 交互式生成密码
htpasswd -bc 文件路径 姓名 密码 直接将密码跟在后面
非第一次
htpasswd 文件路径 姓名 交互式生成密码
htpasswd -b 文件路径 姓名 密码 直接将密码跟在后面
3.8.2 示例
vim /apps/nginx/conf.d/pc.conf
#编辑子配置文件#配置验证模块
server {listen 192.168.67.100:80;server_name www.scj.com;location / {root /data/nginx/html/pc;}location /admin{root /data/nginx/html/pc;auth_basic "admin site";#提示信息,不是所有浏览器都有用auth_basic_user_file /apps/nginx/conf.d/.httpuser;#密码文件存放位置}
}nginx -s reload
#重新加载
htpasswd -bc /apps/nginx/conf.d/.httpuser scj 123456
#创建一个.htpasswd文件,并添加一个使用Basic认证的用户名和密码
cat /apps/nginx/conf.d/.httpuser
#查看是否创建成功
#验证
打开虚拟机内置火狐浏览器
192.168.67.100/admin
3.9 自定义错误页面
vim /apps/nginx/conf/nginx.conf
~~~
配置文件中可用位置:http, server, location, if in location
~~~bash
#格式
error_page code ... [=[response]] uri;
页面错误代码
error_page 固定写法
code 响应码
= 可以将响应码转换
uri 访问连接
示例
#新建报错显示目录和文件
mkdir /data/nginx/html/pc/error/
cd /data/nginx/html/pc/error/vim error.html #错误页面
vim /apps/nginx/conf.d/pc.conf
#编辑子配置文件自定义 错误码
server {listen 192.168.67.100:80;server_name www.scj.com;root /data/nginx/html/pc;error_page 404 =302 /error.html;#把错误码 404 指定成302 注意此处的error.html 需要真实存在建立的页面必须一致location = /error.html {root /data/nginx/html/pc/error/;}location / {root /data/nginx/html/pc;}}nginx -t reload
#重新加载
在随便一个浏览器随便输入一个错误的连接,观察页面
3.10 修改日志位置存放
通过修改日志的路径,可以实现不同网站的日志单独存放
3.10.1 示例
mkdir /data/nginx/logs
#新建日志存放目录
#编辑子配置文件,指定日志存放位置
vim /apps/nginx/conf.d/mobile.confserver{listen 80;server_name www.mobile.com;root /data/nginx/html/mobile/;error_log /data/nginx/logs/m_error.log;access_log /data/nginx/logs/m_access.log;
}vim /apps/nginx/conf.d/pc.confserver{listen 80;server_name www.pc.com;root /data/nginx/html/pc;error_log /data/nginx/logs/pc_error.log;access_log /data/nginx/logs/pc_access.log;
}nginx -s reload
#重新加载
3.11 检测文件是否存在
Nginx 的 try_files 指令用于指定在资源文件不存在时如何处理请求。
默认开启
用于server、location
#语法格式
#方式一
try_files file ... uri;file 表示要尝试的文件路径,
uri 则表示当文件不存在时转发请求的路径。#方式二
try_files file ... =code;=code 表示文件不存在时 返回的状态码
#只会返回指定的 HTTP 响应码,而不会转发请求到指定的 uri
示例
#服务端
mkdir /data/nginx/html/pc/about
#新建寻找失败跳转页面echo "default page" >> /data/nginx/html/pc/about/default.htmlvim /apps/nginx/conf.d/pc.conf
#修改配置文件
server{
listen 192.168.67.100:80;
server_name www.pc.com;
root /data/nginx/html/pc;
location / {
root root /data/nginx/html/pc;
try_files $uri $uri.html $uri/index.html
/about/default.html;
}
}#建立测试文件
cd /data/nginx/html/pc/;touch test
echo "find it" >> test
#客户端
curl www.pc.com/test
#查找一个存在的文件
curl www.pc.com/tes
#查找一个不存在的文件
3.12 keepalive —长连接
HTTP Keep-Alive 功能用于实现长连接,允许客户端和服务器之间的 TCP 连接在发送完一个请求后保持打开状态,以便在同一连接上发送多个请求和响应。
可以加在全局或者 server 。
keepalive 配置指令仅对 HTTP/1.0 和 HTTP/1.1 版本的连接有效。
对于 HTTP/2 连接,keepalive 功能是默认启用的,并且无需额外配置。
3.12.1 keepalive_timeout
keepalive_timeout timeout [header_timeout];
#设定保持连接超时时长,0表示禁止长连接,默认为75s,通常配置在http字段作为站点全局配置示例:
keepalive_timeout 60 65;
#开启长连接后,返回客户端的会话保持时间为60s,单次长连接累计请求达到指定次数请求或65秒就会被断开,后面的60为发送给客户端应答报文头部中显示的超时时间设置为60s:如不设置客户端将不显示超时时间。
当一个客户端与服务器之间的连接完成一个请求后的等待时间。
如果在这个时间内没有收到新的请求,服务器会关闭连接。
这个时间是以秒为单位的,默认值是 75 秒。
3.12.2 keepalive_requests
keepalive_requests number;
#在一次长连接上所允许请求的资源的最大数量,默认为100次示例:
keepalive_requests 3;
#最大三个连接
3.12.3 keepalive_disable
keepalive_disable none | browser ...;
#对哪种浏览器禁用长连接
3.13 作为下载服务器配置
ngx_http_autoindex_module 模块处理以斜杠字符 “/” 结尾的请求,并生成目录列表,可以做为下载服务配置使用
http://nginx.org/en/docs/http/ngx_http_autoindex_module.html
#官方文档
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
#变量提供 限制 变量优先级高
示例:
location /download {autoindex on;#开启下载服务器autoindex_exact_size on;#开启确切大小不建议开启autoindex_localtime on;#使用当地时间limit_rate 1024k;#所有人限速1024k,默认单位是字节数set $limit_rate 2M;#谁先生效alias /opt/download;}
3.13 其他设置
open_file_cache off; #是否缓存打开过的文件信息
open_file_cache max=N [inactive=time];
#nginx可以缓存以下三种信息:
(1) 文件元数据:文件的描述符、文件大小和最近一次的修改时间
(2) 打开的目录结构
(3) 没有找到的或者没有权限访问的文件的相关信息
max=N:#可缓存的缓存项上限数量;达到上限后会使用LRU(Least recently used,最近最少使用)算法实现管理
inactive=time:#缓存项的非活动时长,在此处指定的时长内未被命中的或命中的次数少于open_file_cache_min_uses
#指令所指定的次数的缓存项即为非活动项,将被删除
open_file_cache_valid time;
#缓存项有效性的检查验证频率,默认值为60s
open_file_cache_errors on | off;
#是否缓存查找时发生错误的文件一类的信息,默认值为off
open_file_cache_min_uses number;
#open_file_cache指令的inactive参数指定的时长内,至少被命中此处指定的次数方可被归类为活动项,默认值为1范例:
open_file_cache max=10000 inactive=60s;
#最大缓存10000个文件,非活动数据超时时长60s
open_file_cache_valid 60s;
#每间隔60s检查一下缓存数据有效性
open_file_cache_min_uses 5;
#60秒内至少被命中访问5次才被标记为活动数据
open_file_cache_errors on;
#缓存错误信息limit_except method ... { ... },仅用于location
#限制客户端使用除了指定的请求方法之外的其它方法
method:GET, HEAD, POST, PUT, DELETE,MKCOL, COPY, MOVE, OPTIONS, PROPFIND,
PROPPATCH, LOCK, UNLOCK, PATCH
limit_except GET {allow 192.168.67.101;deny all;
}
#除了GET和HEAD 之外其它方法仅允许192.168.67.0/24网段主机使用
相关文章:

Nginx详解 二:配置文件部分
文章目录 1. Nginx 配置文件1.1 主配置文件1.2 子配置文件1.3 全局配置1.3.1 修改启动的进程数1.3.2 cpu和work进程绑定(nginx调优)1.3.3 修改PID路径1.3.4 nginx进程的优先级(work进程的优先级)1.3.5 调试work进程打开的文件的个…...

SMC_TRAFO_GantryCutter2 (FB) 带刀片旋向龙门
裁布机:刀片按XY走向,偏转刀片角度。 pi:目标位置矢量(x,y),插值器的输出 v:当前路径切线的矢量,插值器的输出 dOffsetX: x轴的附加偏移 dOffsetY…...

『PyQt5-Qt Designer篇』| 07 Qt Designer中栅格布局和表单布局的使用
07 Qt Designer中栅格布局和表格布局的使用 1 栅格布局1.1 按钮布局1.2 栅格布局中拖入控件1.3 保存并调用2 表单布局2.1 标签+输入控件2.2 保存并调用3 组合水平和垂直布局1 栅格布局 1.1 按钮布局 拖入几个按钮,如图: 选中所有按钮,右键点击布局-栅格布局: 之后可以看到…...

无涯教程-分类算法 - 多项式逻辑回归模型函数
Logistic逻辑回归的另一种有用形式是多项式Logistic回归,其中目标或因变量可以具有3种或更多可能的unordered类型,即没有定量意义的类型。 用Python实现 现在,无涯教程将在Python中实现上述多项式逻辑回归的概念。为此,使用…...

【C++】开源:Box2D动力学库配置与使用
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Box2D动力学库配置与使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,…...

Druid连接池和Apache的DBUtils
背景 jdbc连接数据库存在着大批量用户进行短时间的SQL连接操作的 需求,而普通用户连接后直接断开与数据库的连接,下次连接需要重新建立桥梁,再频繁访问时。这是很消耗性能的一个操作,因此诞生了数据库连接池技术。提前创建 一些连…...

怎样快速选择正确的可视化图表?
数据可视化的图表类型十分丰富,好的图表可以有效、清晰地呈现数据的信息。对于用户而言,选择正确的图表是十分关键的,不仅可以达到“一图胜千言”的效果,而且会直接影响分析的结果。 用户选择正确的数据可视化图表前,…...

6路液体水位检测芯片VK36W6D SOP16 抗电源干扰及手机干扰特性好
产品品牌:永嘉微电/VINKA 产品型号:VK36W6D 封装形式:SOP16/QFN16L 详细资料:13.5/5.474/4.703 概述 VK36W6D具有6个触摸检测通道,可用来检测6个点的水位。该芯片具有较高的集成度,仅需极少的外部组件便…...

【设备树笔记整理6】中断系统中的设备树
1 中断概念的引入与处理流程 1.1 中断处理框图 1.2 中断程序的使用 主函数() while(1) {do_routine_task(); }中断处理函数() {handle_interrupt_task(); }如何调用中断处理函数? 1.3 ARM对异常(中断)的处理过程 (1)初始化 ① 设置中断…...

微信小程序下载后端返回的文件流
downtest() {let temp {"title": ["排名", "车号", "车队", "车手", "领航", "赛段成绩", "距首车成绩", "距前车差距", "发车时间", "冲刺时间", "赛段…...

Autoware.universe部署04:universe传感器ROS2驱动
文章目录 一、激光雷达驱动二、IMU驱动2.1 上位机配置4.2 IMU校准4.3 安装ROS驱动 三、CAN驱动四、相机驱动4.1 安装驱动4.2 修改相机参数 五、GNSS驱动 本文介绍了 Autoware.universe 各个传感器ROS2驱动,本系列其他文章: Autoware.universe部署01&…...

Spring boot如何工作
越来越方便了 java技术生态发展近25年,框架也越来越方便使用了,简直so easy!!!我就以Spring衍生出的Spring boot做演示,Spring boot会让你开发应用更快速。 快速启动spring boot 请参照官网 Spring | Quic…...

代码随想录打卡—day45—【DP】— 8.29 完全背包应用
1 70. 爬楼梯(完全背包版) 70. 爬楼梯 完全背包装满的选法排列的套路,AC代码: class Solution { public:/*完全背包的思路:1 2是两个物体 可以无限取*/int dp[50]; // 能爬到第i楼的选法的排列数/*dp[j] dp[j - i];dp[0] 1fo…...

2023.8.28日论文阅读
文章目录 NestFuse: An Infrared and Visible Image Fusion Architecture based on Nest Connection and Spatial/Channel Attention Models(2020的论文)本文方法 LRRNet: A Novel Representation Learning Guided Fusion Network for Infrared and Visible Images本文方法学习…...

HAproxy(四十七)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、概述 1.1 简介 1.2 核心功能 1.3 关键特性 1.4 应用场景 二、安装 1.内核配置 2.编译安装 3. 建立配置文件 4. 添加为系统服务 5. 添加3和5运行级别下自启动…...

Java实战场景下的ElasticSearch
文章目录 前言一、环境准备二、RsetAPI操作索引库1.创建索引库2.判断索引库是否存在3.删除索引库 二、RsetAPI操作文档1.新增文档2.单条查询3.删除文档4.增量修改5.批量导入6.自定义响应解析方法 四、常用的查询方法1.MatchAll():查询所有2.matchQuery():单字段查询3.multiMatc…...

拓世科技集团 | “书剑人生”李步云学术思想研讨会暨李步云先生九十华诞志庆
2023年,中国改革开放迎来了45周年,改革春风浩荡,席卷神州大地,45年间,中国特色社会主义伟大事业大步迈入崭新境界,一路上结出了饶为丰硕的果实。中华民族在这45年间的砥砺前行,不仅使中国的经济…...

前端须知名词解释
目录 一、多维转一维 二、一维转多维 一维转多维——使用场景:分页 三、判断当前元素是否为数组 四、判断当前元素是否是空对象 五、数字分割符:提高数字可读性 六、模糊盒子(怪异盒子)与标准盒模型 七、css的filter属性 …...

React性能优化之memo缓存函数
React是一个非常流行的前端框架,但是在处理大型应用程序时,性能可能会成为一个问题。为了解决这个问题,React提供了一个称为memo的功能,它可以缓存函数并避免不必要的重新渲染。 memo是React中的一个高阶组件(HOC&…...

2023年高教社杯 国赛数学建模思路 - 案例:ID3-决策树分类算法
文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法,就是频繁模…...

C# Emgu.CV 条码检测
效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Emgu.CV; using Emgu.CV.Util; using static Emgu.C…...

VueRouter的基本使用
路由的基本使用 文章目录 路由的基本使用01-VueRouterVueRouter的使用 ( 5 2)综合代码 拓展:组件存放问题 什么是路由呢? 在生活中的路由:设备和IP的映射关系 在Vue中:路径 和 组件 的 映射 关系。 01-Vu…...

网工笔记:快速认识7类逻辑接口
逻辑接口是指能够实现数据交换功能但物理上不存在、需要通过配置建立的接口。逻辑接口需要承担业务传输。 下面是我整理了7款常见的逻辑接口。 接口类型 描述 Eth-Trunk接口 具有二层特性和三层特性的逻辑接口,把多个以太网接口在逻辑上等同于一个逻辑接口&…...

MySQL中的free链表,flush链表,LRU链表
一、free链表 1、概述 free链表是一个双向链表数据结构,这个free链表里,每个节点就是一个空闲的缓存页的描述数据块的地址,也就是说,只要你一个缓存页是空闲的,那么他的描述数据块就会被放入这个free链表中。 刚开始数…...

mac使用VsCode远程连接服务器总是自动断开并要求输入密码的解决办法
在mac中使用vscode远程连接服务器,时常会出现自动断开并要求重新输入服务器密码的问题,接下来让我们来解决它: 1、首先,在本地创建公钥: ssh-keygen 这条命令执行之后,出现提示直接回车即可;直…...

Python爬虫分布式架构 - Redis/RabbitMQ工作流程介绍
在大规模数据采集和处理任务中,使用分布式架构可以提高效率和可扩展性。本文将介绍Python爬虫分布式架构中常用的消息队列工具Redis和RabbitMQ的工作流程,帮助你理解分布式爬虫的原理和应用。 为什么需要分布式架构? 在数据采集任务中&#…...

【ES】笔记-集合介绍与API
集合是一种不允许值重复的顺序数据结构。 通过集合我们可以进行并集、交集、差集等数学运算, 还会更深入的理解如何使用 ECMAScript 2015(ES2015)原生的 Set 类。 构建数据集合 集合是由一组无序且唯一(即不能重复)的项组成的。该数据结构使用了与有限集合相同的数…...

Spring Boot(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot 前后端分离)【五】
😀前言 本篇博文是关于Spring Boot(Vue3ElementPlusAxiosMyBatisPlusSpring Boot 前后端分离)【五】,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章…...

二、Tomcat 安装集
一、Tomcat—Docker 1. 拉取镜像 # 1、拉取镜像(tomcat版本8,jre版本8)。 docker pull tomcat:8-jre82. 启动容器 # 2、启动一个tomcat容器。 docker run -id --name tomcat -p 8080:8080 镜像ID # 3、宿主机里新建/root/tomcat目录&#x…...

CentOS 上通过 NFS 挂载远程服务器硬盘
NFS(Network File System)是一种用于在不同的计算机系统之间共享文件和目录的协议。它允许一个计算机系统将其文件系统的一部分或全部内容暴露给其他计算机系统,使其能够像访问本地文件一样访问这些内容。在这篇博客中,我们将介绍…...