Nginx核心配置详解

news2024/11/15 22:49:52

一、配置文件说明

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号CPU
 00000010:1号CPU
 10000000: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、以特定的格式(进程 ID pid、命令 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、测试

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无人机之螺旋桨篇

一、工作原理 根据牛顿第三定律&#xff0c;无人机受到向上的力&#xff0c;这是因为桨叶对空气施加了一个向上的力。螺旋桨产生的升力是指使飞机或无人机升空的力量。升力的大小取决于机翼或螺旋桨的倾斜角度。当空气流过机翼或螺旋桨时&#xff0c;其速度在顶部增加&#xff…

计算机毕业设计 学生就业信息系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

计算数学精解【14】-Maxima计算精解【2】

文章目录 基础符号计算 参考文献 基础 符号计算 分数&#xff08;有理数&#xff09;基本运算 无理数 小数及位数 bfloat提供任意精度实数,fpprec控制小数位数 代数展开 ratsimp完成通分 因式分解 参考文献 1.《Maxima在线性代数的应用》 2. https://maxima.sourcefor…

Linux内核之网络套接字

文章目录 前言一、TCP4层模型和OSI7层模型OSI 7层模型TCP/IP 4层模型比较 二、套接字概念三、sockaddr_in和sockaddr结构体sockaddr_insockaddr区别 四、协议中的数据划分数据划分和首部添加流程数据接收与解析流程流程图 前言 一、TCP4层模型和OSI7层模型 OSI 7层模型 物理…

XSS Game练习

1.Ma Spaghet 直接get传参 ?somebodyaaaa直接使用img标签 ?somebody<img%20src1%20onerror"alert(1337)">官方文档 应使用innertext&#xff0c;安全性更高 2.Jefff 通过代码可以知道是通过eval的代码执行&#xff0c;setTimeout中的内容表示在一秒后执行…

avalonia学习之布局组件

border 边框控件用边框和背景装饰一个&#xff08;单个&#xff09;子控件。它还可用于显示圆角。 属性 属性描述Background背景颜色。BorderBrush边框颜色。BorderThickness边框线粗细&#xff08;整数&#xff09;。CornerRadius所有四个角的半径&#xff08;一个值&#…

解决com.google.android.play:core:1.10.3在10.1号之后targetSDK升到34的问题

implementation com.google.android.play:core:1.10.3或者这样的 升到android14 之后可能提审的时候都会遇到这个问题&#xff0c;解决方法如下&#xff1a; implementation com.google.android.play:asset-delivery:2.2.2 implementation com.google.android.play:app-update…

刀锋利器:Knife4j助你轻松驾驭API文档

文章目录 整合Knife4j引入依赖编写配置文件 法①编写配置文件 法②配置名词解释注解三兄弟 : ApiOperation、ApiParam、ApiModel 启动项目, 访问Knife4j测试Knife4j优点支持全局参数支持离线文档支持API搜索 **技术派项目源码地址 : ** **Gitee : **技术派 - https://gitee.co…

解密键盘输入:探索设备控制器的奥秘

流程初探 键盘是我们最常用的输入硬件设备之一。作为程序员&#xff0c;你知道当我们敲击键盘上的字母"A"时&#xff0c;操作系统会发生什么吗&#xff1f;下面我将简要介绍整个过程&#xff0c;以便你更容易理解为什么需要这些组件。 首先&#xff0c;让我们来看看…

Processing练习之鼠标控制线段粗细

案例代码如下&#xff1a; import processing.pdf.*; import java.util.Calendar; boolean savePDF false; int tileCount 20; int actRandomSeed 0; int actStrokeCap ROUND; void setup(){ size(600,600); } void draw(){ if(savePDF)beginRecord(PDF, timestamp()"…

回调函数,字符函数,字符串函数

前言&#xff1a;上一趴我们学习了指针。那么今天我们来学习新的知识&#xff0c;回调函数&#xff0c;字符函数&#xff0c;字符串函数。 1 回调函数 什么是回调函数呢&#xff1f;回调函数就是通过函数指针调用的函数。 如果你把函数的指针&#xff08;地址&#xff09;作…

加热系统加入达温即停和保温功能

加热系统加入达温即停和保温功能 引言 ​ 我们前一节, 是通过控制io口, 直接控制加热的开关, 但是这太简单粗暴了, 如果只是那样, 和普通的家居电器,是没区别的, 我们想要更智能一点, 就是像咱们自己家的热水壶那样, 水烧滚了(水温达到100摄氏度), 就自动停止了. 加热功能&a…

SQL每日一练-0816

今日SQL题&#xff1a;计算每个项目的年度收入增长率 难度系数&#xff1a;&#x1f31f;☆☆☆☆☆☆☆☆☆ 1、题目要求 计算每个项目每年的收入总额&#xff0c;并计算项目收入环比增长率。找出每年收入增长率最高的项目。输出结果显示年份、项目ID、项目名称、项…

JS周结 day0817

ok了家人们&#xff0c;今天这周学习了JavaScript&#xff0c;我们一起看一下吧 一.JavaScript概述 1.1 应用场景 JavaScript 用来做前端页面校验 JavaScript 可以实现网页的一些动画效果&#xff0c;例如&#xff1a;轮播图 1.2 JavaScript介绍 JavaScript 是一门跨平台、…

华为OD(C卷,200分)- 智能驾驶

(C卷,200分)- 智能驾驶 题目描述 有一辆汽车需要从 m * n 的地图左上角(起点)开往地图的右下角(终点),去往每一个地区都需要消耗一定的油量,加油站可进行加油。 请你计算汽车确保从从起点到达终点时所需的最少初始油量。 说明: 智能汽车可以上下左右四个方向移动 地图…

Monaco Editor组件使用详解

Monaco Editor 是由微软开发并开源的一款代码编辑器&#xff0c;它是 Visual Studio Code&#xff08;VS Code&#xff09;的核心部分。Monaco Editor 提供了丰富的特性&#xff0c;包括语法高亮、代码折叠、代码提示&#xff08;IntelliSense&#xff09;、多光标选择、搜索和…

RabbitMQ消息队列总结

RabbitMQ那些事 参考一. `RabbitMQ`介绍1.1 Java工程师1.1.1 RabbitMQ学习目标1.1.2 消息队列介绍1.1.3 RabbitMQ介绍各自属性介绍(❤❤❤)二. `RabbitMQ`安装1. 基于Linux1.1 安装1.2 常用命令1.3 后台管理开启与面板介绍三. 客户端`SDK`操作(❤❤了解)1. 客户端依赖1. 生产者…

【区块链+金融服务】中国银联区块链可信存证服务 | FISCO BCOS应用案例

随着金融行业信息化的快速推进&#xff0c;“互联网 金融”业务产生了海量的电子数据。例如&#xff0c;截止到 2022 年第二季度&#xff0c; 全国累计信用卡发卡数量约 8.07 亿张&#xff0c;累计银行卡应偿信贷余额为 8.66 万亿元&#xff0c;累计信用卡逾期半年未尝信贷 总…

18124 N皇后问题

### 详细分析 这是一个经典的N皇后问题。我们需要在N\*N的棋盘上放置N个皇后&#xff0c;使得任意两个皇后不在同一行、同一列或同一对角线上。可以使用回溯算法来解决这个问题。 ### 伪代码 1. 定义一个函数countSolutions&#xff0c;输入为N&#xff0c;输出为N皇后问题的解…

尚硅谷MYSQL(5-6章)

排序和分页 排序 如果没有使用排序操作的话 查询出来的数据是按添加的顺序排序的 ORDER BY是来进行排序的 后面可以添加ASC升序 DESC降序 如果后面没有显示指明排序的方式的话 则默认按照升序排序 where中不能使用列的别名 我们在使用sql语句的时候 她的执行顺序不是从第一…