Nginx基本操作

news2024/11/17 1:32:52

目录

引言

一、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://www.coloradmin.cn/o/1467445.html

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

相关文章

【Ubuntu】Anaconda的安装和使用

目录 1 安装 2 使用 1 安装 (1)下载安装包 官网地址:Unleash AI Innovation and Value | Anaconda 点击Free Download 按键。 然后 点击下图中的Download开始下载安装包。 (2)安装 在安装包路径下打开终端&#…

【前端素材】推荐优质后台管理系统Dashmin平台模板(附源码)

一、需求分析 后台管理系统在多个层次上提供了丰富的功能和细致的管理手段,帮助管理员轻松管理和控制系统的各个方面。其灵活性和可扩展性使得后台管理系统成为各种网站、应用程序和系统不可或缺的管理工具。 后台管理系统是一种具有多层次结构的软件系统&#xf…

图片Base64编码解码的优缺点及应用场景分析

title: 图片Base64编码解码的优缺点及应用场景分析 date: 2024/2/24 14:24:37 updated: 2024/2/24 14:24:37 tags: 图片Base64编码解码HTTP请求优化网页性能加载速度安全性缓存机制 随着互联网的迅猛发展,图片在网页和移动应用中的使用越来越广泛。而图片的传输和加…

安科瑞企业微电网智慧能源管理系统生态交流会顺利举行

2024年1月12日,安科瑞企业微电网智慧能源管理系统生态交流会顺利举行,本次会议旨在围绕双碳目标,共同探讨如何抓住新机遇、新市场,充分利用安科瑞企业微电网智慧能源的一站式服务,为企业节能、减碳、降本赋能&#xff…

学习使用在mysql中查询指定字段字符串包含多个字符串的方法

学习使用在mysql中查询指定字段字符串包含多个字符串的方法 使用LIKE关键字使用REGEXP关键字使用FIND_IN_SET函数使用INSTR函数和AND关键字 使用LIKE关键字 SELECT * FROM table_name WHERE column_name LIKE %string1% AND column_name LIKE %string2%;使用LIKE关键字&#x…

MySQL学习Day19——索引的数据结构

一、为什么使用索引: 索引是存储引擎用于快速找到数据记录的一种数据结构,就好比一本教课书的目录部分,通过目录中找到对应文章的页码,便可快速定位到需要的文章。MySQL中也是一样的道理,进行数据査找时,首先查看查询…

MyBatis-获取参数

1. 创建MyBatis配置文件模板 编辑完Mybatis核心配置文件和properties文件后,打开IDEA的设置界面,找到Editor中的File and Code Templates,点击加号新增模板。接着将编辑好的核心配置文件中的内容复制粘贴到空白框中,设置好模板名…

Android进阶之旅(第5天)

充实的一天又过去了,今天真的好冷啊,我们这里雪很大,早上最傻逼的决定就是穿了一个短的棉袜出来,漏脚踝,冷成傻子 接下来老规矩,看下昨天计划的完成情况: 今日计划: 1.过bug 2.看…

python 提取PDF文字

使用pdfplumber,不能提取扫描的pdf和插入的图片。 import pdfplumberfile_path rD:\UserData\admindesktop\官方文档\1903_Mesh-Models-Overview_FINAL.pdf with pdfplumber.open(file_path) as pdf:page pdf.pages[0]print(page.extract_text()) # 所以文字prin…

Vulnhub靶机:DC9

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:DC9(10.0.2.62) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/entry/dc-9,412/…

k8s的svc流量通过iptables和ipvs转发到pod的流程解析

文章目录 1. k8s的svc流量转发1.1 service 说明1.2 endpoints说明1.3 pod 说明1.4 svc流量转发的主要工作 2. iptables规则解析2.1 svc涉及的iptables链流程说明2.2 svc涉及的iptables规则实例2.2.1 KUBE-SERVICES规则链2.2.2 KUBE-SVC-EFPSQH5654KMWHJ5规则链2.2.3 KUBE-SEP-L…

基于JAVA的二手车交易系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 二手车档案管理模块2.3 车辆预约管理模块2.4 车辆预定管理模块2.5 车辆留言板管理模块2.6 车辆资讯管理模块 三、系统设计3.1 E-R图设计3.2 可行性分析3.2.1 技术可行性分析3.2.2 操作可行性3.2.3 经济…

基于java Springboot实现教务管理系统

基于java Springboot实现教务管理系统《视频版-建议收藏》 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文…

cmake 项目。qt5升级 qt6 报错 error: “Qt requires a C++17 compiler 已解决

日常项目开发中。需要对qt5升级到qt6 做cmake兼容配置,在编译中发现,有c 编译环境 报错 2>C:\Qt\6.5.3\msvc2019_64\include\QtCore/qcompilerdetection.h(1226,1): fatal error C1189: #error: "Qt requires a C17 compiler, and a suitable …

容器_Docker ( 06 )

容器_Docker ( 05 ) Kubernetes 资源对象管理 资源对象文件 模板与帮助信息 资源对象文件优势 命令无法实现高级复杂的功能某些资源对象使用命令无法创建方便管理 , 保存 , 追溯历史 资源对象文件太长 , 记不住怎么办 使用命令创建模板查询帮助信息查询官方手册 生成资源…

数据价值在线化丨TiDB 在企查查数据中台的应用及 v7.1 版本升级体验

本文介绍了企查查在数据中台建设中使用 TiDB 的经验和应用。通过从 MySQL 到 TiDB 的迁移,企查查构建了基于 TiDB Flink 的实时数仓框架 ,充分利用了 TiDB 的分布式架构、MySQL 兼容性和完善的周边工具等特性,实现了数据的在线化处理。2023 年…

构建生物医学知识图谱from zero to hero (3):生物医学命名实体识别和链接

生物医学实体链接 🤓现在是激动人心的部分。对于NLP和命名实体识别和链接的新手,让我们从一些基础知识开始。命名实体识别技术用于检测文本中的相关实体或概念。例如,在生物医学领域,我们希望在文本中识别各种基因、药物、疾病和其他概念。 生物医学概念提取 在这个例子中…

C++入门学习(三十六)函数的声明

程序是自上而下运行的&#xff0c;比如我下面的代码&#xff1a; #include <iostream> #include<string> using namespace std;int main() { int a1; int b2;int sumaddNumbers(a,b); cout<<sum;return 0; }int addNumbers(int a, int b) { int sum …

一种基于javax.max注解的能力增强技术

目录 现有框架的不足之处 我的改进内容 改进的成果 现有框架的不足之处 Max是javax.validation包中的一个常用注解&#xff0c;用于对传入参数进行最大值校验。但是其校验区间为闭区间&#xff0c;且不支持修改&#xff0c;如&#xff1a;Max(2)&#xff0c;表示表示传入参…

Debug|百度OCR识别错误error_code: 216205

1. 什么错误 在使用百度OCR识别时遇到了错误error_code: 216205。 参照文档【百度OCR文字识别 - API文档 - 错误码】中的描述&#xff0c;是我的图片转base64后大于10M 测试两张图片&#xff1a;923k图片的Base64 大于 10M&#xff1b;2M图片的Base64 小于 10M。 # 电脑上看…