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

Nginx 正则表达式与rewrite

目录

一、正则表达式

二、rewrite

2.1 rewrite简述

2.2 rewrite 跳转 

2.3 rewrite 执行顺序

2.4 rewrite 语法格式

三、location

3.1 location 类别

3.2 location常用匹配规则

3.3 location优先级

3.4 示例说明

3.5 匹配规则总结

3.6 三个匹配规则定义

四、实战案例

4.1 基于域名的跳转

4.2 基于客户端 IP 访问跳转

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

4.4 基于参数匹配的跳转

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

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


一、正则表达式

常用的正则表达式

^匹配输入字符串的起始位置
$匹配输入字符串的结束位置
*匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”
+匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“olll”,但不能匹配“o”
?匹配前面的字符零次或一次,例如“od(es)?”能匹配“do”或者“does”,”?”等效于”{0,1}”
.

匹配除“\n”之外的任何单个字符,

若要匹配包括“\n”在内的任意字符,请使用诸如“[.\n]”之类的模式

\将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如“\n”匹配一个换行符,而“\$”则匹配“$”
\d匹配纯数字
{n}重复 n 次
{n,}重复 n 次或更多次
{n,m}重复 n 到 m 次
[]定义匹配的字符范围
[c]匹配单个字符 c
[a-z]匹配 a-z 小写字母的任意一个
[a-zA-Z0-9]匹配所有大小写字母或数字
()表达式的开始和结束位置
|或运算符

二、rewrite

注:

rewrite与location主要区别:

rewrite 是在同一域名内更改获取资源的路径

location 是对一类路径做控制访问或反向代理,还可以 proxy_pass 到其他机器

2.1 rewrite简述

  • rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。
  • 比如:更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。
  • rewrite只能放在server{},location{},if{}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用,
  • 例如:http://www.kgc.com/abc/bbs/index.php?a=1&b=2 只对/abc/bbs/index.php重写

2.2 rewrite 跳转 

跳转的场景

  • 调整用户浏览的URL,看起来更规范,呵护开发及产品人员的需求
  • 为了让搜索引擎搜寻网站内容及用户体验更好,企业会将动态URL地址伪装成静态地址提供服务
  • 网址换新域名后,让旧的访问跳转到新的域名上。例如,访问京东的360buy.com会跳转到jd.com。
  • 服务端某些业务调整,比如根据特殊变量、目录、客户端的信息进行URL调整等

跳转的实现

  • Nginx:通过ngx_http_rewrite_module 模块支持URL重写、支持if条件判断,但不支持else
  • 跳转:从一个 location跳转到另一个location,循环最多可以执行10次,超过后nginx将返回500错误
  • PCRE支持:perl兼容正则表达式的语法规则匹配
  • 重写模块 set 指令:创建新的变量并设其值

2.3 rewrite 执行顺序

  • 执行server块里面的rewrite指令
  • 执行location匹配
  • 执行选定的location中的rewrite指令

2.4 rewrite 语法格式

语法格式:rewrite <regex> <replacement> [flag];
regex :表示正则匹配规则
replacement :表示跳转后的内容
flag :表示 rewrite 支持的 flag 标记

flag标记说明
last本条规则匹配完成后,继续向下匹配新的location URL规则,一般用在 server 和 if 中
break本条规则匹配完成即终止,不再匹配后面的任何规则,一般使用在 location 中
redirect返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

注:

  • last – 基本上都用这个Flag
  • break – 中止Rewirte,不在继续匹配
  • redirect – 返回临时重定向的HTTP状态302
  • permanent – 返回永久重定向的HTTP状态301

last和break最大的不同在于

  • break 是终止当前location的rewrite检测,而且不再进行location匹配 
  • last是终止当前location的rewrite检测,但会继续重试location匹配并处理区块中的rewrite规则

可用作判断的全局变量

