nginx配置文件介绍及示例

一、nginx配置文件一共有main,http,server,location,upstream,stream,events7个块。

step 1: main 块

作用:main 块是 Nginx 配置文件的顶级块,用于设置一些全局的参数和配置,这些配置会影响整个 Nginx 服务器的运行行为。
常见配置指令:
user:指定 Nginx 工作进程运行的用户和用户组,例如 user nginx nginx;。
worker_processes:设置 Nginx 工作进程的数量,一般根据服务器的 CPU 核心数来确定,如 worker_processes 4; 表示启动 4 个工作进程。
error_log:定义错误日志的路径和级别,如 error_log /var/log/nginx/error.log error;。
pid:指定 Nginx 主进程的进程 ID 文件的路径,例如 pid /var/run/nginx.pid;。

step 2:http 块

作用:http 块用于配置 HTTP 相关的功能和参数,包括服务器虚拟主机的定义、请求处理规则、缓存设置、日志配置等,是 Nginx 处理 HTTP 流量的核心配置部分。
常见配置指令:
server:用于定义一个虚拟主机,在其中可以配置监听端口、域名、请求处理的 location 等,例如:
access_log:配置访问日志的路径和格式,如 access_log /var/log/nginx/access.log combined;。
sendfile:设置是否启用 sendfile 功能来提高文件传输效率,如 sendfile on;。
gzip:开启或关闭 Gzip 压缩,并配置相关参数,如压缩级别、压缩的 MIME 类型等。

step 3:server 块

作用:server 块定义了一个虚拟主机,用于处理特定域名或 IP 地址的 HTTP 请求。一个 http 块中可以包含多个 server 块,每个 server 块对应一个不同的虚拟主机。
常见配置指令:
listen:指定虚拟主机监听的端口,如 listen 80; 或 listen 443 ssl; 表示监听 80 端口或 443 端口并启用 SSL。
server_name:设置虚拟主机对应的域名或 IP 地址,可以是单个域名,也可以是多个域名的列表,如 server_name example.com www.example.com;。
location:用于配置针对不同 URL 路径的请求处理规则。

step 4:location 块

作用:location 块用于根据请求的 URL 路径来匹配并处理请求,可以在 server 块内定义多个 location 块,以实现对不同路径的请求进行不同的处理。
常见配置指令:
root:指定请求的根目录,如 root /var/www/html; 表示将以该目录作为请求的根目录来查找文件。
index:设置默认的索引文件,如 index index.html index.htm; 表示当请求的路径为目录时,优先查找并返回这些索引文件。
proxy_pass:用于将请求反向代理到后端服务器,如 proxy_pass http://backend_server; 表示将请求转发到名为 backend_server 的后端服务器。

step 5:upstream 块

作用:upstream 块用于定义一组后端服务器,以便在进行反向代理或负载均衡时使用,可以在 http 块或 server 块中使用。
常见配置指令:
server:指定后端服务器的地址和端口,如 server backend1.example.com; 或 server backend2.example.com:8080;。
weight:为后端服务器设置权重,用于负载均衡时调整服务器的负载分配比例,如 server backend1.example.com weight=3; 表示该服务器的权重为 3,相对权重更高,会接收更多的请求。

step 6:stream 块

作用:stream 块用于处理 TCP 和 UDP 流量,类似于 http 块对 HTTP 流量的处理,可以定义 TCP 或 UDP 服务器、负载均衡等配置。
常见配置指令:
server:在 stream 块中定义一个 TCP 或 UDP 服务器,如 server { listen 1234; proxy_pass backend_server:5678; } 表示监听 1234 端口,并将流量代理到后端服务器的 5678 端口。
upstream:与 http 中的 upstream 类似,用于定义一组后端的 TCP 或 UDP 服务器,实现流量的负载均衡。

step 7:events 块

