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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB之客户端工具与核心概念及基本类型篇

MongoDB之客户端工具与核心概念及基本类型篇 文章目录 MongoDB之客户端工具与核心概念及基本类型篇1. MongoDB是什么?1. 关于MongoDB2. 相关客户端工具1. MongoDB Compass2. Studio 3T3. Navicat for MongoDB4. NoSQL Manager for MongoDB Professional 2.MongoDB相关概念2.1 …

Linux安装JDK,Tomcat,MySQL的安装以及项目部署

一、jdk安装配置 传入资源 连接后,创建存放资源的文件,将jdk,tomcat,Mysql的压缩包复制到文件中。 输入命令: cd javaCloudJun/software (进入要文件中) 输入命令 : pwd (查看当前的文件路径) 将文件路径复制到左边的搜索框中…

接口测试实战--自动化测试流程

一、项目前期准备 常见项目软件架构: springMvc:tomcat里运行war包(在webapps目录下) springboot:java -jar xx.jar -xms(**) 运行参数 springCloud:k8s部署,使用kubectl create -f xx.yaml 接口自动化测试介入需越早越好,只要api定义好就可以编写自动化脚本; 某个…

掌握BeautifulSoup4:爬虫解析器的基础与实战【第91篇—BeautifulSoup4】

掌握BeautifulSoup4:爬虫解析器的基础与实战 网络上的信息浩如烟海,而爬虫技术正是帮助我们从中获取有用信息的重要工具。在爬虫过程中,解析HTML页面是一个关键步骤,而BeautifulSoup4正是一款功能强大的解析器,能够轻…

typecho 给文章创建目录树

受益于 shortcode 短代码插件和泽泽短代码中目录树的显示样式&#xff0c;形成了自己实现添加文章目录的思路&#xff1a; 一、文章目录树的结构 <div id"toc"><div class"toc-left"><div class"toc-btn" type"button&quo…

1.QT简介(介绍、安装,项目创建等)

1. QT介绍 Qt&#xff08;官方发音 [kju:t]&#xff09;是一个跨平台的C开发库&#xff0c;主要用来开发图形用户界面&#xff08;Graphical User Interface&#xff0c;GUI&#xff09;程序 Qt 是纯 C 开发的&#xff0c;正常情况下需要先学习C语言、然后在学习C然后才能使用…

三院院士 Michael I. Jordan 指出:大模型在两个方向仍需 “努力“,补充过度自信问题和逆转诅咒问题

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 三院院士 Michael I. Jordan 指出&#xff1a;大模型在两个方向仍需 “努力“ Michael I. Jordan 的个人主页&#xff1a;https://people.eecs.berkeley.edu/~jordan/ 回顾过去的一年&#xff0c;大模…

【数据结构和算法初阶(c语言)】数据结构前言,初识数据结构(给你一个选择学习数据结构和算法的理由)

1.何为数据结构 数据结构(Data Structure)是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的 数据元素的集合。本质来讲就是在内存中去管理数据方式比如我们的增删查改。在内存中管理数据的方式有很多种&#xff08;比如数组结构、链式结构、树型结…

【Spring MVC】处理器映射器:AbstractHandlerMethodMapping源码分析

目录 一、继承体系 二、HandlerMapping 三、AbstractHandlerMapping 四、AbstractHandlerMethodMapping 4.1 成员属性 4.1.1 MappingRegistry内部类 4.2 AbstractHandlerMethodMapping的初始化 4.3 getHandlerInternal()方法&#xff1a;根据当前的请求url&#xff0c;…

linux安装sqoop

目录 下载配置 下载 本地下载好上传&#xff0c;解压&#xff0c;重命名&#xff0c;注意路径 tar -zxvf /opt/sqoop/sqoop-1.4.6.tar.gz -C /opt/ mv /opt/sqoop-1.4.6.bin__hadoop-2.0.4-alpha /opt/sqoop配置 环境变量 echo export SQOOP_HOME/opt/sqoop/ >> /etc…

FISCO BCOS(二)———配置及使用控制台

一、前言 FISCO BCOS是由金融区块链合作联盟&#xff08;深圳&#xff09;与微众银行共同发起的开源区块链项目&#xff0c;支持多链多账本&#xff0c;满足金融行业复杂业务需求。本文将介绍如何在Ubuntu操作系统上使用Linux命令配置FISCO BCOS的控制台并进行get/set操作。 目…

文生视频模型调研

文生视频只有OpenAI的Sora&#xff0c;其他的&#xff08;&#xff09;都是动图。 OpenAI发布了可以生成60s视频的Sora模型。刚刚发布的google的Gemini pro 1.5就一下子变得无人问津了&#xff0c;太尴尬了。 在这之前视频生成的天花板是Runway&#xff0c;支持最多18s视频生成…

设计模式-创建型模式-建造者模式

建造者模式&#xff08;Builder Pattern&#xff09;&#xff1a;将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。 建造者模式一步一步地创建一个复杂的对象&#xff0c;它允许用户只通过指定复杂对象…

MBG(Mybatis-Generator)生成代码

目录 步骤&#xff1a; 1. 创建数据库表 2. 配置 MyBatis Generator 3. 运行 MyBatis Generator 4. 编写业务逻辑 在实际开发中&#xff0c;你会发现有很多重复的工作&#xff1a; 首先是PO对象&#xff0c;我们往往创建与数据库表字段一一对应的PO对象; 其次在Mapper里…

十四届蓝桥杯国赛考试计算思维 U10 组真题和答案

答案在底部 第一题 恐龙乐园的规划图中有 n 个小岛,m 座小桥,每座桥连接两个小岛。 下图是 n=5,m=8 的一个例子: 希希发现,如果拆除一些桥,仍然能使任何两个小岛都互通。最多可以拆除( )座 桥。 A. n-m B. m-n C. m-m-1 D. m-n+1 第二题

YOLOv8重磅升级!新增旋转目标检测功能

YOLOv8重磅升级&#xff01;新增旋转目标检测功能&#xff0c;基于DOTA数据集&#xff0c;支持15个类别目标航拍图像检测&#xff0c;模型&代码均已开源~ 新版亮点 YOLOv8-OBB&#xff1a;YOLOv8中OBB(Oriented Bounding Box)模型的引入标志着物体检测的重要一步&#xff…

简单mock server模拟用户请求给小程序提供数据

整理小程序代码时发现一此小程序离开了mock-server基本上没有办法显示了,因此用node,express来满足给小程序提供演示数据的功能 const express require(express); const { createCanvas, Image } require(canvas); const fs require(fs); const path require(path);…

【图像处理】Matlab图像边缘检测与直线提取

1、问题描述&#xff1a; 使用Matlab图像边缘检测和直线提取。通过选取感兴趣区域&#xff0c;用户可以选择需要处理的图像部分。随后&#xff0c;对选取的区域进行亮度调整、直方图均衡化和自适应直方图均衡化等预处理操作&#xff0c;以增强图像的细节和对比度。 然后…

SpringBoot+PDF.js实现按需分片加载预览(包含可运行示例源码)

SpringBootPDF.js实现按需分片加载预览 前言分片加载的效果前端项目前端项目结构前端核心代码前端项目运行 后端项目后端项目结构后端核心代码后端项目运行 项目运行效果首次访问分片加载 项目源码 前言 本文的解决方案旨在解决大体积PDF在线浏览加载缓慢、影响用户体验的难题…

从docx提取文本的Python实战代码

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…