$args           #这个变量等于请求行中的参数。
$content_length # 请求头中的Content-length字段。
$content_type   # 请求头中的Content-Type字段。
$document_root  # 当前请求在root指令中指定的值。
$host           # 请求主机头字段,否则为服务器名称。
$http_user_agent # 客户端agent信息
$http_cookie    # 客户端cookie信息
$limit_rate     # 这个变量可以限制连接速率。
$request_body_file # 客户端请求主体信息的临时文件名。
$request_method  # 客户端请求的动作,通常为GET或POST。
$remote_addr    # 客户端的IP地址。
$remote_port    # 客户端的端口。
$remote_user    # 已经经过Auth Basic Module验证的用户名。
$request_filename # 当前请求的文件路径,由root或alias指令与URI请求生成。
$query_string   # 与$args相同。
$scheme #HTTP 方法(如http,https)。
$server_protocol # 请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
$server_addr    # 服务器地址,在完成一次系统调用后可以确定这个值。
$server_name    # 服务器名称。
$server_port    # 请求到达服务器的端口号。
$request_uri    # 包含请求参数的原始URI,不包含主机名,如:”/foo/bar.php?arg=baz”。
$uri # 不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。
$document_uri   # 与$uri相同。
例:http://localhost:88/test1/test2/test.php
$host:localhost
$server_port:88
$request_uri:http://localhost:88/test1/test2/test.php
$document_uri:/test1/test2/test.php
$document_root:D:\nginx/html
$request_filename:D:\nginx/html/test1/test2/test.php

三、location

3.1 location 类别

location 大致可以分为三类:

精准匹配location = / {...}
一般匹配location / {...} 
正则匹配location ~ / {...}

3.2 location常用匹配规则

=进行普通字符精确匹配,也就是完全匹配        location = yudh   www.kgc.com/yudh
^~表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其它 location
~区分大小写的匹配。    location  ~ \.jpg$ {}      jpg
~*不区分大小写的匹配。 location  ~ \.jPg$ {}      jpg
!~ 区分大小写的匹配取非
!~*不区分大小写的匹配取非

3.3 location优先级

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

3.4 示例说明

(1)location = /         http://www.kgc.com/         他不会匹配/data       http://www.kgc.com/data
=为精确匹配 / ,主机名后面不能带任何字符串,比如访问 / 和 /data,则 / 匹配,/data 不匹配
再比如 location = /abc,则只匹配/abc ,/abc/或 /abcd不匹配。若 location  /abc,则即匹配/abc 、/abcd/ 同时也匹配 /abc/。(2)location / {}        http://www.kgc.com/data  http://www.kgc.com/data/abc     /a/usr/local/nginx/html/data/abc  
因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 比如访问 / 和 /data, 则 / 匹配, /data 也匹配,
但若后面是正则表达式会和最长字符串优先匹配(最长匹配)(3)location /documents/ {}      http://www.kgc.com/documents/abc
匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索其它 location
只有其它 location后面的正则表达式没有匹配到时,才会采用这一条(4)location /documents/abc {}     www.baidu.com/
匹配任何以 /documents/abc 开头的地址,匹配符合以后,还要继续往下搜索其它 location
只有其它 location后面的正则表达式没有匹配到时,才会采用这一条(5)location ^~ /images/ {}
匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条http://www.kgc.com/documents/abc/testlocation /documents/abc/test/ {} 
location ^~ /documents/ {} 
location ~* /documents/ {} 
location ^~ /documents/abc {} (6)location ~* \.(gif|jpg|jpeg)$ {}
匹配所有以 gif、jpg或jpeg 结尾的请求
然而,所有请求 /images/ 下的图片会被 location ^~ /images/ 处理,因为 ^~ 的优先级更高,所以到达不了这一条正则(7)location /images/abc {}  
最长字符匹配到 /images/abc,优先级最低,继续往下搜索其它 location,会发现 ^~ 和 ~ 存在location /documents/ {}
location /documents/abc/ {}
location /documents/abc/test/ {}(8)location ~ /images/abc {} 
匹配以/images/abc 开头的,优先级次之,只有去掉 location ^~ /images/ 才会采用这一条(9)location /images/abc/1.html {}      location /images/abc/test
匹配/images/abc/1.html 文件,如果和正则location ~ /images/abc/1.html 相比,正则优先级更高

3.5 匹配规则总结

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

3.6 三个匹配规则定义

实际网站使用中,至少有三个匹配规则定义

1、第一个必选规则

直接匹配网站根,通过域名访问网站首页比较频繁,使网。
可以是一个静态首页,也可以直接转发给后端应用服务器用这个会加速处理,比如说官
location = / {root   html;index  index.html index.htm;
}

2、第二个必选规则

处理静态文件请求,这是nginx作为http服务器的强项
有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
location ^~ /static/ {root /webroot/static/;
}/static/location ~* \.(html|gif|jpg|jpeg|png|css|js|ico)$ {root /webroot/res/;
}

3、第三个必选规则

通用规则,比如用来转发带.php、.jsp后缀的动态请求到后端应用服务器
非静态文件请求就默认是动态请求
location / {proxy_pass http://tomcat_server;
}