作用:events 块用于配置 Nginx 的事件处理模型相关的参数,主要影响 Nginx 对连接的处理方式和性能表现。
常见配置指令:
worker_connections:设置每个工作进程允许的最大连接数,例如 worker_connections 1024; 表示每个工作进程最多可以处理 1024 个并发连接。
use:指定使用的事件处理模型,如 use epoll; 表示使用 epoll 模型,不同的操作系统可能支持不同的事件处理模型,选择合适的模型可以提高性能。

二、常用的配置示例。

示例一:三节点192.168.0.90:81,192.168.0.91:81,192.168.0.92:81配置负载均衡,监听端口为80。

http {upstream backend_servers {server 192.168.0.90:81;server 192.168.0.92:81;server 192.168.0.91:81;}server {listen 80;server_name your_domain_name;  # 替换为你的域名或IP地址(如果需要通过域名访问)location / {proxy_pass http://backend_servers;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}}
}

示例二:三节点192.168.0.90:81,192.168.0.91:81,192.168.0.92:81配置负载均衡,监听端口为80,算法为加权轮询,30秒内如果有3次连接失败,停止向该服务器转发请求。

http {upstream backend_servers {server 192.168.0.90:81 weight=3 max_fails=3 fail_timeout=30s;server 192.168.0.92:81 weight=1 max_fails=3 fail_timeout=30s;server 192.168.0.91:81 weight=2 max_fails=3 fail_timeout=30s;}server {listen 80;server_name your_domain_name;  # 替换为你的域名或IP地址(如果需要通过域名访问)location / {proxy_pass http://backend_servers;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}}
}

示例三:三节点192.168.0.90:81,192.168.0.91:81,192.168.0.92:81配置负载均衡,监听端口为80;算法为加权轮询,30秒内如果有3次连接失败,停止向该服务器转发请求;开启与后端服务器的长连接。

http {upstream gdmp_servers {server 192.168.0.90:81 weight=3 max_fails=3 fail_timeout=30s;server 192.168.0.92:81 weight=1 max_fails=3 fail_timeout=30s;server 192.168.0.91:81 weight=2 max_fails=3 fail_timeout=30s;     }server {listen 80;server_name your_domain_name;  # 替换为你的域名或IP地址(如果需要通过域名访问)location / {#转发的后端服务器地址proxy_pass http://gdmp;#代理请求头中客户端请求的目标域名或 IP 地址和端口号proxy_set_header Host $host;#获取真实客户端 IP 地址proxy_set_header X-Real-IP $remote_addr;# 开启与后端服务器的长连接proxy_http_version 1.1;proxy_set_header Connection "";}}
}

示例四:三节点192.168.0.90:81,192.168.0.91:81,192.168.0.92:81配置负载均衡,监听端口为80;算法为加权轮询,30秒内如果有3次连接失败,停止向该服务器转发请求;开启与后端服务器的长连接,配置超时时间。

http {upstream gdmp_servers {server 192.168.0.90:81 weight=3 max_fails=3 fail_timeout=30s;server 192.168.0.92:81 weight=1 max_fails=3 fail_timeout=30s;server 192.168.0.91:81 weight=2 max_fails=3 fail_timeout=30s;# 设置连接超时时间为300秒keepalive_timeout 300s;       }server {listen 80;server_name your_domain_name;  # 替换为你的域名或IP地址(如果需要通过域名访问)# 设置连接后端服务器的超时时间为300秒proxy_connect_timeout 300s;# 设置从后端服务器读取数据的超时时间为300秒proxy_read_timeout 300s;# 设置向后端服务器发送数据的超时时间为300秒proxy_send_timeout 300slocation / {#转发的后端服务器地址proxy_pass http://gdmp;#代理请求头中客户端请求的目标域名或 IP 地址和端口号proxy_set_header Host $host;#获取真实客户端 IP 地址proxy_set_header X-Real-IP $remote_addr;# 开启与后端服务器的长连接proxy_http_version 1.1;proxy_set_header Connection "";}}
}

示例五:三节点192.168.0.90:81,192.168.0.91:81,192.168.0.92:81配置负载均衡,监听端口为80;算法为加权轮询,30秒内如果有3次连接失败,停止向该服务器转发请求;开启与后端服务器的长连接,配置超时时间,配置错误页面跳转,配置日志。

http {#自定义日志格式log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';# 配置访问日志,使用了名为main的日志格式access_log /var/log/nginx/access.log main;# 配置错误日志,默认日志级别error_log /var/log/nginx/error.log;upstream gdmp_servers {server 192.168.0.90:81 weight=3 max_fails=3 fail_timeout=30s;server 192.168.0.92:81 weight=1 max_fails=3 fail_timeout=30s;server 192.168.0.91:81 weight=2 max_fails=3 fail_timeout=30s;# 设置连接超时时间为300秒keepalive_timeout 300s;       }server {listen 80;server_name your_domain_name;  # 替换为你的域名或IP地址(如果需要通过域名访问)# 设置连接后端服务器的超时时间为300秒proxy_connect_timeout 300s;# 设置从后端服务器读取数据的超时时间为300秒proxy_read_timeout 300s;# 设置向后端服务器发送数据的超时时间为300秒proxy_send_timeout 300slocation / {#转发的后端服务器地址proxy_pass http://gdmp;#代理请求头中客户端请求的目标域名或 IP 地址和端口号proxy_set_header Host $host;#获取真实客户端 IP 地址proxy_set_header X-Real-IP $remote_addr;# 开启与后端服务器的长连接proxy_http_version 1.1;proxy_set_header Connection "";}# 配置错误页面跳转error_page 500 502 503 504 /error.html;location = /error.html {internal;root /usr/share/nginx/html;}# 配置访问日志,访问日志使用了combined这种预定义的日志格式access_log /var/log/nginx/example.com_access.log combined;# 配置错误日志,只记录警告及更严重级别的错误信息。error_log /var/log/nginx/example.com_error.log warn;}
}

示例六:三节点192.168.0.90:81,192.168.0.91:81,192.168.0.92:81配置负载均衡,监听端口为80;算法为加权轮询,30秒内如果有3次连接失败,停止向该服务器转发请求;开启与后端服务器的长连接,配置超时时间,配置错误页面跳转,配置日志,配置发送文件。

http {#自定义日志格式log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';# 配置访问日志,使用了名为main的日志格式access_log /var/log/nginx/access.log main;# 配置错误日志,默认日志级别error_log /var/log/nginx/error.log;upstream gdmp_servers {server 192.168.0.90:81 weight=3 max_fails=3 fail_timeout=30s;server 192.168.0.92:81 weight=1 max_fails=3 fail_timeout=30s;server 192.168.0.91:81 weight=2 max_fails=3 fail_timeout=30s;# 设置连接超时时间为300秒keepalive_timeout 300s;       }server {listen 80;server_name your_domain_name;  # 替换为你的域名或IP地址(如果需要通过域名访问)# 设置连接后端服务器的超时时间为300秒proxy_connect_timeout 300s;# 设置从后端服务器读取数据的超时时间为300秒proxy_read_timeout 300s;# 设置向后端服务器发送数据的超时时间为300秒proxy_send_timeout 300s#启用 sendfile 机制来处理文件传输sendfile        on;#Nginx 会尝试将多个小的数据包合并成一个较大的数据包,然后再一次性发送给客户端tcp_nopush      on;#TCP 连接上禁用 Nagle 算法tcp_nodelay     on;location / {#转发的后端服务器地址proxy_pass http://gdmp;#代理请求头中客户端请求的目标域名或 IP 地址和端口号proxy_set_header Host $host;#获取真实客户端 IP 地址proxy_set_header X-Real-IP $remote_addr;# 开启与后端服务器的长连接proxy_http_version 1.1;proxy_set_header Connection "";}# 配置错误页面跳转error_page 500 502 503 504 /error.html;location = /error.html {internal;root /usr/share/nginx/html;}# 配置访问日志,访问日志使用了combined这种预定义的日志格式access_log /var/log/nginx/example.com_access.log combined;# 配置错误日志,只记录警告及更严重级别的错误信息。error_log /var/log/nginx/example.com_error.log warn;}
}

示例七:三节点192.168.0.90:81,192.168.0.91:81,192.168.0.92:81配置负载均衡,监听端口为80;算法为加权轮询,30秒内如果有3次连接失败,停止向该服务器转发请求;开启与后端服务器的长连接,配置超时时间,配置错误页面跳转,配置日志,配置发送文件,开启gzip压缩。

http {#自定义日志格式log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';# 配置访问日志,使用了名为main的日志格式access_log /var/log/nginx/access.log main;# 配置错误日志,默认日志级别error_log /var/log/nginx/error.log;upstream gdmp_servers {server 192.168.0.90:81 weight=3 max_fails=3 fail_timeout=30s;server 192.168.0.92:81 weight=1 max_fails=3 fail_timeout=30s;server 192.168.0.91:81 weight=2 max_fails=3 fail_timeout=30s;# 设置连接超时时间为300秒keepalive_timeout 300s;       }server {listen 80;server_name your_domain_name;  # 替换为你的域名或IP地址(如果需要通过域名访问)# 设置连接后端服务器的超时时间为300秒proxy_connect_timeout 300s;# 设置从后端服务器读取数据的超时时间为300秒proxy_read_timeout 300s;# 设置向后端服务器发送数据的超时时间为300秒proxy_send_timeout 300s#启用 sendfile 机制来处理文件传输sendfile        on;#Nginx 会尝试将多个小的数据包合并成一个较大的数据包,然后再一次性发送给客户端tcp_nopush      on;#TCP 连接上禁用 Nagle 算法tcp_nodelay     on;location / {#转发的后端服务器地址proxy_pass http://gdmp;#代理请求头中客户端请求的目标域名或 IP 地址和端口号proxy_set_header Host $host;#获取真实客户端 IP 地址proxy_set_header X-Real-IP $remote_addr;# 开启与后端服务器的长连接proxy_http_version 1.1;proxy_set_header Connection "";}# 配置错误页面跳转error_page 500 502 503 504 /error.html;location = /error.html {internal;root /usr/share/nginx/html;}# 配置访问日志,访问日志使用了combined这种预定义的日志格式access_log /var/log/nginx/example.com_access.log combined;# 配置错误日志,只记录警告及更严重级别的错误信息。error_log /var/log/nginx/example.com_error.log warn;#开启gzipgzip on;#开启静态页面压缩gzip_static on;#特定浏览器禁用 gzip 压缩的指令,解决浏览器兼容性问题gzip_disable "MSIE [1-6].";#压缩级别5gzip_comp_level 5;#只有文件大小在 1 千字节及以上的文件才会被压缩gzip_min_length 1k;#启用4 个缓冲区来用于 gzip 压缩;每个缓冲区的大小为 16 千字节gzip_buffers    4 16k;#压缩的对象类型gzip_types text/xml text/csstext/plaintext/csvtext/javascripttext/jsontext/x-componentapplication/javascriptapplication/x-javascriptapplication/xmlapplication/jsonapplication/xhtml+xmlapplication/rss+xmlapplication/atom+xmlapplication/x-font-ttfapplication/x-web-app-manifest+jsonapplication/vnd.ms-fontobjectimage/svg+xmlimage/x-iconfont/ttffont/opentype;#不会在响应头中添加Vary: Accept-Encoding字段gzip_vary off;}
}

示例八:三节点192.168.0.90:81,192.168.0.91:81,192.168.0.92:81配置负载均衡,监听端口为80;算法为加权轮询,30秒内如果有3次连接失败,停止向该服务器转发请求;开启与后端服务器的长连接,配置超时时间,配置错误页面跳转,配置日志,配置发送文件,开启gzip压缩,配置ssl证书。

http {#自定义日志格式log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';# 配置访问日志,使用了名为main的日志格式access_log /var/log/nginx/access.log main;# 配置错误日志,默认日志级别error_log /var/log/nginx/error.log;upstream gdmp_servers {server 192.168.0.90:81 weight=3 max_fails=3 fail_timeout=30s;server 192.168.0.92:81 weight=1 max_fails=3 fail_timeout=30s;server 192.168.0.91:81 weight=2 max_fails=3 fail_timeout=30s;# 设置连接超时时间为300秒keepalive_timeout 300s;       }server {listen 80;server_name your_domain_name;  # 替换为你的域名或IP地址(如果需要通过域名访问)# 设置连接后端服务器的超时时间为300秒proxy_connect_timeout 300s;# 设置从后端服务器读取数据的超时时间为300秒proxy_read_timeout 300s;# 设置向后端服务器发送数据的超时时间为300秒proxy_send_timeout 300s#启用 sendfile 机制来处理文件传输sendfile        on;#Nginx 会尝试将多个小的数据包合并成一个较大的数据包,然后再一次性发送给客户端tcp_nopush      on;#TCP 连接上禁用 Nagle 算法tcp_nodelay     on;location / {#转发的后端服务器地址proxy_pass http://gdmp;#代理请求头中客户端请求的目标域名或 IP 地址和端口号proxy_set_header Host $host;#获取真实客户端 IP 地址proxy_set_header X-Real-IP $remote_addr;# 开启与后端服务器的长连接proxy_http_version 1.1;proxy_set_header Connection "";}# 配置错误页面跳转error_page 500 502 503 504 /error.html;location = /error.html {internal;root /usr/share/nginx/html;}# 配置访问日志,访问日志使用了combined这种预定义的日志格式access_log /var/log/nginx/example.com_access.log combined;# 配置错误日志,只记录警告及更严重级别的错误信息。error_log /var/log/nginx/example.com_error.log warn;#开启gzipgzip on;#开启静态页面压缩gzip_static on;#特定浏览器禁用 gzip 压缩的指令,解决浏览器兼容性问题gzip_disable "MSIE [1-6].";#压缩级别5gzip_comp_level 5;#只有文件大小在 1 千字节及以上的文件才会被压缩gzip_min_length 1k;#启用4 个缓冲区来用于 gzip 压缩;每个缓冲区的大小为 16 千字节gzip_buffers    4 16k;#压缩的对象类型gzip_types text/xml text/csstext/plaintext/csvtext/javascripttext/jsontext/x-componentapplication/javascriptapplication/x-javascriptapplication/xmlapplication/jsonapplication/xhtml+xmlapplication/rss+xmlapplication/atom+xmlapplication/x-font-ttfapplication/x-web-app-manifest+jsonapplication/vnd.ms-fontobjectimage/svg+xmlimage/x-iconfont/ttffont/opentype;#不会在响应头中添加Vary: Accept-Encoding字段gzip_vary off;#证书路径ssl_certificate  /etc/nginx/cert/gdmp.com.pem;#证书密钥路径ssl_certificate_key  /etc/nginx/cert/gdmp.com.key;# SSL 会话超时时间为5分钟ssl_session_timeout 5m;#允许使用的加密算法套件ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;#指定服务器支持的 SSL/TLS 协议版本ssl_protocols TLSv1 TLSv1.1 TLSv1.2;#优先选择服务器配置的加密算法套件ssl_prefer_server_ciphers on;    }
}

示例九:三节点192.168.0.90:81,192.168.0.91:81,192.168.0.92:81配置负载均衡,监听端口为80;算法为hash,30秒内如果有3次连接失败,停止向该服务器转发请求;开启与后端服务器的长连接,配置超时时间,配置错误页面跳转,配置日志,配置发送文件,开启gzip压缩,配置ssl证书。

http {#自定义日志格式log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';# 配置访问日志,使用了名为main的日志格式access_log /var/log/nginx/access.log main;# 配置错误日志,默认日志级别error_log /var/log/nginx/error.log;upstream gdmp_servers {hash $remote_addr consistent;  # 通过配置一致性 hash 来防止调度异常server 192.168.0.90:81 weight=3 max_fails=3 fail_timeout=30s;server 192.168.0.92:81 weight=1 max_fails=3 fail_timeout=30s;server 192.168.0.91:81 weight=2 max_fails=3 fail_timeout=30s;# 设置连接超时时间为300秒keepalive_timeout 300s;       }server {listen 80;server_name your_domain_name;  # 替换为你的域名或IP地址(如果需要通过域名访问)# 设置连接后端服务器的超时时间为300秒proxy_connect_timeout 300s;# 设置从后端服务器读取数据的超时时间为300秒proxy_read_timeout 300s;# 设置向后端服务器发送数据的超时时间为300秒proxy_send_timeout 300s#启用 sendfile 机制来处理文件传输sendfile        on;#Nginx 会尝试将多个小的数据包合并成一个较大的数据包,然后再一次性发送给客户端tcp_nopush      on;#TCP 连接上禁用 Nagle 算法tcp_nodelay     on;location / {#转发的后端服务器地址proxy_pass http://gdmp;#代理请求头中客户端请求的目标域名或 IP 地址和端口号proxy_set_header Host $host;#获取真实客户端 IP 地址proxy_set_header X-Real-IP $remote_addr;# 开启与后端服务器的长连接proxy_http_version 1.1;proxy_set_header Connection "";}# 配置错误页面跳转error_page 500 502 503 504 /error.html;location = /error.html {internal;root /usr/share/nginx/html;}# 配置访问日志,访问日志使用了combined这种预定义的日志格式access_log /var/log/nginx/example.com_access.log combined;# 配置错误日志,只记录警告及更严重级别的错误信息。error_log /var/log/nginx/example.com_error.log warn;#开启gzipgzip on;#开启静态页面压缩gzip_static on;#特定浏览器禁用 gzip 压缩的指令,解决浏览器兼容性问题gzip_disable "MSIE [1-6].";#压缩级别5gzip_comp_level 5;#只有文件大小在 1 千字节及以上的文件才会被压缩gzip_min_length 1k;#启用4 个缓冲区来用于 gzip 压缩;每个缓冲区的大小为 16 千字节gzip_buffers    4 16k;#压缩的对象类型gzip_types text/xml text/csstext/plaintext/csvtext/javascripttext/jsontext/x-componentapplication/javascriptapplication/x-javascriptapplication/xmlapplication/jsonapplication/xhtml+xmlapplication/rss+xmlapplication/atom+xmlapplication/x-font-ttfapplication/x-web-app-manifest+jsonapplication/vnd.ms-fontobjectimage/svg+xmlimage/x-iconfont/ttffont/opentype;#不会在响应头中添加Vary: Accept-Encoding字段gzip_vary off;#证书路径ssl_certificate  /etc/nginx/cert/gdmp.com.pem;#证书密钥路径ssl_certificate_key  /etc/nginx/cert/gdmp.com.key;# SSL 会话超时时间为5分钟ssl_session_timeout 5m;#允许使用的加密算法套件ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;#指定服务器支持的 SSL/TLS 协议版本ssl_protocols TLSv1 TLSv1.1 TLSv1.2;#优先选择服务器配置的加密算法套件ssl_prefer_server_ciphers on;    }
}

备注:
proxy_connect_timeout,proxy_read_timeout ,proxy_send_timeout 只能在server或location块。
access_log,error_log指令通常应该在 http、server或 location块中使用。
sendfile 指令通常只能在 http、server 或 location 等特定的配置块中使用。
upstream 指令可以在 http 块和 server 块中使用。
stream指令可以在main 块使用,也可以在http 块之外独立的 stream 块。
证书只能在server或stream块。
gzip通常在 http或server块中使用。

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

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

相关文章

鸿蒙移动应用开发-------初始arkts

一. 什么是arkts ArkTS是HarmonyOS优选的主力应用开发语言。 ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,保持了TS的基本风格,同时通过规范定义强化开发期静态检查和分析,提升程序执行稳定性和…

c++ 输入三条边 绘制三角形

安装图形库 参考 #include "graphics.h" // 就是需要引用这个图形库 #include <conio.h> #include <stdio.h> #include <math.h>// 判断是否可以构成三角形 int isTriangle(int a, int b, int c) {return (a b > c) && (a c >…

A20红色革命文物征集管理系统

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…

Logrus入门

Logrus入门 1. 下载 go get github.com/sirupsen/logrus2. logrus常用方法 logrus.Debugln("Debugln") logrus.Infoln("Infoln") logrus.Warnln("Warnln") logrus.Errorln("Errorln") logrus.Println("Println")// 输出如…

pyspark入门基础详细讲解

1.前言介绍 学习目标&#xff1a;了解什么是Speak、PySpark&#xff0c;了解为什么学习PySpark&#xff0c;了解课程是如何和大数据开发方向进行衔接 使用pyspark库所写出来的代码&#xff0c;既可以在电脑上简单运行&#xff0c;进行数据分析处理&#xff0c;又可以把代码无缝…

权限管理练习2

1.在/home中创建一个名为 file1.txt 的文件&#xff0c;并设置权限为&#xff1a;所有者和组成员可以读写&#xff0c;但其他人只能读。 所有者和组成员可以读写 u rw- g rw- o r-- 2.在 /home 目录下创建一个名为 shared 的子目录&#xff0c;使得所有用户都可以进入&#…

面试经典 150 题:121,125

121. 买卖股票的最佳时机 【参考代码】 动态规划解决 class Solution { public:int maxProfit(vector<int>& prices) {int size prices.size();int min_price 99999, max_profit 0;for(int i0; i<size; i){if(prices[i] < min_price){min_price prices[i…

数据集划分

1、 sklearn玩具数据集介绍 数据量小&#xff0c;数据在sklearn库的本地&#xff0c;只要安装了sklearn&#xff0c;不用上网就可以获取 2 sklearn现实世界数据集介绍 数据量大&#xff0c;数据只能通过网络获取&#xff08;科学上网&#xff09; 3 sklearn加载玩具数据集 示…

图形几何之美系列:仿射变换矩阵之先转后偏

“在几何计算、图形渲染、动画、游戏开发等领域&#xff0c;常需要进行元素的平移、旋转、缩放等操作&#xff0c;一种广泛应用且简便的方法是使用仿射变换进行处理。相关的概念还有欧拉角、四元数等&#xff0c;四元数在图形学中主要用于解决旋转问题&#xff0c;特别是在三维…

刷题强训(day05) -- 游游的you、腐烂的苹果、孩子们的游戏(圆圈中最后剩下的数)

目录 1、游游的you 1.1 题目 1.2 思路 1.3 代码实现 2、腐烂的苹果 2.1 题目 2.2 思路 2.3 代码实现 3、孩子们的游戏(圆圈中最后剩下的数) 3.1 题目 3.2 思路 3.3 代码实现 3.3.1 环形链表 ​编辑3.3.2 动态规划 ​编辑 1、游游的you 1.1 题目 1.2 思路 根据题…

PyQt5超详细教程终篇

PyQt5超详细教程 前言 接&#xff1a; [【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;](【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;-CSDN博客) 建议把代码复制到pycahrm等IDE上面看实际效果&#xff0c;方便理…

并查集算法实现

模板 模板分为三大部分 初始化查询i的祖先合并i j(使他们祖先成为一个人) // 1 初始化 void init(int n) {for (int i 1; i < n; i)fa[i] i;//将该数的父节点定义为该数 }// 2 查询i的祖先 int find(int i) {if (i fa[i])return i;else{![查](../pic/并查集.png)fa[i]…

(实战)WebApi第13讲:怎么把不同表里的东西,包括同一个表里面不同的列设置成不同的实体,所有的给整合到一起?【前端+后端】、前端中点击标签后在界面中显示

一、实现全局跨域&#xff1a;新建一个Controller&#xff0c;其它的controller都继承它 1、新建BaseController 2、在后端配置&#xff0c;此处省略【详情见第12讲四、3、】 3、其它的控制器继承BaseController&#xff0c;这个时候就能够完成全局的跨域 【向后台传cookie和…

【计算机基础——数据结构——红黑树】

1. 红黑树&#xff08;RBTree&#xff09; 为什么HashMap不直接使用AVL树&#xff0c;而是选择了红黑树呢&#xff1f; 由于AVL树必须保证左右子树平衡&#xff0c;Max(最大树高-最小树高) < 1&#xff0c;所以在插入的时候很容易出现不平衡的情况&#xff0c;一旦这样&…

【MatLab手记】 --从0到了解超超超详过程!!!

文章目录 MatLab笔记一、命令行窗口二、变量命名规则三、数据类型1. 数字2. 字符与字符串3. 矩阵3.1 矩阵创建3.2 矩阵的修改和删除3.3 矩阵的拼接与重构重排3.4 矩阵的运算方法3.5 矩阵的下标 4. 元胞数组&#xff08;类似数据容器&#xff09;5. 结构体 四、逻辑与流程控制五…

Qt_day5_常用类

常用类 目录 1. QString 字符串类&#xff08;掌握&#xff09; 2. 容器类&#xff08;掌握&#xff09; 2.1 顺序容器QList 2.2 关联容器QMap 3. 几种Qt数据类型&#xff08;熟悉&#xff09; 3.1 跨平台数据类型 3.2 QVariant 统一数据类型 3.3 QStringList 字符串列表 4. QD…

【THM】linux取证 DisGruntled

目录 0x00 房间介绍 0x01 连接并简单排查 0x02 让我们看看做没做坏事 0x03 炸弹已埋下。但何时何地&#xff1f; 0x04 收尾 0x05 结论 0x00 房间介绍 嘿&#xff0c;孩子&#xff01;太好了&#xff0c;你来了&#xff01; 不知道您是否看过这则新闻&#xff0c;我…

MFC中Excel的导入以及使用步骤

参考地址 在需要对EXCEL表进行操作的类中添加以下头文件&#xff1a;若出现大量错误将其放入stdafx.h中 #include "resource.h" // 主符号 #include "CWorkbook.h" //单个工作簿 #include "CRange.h" //区域类&#xff0c;对Excel大…

智能化温室大棚控制系统设计(论文+源码)

1 系统的功能及方案设计 本次智能化温室大棚控制系统的设计其系统整体结构如图2.1所示&#xff0c;整个系统在器件上包括了主控制器STC89C52&#xff0c;温湿度传感器DHT11&#xff0c;LCD1602液晶&#xff0c;继电器&#xff0c;CO2传感器&#xff0c;光敏电阻&#xff0c;按…

一篇文章教会你使用Linux的‘sed‘基础命令

Linux sed 命令详解 Linux sed 命令详解1、基本语法2、常用命令2.1 替换2.2 删除行2.3 查找并打印行2.4 插入与追加2.5 多命令组合 3、高级用法3.1 替换并保存结果到新文件3.2 在范围内替换3.3 正则表达式匹配 4、小结 Linux sed 命令详解 sed 是 Linux 系统中非常强大的流编辑…