nginx | nginx反向代理/负载均衡/缓存

文章目录

  • 一、Nginx 反向代理
    • 1.1 nginx 文件结构
    • 1.2 默认的nginx配置文件
    • 1.3 实践中的 nginx.conf
  • 二、Nginx 负载均衡
    • 2.1 热备负载均衡
    • 2.2 轮询负责均衡
    • 2.3 加权轮询负载规则
    • 2.4 ip_hash 负载均衡
    • 2.5 对特定资源实现负载均衡
    • 2.6 对不同域名实现负载均衡
    • 2.7 实现带有URL重写的负载均衡
    • 2.8 四层负载均衡
  • 三、Nginx 缓存
    • 3.1 nginx 的缓存机制
    • 3.2 缓存实例
    • 3.3 Nginx缓存的清除
    • 3.4 Nginx设置资源不缓存
  • 四、参考资料

一、Nginx 反向代理

正向代理代理的对象是客户端,反向代理代理的是服务端

在这里插入图片描述

在nginx安装包下,有 conf/nginx.conf 文件,这是nginx服务器的基础配置,默认的配置也存放在此。

1.1 nginx 文件结构

# 1.全局块,配置影响nginx全局的指令。
# 一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
...              #全局块# 2.配置影响nginx服务器或与用户的网络连接。
# 有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。events {         #events块...
}# 3.可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。
# 如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
http      #http块
{...   #http全局块# 4.配置虚拟主机的相关参数,一个http中可以有多个server。server        #server块{ ...       #server全局块# 5.配置请求的路由,以及各种页面的处理情况。location [PATTERN]   #location块{...}location [PATTERN] {...}}server{...}...     #http全局块
}

1.2 默认的nginx配置文件

#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}

1.3 实践中的 nginx.conf

########### 每个指令必须有分号结束。#################
#user administrator administrators;  #配置用户或者组,默认为nobody nobody。
#worker_processes 2;  #允许生成的进程数,默认为1
#pid /nginx/pid/nginx.pid;   #指定nginx进程运行文件存放地址
error_log log/error.log debug;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
events {accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为onmulti_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off#use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventportworker_connections  1024;    #最大连接数,默认为512
}
http {include       mime.types;   #文件扩展名与文件类型映射表default_type  application/octet-stream; #默认文件类型,默认为text/plain#access_log off; #取消服务日志    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式access_log log/access.log myFormat;  #combined为日志格式的默认值sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。upstream mysvr {   server 127.0.0.1:7878;server 192.168.10.121:3333 backup;  #热备}error_page 404 https://www.baidu.com; #错误页server {keepalive_requests 120; #单连接请求上限次数。listen       4545;   #监听端口server_name  127.0.0.1;   #监听地址       location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。#root path;  #根目录#index vv.txt;  #设置默认页proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表deny 127.0.0.1;  #拒绝的ipallow 172.18.5.54; #允许的ip           } }
}

惊群现象:一个网路连接到来,多个睡眠的进程被同时叫醒,但只有一个进程能获得链接,这样会影响系统性能。

几个常见配置项:

  • 1.$remote_addr 与 $http_x_forwarded_for 用以记录客户端的ip地址;
  • 2.$remote_user :用来记录客户端用户名称;
  • 3.$time_local : 用来记录访问时间与时区;
  • 4.$request : 用来记录请求的url与http协议;
  • 5.$status : 用来记录请求状态;成功是200;
  • 6.$body_bytes_s ent :记录发送给客户端文件主体内容大小;
  • 7.$http_referer :用来记录从那个页面链接访问过来的;
  • 8.$http_user_agent :记录客户端浏览器的相关信息;

二、Nginx 负载均衡

在这里插入图片描述

2.1 热备负载均衡

热备:如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:AAAAAA突然A挂啦,BBBBBBBBBBBBBB…

upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333 backup;  #热备     
}server {   listen       8081;   #监听端口server_name  127.0.0.1;   #监听地址       location  /{proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表    } 
}

2.2 轮询负责均衡

轮询:nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB…

upstream mysvr { server 127.0.0.1:7878;server 192.168.10.121:3333;       
}server {   listen       8081;   #监听端口server_name  127.0.0.1;   #监听地址       location  /{proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表    } 
}