四、实战案例

4.1 基于域名的跳转

公司旧域名www.ljm.com有业务需求变更,需要使用新域名www.lucien.com代替,但是旧域名不能废除,需要跳转到新域名上,而且后面的参数保持不变

vim /usr/local/nginx/conf/nginx.conf
server {listen   80;server_name  www.ljm.com;		#域名修改	charset utf-8;access_log  /var/log/nginx/www.ljm.com.access.log;  #日志修改location / {#添加域名重定向if ($host = 'www.ljm.com'){#$host为rewrite全局变量,代表请求主机头字段或主机名rewrite ^/(.*)$ http://www.lucien.com/$1 permanent;#$1为正则匹配的内容,即域名后边的字符串}root   html;index  index.html index.htm;}
}

浏览器输入模拟访问 http://www.lic.com/test/1.html
会跳转到www.kiki.com/test/1.html,查看元素可以看到返回301,实现了永久重定向跳转,而且域名后的参数也正常跳转

4.2 基于客户端 IP 访问跳转

公司业务新版本上线,要求所有 IP 访问都显示一个固定维护页面

只有公司 IP :192.168.184.80访问正常

vim /usr/local/nginx/conf/nginx.conf
server {listen       80;server_name  www.ljm.com;		#域名修改	charset utf-8;access_log  /var/log/nginx/www.ljm.com-access.log  main;	#日志修改#设置是否合法的IP标记set $rewrite true;					#设置变量$rewrite,变量值为boole值true#判断是否为合法IPif ($remote_addr = "192.168.184.60"){#当客户端IP为192.168.184.10时,将变量值设为false,不进行重写set $rewrite false;}#除了合法IP,其它都是非法IP,进行重写跳转维护页面if ($rewrite = true){				#当变量值为true时,进行重写rewrite (.+) /weihu.html;		#重写在访问IP后边插入/weihu.html}location = /weihu.html {root /var/www/html;				#网页返回/var/www/html/weihu.html的内容}location / {root   html;index  index.html index.htm;}
}
mkdir -p /var/www/html/
echo 'hello weihu!' > /var/www/html/weihu.html
systemctl restart nginx

浏览器访问
只有 IP 为 192.168.184.10 能正常访问,其它地址都是维护页面

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

我们访问 http://www.ljm.com,现在需要将这个域名下面的访问都跳转到http://www.lucien.com/lucien

vim /usr/local/nginx/conf/nginx.conf
server {listen       80;server_name  www.ljm.com;		#域名修改	charset utf-8;access_log  /var/log/nginx/ljm.com-access.log;#添加location /post {rewrite (.+) http://www.lucien.com/lucien$1 permanent;	#这里的$1为位置变量,代表/post}location / {root   html;index  index.html index.htm;}
}

4.4 基于参数匹配的跳转

现在访问http://www.kgc.com/100-(100|200)-100.html 跳转到http://www.kgc.com页面

vim /usr/local/nginx/conf/nginx.conf
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;}
}
systemctl restart nginx
使用浏览器访问http://www.kgc.com/100-200-100.html 或 http://www.kgc.com/100-100-100.html 跳转到http://www.kgc.com页面

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

要求访问 http://www.kgc.com/upload/123.php 跳转到首页

vim /usr/local/nginx/conf/nginx.conf
server {listen       80;server_name  www.kgc.com;		#域名修改	charset utf-8;access_log  /var/log/nginx/www.kgc.com-access.log;location ~* /upload/.*\.php$ {rewrite (.+) http://www.kgc.com permanent;}location / {root   html;index  index.html index.htm;}
}systemctl restart nginx
或
systemctl reload nginx浏览器访问 http://www.kgc.com/upload/123.php 跳转到http://www.kgc.com页面

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

要求访问一个具体的页面如 http://www.kgc.com/abc/123.html 跳转到首页

vim /usr/local/nginx/conf/nginx.conf
server {listen       80;server_name  www.kgc.com;		#域名修改	charset utf-8;access_log  /var/log/nginx/www.kgc.com-access.log;location ~* ^/abc/123.html {rewrite (.+) http://www.kgc.com permanent;}location / {root   html;index  index.html index.htm;}
}systemctl restart nginx
浏览器访问 http://www.kgc.com/abc/123.html 跳转到http://www.kgc.com页面

相关文章:

Nginx 正则表达式与rewrite

