Nginx基本操作

目录

引言

一、Nginx配置文件详解

(一)配置文件

(二)模块

二、全局配置文件

(一)关闭版本或修改版本

1.关闭版本号

2.修改版本信息

(二)修改启动的进程数

(三)cpu与work进程绑定

(四)work进程的优先级

(五)调试work进程打开的文件的个数

(六)关闭work进程

三、event,IO模型调优

四、http语句设置

(一)mime

(二)server语句

1.server下的 root

2.server块构建虚拟主机

3.alias别名

(三)localtion语句

1.=:精准匹配

2.^~:符号用于实现前缀匹配

3.~/~*:用于匹配正则表达式

4.符号优先级

(四)access 模块

1.设置访问权限

2.设置访问方式

(五)验证模块

(六)自定义错误界面

1.自定义页面

2.指定状态码

(七)验证文件是否存在

(八)长连接

(九)作为下载服务器配置


引言

nginx作为后起之秀,它的功能十分强大,在上文中进行了理论讲解和服务安装,本文将学习如何进行操作

一、Nginx配置文件详解

想要了解一个文件的具体操作,首先要了解它的配置文件及作用

nginx 官方帮助文档:    nginx documentation

(一)配置文件

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

主配置文件:安装目录下的nginx.conf

/apps/nginx/conf/nginx.conf

过滤出非空行和未被注释的行