2.3 加权轮询负载规则

加权轮询:跟据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:ABBABBABBABBABB…

upstream mysvr { server 127.0.0.1:7878 weight=1;server 192.168.10.121:3333 weight=2;
}
server {   listen       8081;   #监听端口server_name  127.0.0.1;   #监听地址       location  /{proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表    } 
}

2.4 ip_hash 负载均衡

ip_hash:nginx会让相同的客户端ip请求相同的服务器。

upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333;ip_hash;
}
server {   listen       8081;   #监听端口server_name  127.0.0.1;   #监听地址       location  /{proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表    } 
}

2.5 对特定资源实现负载均衡

通过多个upstream分成多个服务器组,将不同的请求分流到不同的

upstream videomysvr { server 127.0.0.1:7878 weight=1;server 192.168.10.121:3333 weight=2;
}upstream filemysvr {server 192.3.2.1:7878 weight=1;server 192.3.2.2:3333 weight=2;
}
server {   listen       8081;   #监听端口server_name  127.0.0.1;   #监听地址       location  /video/ {proxy_pass  http://videomysvr;  #请求转向mysvr 定义的服务器列表    } location  /file/ {proxy_pass  http://filemysvr;  #请求转向mysvr 定义的服务器列表    } 
}

2.6 对不同域名实现负载均衡

upstream videomysvr { server 127.0.0.1:7878 weight=1;server 192.168.10.121:3333 weight=2;
}upstream filemysvr {server 192.3.2.1:7878 weight=1;server 192.3.2.2:3333 weight=2;
}
server {   listen       8081;   #监听端口server_name  www.ustc.edu.cn;   #监听地址       location  /video/ {proxy_pass  http://videomysvr;  #请求转向mysvr 定义的服务器列表    } 
}
server {   listen       8082;   #监听端口server_name  www.ustc.sse.edu.cn;   #监听地址       location  /file/ {proxy_pass  http://filemysvr;  #请求转向mysvr 定义的服务器列表    } 
}

2.7 实现带有URL重写的负载均衡