目录 一、正则表达式 二、rewrite 2.1 rewrite简述 2.2 rewrite 跳转 2.3 rewrite 执行顺序 2.4 rewrite 语法格式 三、location 3.1 location 类别 3.2 location常用匹配规则 3.3 location优先级 3.4 示例说明 3.5 匹配规则总结 3.6 三个匹配规则定义 四、实战…...

tekton什么情况下在Dockerfile中需要用copy

kaniko配置如下 如果docker中的workDir跟tekton中的workDir不一致需要copy。也可以通过mv&#xff0c;cp达到类似效果...

第九届世界渲染大赛在哪里提交作品呢?

自第九届世界渲染大赛开放投稿以来&#xff0c;已经过去了10天。在这段时间里&#xff0c;众多CG爱好者已经完成了他们的动画创作。然而&#xff0c;许多参赛者对于如何提交他们的作品仍然感到困惑。接下来&#xff0c;让我们一起了解具体的投稿流程和入口&#xff0c;确保每位…...

fastjson(autoType)反序列化漏洞

1. 温少和他的fastjson 阿里巴巴的 FastJSON&#xff0c;也被称为 Alibaba FastJSON 或阿里巴巴 JSON&#xff0c;是一个高性能的 Java JSON 处理库&#xff0c;用于在 Java 应用程序中解析和生成 JSON 数据。FastJSON 以其卓越的性能和功能丰富的特点而闻名&#xff0c;并在…...

Java入门基础16:集合框架1(Collection集合体系、List、Set)

集合体系结构 Collection是单列集合的祖宗&#xff0c;它规定的方法&#xff08;功能&#xff09;是全部单列集合都会继承的。 collection集合体系 Collection的常用方法 package com.itchinajie.d1_collection;import java.util.ArrayList; import java.util.HashSet;/* * 目…...

Qt如何调用接口

在Qt中&#xff0c;你可以使用QNetworkAccessManager类来调用API。以下是一个简单的示例&#xff1a; cpp #include <QCoreApplication> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> int main(int arg…...

