【Web服务器】Nginx之Rewrite与location的用法

news2024/12/23 4:16:11

文章目录

  • 前言
  • 一、正则表达式
    • 1. Nginx 的正则表达式
    • 2. 正则表达的优势
    • 3. Nginx 使用正则的作用
  • 二、location 的概念
    • 1. location 和 rewrite 区别
    • 2. location 匹配的分类
    • 3. location 常用的匹配规则
      • 3.1 location 匹配优先级
      • 3.2 location 匹配的实例
      • 3.3 实际网站规则定义
        • 第一个必选规则
        • 第二个必选规则
        • 第三个规则
  • 三、Nginx Rewrite 的概述
    • 1. rewrite 的功能
    • 2. rewrite 的用法
      • 2.1 执行顺序
    • 3. rewrite 跳转实现
    • 4. rewrite 的语法格式
  • 四、Rewrite 的实例
    • 1. 基于域名的跳转
    • 2. 基于客户端 IP 访问跳转
    • 3. 基于旧域名跳转到新域名后面加目录
    • 4. 基于参数匹配的跳转
    • 5. 基于目录下所有 php 结尾的文件跳转
    • 6. 基于最普通一条 url 请求的跳转
  • 总结


前言

  现在许多公司都会用nginx去反向代理服务器。在域名更名后需要保持旧域名能够跳转到新域名上。如果在后端使用apache服务器虽然也可以去跳转,但是效率没有nginx高。


一、正则表达式

1. Nginx 的正则表达式