upstream backend{server 192.168.200.146:9001;server 192.168.200.146:9002;server 192.168.200.146:9003;
}
server {listen	80;server_name localhost;location /file/ {rewrite ^(/file/.*) /server/$1 last;}location / {proxy_pass http://backend;}
}

2.8 四层负载均衡

在这里插入图片描述

首先安装好redis和tomcat

stream {	# 一级括号upstream redisbackend {server 192.168.200.146:6379;server 192.168.200.146:6378;}upstream tomcatbackend {server 192.168.200.146:8080;}server {listen  81;proxy_pass redisbackend;}server {listen	82;proxy_pass tomcatbackend;}
}

三、Nginx 缓存

在这里插入图片描述

nginx 缓存的好处

  1. 减轻服务器负载
  2. 提供网页响应效率
  3. 降低网络阻塞,增强网络可扩展性

3.1 nginx 的缓存机制

配置块名称名称
httpproxy_cache_path指定缓冲区的路径
levels缓存目录级最高三层,每层1-2个字符表示,比如:1:1:2 三层
keys_zone缓存块名称及内存块大小,比如:cache_item:500m表示声明一个名为cache_item大小为500m,超出大小后最早的被清除
max_size缓存区硬盘的最大值,超出闲置数据将被清除
inactive最长闲置时间,比如:10d ,表示一个数据被闲置10天则将被清除
locationproxy_cache指定缓冲区,对应keys_zone中的设定的值
proxy_cache_key通过参数拼装参数key如:h o s t hosthosturii s a r g s is_argsisargsargs 则会已全部md5值作为key
proxy_cache_valid对不同的状态码设置缓存有效期

http模块:

  • proxy_cache_path:该指定用于设置缓存文件的存放路径
  • levels: 指定该缓存空间对应的目录,最多可以设置3层,每层取值为1|2如 : levels=1:2 缓存空间有两层目录,第一次是1个字母,第二次是2个字母;levels=2:2:2 最终的存储路径为 /usr/local/proxy_cache/7d/10/e2
  • keys_zone:用来为这个缓存区设置名称和指定大小,如:keys_zone=ffideal:200m 缓存区的名称是ffideal,大小为200M,1M大概能存储8000个keys
  • inactive:指定缓存的数据多次时间未被访问就将被删除,如:inactive=1d ,缓存数据在1天内没有被访问就会被删除
  • max_size:设置最大缓存空间,如果缓存空间存满,默认会覆盖缓存时间最长的资源,如:max_size=20g
http{# proxy_cache_path path [levels=number]
# keys_zone=zone_name:zone_size [inactive=time]\[max_size=size];
proxy_cache_path /usr/local/proxy_cache levels=1:2:1 keys_zone=ffideal:200m inactive=1d max_size=20g
}

location:

  • proxy_cache

该指令用来开启或关闭代理缓存,如果是开启则自定使用哪个缓存区来进行缓存。

语法proxy_cache zone_name|off;
默认值proxy_cache off;
位置http、server、location

zone_name:指定使用缓存区的名称

  • proxy_cache_key

该指令用来设置web缓存的key值,Nginx会根据key值MD5哈希存缓存。

语法proxy_cache_key key;
默认值proxy_cache_key $scheme$proxy_host$request_uri;
位置http、server、location
  • proxy_cache_valid

该指令用来对不同返回状态码的URL设置不同的缓存时间

语法proxy_cache_valid [code …] time;
默认值
位置http、server、location

如:

proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
为200和302的响应URL设置10分钟缓存,为404的响应URL设置1分钟缓存
proxy_cache_valid any 1m;
对所有响应状态码的URL都设置1分钟缓存
  • proxy_cache_min_uses

该指令用来设置资源被访问多少次后被缓存

语法proxy_cache_min_uses number;
默认值proxy_cache_min_uses 1;
位置http、server、location
  • proxy_cache_methods

该指令用户设置缓存哪些HTTP方法

语法proxy_cache_methods GET|HEAD|POST;
默认值proxy_cache_methods GET HEAD;
位置http、server、location

默认缓存HTTP的GET和HEAD方法,不缓存POST方法。

3.2 缓存实例

Nginx的环境准备

(1)完成Nginx反向代理配置

http{upstream backend{server 192.168.200.146:8080;}server {listen       8080;server_name  localhost;location / {proxy_pass http://backend/js/;}}
}

(2)完成Nginx缓存配置

4.添加缓存配置

http{proxy_cache_path /usr/local/proxy_cache levels=2:1 keys_zone=itcast:200m inactive=1d max_size=20g;upstream backend{server 192.168.200.146:8080;}server {listen       8080;server_name  localhost;location / {proxy_cache itcast;proxy_cache_key itheima;proxy_cache_min_uses 5;proxy_cache_valid 200 5d;proxy_cache_valid 404 30s;proxy_cache_valid any 1m;add_header nginx-cache "$upstream_cache_status";proxy_pass http://backend/js/;}}
}

3.3 Nginx缓存的清除

方式一:删除对应的缓存目录

rm -rf /usr/local/proxy_cache/......

方式二:使用第三方扩展模块

ngx_cache_purge

(1)下载ngx_cache_purge模块对应的资源包,并上传到服务器上。

ngx_cache_purge-2.3.tar.gz

(2)对资源文件进行解压缩

tar -zxf ngx_cache_purge-2.3.tar.gz

(3)修改文件夹名称,方便后期配置

mv ngx_cache_purge-2.3 purge

(4)查询Nginx的配置参数

nginx -V

(5)进入Nginx的安装目录,使用./configure进行参数配置

./configure --add-module=/root/nginx/module/purge

(6)使用make进行编译

make

(7)将nginx安装目录的nginx二级制可执行文件备份

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginxold

(8)将编译后的objs中的nginx拷贝到nginx的sbin目录下

cp objs/nginx /usr/local/nginx/sbin

(9)使用make进行升级

make upgrade

(10)在nginx配置文件中进行如下配置

server{location ~/purge(/.*) {proxy_cache_purge itcast itheima;}
}

3.4 Nginx设置资源不缓存

前面咱们已经完成了Nginx作为web缓存服务器的使用。但是我们得思考一个问题就是不是所有的数据都适合进行缓存。比如说对于一些经常发生变化的数据。如果进行缓存的话,就很容易出现用户访问到的数据不是服务器真实的数据。所以对于这些资源我们在缓存的过程中就需要进行过滤,不进行缓存。

Nginx也提供了这块的功能设置,需要使用到如下两个指令

proxy_no_cache

该指令是用来定义不将数据进行缓存的条件。

语法proxy_no_cache string …;
默认值
位置http、server、location

配置实例

proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;

proxy_cache_bypass

该指令是用来设置不从缓存中获取数据的条件。

语法proxy_cache_bypass string …;
默认值
位置http、server、location

配置实例

proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;

上述两个指令都有一个指定的条件,这个条件可以是多个,并且多个条件中至少有一个不为空且不等于"0",则条件满足成立。上面给的配置实例是从官方网站获取的,里面使用到了三个变量,分别是$cookie_nocache、$arg_nocache、$arg_comment

$cookie_nocache、$arg_nocache、$arg_comment

这三个参数分别代表的含义是:

$cookie_nocache
指的是当前请求的cookie中键的名称为nocache对应的值
$arg_nocache和$arg_comment
指的是当前请求的参数中属性名为nocache和comment对应的属性值

案例演示下:

log_format params $cookie_nocache | $arg_nocache | $arg_comment;
server{listen	8081;server_name localhost;location /{access_log logs/access_params.log params;add_header Set-Cookie 'nocache=999';root html;index index.html;}
}

案例实现

设置不缓存资源的配置方案

server{listen	8080;server_name localhost;location / {if ($request_uri ~ /.*\.js$){set $nocache 1;}proxy_no_cache $nocache $cookie_nocache $arg_nocache $arg_comment;proxy_cache_bypass $nocache $cookie_nocache $arg_nocache $arg_comment;}
}

四、参考资料

https://www.runoob.com/w3cnote/nginx-setup-intro.html

https://www.runoob.com/w3cnote/nginx-proxy-balancing.html

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

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

相关文章

JAVAEE之JavaScript

1.JavaScript JavaScript (简称 JS) 是世界上最流行的编程语言之一 是一个脚本语言, 通过解释器运行 主要在客户端(浏览器)上运行, 现在也可以基于 node.js 在服务器端运行. 脚本是什么? 脚本(script)是使用一种特定的描述性语言&#x…

浅谈物联网高速公路智慧配电室系统构建方案

关键词:高速公路;智慧供配电;电力监控;配电室智能运维托管;安全隐患 0、引言 随着高速公路事业的不断发展和路网的不断延伸,传统的管理方式已难以满足日益增长的需求,动态管理和安全隐患预警成…

视频汇聚/安防监控/视频存储EasyCVR平台EasyPlayer播放器更新:新增【性能面板】

视频汇聚/安防监控/视频存储平台EasyCVR基于云边端架构,可以在复杂的网络环境中快速、灵活部署,平台视频能力丰富,可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云…

今日头条signature参数js逆向(爬虫)

今日头条是ajax动态加载 话不多说,直接上代码 windowglobal;window.location{"ancestorOrigins": {},"href": "https://www.toutiao.com/","origin": "https://www.toutiao.com","protocol": "…

pymc,一个灵活的的 Python 概率编程库!

目录 前言 安装与配置 概率模型 贝叶斯推断 概率分布 蒙特卡罗采样 贝叶斯网络 实例分析 PyMC库的应用场景 1. 概率建模 2. 时间序列分析 3. 模式识别 总结 前言 大家好,今天为大家分享一个超强的 Python 库 - pymc Github地址:https://gith…

Github 2024-04-02Python开源项目日报 Top10

根据Github Trendings的统计,今日(2024-04-02统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10系统设计指南 创建周期:2507 天开发语言:Python协议类型:OtherStar数量:241693 个Fork数量:42010 次关注人数:241693 人贡献…

备考ICA----Istio实验15---开启 mTLS 自动双向认证实验

备考ICA----Istio实验15—开启mTLS自动双向认证实验 在某些生成环境下,我们希望微服务和微服务之间使用加密通讯方式来确保不被中间人代理. 默认情况下Istio 使用 PERMISSIVE模式配置目标工作负载,PERMISSIVE模式时,服务可以使用明文通讯.为了只允许双向 TLS 流量,…

ElementUI 表格横向滚动条时滚动到指定位置

ElementUI 表格横向滚动条时滚动到指定位置 getColumnOffset(columnProp) {this.$nextTick(() > {const table this.$refs.tableRef.$refs.multipleTable;const columns table.columns;const column columns.find((col) > col.property columnProp);if (column) {// …

Centos8/linux/虚拟机安装docker

docker分为ce版和ee版,像一般的小型团体和个人使用ce版就够了,别问为什么,问就是ee版收费。 1.首先切换到root用户 2.为确保安装时出现不必要的问题,先更新一下yum包 sudo yum update 3.如果之前安装过需要删除之间安装的CE版…

探索设计模式的魅力:AI大模型如何赋能C/S模式,开创服务新纪元

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 AI大模型如何赋能C/S模式,开创服务新纪元 数字化飞速发展的时代,AI大模型…

【嵌入式硬件】光耦

1.光耦作用 光耦一般用于信号的隔离。当两个电路的电源参考点不相关时,使用光耦可以保证在两边不共地的情况下,完成信号的传输。 2.光耦原理 光耦的原理图如下所示,其内部可以看做一个特殊的“三极管”; 一般的三极管是通过基极B和发射极E间的电流,去控制集电极C和发射极…

如何才能实现基坑自动化监测?

基坑自动化监测是一个系统性的过程,它涉及对基坑整体情况的全面了解和分析,确定监测指标,选择合适的监测传感器并进行安装和调试,配置相应的数据采集、传输和管理软件系统,以及进行系统的调试、定期维护和数据分析。以…

从零开始构建gRPC的Go服务

介绍 Protocol Buffers and gRPC是用于定义通过网络有效通信的微服务的流行技术。许多公司在Go中构建gRPC微服务,发布了他们开发的框架,本文将从gRPC入门开始,一步一步构建一个gRPC服务。 背景 之前在B站看过一个gRPC教学视频,…

HBase(超级无敌详细PROMAX讲解版)

简介 概述 图-1 HBase图标 HBase原本是由Yahoo!公司开发的后来贡献给了Apache的一套开源的、基于Hadoop的、分布式的、可扩展的非关系型数据库(Non-Relational Database),因此HBase不支持SQL(非关系型数据库基本上都不支持SQL),而是提供了一套单独的命…

Vue3组件计算属性的缓存

Vue.js3组件的方法-CSDN博客 使用Vue3组件的计算属性-CSDN博客 Vue3组件计算属性的get和set方法-CSDN博客 计算属性是基于它们的依赖进行缓存的。计算属性只有在它的相关依赖发生改变时,才会重新求值。 计算属性的写法和方法很相似,完全可以在method…

【javaWeb 第十篇】(SpringBoot )yml配置文件

yml配置文件 配置文件参数配置化yml配置文件yml配置文件的基本语法yml数据格式 yml配置ConfigurationProperties 配置文件 参数配置化 为什么要使用配置文件配置参数: 以阿里云OSS工具类为例,在工具类中,需要给出连接阿里云服务器的种种参数…

VMware虚拟机三种网络模式配置

vmware有三种网络工作模式:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。 1. 打开网络编辑器(编辑 --> 虚拟网络编辑器) 在主机上有VMware Ne…

Movavi Video Converter 2022 for Mac/Win:卓越的视频音频文件转换器

在数字化时代,视频和音频文件已成为我们日常生活和工作中不可或缺的一部分。无论是制作精美的家庭影片,还是编辑专业的商业视频,一款高效、便捷的视频音频文件转换器无疑是您的得力助手。而Movavi Video Converter 2022,就是这样一…

Unity 使用 IL2CPP 发布项目

一、为什么用 IL2CPP Unity的IL2CPP(Intermediate Language to C)是一个编译技术,它将C#代码转换为C代码,然后再编译成平台相关的二进制代码。IL2CPP提供了几个优点,特别是在性能和跨平台部署方面。以下是IL2CPP的一些…

OpenCv —— cv::VideoCapture设置摄像头图像格式为“MJPEG“

背景 今天恰巧同事有台USB摄像头,她想要在Windows系统下通过OpenCV读取该摄像头宽高为1080x768、帧率为60的视频,用来做图像算法处理。但无奈通过网上OpenCV教程 读取的视频对应尺寸的帧率仅为10帧左右,根本无法满足使用要求。于是作者通过本篇文章介绍如何解决,欢迎交流指…