当前位置: 首页 > news >正文

Nginx—Rewrite

目录

一、Nginx—Rewrite概述

1、常用的Nginx正则表达式

2、Rewrite功能

3、Rewrite跳转实现

4、Rewrite执行顺序和语法格式

二、location概述

1、location分类

2、location 常用的匹配规则

3、location 优先级

案例一:

案例二:

案例三:

案例四:

案例五:

案例六:

案例七:

案例八:

案例九:

三、Nginx 常见网站配置示例

3.1、网站根目录匹配规则

3.2、静态文件处理规则

3.3、动态请求转发规则

四、Rewrite 案例

1、基于域名的跳转

2、基于客户端 IP 访问跳转

3、基于旧域名跳转到新域名后面加目录

4、基于参数匹配的跳转

5、基于目录下所有 php 结尾的文件跳转

6、基于最普通一条 url 请求的跳转


一、Nginx—Rewrite概述

1、常用的Nginx正则表达式

^匹配输入字符串的起始位置
$匹配输入字符串的结束位置
*匹配前面的字符零次或多次
+匹配前面的字符一次或多次
?匹配前面的字符零次或一次
.匹配除 \n 之外的任何单个字符
\转义字符,使后面的字符被视为普通字符或特殊字符
\d匹配数字(相当于 [0-9]
{n}匹配前面的字符恰好 n 次
{n,}匹配前面的字符至少 n 次
{n,m}匹配前面的字符至少 n 次,至多 m 次
[]定义字符集,匹配括号内的任意单个字符
[c]匹配单个字符 c
[a-z]匹配小写字母中的任意一个
[a-zA-Z0-9]匹配所有大小写字母或数字
()组括号,分组和捕获子表达式

2、Rewrite功能

①、使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。

  • 比如:更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。

②、rewrite只能放在server{},location{},if{}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用,

  • 例如:http://www.kgc.com/abc/bbs/index.php?a=1&b=2 只对/abc/bbs/index.php重写。


3、Rewrite跳转实现

ngx_http_rewrite_module 模块

  • 支持 URL 重写和条件判断。
  • 通过 if 指令支持条件判断,但不支持 else

URL 跳转

  • 可以在 location 块中使用 rewrite 指令实现从一个 location 跳转到另一个 location
  • 跳转循环最多执行 10 次,超过 10 次会导致 Nginx 返回 500 错误。

PCRE 支持

  • 支持 Perl 兼容正则表达式(PCRE)语法规则进行匹配。

set 指令

  • 用于创建新的变量并设定其值。

4、Rewrite执行顺序和语法格式

①、执行顺序:

执行 server 块中的 rewrite 指令

  • server 块中定义的 rewrite 指令首先被执行,用于处理请求。

执行 location 匹配

  • 根据请求的 URI,Nginx 会匹配最合适的 location 块。

执行选定的 location 中的 rewrite 指令

  • 在匹配到的 location 块中,执行该块内定义的 rewrite 指令。

②、语法格式:

rewrite <regex> <replacement> [flag];

regex

  • 表示用于匹配请求 URL 的正则表达式规则。
  • replacement

    • 表示 URL 重写后的目标内容或路径。

flag(可选):

  • 用于指定重写的标志,影响重写操作的行为。

常见标志包括:

  • last:停止当前 location 的匹配过程,重新选择合适的 location
  • break:停止当前 location 的匹配过程,并继续执行当前 location 中的其他指令。
  • redirect:发出一个临时的 302 重定向响应。
  • permanent:发出一个永久的 301 重定向响应。

二、location概述

1、location分类

①、精准匹配

  • 语法:location = / {...}
  • 说明:严格匹配指定的 URI,只有当请求的 URI 完全匹配时,才会应用该 location 块中的配置。

②、一般匹配

  • 语法:location / {...}
  • 说明:前缀匹配,请求的 URI 以指定的前缀开头时会匹配该 location 块。适用于大多数简单的 URI 匹配情况。

③、正则匹配

  • 语法:location ~ /regex {...}
  • 说明:使用正则表达式进行匹配,适用于复杂的 URI 匹配场景。正则匹配会在一般匹配后进行。

2、location 常用的匹配规则

匹配规则说明示例
=精确匹配 URI,URI 必须完全匹配时才应用location = /yudh { ... }
^~普通字符前缀匹配,匹配成功后停止其他 location 匹配location ^~ /images/ { ... }
~区分大小写的正则表达式匹配location ~ .jpg$ { ... }
~*不区分大小写的正则表达式匹配location ~* .jPg$ { ... }
!~区分大小写的正则表达式匹配取非location !~ .jpg$ { ... }
!~*不区分大小写的正则表达式匹配取非location !~* .jPg$ { ... }

3、location 优先级

  • 首先精确匹配 =
  • 其次前缀匹配 ^~
  • 其次是按文件中顺序的正则匹配 ~或~*
  • 然后匹配不带任何修饰的前缀匹配  abc
  • 最后是交给 / 通用匹配      /

案例一

location = /http://www.kgc.com/data {# 配置
}
location = /abc {# 配置
}
  • location = /http://www.kgc.com/data它不匹配/data,因为location =/http://www.kgc.com/data=为精确匹配 / ,主机名后面不能带任何字符串,比如访问 / 和 /data,则 / 匹配,/data 不匹配。
  • 再比如 location = /abc,它只匹配/abc ;/abc/或 /abcd不匹配。若 location  /abc,则即匹配/abc 或/abcd/ 同时也匹配。