匹配符功能说明
^匹配输入字符串的起始位置
$匹配输入字符串的结束位置
*匹配前面的字符零次或多次。如 ol* 能匹配 oololl
+匹配前面的字符一次或多次。如 ol+ 能匹配 olollolll,但不能匹配 o
?匹配前面的字符零次或一次,例如 do(es)? 能匹配 do 或者 does? 等效于{0,1}
.匹配除 \n 之外的任何单个字符,若要匹配包括“\n”在内的任意字符,请使用诸如 [.\n]` 之类的模式
\将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如 \n 匹配一个换行符,而 \$ 则匹配 $
\d
\s
\w
匹配纯数字[0-9]
空白符
任意单词字符包括下划线 [A-Za-z0-9_]
{n}重复 n 次
{n,}重复 n 次或更多次
{n,m}重复 n 到 m 次
[]定义匹配的字符范围
[c]匹配单个字符 c
[a-z]匹配 a-z 小写字母的任意一个
[a-zA-Z0-9]匹配所有大小写字母或数字
()表达式的开始和结束位置
``

2. 正则表达的优势

  • 精确匹配,减少遍历的消耗。
  • 节省服务响应的资源消耗。
  • 提高用户体验感。
  • 提高服务器并发时、处理效率/性能。

3. Nginx 使用正则的作用

  Nginx作为运维角度前段接受、想用客户请求的直接对服务器所以需要考虑到Nginx的执行效率(精确匹配-类比)、性能(资源消耗)、抗压能力(高并发时处理能力)、用户体验感(用户访问群体)。

二、location 的概念

1. location 和 rewrite 区别

  从功能看 rewritelocation 似乎有点像,都能实现跳转,主要区别在于 rewrite 是在同一域名内更改获取资源的路径,而 location 是对一类路径做控制访问或反向代理,还可以proxy _pass 到其他机器。

  • rewrite :对访问的域名或者域名内的URL路径地址重写。
  • location :对访问的路径做访问控制或者代理转发。

2. location 匹配的分类

location 大致可以分为三类:

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

3. location 常用的匹配规则

匹配规则功能说明
=进行普通字符的精准匹配
^~表示普通字符匹配,使用前缀匹配。如果匹配成功则不会匹配其他的location
~区分大小写
~*不区分大小写
!~区分大小写的不去匹配
!~*不区分大小的不去匹配

3.1 location 匹配优先级

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

3.2 location 匹配的实例

location = / {}

​    =为精确匹配 / ,主机名后面不能带任何字符串。

​   比如访问 //data,则 / 匹配,/data 不匹配。再比如 location = /abc,则只匹配 /abc/abc//abcd 不匹配。若 location /abc,则即匹配 /abc/abcd/ 同时也匹配 /abc/

location / {}

​   因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求。

​   比如访问 //data, 则 / 匹配,/data也匹配。但后面前缀路径会和最长字符串优先匹配(最长匹配)。

location /documents/ {}

​   匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索其它 location

​   只有其它 location后面的前缀路径没有匹配到时,才会采用这一条。

location /documents/abc {}

​    匹配任何以 /documents/abc 开头的地址,匹配符合以后,还要继续往下搜索其它 location

​   只有其它 location 后面的前缀路径没有匹配到时,才会采用这一条。

location ^~ /images/ {}

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

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

​    匹配所有以 gifjpg jpeg 结尾的请求。

​   然而,所有请求 /images/ 下的图片会被 location ^~ /images/ 处理,因为 ^~ 的优先级更高,所以到达不了这一条正则。

location /images/abc {}

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

location ~ /images/abc {}

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

location /images/abc/1.html {}

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

location 优先级总结

  首先看 优先级:精确= > 前缀^~ > 正则~,~* > 一般 > 通用/

  在没有精准匹配的情况下,先看前缀匹配的长度,然后根据最长的前缀匹配的优先级去确定是否再去看其它正则匹配location,如果最长的前缀匹配带有 ^~ 则不再看其它正则匹配location,如果最长的前缀匹配是没有修饰符的一般匹配则会再看其它正则匹配location

  前缀匹配看长度,最长的优先匹配。

  正则匹配看上下顺序,由上往下依次匹配,当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

  只有在精准、前缀、正则、一般 都没有匹配到的时候才会看通用匹配。

3.3 实际网站规则定义

第一个必选规则

  直接匹配网站根目录首页,通过域名访问网站首页比较频繁,使用这个会加速处理,比如说官网。

  可以是一个静态首页,也可以直接转发给后端应用服务器。

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

第二个必选规则

  处理静态文件请求,这是nginx作为http服务器的强项。

  有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用。

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

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

第三个规则

  通用规则,比如用来转发带.php.jsp后缀的动态请求到后端应用服务器。

  非静态文件请求就默认是动态请求。

location / {
    proxy_pass http://tomcat_server;
}

三、Nginx Rewrite 的概述

1. rewrite 的功能

  rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。
  
比如:更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。

2. rewrite 的用法

  rewrite只能放在server{}location{}if{}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用,例如 http://www.accp.com/abc/bbs/index.php?a=1&b=2 只对 /abc/bbs/index.php 重写。

2.1 执行顺序

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

3. rewrite 跳转实现

  • Nginx 是通过 ngx_http_rewrite_module模块支持url重写、支持if条件判断,但不支持else。
  • 另外该模块需要 PCRE支持,应在编译Nginx时指定PCRE 支持,默认已经安装。
  • 根据相关变量重定向和选择不同的配置,从一个location跳转到另一个location,不过这样的循环最多可以执行10次,超过后Nginx将返回500错误。
  • 重写模块包含set指令,来创建新的变量并设其值,这在有些情景下非常有用的,如记录条件标识、传递参数到其他location、记录做了什么等等。
  • rewrite功能就是使用Nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。

4. rewrite 的语法格式

rewrite < regex > < replacement > [flag]

regex:正则表达式。

replacement :跳转后的内容。

flag:rewrite支持的flag标记。

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

四、Rewrite 的实例

1. 基于域名的跳转

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

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

[root@localhost ~]# echo "192.168.145.45 www.accp.com www.benet.com" >> /etc/hosts
[root@localhost ~]# systemctl restart nginx

浏览器测试

浏览器输入模拟访问 http://www.accp.com(虽然这个请求内容是不存在的)
会跳转到www.benet.com,查看元素可以看到返回301,实现了永久重定向跳转,而且域名后的参数也正常跳转。

在这里插入图片描述

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

  今天公司业务新版本上线,要求所有 IP 访问任何内容都显示一个固定维护页面,只有公司 IP :192.168.145 .45访问正常。

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
server {
	listen       80;
	server_name  www.accp.com;		#域名修改	
	charset utf-8;
	access_log  /var/log/nginx/www.accp.com-access.log;		#日志修改

	#设置是否合法的IP标记
    set $rewrite true;							#设置变量$rewrite,变量值为boole值true
    #判断是否为合法IP
	if ($remote_addr = "192.168.145.45"){		#当客户端IP为192.168.145.45时,将变量值设为false,不进行重写
        set $rewrite false;
    }
	#除了合法IP,其它都是非法IP,进行重写跳转维护页面
    if ($rewrite = true){						#当变量值为true时,进行重写
        rewrite (.+) /weihu.html;				#将域名后边的路径重写成/weihu.html后转发,例如www.accp.com/weihu.html
    }
    location = /weihu.html {
        root /var/www/html;						#网页返回/var/www/html/weihu.html的内容
    }
	
	location / {
        root   html;
        index  index.html index.htm;
    }
}
[root@localhost ~]# mkdir -p /var/www/html/
[root@localhost ~]# echo "<h1>We are maintaining now!</h1>" > /var/www/html/weihu.html
[root@localhost ~]# systemctl restart nginx

如果rewrite (.+) /weihu.html; 换成rewrite (.+) /weihu.html permanent; 的话,若不是 192.168.145.45 的主机访问会使浏览器修改请求访问的 URL 成 http://www.accp.com/weihu.html 再请求访问,这样就会进入一直在 rewrite 的死循环,访问请求会一直被重写成 http://www.accp.com/weihu.html 再请求访问。

浏览器测试

用其他虚拟机访问
 http://www.accp.com

注意:访问的客户端也需要填写/etc/hosts

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kcn8Fiwh-1685806377939)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230603224038156.png)]

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

  现在访问的是 http://bbs.accp.com/post/,现在需要将这个域名下面的访问都跳转到http://www.accp.com/bbs/post/

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

[root@localhost ~]# mkdir -p /usr/local/nginx/html/bbs/post
[root@localhost ~]# echo "this is 1.html"  >> /usr/local/nginx/html/bbs/post/1.html
[root@localhost ~]# echo "192.168.145.45 bbs.accp.com"  >> /etc/hosts=

浏览器测试

使用浏览器访问 http://bbs.accp.com/post/1.html 跳转到 http://www.accp.com/bbs/post/1.html

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EhMR7uyF-1685806377939)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230603231954365.png)]

4. 基于参数匹配的跳转

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

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
server {
	listen       80;
	server_name  www.accp.com;		#域名修改	
	charset utf-8;
	access_log  /var/log/nginx/www.accp.com-access.log;
	
	if ($request_uri ~ ^/100-(100|200)-(\d+).html$) {
        rewrite (.+) http://www.accp.com permanent;
    }

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

[root@localhost ~]# systemctl restart nginx
  • $request_uri:包含请求参数的原始URI,不包含主机名,如:http://www.accp.com/abc/bbs/index.html?a=1&b=2 中的 /abc/bbs/index.php?a=1&b=2
  • $uri:这个变量指当前的请求URI,不包括任何参数,如:/abc/bbs/index.html
  • $document_uri:与$uri相同,这个变量指当前的请求URI,不包括任何传递参数,如:/abc/bbs/index.html

浏览器测试

使用浏览器访问 http://www.accp.com/100-200-100.html 或 http://www.accp.com/100-100-100.html 跳转到http://www.accp.com页面。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SPwIKmG7-1685806377940)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230603232452500.png)]

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

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

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
server {
	listen       80;
	server_name  www.accp.com;		#域名修改	
	charset utf-8;
	access_log  /var/log/nginx/www.accp.com-access.log;
	
	location ~* /upload/.*\.php$ {
        rewrite (.+) http://www.accp.com permanent;
    }

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

[root@localhost ~]# systemctl restart nginx

浏览器测试

浏览器访问 http://www.accp.com/upload/123.php 跳转到http://www.accp.com页面。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QR8c7niI-1685806377940)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230603232905985.png)]

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

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

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
server {
	listen       80;
	server_name  www.accp.com;		#域名修改	
	charset utf-8;
	access_log  /var/log/nginx/www.accp.com-access.log;
	
    location ~* ^/abc/123.html {
        rewrite (.+) http://www.accp.com permanent;
    }

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


[root@localhost ~]# systemctl restart nginx

浏览器测试

浏览器访问 http://www.accp.com/abc/123.html 跳转到http://www.accp.com页面。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nNQZlj00-1685806377941)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230603233222531.png)]

总结

  • location的分类(精确匹配、一般匹配、正则匹配)
  • 掌握location的优先级(location = 完整路径) > (location ^~ 路径) > (location ,* 正则顺序) > (location 部分起始路径) > (location /)
  • 掌握rewrite的几种使用方法:基于域名的跳转、基于客户端 IP 访问跳转、基于旧域名跳转到新域名后面加目录、基于参数匹配的跳转、基于目录下所有 php 结尾的文件跳转、基于最普通一条 url 请求的跳转

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

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

相关文章

深度学习应用篇-计算机视觉-图像分类[2]:LeNet、AlexNet、VGG、GoogleNet、DarkNet模型结构、实现、模型特点详细介绍

【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍&#xff1a;【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化…

RabbitMQ - 发布确认

RabbitMQ - 发布确认 发布确认逻辑发布确认的策略单个确认发布批量确认发布异步确认发布 发布确认逻辑 生产者将信道设置成 confirm 模式&#xff0c;一旦信道进入 confirm 模式&#xff0c;所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始)&#xff0c;一旦消…

什么时候 MySQL 查询会变慢?

前面几篇文章和小伙伴们聊的基本上都是从索引的角度去优化 MySQL 查询&#xff0c;然而&#xff0c;索引创建的好&#xff0c;并不意味着查询就一定快&#xff0c;影响查询效率的因素特别多&#xff0c;今天我们就来聊一聊这些可能影响到查询的因素。 1. 查询流程 开始今天的…

欢迎来到新世界

&#xff08;1&#xff09; 我去年对技术的发展是比较灰心的&#xff1a; 云原生&#xff1a;技术一直动荡&#xff0c;SOA->Servless、Docker->WASM、GitOpsCICDDevOps云计算&#xff1a;在中国从公有云走向了私有云&#xff0c;乃至金融云、国资云、政务云等等N种云Saa…

圆满收官!飞桨黑客松第四期高手云集,四大赛道开源贡献持续升级

2023年2月20日PaddlePaddle Hackathon 飞桨黑客马拉松&#xff08;以下简称为“飞桨黑客松”&#xff09;第四期活动发布后&#xff0c;开发者们反响热烈&#xff0c;围绕四大赛道展开了激烈角逐&#xff0c;超过2000位社区开发者参与到飞桨黑客松中&#xff0c;完成800余次任务…

直播教学签到功能(互动功能接收端JS-SDK)

功能概述 本模块主要用于接收和处理讲师、助教和管理员等用户发起的签到操作。 初始化及销毁 在实例化该模块并进行使用之前&#xff0c;需要对SDK进行初始化配置&#xff0c;详细见参考文档。 在线文件引入方式 // script 标签引入&#xff0c;根据版本号引入JS版本。 <…

ChatGPT 和 Bing Chat两者之间的比较,看完你就懂了

目录 一、ChatGPT 1.1 介绍 1.2 特点 1.3 使用场景 二、 Bing Chat 2.1 介绍 2.2 功能特点 2.3 使用场景 三、对比 一、ChatGPT 1.1 介绍 ChatGPT是一款基于人工智能技术的语言模型应用&#xff0c;由美国人工智能研究实验室OpenAI在2022年11月30日推出。该模型是一种…

【深度学习】跌倒识别 Yolov5(带数据集和源码)从0到1,内含很多数据处理的坑点和技巧,收获满满

文章目录 前言1. 数据集1.1 数据初探1.2 数据处理1.3 训练前验证图片1.4 翻车教训和进阶知识 2. 训练3.效果展示 前言 又要到做跌倒识别了。 主流方案有两种&#xff1a; 1.基于关键点的识别&#xff0c;然后做业务判断&#xff0c;判断跌倒&#xff0c;用openpose可以做到。…

干货分享 | CloudQuery 数据保护能力之动态数据脱敏!

在企业数字化转型的过程中&#xff0c;尤其随着互联网、云计算、大数据等信息技术与通信技术的迅猛发展&#xff0c;海量数据在各种信息系统上被存储和处理&#xff0c;其中包含大量有价值的敏感数据&#xff0c;这意味着数据泄露的风险也不断增加。 数据泄露可能由各种因素引…

【项目】实现web服务器

目录 1.需要实现的项目需求&#xff08;web服务器的工作原理&#xff09; 2.实现过程&#xff1a; 1.编写套接字 2.多线程的代码和任务类 3.文件描述符的处理方法的框架 4.读取请求 4.1.读取请求行 4.2.读取请求报头 4.3.分析请求行和报头 请求行的方法、URI、版本…

桌面图标删不掉?试试这几个解决办法!

案例&#xff1a;我想对电脑桌面上的应用进行删除&#xff0c;但是我怎么删也删不掉应用的图标&#xff1f;有人知道这是怎么回事吗&#xff1f;怎样才能成功删除桌面图标&#xff1f;求一个解决办法&#xff01; 有时候我们可能会遇到桌面图标无法删除的困扰&#xff0c;桌面…

【已解决】Macbook pro/Macbook air 电脑过热问题(附软件下载地址)

问题&#xff1a; 今天早上一上班打开我的macbook air&#xff0c;刚开机了十来分钟&#xff0c;就觉得左上角位置特别的热&#xff0c;耳朵凑近风扇处&#xff0c;基本听不到风扇的声音&#xff0c;风扇的转速太慢&#xff0c;导致cpu温度堆积造成温度升高。 解决办法&#…

【JS】1705- 重学 JavaScript API - Fullscreen API

❝ 前期回顾&#xff1a; 1. Page Visibility API 2. Broadcast Channel API 3. Beacon API 4. Resize Observer API 5. Clipboard API 6. Fetch API 7. Performance API 8. WebStorage API 9. WebSockets API ❞ 本文中&#xff0c;我们将探索 Fullscreen API 的概念、使用方法…

SpringBoot+Vue 的简历招聘系统

文章目录 1、效果演示2、 前言介绍3、主要技术4 **系统设计**4.1 系统体系结构4.2开发流程设计4.3 数据库设计原则4.4 数据表 5 **系统详细设计**5.1管理员功能模块5.2用户功能模块5.3前台首页功能模块 6、源码获取 1、效果演示 2、 前言介绍 随着科学技术的飞速发展&#xff…

加速5G部署,到底该怎么做?

今天&#xff0c;第31届中国国际信息通信展&#xff08;PT展&#xff09;在北京国家会议中心圆满落幕。 这次通信展&#xff0c;在举办日期上有着特殊的意义。因为&#xff0c;今年的6月6日&#xff0c;正好是国内5G牌照正式发放的四周年纪念日。而且&#xff0c;去年大概这个时…

DETR模型转RKNN

目录 1.前言 2.准备工作 3.开始转模型 4.测试代码 5.不想转&#xff0c;直接用也可以&#xff0c;转好的给你&#xff0c;请关注评论一下 1.前言 RKNN出最新版本了&#xff0c;测试了一下&#xff0c;rk在transformer方面做了很多的工作&#xff0c;至少之前不能转的模型&am…

ReadProcessMemory可不是一个进程间通信的好方法

有时候我看到有人会使用 ReadProcessMemory 这个 API 来实现进程间通信&#xff0c;老实说吧&#xff0c;我觉得这不是一个明智的选择&#xff0c;原因有如下几条。 首先&#xff0c;你不能使用 ReadProcessMemory 来跨越安全上下文 (Security Contexts)&#xff0c;至少你需要…

SpringCloud入门实战(八)- Gateway服务网关集成

&#x1f4dd; 学技术、更要掌握学习的方法&#xff0c;一起学习&#xff0c;让进步发生 &#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 &#xff0c;关注我&#xff0c;不迷路 。 &#x1f490;学习建议&#xff1a;1、养成习惯&#xff0c;学习java的任何一个技术…

macOS Sonoma 14.0 (23A5257q) Beta1 带 OC 引导双分区黑苹果镜像

6月6日&#xff0c;在WWDC2023开发者大会上&#xff0c;苹果带来了全新Mac系统&#xff0c;命名为macOS Sonoma。该系统最大的亮点是带来了小组件&#xff0c;macOS Sonoma可以添加手机上的所有小组件&#xff0c;包括车辆小组件。 镜像下载&#xff1a; 微信公众号&#xff1…

聚观早报 | 苹果发XR头显Vision Pro;英特尔将出售部分Mobileye股票

今日要闻&#xff1a;苹果发XR头显Vision Pro&#xff1b;英特尔将出售部分Mobileye股票&#xff1b;华为已申请注册两枚NETGPT&#xff1b;瑞幸咖啡全国门店数量突破1万家&#xff1b;iPhone15系列本月将在郑州富士康量产 苹果发XR头显Vision Pro 6 月 6 日&#xff0c;苹果 …