#events块: #事件驱动相关的配置   同步
worker_connections 1024;:定义每个工作进程可以同时处理的最大连接数为1024。这意味
着在系统资源允许的情况下,每个工作进程最多可同时处理1024个客户端连接。
#http块:   #http/https 协议相关配置段
include       mime.types;:包含一个名为mime.types的文件,这个文件中定义了不同文
件扩展名对应的MIME类型。
default_type  application/octet-stream;:当找不到匹配MIME类型的文件时,默认
使用"application/octet-stream"作为MIME类型。
sendfile        on;:启用高效文件传输模式(sendfile系统调用),用于提高静态文件
服务性能。keepalive_timeout  65;:设置保持连接(KeepAlive)超时时间为65秒。即在
一次TCP连接上,如果没有新的请求,在65秒后Nginx会关闭连接以释放资源。
#server块:
listen       80;:指定服务器监听的端口为80(HTTP默认端口)。
server_name  localhost;:定义服务器名称为localhost,意味着它将响应发送到本地主机
名的请求。
#location块:
location / {:匹配所有根路径("/")的请求。
root   html;:设置网站根目录为html,所以当用户访问"/"时,Nginx会在服务器的html目
录下查找相应的资源。
index  index.html index.htm;:如果请求的是目录而非具体文件,则返回列表中的第一个
存在的文件作为主页,先尝试加载index.html,如果不存在则尝试加载index.htm。
error_page   500 502 503 504  /50x.html;:定义错误页面,当出现500、502、503或
504状态码时,显示位于/50x.html的错误页面。location = /50x.html {:精确匹配 "/50x.html" 的请求。root   html;:如果请求的是50x.html错误页面,则同样从服务器的html目录下查找该文件

子配置文件: include conf.d/*.conf

这一条配置信息,可以写在配置文件中的任何位置,如果写在语句块之外,那么就是全局生效,如何写在语句块中,只有在语句块中生效,例如写在http语句块中,events,语句块中的配置就不会生效

(二)模块

nginx 有多种模块

核心模块:是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录 、配置文件解析 、事件驱动机制 、进程管理等核心功能

标准HTTP模块:提供 HTTP 协议解析相关的功能,比如: 端口配置 、 网页编码设置 、 HTTP响应头设置 等等

可选HTTP模块:主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,比如:Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等

邮件服务模块:主要用于支持 Nginx 的 邮件服务 ,包括对 POP3 协议、 IMAP 协议和 SMTP协议的支持

Stream服务模块: 实现反向代理功能,包括TCP协议代理

第三方模块:是为了扩展 Nginx 服务器应用,完成开发者自定义功能,比如: Json 支持、 Lua 支持等

二、全局配置文件

(一)关闭版本或修改版本

1.关闭版本号

server_tokens语句:来自核心模块,使用以下链接查看官方文档的详细解释

Module ngx_http_core_module

server_tokens on:#这是默认设置,表示在响应头部(Server字段)显示完整的Nginx版#本号以及可能的操作系统和模块信息。这有助于调试,但可能会暴露服#务器的敏感信息给潜在攻击者。server_tokens off:#关闭版本信息显示,仅显示“Server: nginx”。这样可以提高安全性,#因为攻击者无法通过响应头部获取精确的Nginx版本和其他详细信息。server_tokens build:#仅显示编译时的基本版本信息,如"Server: nginx/1.23.4",不#包含详细的模块和操作系统信息。server_tokens string:#允许自定义响应头部的Server字段内容,例如 "server_tokens #my_custom_string;",将会显示 "Server: my_custom_string"

可以将版本信息隐藏起来

在http语句块中添加server_tokens  off;

注意要以封号结尾

添加完毕后重新加载配置文件

nginx  -s reload

再访问的话就看不到版本信息了

2.修改版本信息

先将服务关闭:systemctl  stop  nginx

首先去修改源码,在安装包里  注意 #号不要去掉

vim  /data/nginx-1.18.0/src/core/nginx.h

因为上面之前在配置文件中添加了server_tokens  off;关闭了版本号,所以还需要修改ngx_http_header_filter_module.c文件中49行的内容

vim /data/nginx-1.18.0/src/http/ngx_http_header_filter_module.c

而后重新编译

而后执行:make && make install

重启服务后使用客户端去访问看到的是ngx_http_header_filter_module.c文件中49行的内容

因为将版本号关闭了,在nginx.h文件中设置的版本信息无法显示

将配置文件中关闭版本号的语句注释掉

重新加载配置文件后再i访问就是在nginx.h文件中设置的版本名称

(二)修改启动的进程数

开启服务时只会打开一个进程

这是因为在配置文件中规定了数量

可以通过修改配置文件规定打开数量

worker_processes auto;
如果设置为auto  就是你真实的cpu数量

(三)cpu与work进程绑定

将Nginx工作进程绑定到指定的CPU核心,默认Nginx是不进行进程绑定的,绑定并不是意味着当前nginx进程独占以一核心CPU,但是可以保证此进程不会运行在其他核心上,这就极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。

可以看到,同样的进程,在重新加载配置文件后,会在不同的cpu上跳转

通过修改配置文件实现cpu绑定

序号绑定cpu叫做亲缘性

(四)work进程的优先级

当你想将nginx的work进程的优先级调高 可以使用nice设置

默认的优先级为0

可以在配置文件中添加:worker_priority number;

工作进程优先级,-20~19

重新加载文件后查看一下优先级

(五)调试work进程打开的文件的个数

worker_rlimit_nofile
所有worker进程能打开的文件数量上限,包括:Nginx的所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制.最好与ulimit -n 或者limits.conf的值保持一致

首先修改配置文件

而后修改系统的最大打开文件数量:ulimit -n 或者limits.conf的值

vim  /etc/security/limits.conf

修改配置文件后需要重启

需要区分nginx的启动方式,如果是直接使用nginx命令启动,此时配置就已经设置完成了

如果使用system服务去管理nginx程序,需要在nginx的启动文件中添加:LimitNOFILE

vim /usr/lib/systemd/system/nginx.service

添加完文件后执行:systemctl daemon-reload命令,重新加载启动文件

而后重启服务生效

(六)关闭work进程

master_process off|on

是否开启Nginx的master-worker工作模式,仅用于开发调试场景,默认为on(开启)

三、event,IO模型调优

worker_connections 20000
#这个指令设置每个工作进程允许同时打开的最大连接数。在本例中,每个工作进程可以同
#时处理最多20000个客户端连接。需要与worker_rlimit_nofile搭配使用,总进程数量
#不能超过其数值,此项调优主要看硬件与软件的设置use epoll
#epoll是Linux内核提供的一种高效I/O事件通知机制。当使用epoll时,Nginx能够更高
#效地管理大量的并发连接,尤其是在高负载的场景下。epoll对于Linux系统是一种理想
#的事件模型选择。此选项是开启epoll,Nginx支持众多的事件驱动,比如:select、poll
#、epoll,只能设置在events模块中设置。accept_mutex on
#accept mutex(接受互斥锁)用于防止多个工作进程在同一时刻执行accept系统调用,
#从而避免“惊群”现象的发生。开启这个选项可以在多工作进程模式下更好地同步新连接
#的接收过程。multi_accept on
#当multi_accept设置为on时,一个工作进程在接受到新的连接请求后,如果当前工作进
#程没有满载(即未达到worker_connections设定的上限),它会继续尝试接受更多的连
#接,而不是立即返回等待其他进程接受连接。这有助于提高服务器处理新连接的速度和效率。

四、http语句设置

http 是一个大的语句块,包含若干个小的语句块

http {......  #各server的公共配置server {    #每个server用于定义一个虚拟主机,第一个server为默认虚拟服务器...}server {     ...server_name   #虚拟主机名root     #主目录alias     #路径别名location [OPERATOR] URL {     #指定URL的特性...if CONDITION {...}}}
}

在Nginx的配置文件中,http语句块是整个HTTP服务器配置的核心部分,它包含了处理所有HTTP请求相关的配置。http块通常位于全局配置文件(如nginx.conf)的顶部或中间部分,用于定义HTTP服务器的基本行为、模块设置、虚拟主机(server blocks)以及其他全局HTTP相关的参数

http {include       mime.types;
#这行指令包含了一个名为mime.types的文件,这个文件中定义了不同类型的文件与MIME类型之间
#的映射关系。例如,当用户请求一个.html文件时,Nginx会根据此文件将MIME类型设置为text/html。default_type  application/octet-stream;
#如果Nginx无法确定某个文件的具体MIME类型,它会默认使用application/octet-stream作为
#该文件的MIME类型。include       /apps/nginx/conf.d/﹡.conf;  #此行需要手动添加
#此行表示Nginx会包含/apps/nginx/conf.d/目录下的所有以.conf结尾的配置文件。这使得你
#可以通过分散在多个文件中的配置来管理不同的虚拟主机或特定的配置选项。sendfile        on;
#开启零拷贝技术keepalive_timeout  65;
#定义了HTTP连接保持激活(KeepAlive)的状态超时时间,单位是秒。此信息表示如果客户端在65
#秒内没有新的请求,Nginx将会关闭这个TCP连接。server {listen       80;server_name  localhost;
#定义了一个监听80端口的HTTP服务器实例(即默认的HTTP服务),其server_name设为localhost,
#这意味着该服务器将响应所有指向本地主机名的请求location / {
#在server块内部定义了一个匹配根路径("/")主站点的location块,主站点为安装路径。也就是
#安装nginx时  --prefix="路径"root   html;
#指定了文档根目录为html。index  index.html index.htm;}
#index index.html index.htm; 设置了默认索引文件,当访问目录而不是具体文件时,Nginx将
#尝试提供这些文件之一。error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;
#定义了错误页面处理规则,当出现HTTP状态码为500、502、503或504的错误时,Nginx将返回位
#于html目录下的50x.html文件作为错误页面。}}
}

(一)mime

此项为支持的 文件格式,如果不支持的格式 会自动帮你下载,如果支持 就会显示在网页上

(二)server语句

1.server下的 root

使用方法的官方文档

Module ngx_http_core_module

root指定了主页文件的位置

注意在编写配置文件时,每段的末尾需要以;结尾

使用客户端访问时,就会以自己设定的主站目录为根目录

2.server块构建虚拟主机

基于域名

在子配置目录中,分别建立两个不同的配置文件

分别建立number目录和name目录,并建立数据文件

建立完成后,检查配置文件,确认无误后重新加载配置文件

在客户端的/etc/hosts文件中添加服务器的域名,与服务器配置文件中的server_name名称相同,让客户端访问时能够正确解析IP地址

而后使用客户机访问不同的域名,就会得到不同的信息

基于端口

修改配置文件,使其监听不同的端口号

基于IP地址

首先添加一个IP地址,可以是临时的,实际环境中最好添加一块新的网卡,设置不同的IP地址

将配置文件中listen设置为不同的IP地址,表示监听指定地址的80端口

3.alias别名

在/data/html目录下建立word目录,并在word目录建立与访问目录同名的目录文件

而后在txt目录下建立数据文件

使用客户机测试一下

(三)localtion语句

location语句是server语句块中的组成部分

Module ngx_http_core_module :官方文档

location语句在Nginx配置文件中用于定义URL请求与服务器资源之间的映射关系,以及针对特定URL路径的处理规则。它是一个非常关键且灵活的指令,允许根据请求URI来控制Nginx如何处理客户端的HTTP请求。

在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;ngnix会根据用户请求的URI来检查定义的所有location,按一定的优化级找出一个最佳匹配,而后应用其配置在没有使用正则表达式的时候,nginx会先在server中的多个location选取匹配度最高的一个uri,uri是用户请求的字符串,即域名后面的web文件路径,然后使用该location模块中的正则url和字符串,如果匹配成功就结束搜索,并使用此location处理此请求。

=用于标准url前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立即处理请求
^~用于标准url前,表示包含正则表达式,并且匹配以指定的正则表达式开头,对URI的最左边部分做匹配检查,不区分字符大小写
~用于标准url前,表示包含正则表达式,并且区分大小写
~*用于标准url前,表示包含正则表达式,并且不区分大写
无任何符号匹配起始于此uri的所有的uri

1.=:精准匹配

使用客户机访问,有任何其它字符则会匹配失败

2.^~:符号用于实现前缀匹配

此配置会匹配/opt/目录name目录下的所有文件,而后

在/opt/name目录下建立两个数据文件

使用客户端验证

3.~/~*:用于匹配正则表达式

两个符号的区别是

~:区分大小写

~*:不区分大小写

此配置的意思时,在/opt/html目录下有一个a.txt文件,输入a.txt能直接访问到,输入A.txt也可以匹配到a.txt文件

在/opt/html目录下创建数据文件

在客户机使用curl访问时需要注意,nginx服务虽然不去分大小写,但是文件系统会区分大小写,所以访问大写字母时,无法匹配到小写字母的文件,如果说不区分大小写的话,访问A.txt文件时,会匹配到a.txt的文件,显示a.txt文件的内容

访问其它文件时,即使有该文件,但无法匹配,还是会报错

使用~区分大小写

只能匹配以A开头的文件,匹配小写a时会找不到匹配的文件

4.符号优先级

location优先级:(=) > ( ^~ ) > ( ~,~*优先级一样 ) >  (/)

下面进行优先级测试

修改配置文件

添加数据文件

测试优先级

如果匹配到welcome to pla1,说明优先匹配到/data/html/pla1/a.txt,则=精准匹配的优先级最高

将精准匹配项注释或删除,重新加载文件。测试~*与/的优先级

证明,~*的优先级大于/

(四)access 模块

Nginx的access模块,通常指的是ngx_http_access_module模块。这个模块提供了基于客户端IP地址的简单访问控制功能,允许管理员通过配置文件定义哪些IP地址或地址范围可以或者不能访问服务器资源。

Module ngx_http_access_module :官方文档

使用grep过滤出access模块

1.设置访问权限

在Nginx配置中,access模块主要通过allow和deny指令来实现

allow表示允许;deny表示拒绝

建立好数据文件

使用不同IP的客户端进行测试

需要注意的时,匹配顺序由上往下时,匹配到符合要求的语句时会停止往下匹配,所以设置允许和拒绝时需要注意顺序

可以看到,匹配到allow允许时,就不会匹配下面的拒绝语句

如果要拒绝所有IP地址,可以输入deny all

deny all:拒绝所有未明确的IP地址,不在你允许列表里的所有IP地址

2.设置访问方式

如果想拒绝GET请求,可以使用limit_except指令:

默认是允许GET请求方式的

通过设置配置文件来拒绝

deny all;:拒绝指定之外的所有访问方式

(五)验证模块

在Nginx中,验证模块主要用于对客户端请求进行身份验证。虽然Nginx本身并未提供丰富的内置认证机制,但可以通过第三方模块或与外部程序(如HTTP基本认证、HTTP摘要认证)结合使用来实现

Module ngx_http_auth_basic_module:官方文档

这是Nginx的一个内置模块,用于实现HTTP基本认证

server {listen 80;server_name www.number.com;root /data/html;location /user {
#定义访问路径,如果没有。需要建立/data/html/user/目录root /data/html/;auth_basic "welcome to nignx"; 
#认证的提示信息,有的浏览器不会显示auth_basic_user_file /apps/nginx/conf.d/.nginxuser;
#定了包含用户名和加密密码的文件位置,此处的文件名叫什么,使用htpasswd命令生成的文件名就叫什么
}
}

用户信息文件需要使用htpasswd命令生成,该命令来源于http-tools包,它是httpd服务的依赖包,编译安装的话是没有这个包的,需要手动下载

yum  install httpd-tools -y。或者直接yum  install httpd -y

而后使用htpasswd命令去生成文件及信息

准备好数据文件

所有文件准备完毕后重新加载配置文件:nginx -s reload

使用谷歌浏览器验证

使用火狐浏览器

(六)自定义错误界面

可以改变默认的错误页面,同时也可以用指定的响应状态码进行响应

使用error_page语句,它来自核心模块

自定义错误界面,官方使用文档链接为:Module ngx_http_core_module

1.自定义页面

建立自定义错误页面文件,文件名必须与配置文件跳转的名称相同

使用curl浏览器访问

也可以直接跳转到主页面

就好比你输入www.jd.com/xxxxxxx,访问一个JD不存在的文件,依然可以直接跳转到JD的主页面

可以自己手动设置        

修改配置文件,让出现404报错时,跳转到主页面

2.指定状态码

正常情况下,找不到访问的文件,错误代码为404

我们可以将错误代码自定义成其它的值

这么做的目的是防止有的网站恶意截取404信息,将本网站的404报错信息,显示为其它网站的404,截取本网站的访问量

(七)验证文件是否存在

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

来自核心模块

自定义错误界面,官方使用文档链接为:

Module ngx_http_core_module

server {listen 80;server_name www.number.com;root /data/html;location / {root  /opt/;try_files $uri $uri.html $uri/index.html /html/try.html;
#从左往右依次匹配,$uri=主站点后面的文件
#比如访问192.168.84.40/txt文件,首先匹配txt文件,如果没有,再匹配txt.html文件,如果也
#没有,再匹配txt/下的index.html文件,如果都没有,就去访问/html/try.html文件,这个文件
#必须存在,否则会出现报错。匹配所有信息,都是从设定的root目录开始,这是里/opt
#注意:每个参数之间只有一个空格
}
}

建立托底文件

使用客户端访问时,因为主站点目录下没有任何文件,所以只能访问最后的托底文件

再建立一个txt目录,而后建立一个index.html数据文件

在主站点目录下建立一个txt.html的文件,匹配到对应的文件后,就不会匹配后面的内容

在主站点目录下建立一个txt文件

(八)长连接

在HTTP协议中,长连接(Long-lived Connection)通常指的是持久连接(Persistent Connection),即TCP连接在完成一次请求/响应后并不立即关闭,而是保持一段时间的开放状态,以便后续请求可以复用该连接,从而减少建立和关闭连接的开销

可以使用telnet进行模拟演示,此命令需要手动下载

yum install telnet  -y

当请求达到设定数量后就会断开

超时后也会自动断开连接

(九)作为下载服务器配置

作为下载服务器配置时,Nginx需要对静态文件提供服务,并且可能需要调整一些与下载相关的设置,例如大文件传输、断点续传等

ngx_http_autoindex_module 模块处理以斜杠字符 "/" 结尾的请求,并生成目录列表,可以做为下载服务,默认安装此模块

官方使用文档链接为:

Module 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提供

在配置文件中添加autoindex on开启文件索引

建立下载目录,并在目录下添加文件

而后使用浏览器访问测试

autoindex_exact_size off
计算文件确切大小(单位bytes),off 显示大概大小(单位K、M),默认on

显示本机时间:autoindex_localtime on

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

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

相关文章

docker运行onlyoffice,并配置https访问【参考仅用】

官方说明: Installing ONLYOFFICE Docs for Docker on a local server - ONLYOFFICEhttps://helpcenter.onlyoffice.com/installation/docs-developer-install-docker.aspx 一、容器端口、目录卷映射 sudo docker run --name容器名称 --restartalways -i -t -d -p…

Moment.js——轻松处理日期和和时间,有实例代码

hello,我是贝格前端工场,本期给大家带来便捷的处理日期和时间的js库:Moment.js,用这个类库处理时间将会十分方便,欢迎老铁们点赞关注,如有前端定制开发需求可以私信我们。 一、Moment.js的简介和功能 Mom…

什么是柔性事务?

概念 柔性事务,是业内解决分布式事务的主要方案。所谓柔性事务,相比较与数据库事务中的ACID这种刚性事务来说,柔性事务保证的是“基本可用,最终一致。”这其实就是基于BASE理论,保证数据的最终一致性。 虽然柔性事务…

使用LinkedList实现堆栈及Set集合特点、遍历方式、常见实现类

目录 一、使用LinkedList实现堆栈 堆栈 LinkedList实现堆栈 二、集合框架 三、Set集合 1.特点 2.遍历方式 3.常见实现类 HashSet LinkedHashSet TreeSet 一、使用LinkedList实现堆栈 堆栈 堆栈(stack)是一种常见的数据结构,一端…

代码随想录算法训练营day24|理论基础、77. 组合

理论基础 题目链接/文章讲解:代码随想录 视频讲解:带你学透回溯算法(理论篇)| 回溯法精讲!_哔哩哔哩_bilibili 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归…

java面试设计模式篇

面试专题-设计模式 前言 在平时的开发中,涉及到设计模式的有两块内容,第一个是我们平时使用的框架(比如spring、mybatis等),第二个是我们自己开发业务使用的设计模式。 面试官一般比较关心的是你在开发过程中&#…

QGIS编译(跨平台编译)之七十:【Windows编译错误处理】找不到vector_tile.pb.h、vector_tile.pb.cc

文章目录 一、错误描述二、错误原因分析三、错误处理一、错误描述 ①无法打开源文件“vector_tile.pb.h” ②无法打开包含文件:“vector_tile.pb.h”:No Such file or directory ③无法打开源文件:“vector_tile.pb.cc”:No Such file or directory 二、错误原因分析 qgis\…

基于ssm框架的高校班级管理系统设计与实现

为解决当前高校班级管理中管理方式落后、手段落后及效率低下等问题而以当前主流的互联网技术设计一款高校班级管理系统。该系统采用B/S模式的设计思路而将前端(JSP技术)和后端(SSM框架MySQL数据库)整合于一体并通过Java语言代码编…

IT廉连看——操作符

IT廉连看—操作符 c语言中有许多操作符,可以用于对变量进行各种不同的操作 一、算术操作符 - * / % 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点…

【GB28181】wvp-gb28181-Pro 运行错误汇总避坑大全(持续更新)

快捷查找 1、【问题】终端控制台打印的日志乱码 1、【问题】终端控制台打印的日志乱码 【解决】 由于windows系统默认编码是gbk,导致jar包在windows系统运行中文会导致乱码 控制台日志乱码: 打开cmd命令框,输入以下命令 chcp 65001 更改cmd的编码为UTF-8…

【Python如何求出水仙花数】

1、求水仙花数Python代码如下: # 求水仙花数:只需要个十百位的3次幂之和与原数相等 for i in range(100, 1000): # 循环100-999整数i1 i % 10 # 取个位 “%”表示除以后取余数i2 i // 10 % 10 # 取十位i3 i // 100 # 取百位 “//”表示除以后取整…

探索美团平台的发展与创新

美团作为中国领先的生活服务平台,为用户提供了丰富多样的服务,包括外卖配送、酒店预订、旅游出行等。在激烈的市场竞争中,美团不断进行创新和拓展,致力于提升用户体验,拓展服务范围,实现商业增长。本文将探…

LLM (Large language model)的指标参数

1. 背景介绍 我们训练大模型的时候,或者我们用RAG的时候,不知道我们的算法,或者我们的提示,或者我们的本地知识库是否已经整理得符合要求了。又或我们需要一个指标去评估我们目前的所有围绕大模型,向量数据库或外挂知…

【C#】grbl-plotter 源码学习笔记(四)-MachineControl

十一、MachineControl 11.1 CheckUpdate.cs 通过Web请求获取远程版本信息,实现版本自动检查的后台逻辑,为界面提供版本更新提示。 11.2 Control2ndGRBL.cs Control2ndGRBL类管理一个用于GRBL控制的额外窗体,包括处理用户输入、发送GRBL命令和更新界面上的状态和位置…

【笔记】【开发方案】APN 配置参数 bitmask 数据转换(Android KaiOS)

一、参数说明 &#xff08;一&#xff09;APN配置结构对比 平台AndroidKaiOS文件类型xmljson结构每个<apn>标签是一条APN&#xff0c;包含完成的信息层级数组结构&#xff0c;使用JSON格式的数据。最外层是mcc&#xff0c;其次mnc&#xff0c;最后APN用数组形式配置&am…

6-ROX 羧酸,6-Rhodamine X carboxylic acid,用作需要透膜的生物探针的荧光报告基团

2891791-11-8 (6位); 2196185-85-8 (5位)&#xff0c;6-ROX 羧酸&#xff0c;6-Rhodamine X carboxylic acid&#xff0c;用作需要透膜的生物探针的荧光报告基团 您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;2891791-11-8 (6位); 2196185-85-8 (5位)&#xff0c…

JAVA--File类与IO流

目录 1. java.io.File类的使用 1.1 概述 1.2 构造器 1.3 常用方法 1、获取文件和目录基本信息 2、列出目录的下一级 3、File类的重命名功能 4、判断功能的方法 5、创建、删除功能 2. IO流原理及流的分类 2.1 Java IO原理 2.2 流的分类 2.3 流的API 3. 节点流之一…

Java SpringBoot测试OceanBase

对上篇mysql导入到OceanBase中的数据库进行代码测试&#xff0c;写了个demo包含测试方法&#xff0c;在原mysql库中成功执行&#xff0c;迁移到OceanBase时看是否能不修改业务代码而成功执行测试方法&#xff1a; 代码基于SpringBoot MyBastis测试增删改查、批量新增、多表联…

YOLOv8改进 | SPPF篇 | 利用YOLOv9最新的SPPELAN模块改进SPPF(全网独家创新,附手撕结构图)

一、本文介绍 本文给大家带来的改进机制是利用2024/02/21号最新发布的YOLOv9其中提出的SPPELAN模块来改进SPPF&#xff0c;其中YOLOv9针对于这个模块并没有介绍&#xff0c;只是在其项目文件中用到了&#xff0c;我将其整理出来用于我们的YOLOv8的项目&#xff0c;同时空间金字…

【Java程序设计】【C00288】基于Springboot的篮球竞赛预约平台(有论文)

基于Springboot的篮球竞赛预约平台&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的篮球竞赛预约平台 本系统分为前台功能模块、管理员功能模块以及用户功能模块。 前台功能模块&#xff1a;用户进入到平台首页&a…