案例二:

location / {# 配置
}

比如有以下三个地址:

  • http://www.kgc.com/data  
  • http://www.kgc.com/data/abc    
  • /a/usr/local/nginx/html/data/abc 

因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 比如访问 / 和 /data, 则 / 匹配,/data 也匹配。但若后面是正则表达式会和最长字符串优先匹配(最长匹配)

案例三:

location /documents/ {# 配置
}

比如有以下一个地址:

  • http://www.kgc.com/documents/abc

它匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索其它 location;只有其它 location后面的正则表达式没有匹配到时,才会采用这一条。

案例四:

location /documents/abc {# 配置
}

匹配任何以 /documents/abc 开头的地址,匹配符合以后,还要继续往下搜索其它 location;只有其它 location后面的正则表达式没有匹配到时,才会采用这一条。

案例五:

location ^~ /images/ {# 配置
}

匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。

案例六:

location ~* \.(gif|jpg|jpeg)$ {# 配置
}

匹配所有以 gif、jpg或jpeg 结尾的请求,然而,所有请求 /images/ 下的图片会被 location ^~ /images/ 处理,因为 ^~ 的优先级更高,所以到达不了这一条正则。

案例七:

location /images/abc {# 配置
}

 最长字符匹配到 /images/abc,优先级最低,继续往下搜索其它 location,会发现 ^~ 和 ~ 存在。

案例八:

location ~ /images/abc {# 配置
}

匹配以/images/abc 开头的,优先级次之,只有去掉 location ^~ /images/ 才会采用这一条。

案例九:

location /images/abc/1.html {# 配置
}
location ~ /images/abc/1.html {# 配置
}

匹配/images/abc/1.html 文件,如果和正则location ~ /images/abc/1.html 相比,正则优先级更高

优先级总结:

(location = 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (location /)

location 匹配顺序:

  • 首先看 优先级:精确>前缀>正则>一般>通用
  • 优先级相同:正则看上下顺序,上面的优先;一般匹配看长度,最长匹配的优先
  • 精确、前缀、正则、一般 都没有匹配到,最后再看通用匹配  一般匹配

三、Nginx 常见网站配置示例

在实际网站的 Nginx 配置中,通常至少会定义三个匹配规则,以实现高效的请求处理。这些规则包括首页的匹配规则、静态文件的处理规则,以及动态请求的转发规则。

3.1、网站根目录匹配规则

这个规则用于直接匹配网站的根目录(/),通常用于访问网站首页。因为通过域名访问网站首页的请求较为频繁,使用这个规则可以加速处理。首页可以是一个静态页面,也可以转发到后端应用服务器。

location = / {root   html;index  index.html index.htm;
}

解释:当请求 URI 为 / 时,Nginx 会寻找 html 目录下的 index.htmlindex.htm 作为首页响应。如果有必要,这个请求也可以被转发到后端服务器进行处理。

3.2、静态文件处理规则

Nginx 作为 HTTP 服务器,处理静态文件请求是其强项。可以通过目录匹配或后缀匹配来处理静态资源请求,任选其一或搭配使用。

目录匹配:匹配以 /static/ 开头的请求,将其映射到文件系统的 /webroot/static/ 目录。

location ^~ /static/ {root /webroot/static/;
}

后缀匹配:匹配特定后缀的请求,如 .html.gif.jpg 等,将这些请求映射到文件系统的 /webroot/res/ 目录。

location ~* \.(html|gif|jpg|jpeg|png|css|js|ico)$ {root /webroot/res/;
}

解释:目录匹配主要用于静态资源的路径匹配,后缀匹配则用于对特定类型文件的请求匹配。根据实际需求,可以选择一种或两种方式组合使用。

3.3、动态请求转发规则

对于非静态文件的请求,通常会默认认为是动态请求,这类请求需要转发到后端应用服务器进行处理。例如,将带有 .php.jsp 后缀的请求转发给 Tomcat 等后端服务器。

location / {proxy_pass http://tomcat_server;
}

解释:这个通用规则将所有未匹配到前面规则的请求(即大多数动态请求)转发到后端应用服务器 http://tomcat_server 进行处理。

四、Rewrite 案例

1、基于域名的跳转

在某些情况下,可能需要将旧域名的所有请求重定向到新域名,并且保持 URL 中的参数不变。以下是一个 Nginx 配置示例,用于将旧域名 www.kgc.com 的请求永久重定向到新域名。

编辑 Nginx 配置文件

vim /usr/local/nginx/conf/nginx.conf

设置 Nginx 服务器块

server {listen       80;server_name  www.kgc.com;    //旧域名charset utf-8;access_log  /var/log/nginx/www.kgc.com-access.log;    //设置访问日志location / {//添加域名重定向逻辑//if ($host = 'www.kgc.com') {    //$host 变量表示请求的主机名rewrite ^/(.*)$ http://www.benet.com/$1 permanent;     //将旧域名的请求重定向到新域名,保持参数不变}root   html;index  index.html index.htm;}
}

更新 /etc/hosts 文件

echo "172.16.88.22 www.kgc.com www.benet.com" >> /etc/hosts

重启 Nginx 服务并测试

systemctl reload nginx

在浏览器中访问旧域名,如 http://www.kgc.com/test/1.html,你将会看到页面自动跳转到 http://www.benet.com/test/1.html,并且浏览器的开发者工具中会显示返回的 301 状态码,表示实现了永久重定向。

2、基于客户端 IP 访问跳转

在某些情况下,可能需要根据客户端的 IP 地址来控制对网站的访问。例如,新的业务版本上线期间,所有的访问都需要跳转到维护页面,只有特定的公司 IP 地址可以正常访问网站。以下是 Nginx 的配置示例,用于实现这个需求。

首先,打开 Nginx 的主配置文件 nginx.conf 并进行编辑

vim /usr/local/nginx/conf/nginx.conf

在配置文件中,添加如下的 server 块配置,用于处理旧域名的请求并将其重定向到新域名。

server {listen       80;server_name  www.kgc.com;    //设置域名charset utf-8;access_log  /var/log/nginx/www.kgc.com-access.log;    //设置访问日志//设置 IP 访问控制变量set $rewrite true;     //默认所有 IP 需要重定向到维护页面# 判断是否为合法 IP 地址if ($remote_addr = "172.16.88.22") {  //如果客户端 IP 为 172.16.88.22set $rewrite false;  //不进行重写,允许正常访问}//对于非法 IP 地址进行重写跳转if ($rewrite = true) {    //如果变量 $rewrite 仍为 truerewrite (.+) /weihu.html;  //重定向到维护页面}//配置维护页面的 locationlocation = /weihu.html {root /var/www/html;  //设置维护页面文件所在目录}//配置正常访问的 locationlocation / {root   html;  //设置正常网站的根目录index  index.html index.htm;}
}

/var/www/html/ 目录下创建一个简单的维护页面

mkdir -p /var/www/html/
echo "<h1>We are maintaining now!</h1>" > /var/www/html/weihu.html

重启 Nginx 服务并测试

systemctl restart nginx
  • 访问网站时,只有 IP 为 172.16.88.22的用户 能够正常访问网站的内容。
  • 其他所有 IP 的访问请求都会被重定向到 /weihu.html 维护页面,并显示维护信息 We are maintaining now!

3、基于旧域名跳转到新域名后面加目录

当旧域名需要重定向到新域名的特定路径时,可以使用 Nginx 的 rewrite 指令进行配置。以下是如何将旧域名 http://bbs.kgc.com/post/ 下的所有请求跳转到新域名。

打开 Nginx 的主配置文件 nginx.conf 并进行编辑

vim /usr/local/nginx/conf/nginx.conf

在配置文件中,添加如下的 server 块配置,用于处理旧域名的重定向

server {listen       80;server_name  bbs.kgc.com;    //旧域名charset utf-8;access_log  /var/log/nginx/www.kgc.com-access.log;    //设置访问日志//设置旧域名下 /post 的重定向规则location /post {rewrite ^/post(.*)$ http://www.kgc.com/bbs/post$1 permanent;  //进行永久重定向}//配置其他请求的处理location / {root   html;index  index.html index.htm;}
}

在新域名的对应路径下创建一个测试文件

mkdir -p /usr/local/nginx/html/bbs/post
echo "this is 1.html" > /usr/local/nginx/html/bbs/post/1.html

修改本地 hosts 文件,为了在本地测试,将旧域名映射到本地服务器的 IP 地址

echo "172.16.88.22 bbs.kgc.com" >> /etc/hosts

重启 Nginx 服务并测试

systemctl restart nginx

在浏览器中访问 http://bbs.kgc.com/post/1.html。你应该会被重定向到http://www.kgc.com/bbs/post/1.html。这表明重定向规则已经成功应用,并且旧域名的请求被正确地转发到了新域名下的相应路径。

4、基于参数匹配的跳转

在实际应用中,有时需要根据特定的 URL 参数模式将用户请求重定向到其他页面。下面是如何使用 Nginx 的 rewrite 指令实现这样的需求:将访问 http://www.kgc.com/100-(100|200)-100.html 的请求重定向到 http://www.kgc.com 首页。

打开 Nginx 的主配置文件 nginx.conf 并进行编辑:

vim /usr/local/nginx/conf/nginx.conf

在配置文件中,添加如下的 server 块配置,用于处理基于参数匹配的跳转:

server {listen       80;server_name  www.kgc.com;    //域名设置charset utf-8;access_log  /var/log/nginx/www.kgc.com-access.log;     //设置访问日志# 设置基于参数匹配的跳转规则if ($request_uri ~ ^/100-(100|200)-(\d+).html$) {rewrite (.+) http://www.kgc.com permanent;    //重定向到首页}# 配置其他请求的处理location / {root   html;index  index.html index.htm;}
}
  • $request_uri:表示包含请求参数的原始 URI,不包含主机名。
  • if ($request_uri ~ ^/100-(100|200)-(\d+).html$):匹配 URL 中符合 100-100-100.html100-200-100.html 模式的请求。
  • rewrite (.+) http://www.kgc.com permanent;:将符合条件的请求永久重定向到 http://www.kgc.com 首页。

重启 Nginx 服务并测试

systemctl restart nginx

使用浏览器访问以下链接:

  • http://www.kgc.com/100-100-100.html
  • http://www.kgc.com/100-200-100.html

两者均应被重定向到 http://www.kgc.com 首页,表明 Nginx 已成功匹配并重定向请求。

Nginx 相关变量解释

  • $request_uri:包含原始请求 URI 和参数(如 /abc/bbs/index.html?a=1&b=2)。
  • $uri:仅包含请求的路径部分,不包含参数(如 /abc/bbs/index.html)。
  • $document_uri:与 $uri 相同,表示当前请求的路径部分,不包含参数。

5、基于目录下所有 php 结尾的文件跳转

在某些情况下,可能需要将访问特定目录下所有以 .php 结尾的文件请求重定向到网站首页。以下是如何在 Nginx 中配置这类跳转的详细步骤。

首先,打开 Nginx 的主配置文件 nginx.conf 进行编辑:

vim /usr/local/nginx/conf/nginx.conf

在配置文件中,添加如下的 server 块,用于处理对特定目录下 .php 文件的重定向:

server {listen       80;server_name  www.kgc.com;  # 设置域名charset utf-8;access_log  /var/log/nginx/www.kgc.com-access.log;  # 设置访问日志# 配置对 /upload/ 目录下所有 .php 文件的跳转location ~* /upload/.*\.php$ {rewrite (.+) http://www.kgc.com permanent;  # 将匹配的请求永久重定向到首页}# 配置其他请求的处理location / {root   html;index  index.html index.htm;}
}
  • location ~* /upload/.*\.php$:该行定义了对 /upload/ 目录下所有以 .php 结尾的文件进行正则匹配,~* 表示不区分大小写。
  • rewrite (.+) http://www.kgc.com permanent;:将符合条件的请求永久重定向到 http://www.kgc.com 首页。

重启 Nginx 服务并测试重定向

systemctl restart nginx

使用浏览器访问以下链接:

  • http://www.kgc.com/upload/123.php

请求将被重定向到 http://www.kgc.com 首页,表明 Nginx 已成功匹配并重定向请求。

6、基于最普通一条 url 请求的跳转

在一些场景中,可能需要将访问特定页面的请求重定向到网站的首页。以下是如何在 Nginx 中配置这类 URL 请求跳转的详细步骤。

首先,打开 Nginx 的主配置文件 nginx.conf 进行编辑

vim /usr/local/nginx/conf/nginx.conf

在配置文件中,添加如下的 server 块,用于处理对特定 URL 的重定向:

server {listen       80;server_name  www.kgc.com;    //设置域名charset utf-8;access_log  /var/log/nginx/www.kgc.com-access.log;    //设置访问日志//配置对 /abc/123.html 页面请求的跳转location ~* ^/abc/123.html {rewrite (.+) http://www.kgc.com permanent;  //将匹配的请求永久重定向到首页}//配置其他请求的处理location / {root   html;index  index.html index.htm;}
}
  • location ~* ^/abc/123.html:该行定义了对具体 URL /abc/123.html 进行匹配,~* 表示不区分大小写。
  • rewrite (.+) http://www.kgc.com permanent;:将符合条件的请求永久重定向到 http://www.kgc.com 首页。

重启 Nginx 服务并测试重定向

systemctl restart nginx

使用浏览器访问以下链接:

  • http://www.kgc.com/abc/123.html

请求将被重定向到 http://www.kgc.com 首页,表明 Nginx 已成功匹配并重定向请求。

相关文章:

Nginx—Rewrite

目录 一、Nginx—Rewrite概述 1、常用的Nginx正则表达式 2、Rewrite功能 3、Rewrite跳转实现 4、Rewrite执行顺序和语法格式 二、location概述 1、location分类 2、location 常用的匹配规则 3、location 优先级 案例一&#xff1a; 案例二&#xff1a; 案例三&…...

《深入浅出WPF》读书笔记.5控件与布局(上)

《深入浅出WPF》读书笔记.5控件与布局(上) 背景 深入浅出WPF书籍学习笔记附代码。WPF中数据是核心是主动的,UI是数据的表达是被动的。 程序的本质是数据算法&#xff1b;控件的本质是数据行为&#xff1b; 5.控件与布局 一、6类控件派生关系 1.布局控件:可以容纳多个控件…...

二叉树的判断

二叉树的判断 判断一颗二叉树是不是搜索二叉树 &#xff08;左边的比根小&#xff0c;右边的比根大&#xff09; 中序遍历一下&#xff0c;如果是的话就一定是升序的 如何判断一颗二叉树是否是完全二叉树 1.遍历任意的节点时候&#xff0c;如果返回右孩子没有左孩子&#x…...

Hive3:常用的内置函数

1、查看函数列表 -- 查看所有可用函数 show functions; -- 查看count函数使用方式 describe function extended count;2、数学函数 -- round 取整&#xff0c;设置小数精度 select round(3.1415926); -- 取整(四舍五入) select round(3.1415926, 4); -- 设置小数精度4位(四…...

设计模式---构建者模式(Builder Pattern)

构建者模式&#xff08;Builder Pattern&#xff09; 是一种创建型设计模式&#xff0c;旨在将复杂对象的构建过程与其表示分离。它允许使用相同的构建过程创建不同的表示。该模式通常用于构建复杂对象&#xff0c;这些对象由多个部分组成或具有多个可选属性。 构建者模式的核…...

Pytorch中transform的应用

在PyTorch中&#xff0c;transforms模块主要用于对图像进行预处理和数据增强&#xff0c;以便于训练深度学习模型。这些转换操作可以包括裁剪、缩放、旋转、翻转等&#xff0c;以及对图像进行标准化处理。下面将详细介绍一些常用的transforms操作及其应用。 1. 常用的transfor…...

okular阅读软件简介

okular阅读软件官网&#xff1a;https://okular.kde.org/zh-cn/ Okular 是一款由 KDE 开发的跨平台文档阅读器&#xff0c;以其功能丰富、轻巧快速而著称。它支持多种文件格式&#xff0c;包括 PDF、EPub、DjVu、MD 文档&#xff0c;以及 JPEG、PNG、GIF、Tiff 和 WebP 图像&a…...

【书生大模型实战营(暑假场)闯关材料】基础岛:第1关 书生大模型全链路开源体系

【书生大模型实战营&#xff08;暑假场&#xff09;闯关材料】基础岛&#xff1a;第1关 书生大模型全链路开源体系 简介一、背景介绍1.1 背景介绍1.2 全链路开源开放体系的优势 二、全链路开源开放体系的主要特点2.1 模型组件的公开和共享2.2 数据集的公开和共享2.3 模型的互操…...

掌握抽象工厂模式:打造灵活且强大的跨平台产品族

抽象工厂模式是一种创建型设计模式&#xff0c;它的核心思想是提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们具体的类。这种模式通过使用抽象工厂来封装和隔离具体产品的创建过程&#xff0c;使得客户端可以通过工厂接口来创建一族产品&#xff0c;从…...

【Hadoop】建立圈内组件的宏观认识(大纲版)

Hadoop生态圈解析&#xff1a;各组件的主要功能及作用详解 Hadoop生态圈是由一系列开源组件组成的&#xff0c;这些组件共同构建了一个大规模分布式计算和存储平台。 01存储类型组件 HDFS Hadoop体系的核心组件之一&#xff0c;它是一个分布式文件系统&#xff0c;被设计用于存…...

NFS主从同步Rsync、sersync2

准备工作检查selinux 防火墙 #关闭 selinux sed -i s/^SELINUX.*/SELINUXdisabled/ /etc/selinux/config #关闭防火墙 systemctl stop firewalld;systemctl disable firewalld1.安装nfs相关包 # 所有节点安装nfs相关包 yum install nfs-utils -y systemctl enable nfs-utils …...

uniapp项目中,在原有数据中增加选中的状态,数据不改变

uniapp项目中&#xff0c;在原有数据中增加选中的状态&#xff0c;选中后打印的数据显示有变化&#xff0c;然而文本的数据并没有发生变化 看代码 export default {data() {return {thicate: [{ id: 1, text: "Item 1" },{ id: 2, text: "Item 2" },{ id…...

WPF自定义控件

控件模板 顾名思义就是在原有的控件上进行模版修改成自己需要的样式 把ProgressBar修改为一个水液面的进度条 <Window x:Class"XH.CustomLesson.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://s…...

Java中的全局异常处理器 -- GlobalExceptionHandler

开发记录&#xff1a;全局异常处理器笔记 import lombok.extern.slf4j.Slf4j; import org.mybatis.spring.MyBatisSystemException; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.RedisConnectionFailureException; im…...

R语言文本挖掘-万字详细解析tm包

tm包&#xff08;Text Mining Package&#xff09;是R语言中用于文本挖掘的强大工具包&#xff0c;它提供了一系列的功能来处理和分析文本数据。偶然看到这个包&#xff0c;我们一起看看其中的基本功能&#xff1a; 数据载入&#xff1a;tm包支持从多种数据源载入文本数据&…...

JWT中的Token

1.JWT是什么&#xff1f; jwt&#xff08;json web token的缩写&#xff09;是一个开放标准&#xff08;rfc7519&#xff09;&#xff0c;它定义了一种紧凑的、自包含的方式&#xff0c;用于在各方之间以json对象安全地传输信息&#xff0c;此信息可以验证和信任&#xff0c;因…...

苹果在iOS 18.1中向第三方开发者开放iPhone的NFC芯片

苹果公司今天宣布&#xff0c;开发者很快就能首次在自己的应用程序中提供 NFC 交易功能&#xff0c;而目前这主要是Apple Pay独有的功能。从今年晚些时候的 iOS 18.1 开始&#xff0c;开发者将可以使用新的 API 提供独立于 Apple Pay 和 Apple Wallet 的应用内非接触式交易。 这…...

系统开发之禁止卸载应用名单

本文目的主要是记录自己系统&#xff08;Android7.1系统&#xff09;开发实现代码&#xff0c;以便后期通用的功能可以直接使用&#xff0c;不需要再去通过搜索然后筛选再验证的繁琐流程&#xff0c;大大减小自己的开发时间。 我实现思路是在系统内新增自己的数据库用来记录禁止…...

wait 和 notify

目录 wait() 方法 notify() 方法 notifyAll() 方法 nofity 和 notifyAll wait 和 notify wait 和 sleep 的区别 wait 和 join 的区别 由于线程之间是抢占式执行的&#xff0c;因此&#xff0c;线程之间执行的先后顺序难以预知&#xff0c;但是&#xff0c;在实际开发中&…...

docker 启动 mongo,redis,nacos.

docker run --name mymongodb -e MONGO_INITDB_ROOT_USERNAMEadmin -e MONGO_INITDB_ROOT_PASSWORDXiaoyusadsad -p 27017:27017 -v /path/to/mongo-data:/data/db -d mongodb/mongodb-community-server:4.4.18-ubuntu2004-v 的目录必须是绝对目录 目录必须 chmod 777 /path/…...

Docker Swarm 搭建

Docker Swarm 搭建 1. 环境介绍 操作系统Centos 7Centos 7Centos 7内核版本Linux 3.10.0-957.el7.x86_64Linux 3.10.0-957.el7.x86_64Linux 3.10.0-957.el7.x86_64主机名称swarm-managerswarm-worker1swarm-worker2IP192.168.1.100192.168.1.200192.168.1.250Docker Domain20…...

浅述TSINGSEE青犀EasyCVR视频汇聚平台与海康安防平台的区别对比

在我们的很多项目中都遇到过用户的咨询&#xff1a;TSINGSEE青犀EasyCVR视频汇聚平台与海康平台的区别在哪里&#xff1f;确实&#xff0c;在安防视频监控领域&#xff0c;EasyCVR视频汇聚平台与海康威视平台是两个备受关注的选择。它们各自具有独特的功能和优势&#xff0c;适…...

设计模式系列:策略模式的设计与实践

一、背景 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为设计模式&#xff0c;它定义了一系列的算法&#xff0c;并将每一个算法封装起来&#xff0c;使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户。 二、结构 策略模式主要包含三个角色&…...

数据挖掘之数据预处理

数据预处理是数据挖掘中的一个关键步骤&#xff0c;它的主要目的是对原始数据进行清洗、转换和格式化&#xff0c;以确保其质量和一致性&#xff0c;从而为后续的数据挖掘任务&#xff08;如分类、回归、聚类等&#xff09;提供可靠的数据基础。数据预处理一般包括以下几个主要…...

RocketMQ核心知识点整理,值得收藏!

1. 基本概念 Topic: 消息类别的集合&#xff0c;如订单消息发送到order_topic。标签&#xff08;Tag&#xff09;: 同一Topic下区分不同消息的标志&#xff0c;实现精细化消息管理。ConsumeGroup: 消息消费组&#xff0c;可订阅多个Topic&#xff0c;一个Topic可被多个消费组订…...

微信小程序骨架屏

骨架屏是常用的一种优化方案&#xff0c;针对于页面还未加载完时给用户的一种反馈方式。如果自己要写骨架屏有点复杂因为页面的元素过多且不稳定&#xff0c;这边直接使用微信开发工具生成骨架屏。也不只有微信开发工具有像常用的抖音开发工具&#xff0c;字节开发工具都有对应…...

Window下node安装以及配置

在 Windows 下安装 Node.js 非常简单&#xff0c;你可以通过官方提供的安装程序或者使用多版本管理工具&#xff08;如 NVM-Win&#xff09;来进行安装。下面是两种方法的具体步骤&#xff1a; 1. 安装 Node.js程序 步骤如下&#xff1a; 访问官方网站&#xff1a; 访问 Node…...

校园疫情防控系统--论文pf

TOC springboot432校园疫情防控系统--论文pf 课题的来源 2019年在我国武汉爆发了一场规模非常庞大、传播速度十分迅速、对人体危害及其严重的新冠肺炎疫情。引发此次急性感染性新冠肺炎疫情的冠状病毒传播性较强&#xff0c;其传播主要是通过呼吸道飞沫和密切接触这两个途径…...

在Debian 9上使用Apt安装Java的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 介绍 Java 和 JVM&#xff08;Java 虚拟机&#xff09;是许多软件的必备组件&#xff0c;包括 Tomcat、Jetty、Glassfish、Cassandra 和…...

人工智能在网络安全中的三大支柱

人工智能 (AI) 席卷了网络安全行业&#xff0c;各种供应商都在努力将 AI 融入其解决方案中。但 AI 与安全之间的关系不仅仅在于实现 AI 功能&#xff0c;还在于攻击者和防御者如何利用该技术改变现代威胁形势。它还涉及如何开发、更新和保护这些 AI 模型。如今&#xff0c;网络…...

rk3568mpp终端学习笔记

RK3568Terminal封装MppGraph 通过脚本取和设置音量/zigsun/bin/linux/bin.debug.Linux.rk3568/get_record_voice_value.sh /zigsun/bin/linux/bin.debug.Linux.rk3568/set_record_voice_value.sh class RK3568Terminal : public IAVLinkManager, p…...

【C++继承】赋值兼容转换作用域派生类的默认成员函数

1.继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类(或子类)。继承呈现了面向对象程序设计的层次结构&#xf…...

HTML5+JavaScript绘制彩虹和云朵

HTML5JavaScript绘制彩虹和云朵 彩虹&#xff0c;简称虹&#xff0c;是气象中的一种光学现象&#xff0c;当太阳光照射到半空中的水滴&#xff0c;光线被折射及反射&#xff0c;在天空上形成拱形的七彩光谱&#xff0c;由外圈至内圈呈红、橙、黄、绿、蓝、靛、紫七种颜色。事实…...

MySQL——单表查询(二)按条件查询(2)带 IN 关键字的查询

IN 关键字用于判断某个字段的值是否在指定集合中&#xff0c;如果字段的值在集合中&#xff0c;则满足条件&#xff0c;该字段所在的记录将被查询出来。其语法格式如下所示&#xff1a; SELECT *|字段名 1,字段名 2,… FROM 表名 WHERE 字段名 [NOT〕IN(元素 1,元素 2,…) 在上…...

【mysql】mysql 用户管理---创建、权限管理等等

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…...

本地服务器物理机中redis设置、取消密码

1.服务器物理机上redis的操作【服务器中操作】 &#xff08;1&#xff09;首先先看一下当前运行中的redis实例&#xff1a; [rootiZuf67k70ucx14s6zcv54dZ var]# ps aux | grep redis-server因为我这里有两个实例在运行&#xff0c;即物理机上的redis和docker中的redis&…...

关于xilinx的FFTIP的使用和仿真

工具&#xff1a;vivado2018.3&#xff0c;modelsim10.6d 场景&#xff1a;在进行数据进行频谱分析的时候&#xff0c;使用FPGA来完成FFT的计算可以加快数据的计算速度。 下面使用仿真完成DDS产生的数据的FFT以及IFFT。原始数据使用DDSIP产生&#xff0c;通过IP产生的波形数据…...

ant design pro 如何去保存颜色

上图 就是实现这样的效果 后端是这样的&#xff0c;这个颜色肯定是存到字符串里的 这是第一步 import mongoose, { Schema, Document } from mongoose;interface IDiscountCard extends Document {title: string;subtitle: string;image: string;shopUrl: string;bgColor: s…...

【Hadoop】建立圈内组件的宏观认识

01存储02计算03调度04其他05回忆 众多组件们构建了大规模分布式计算和存储平台。本文介绍Hadoop生态圈中各个组件的主要功能和作用&#xff0c;辅助学者理解每个组件的定位和用途&#xff0c;从而建立对圈内组件的宏观认识。梳理清楚HDFS、MapReduce、YARN、Hive、HBase、Spark…...

C++:命名空间与输入输出

目录 前言 一、命名空间 1.1 namespace的价值 1.2 namespace的定义 1.3 命名空间的使用 二、C输入&输出 前言 C是一种面向对象的计算机程序设计语言&#xff0c;‌它扩展了C语言的功能&#xff0c;‌并引入了面向对象编程的概念&#xff0c;‌如类、‌继承和多态等&a…...

Azure DevOps Server 数据库日志已满,TF30042: The database is full

Contents 1. 问题描述2. 处理方式 2.1 系统备份2.2 收缩日志2.3 恢复模式2.4 日志增长无法控制 1. 问题描述 Azure DevOps Server 作为微软的软件开发管理平台产品&#xff0c;理所当然地使用了微软的数据库软件SQL Server。 在一个大型的开发团队中&#xff0c;Azure DevOps S…...

[C#]OpenCvSharp 实现Bitmap和Mat的格式相互转换

//转为 bitmap方法一&#xff1a; Bitmap map OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat); process_pictureBox.Image map; //转为 bitmap方法二&#xff1a; Bitmap map new Bitmap(mat.ToMemoryStream()); process_pictureBox.Image map; //Image img 转为…...

【区块链+金融服务】基于区块链的供应链金融系统 | FISCO BCOS应用案例

传统供应链金融存在着信息不对称、信任问题和繁琐流程等弊端。为了解决这些问题&#xff0c;京北方搭建了基于区块链 的供应链金融系统&#xff0c;提供了更高效、透明、安全和可信的交易环境。 系 统 采 用 FISCO BCOS 为 底 层 链&#xff0c; 技 术 栈 使 用 Java 语 言 进…...

AI语言大模型商业价值深度解析

点击蓝字 关注我 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;特别是深度学习算法的进步&#xff0c;AI语言大模型在自然语言处理领域的表现日益突出。国内外多种语言大模型如&#xff1a;OpenAi 的 ChatGpt&#xff0c;阿里通义千问&#xff0c;百度文心…...

理解DDD领域驱动设计思想

一、引言 在软件开发的广袤领域中&#xff0c;领域驱动设计&#xff08;Domain-Driven Design&#xff0c;简称 DDD&#xff09;犹如一颗璀璨的明星&#xff0c;备受瞩目。对于期望运用 DDD 开展项目的研发人员而言&#xff0c;明晰 DDD 的本质是实现其有效应用的基石。需注意…...

音频剪辑软件哪个好用?五大音频剪辑软件分享

如果你正打算在家自学视频制作&#xff0c;那么恭喜你&#xff0c;你已经踏上了一段充满魔法与惊喜的旅程&#xff01;不过&#xff0c;别忘了&#xff0c;视频的灵魂不仅仅在于画面&#xff0c;更在于那直击心灵的音效。 想象一下&#xff0c;一个精心剪辑的片段&#xff0c;…...

12.2 使用prometheus-sdk向pushgateway打点

本节重点介绍 : 使用golang sdk打prometheus4种指标&#xff0c;推送到pushgateway gauge、counter、histogram、summary的初始化4种类似的设置值的方法推送到pushgateway的方法 prometheus配置采集pushgateway&#xff0c;grafana上配大盘 golang-sdk 项目地址 https://git…...

HTTPS 详解

HTTPS 是以安全为目标的 HTTP 通道&#xff0c;它在 HTTP 中加入 SSL 层以提高数据传输的安全性。HTTP 被用于在 Web 浏览器和网站服务器之间传递信息&#xff0c;但以明文形式发送内容&#xff0c;不提供任何方式的数据加密&#xff0c;如果攻击者截取了 Web 浏览器和网站服务…...

Microsoft Edge 使用方法与秘诀概览

目录 ​编辑引言 Microsoft Edge 功能与技巧概览 掌握这些设置技巧&#xff0c;让 Edge 浏览器的体验更干净 1. 使用阅读视图 2. 开启广告过滤 3. 管理扩展 4. 个性化新标签页 5. 使用网页截图 6. 清理浏览器缓存 7. 管理启动设置 8. 自定义地址栏建议 9. 使用内置笔…...

【视频】onvif、RTP、RTCP、SDP、RTSP、gb21818区别

ONVIF (Open Network Video Interface Forum): ONVIF是一个全球性的开放网络视频接口论坛&#xff0c;致力于发展基于IP网络的物联网设备的标准化。它提供了一个通用的标准接口&#xff0c;使不同厂商生产的网络视频产品能够互相兼容。 RTP (Real-time Transport Protocol): R…...