Android14之解决编译libaaudio.so报错问题(二百二十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列…...

【专题】2024年7月人工智能AI行业报告合集汇总PDF分享(附原数据表)

原文链接:https://tecdat.cn/?p37350 随着人工智能技术的飞速发展&#xff0c;AI已经成为当今时代的重要驱动力。本报告将聚焦于人工智能AI行业的最新动态&#xff0c;涵盖客户服务、体验营销、资产管理以及国产AI大模型应用等多个领域。通过深入研究和分析&#xff0c;我们…...

干货分享|如何使用Stable Diffusion打造会说话的数字人?

数字人已不是什么新鲜名词了。在许多领域&#xff0c;尤其是媒体和娱乐领域&#xff0c;经常可以看到卡通形象的人物或逼真的虚拟主持人。在Stable Diffusion中&#xff0c;我们可以上传一段录制好的音频文件&#xff0c;然后使用SadTalker插件&#xff0c;将音频和图片相结合&…...

OrangePi AIpro学习4 —— 昇腾AI模型推理 C++版

目录 一、ATC模型转换 1.1 模型 1.2 ATC工具 1.3 实操模型转换 1.4 使用ATC工具时的一些关键注意事项 1.5 ATC模型转换命令举例 二、运行昇腾AI模型应用样仓程序 2.1 程序目录 2.2 下载模型和模型转换 2.3 下载图片和编译程序 2.4 解决报错 2.5 运行程序 三、运行…...

vue js 多组件异步请求解决方案

接口之间异步问题可以采用Promiseasyncawait 链接&#xff1a; https://blog.csdn.net/qq_39816586/article/details/103517416 使用场景&#xff1a; 1.保障用户必须完成自动登录&#xff0c;才调用后续逻辑 2.保障必须完成初始启动&#xff0c;才调用后续逻辑 3.保障先执行on…...

【Android】不同系统版本获取设备MAC地址

【Android】不同系统版本获取设备MAC地址 尝试实现 尝试 在开发过程中&#xff0c;想要获取MAC地址&#xff0c;最开始想到的就是WifiManager&#xff0c;但结果始终返回02:00:00:00:00:00&#xff0c;由于用得是wifi &#xff0c;考虑是不是因为用得网线的原因&#xff0c;但…...

残差网络--NLP上的应用

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;残差网络&#xff08;ResNet&#xff09;同样有着广泛的应用。虽然最初的残差网络设计是为了处理图像任务&#xff0c;但其核心思想也被成功地迁移到了自然语言处理任务中&#xff0c;以解决深层神经网络中的退化问题…...

1章4节:数据可视化, R 语言的静态绘图和 Shiny 的交互可视化演示(更新2024/08/14)

在数据科学的世界中,“一图胜千言”的古老谚语依然适用。数据可视化不仅仅是将数据以图形化的方式展现,更是帮助我们发现数据背后隐藏模式、趋势和异常的强大工具。R语言作为数据科学的主要编程语言之一,以其强大的可视化能力而闻名,许多数据科学家和分析师因此选择了R作为…...

浅谈个人用户如何玩转HTTP代理

今天&#xff0c;准备和大家聊聊我是如何玩转HTTP代理的&#xff0c;希望能给大家带来一些启发和帮助。 犹记得刚开始接触HTTP代理时&#xff0c;我对它还是一无所知。那时我总被各种网络限制所困扰&#xff0c;无法随心所欲地访问我想看的网站。直到HTTP代理的出现&#xff0c…...

动手研发实时口译系统

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…...

C#(asp.net)电商后台管理系统-计算机毕业设计源码70015

摘 要 随着互联网技术的不断发展&#xff0c;电商行业也越来越受到人们的关注。为了提高电商行业的管理效率和服务水平&#xff0c;本文提出了一种基于ASP.NET电商后台管理系统的设计与实现方案。 电商管理系统基于VisualStudio开发平台&#xff0c;采用C#编程语言和ASP.NET等技…...

Unity 中创建动画的教程

Unity 动画创建教程 在游戏开发中&#xff0c;生动的动画能够极大地提升玩家的体验。在这篇教程中&#xff0c;我们将一起探索如何在 Unity 中创建动画。 一、准备工作 首先&#xff0c;确保您已经安装了最新版本的 Unity 引擎。创建一个新的 Unity 项目或者打开您现有的项目…...

2024年最全渗透测试学习指南,小白也能轻松hold住!零基础到精通,看完这篇就够了!

可能会有很多人觉得渗透测试门槛很高&#xff0c;学习周期长&#xff0c;似乎只有天赋异禀者方能涉足。实则不然&#xff0c;渗透测试行业虽有其专业门槛&#xff0c;但绝非如外界渲染的那样高不可攀。归根结底&#xff0c;所需的基础不过是扎实的编程语言功底&#xff0c;同时…...

有道云docx转换markdown,导入hugo发布到github page,多平台发布适配

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 有道云导出docx 有道云笔记右上角更多按钮选择【导出为Word】&#xff0c;可以导出docx文档 docx转换markdown 尝试了几个docx转markdown的python库后&…...

如何理解:进程控制

文章目录 前言&#xff1a;进程创建&#xff1a;进程终止&#xff1a;如何终止进程&#xff1f;进程等待非阻塞等待&#xff1a; 总结&#xff1a; 前言&#xff1a; ​ 对于前面的地址空间的学习&#xff0c;我们现在了解到原来所谓变量的地址其实是虚拟地址&#xff0c;该虚…...

工业互联网边缘计算实训室解决方案

一、引言 随着物联网&#xff08;IoT&#xff09;、5G通信技术的快速发展&#xff0c;工业互联网已成为推动制造业转型升级的重要力量。边缘计算作为云计算的延伸和补充&#xff0c;在实时数据分析、降低数据传输延迟、提升处理效率及增强数据安全性方面展现出巨大潜力。在此背…...

Android全面解析之Context机制(一) :初识Android context

什么是Context 回想一下最初学习Android开发的时候&#xff0c;第一用到context是什么时候&#xff1f;如果你跟我一样是通过郭霖的《第一行代码》来入门android&#xff0c;那么一般是Toast。Toast的常规用法是&#xff1a; Toast.makeText(this, "我是toast", To…...

气象百科——气象监测站的介绍

气象监测站是专门用于监测和记录大气环境状态及变化规律的设施。这些站点通过安装各种观测仪器&#xff0c;如温度传感器、湿度传感器、气压传感器、风速风向传感器、雨量传感器以及近年来兴起的雷达水位计等&#xff0c;全方位、多角度地收集大气中的温度、湿度、气压、风速风…...

学懂C++(三十):高级教程——深入解析 C++ Windows API 的多线程支持

引言 在现代应用程序中&#xff0c;多线程编程是实现高性能和高并发任务的关键手段。Windows 操作系统为开发者提供了一套强大的 API&#xff0c;用于创建和管理线程、同步任务&#xff0c;并优化线程性能。本文将深入探讨 C 中 Windows API 的多线程支持&#xff0c;详细介绍线…...

苹果笔记本电脑可以玩steam游戏吗 MacBook支持玩steam游戏吗 在Steam上玩黑神话悟空3A大作 苹果Mac怎么下载steam

游戏是生活的润滑剂&#xff0c;越来越多的用户开始关注Mac平台上可玩的游戏。幸运的是&#xff0c;Steam作为最大的数字发行平台之一&#xff0c;提供了大量适用于Mac操作系统的游戏。无论你是喜欢策略、冒险还是射击类游戏&#xff0c;都能在Steam上找到适合自己Mac设备玩耍的…...

海康摄像头(测温型)桌面客户端开发分享

分享一个自己开发的用于企业特殊场景下温度监控告警的一个桌面应用。 关键功能&#xff1a; 1.支持海康摄像头&#xff1b; 2.支持多路视频预览&#xff0c;多通道画面选择预览&#xff0c;支持视频画面回放与下载&#xff1b; 3.支持自动探测摄像头功能&#xff0c;若具备…...

骑行耳机哪个品牌性价比高?精选五大畅销骑行耳机推荐!

骨传导耳机凭借不入耳佩戴更舒适、健康等特定在短时间内迅速风靡骑行圈&#xff0c;其独特的设计不仅让骑行者在享受音乐的同时保持对周围环境的警觉&#xff0c;还因其非入耳式的佩戴方式&#xff0c;有效避免了长时间骑行对耳朵的压迫与不适。它不仅能够激发骑行时的激情与动…...

libcurl8.9.1 上传json

在postman中 PUT----》body----》raw----》json 结构体定义&#xff1a; #define MAX_ARRAY_SIZE 5*1024*1024struct SMART_DATA_CACHE {char* buf;long dwTotalLen;SMART_DATA_CACHE(){dwTotalLen 0;buf nullptr;while (!buf) {try {buf new char[MAX_ARRAY_SIZE];}c…...

什么是暗水印?企业暗水印如何实施?企业保护利器

“明察秋毫之末&#xff0c;而不见舆薪。” 此言道出了观察之细致入微&#xff0c;却也隐含了信息泄露之隐忧。 在今日之数字时代&#xff0c;信息如潮水般汹涌&#xff0c;而电脑屏幕作为信息展示的重要窗口&#xff0c;其安全性亦成为众人关注的焦点。 当谈及监控电脑屏幕以…...

可以做旅行计划的网站/网络宣传

当我们平时清理电脑文件时误删了文件&#xff0c;而想要恢复误删文件就不知道怎么处理了。下面与大家分享用diskgenius分区工具来恢复删除文件&#xff0c;一起来看看如何 恢复文件 吧。1、首先&#xff0c;我们提前制作好u启动u盘启动盘。接着将该u盘启动盘插入电脑usb接口&am…...

商城网站建设哪家好/百度seo关键词排名推荐

文章目录散点图matplotlib绘制散点图seaborn绘制散点图pyecharts绘制散点图源码地址本文可以学习到以下内容&#xff1a;matplotlib 中文乱码解决办法seaborn 中文乱码解决办法seaborn 库csv数据下载地址用matplotlib、seaborn、pyecharts绘制散点图 散点图 小凡在做数据分析的…...

图书馆网站开发总结/seo零基础教学视频

ARM开发总结的小知识 字节 8位 半字 16位 字 32位 Code, RO-data RW-data,ZI-data 注意设置堆和栈大小 Code为程序代码部分 RO-data 表示程序定义的常量 const temp; RW-data 表示已初始化的全局变量 ZI-data 表示未初始化的全局变量 Program Size: Code"18248"RO-…...

关岭县建设局网站/磁力猫官网cilimao

这个下载方式是这么样的&#xff0c;可以适用于很多情况&#xff1a; jsp页面点击某个按钮&#xff0c;实现下载&#xff1b; jsp页面一加载完就下载&#xff1b; 演示一个一加载完就实现下载的&#xff1a; <script defer"defer" >if($("#defaultCours…...

湛江专业建站联系方式/河北seo平台

目录占坑&#xff0c;待整理...

国家建设执业资格注册中心网站/排名优化哪家专业

1、A服务器安装lsyncd #前提是有配置EPEL源 #依赖 yum install -y gcc gcc-c lua lua-devel cmake libxml2 libxml2-devel #lsyncd安装 yum -y install lsyncd2、A服务器配置到B服务器的免密登录 ssh-keygen -t rsa ssh-copy-id -p 22 rootB ssh -p 22 rootB3、配置文件解释 …...