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

win环境nginx实战配置详解

项目中经常使用nginx做负载均衡,接口路由、文件、文档的上传及下载、视频的代理播放等等,都离不开nginx的支持,今天我们分享一下其个使用场景。

1、配置文件 nd-nginx.conf

全局配置


#全局配置端,对全局生效,主要设置nginx的启动用户/组,启动的工作进程数量,工作模式,Nginx的PID路径,日志路径等。
#user  nobody;
#user nginx nginx;#启动Nginx工作进程的用户和组
worker_processes  1; #启动工作进程数数量
#worker_processes [number | auto]; #启动Nginx工作进程的数量,一般设为和CPU核心数相同
#worker_cpu_affinity 00000001 00000010 00000100 00001000 | auto ; 
#将Nginx工作进程绑定到指定的CPU核心,默认Nginx是不进行进程绑定的,绑定并不是意味着当前nginx进程独占以一核心CPU,
#但是可以保证此进程不会运行在其他核心上,这就极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,
#减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;#events设置快,主要影响nginx服务器与用户的网络连接,比如是否允许同时接受多个网络连接,
#使用哪种事件驱动模型处理请求,每个工作进程可以同时支持的最大连接数,是否开启对多工作进程下的网络连接进行序列化等。
events {#设置单个nginx工作进程可以接受的最大并发,作为web服务器的时候最大并发数为worker_connections * worker_processes,#作为反向代理的时候为(worker_connections * worker_processes)/2worker_connections  1024;
}

文件上面全局配置

2、http 模块详解

#http块是Nginx服务器配置中的重要部分,缓存、代理和日志格式定义等绝大多数功能和第三方模块都可以在这设置,
#http块可以包含多个server块,而一个server块中又可以包含多个location块,
#server块可以配置文件引入、MIME-Type定义、日志自定义、是否启用sendfile、连接超时时间和单个链接的请求上限等。
http {#通用配置....# N个server 模块虚拟服务器 }

3、http模块里面通用的配置

    include       mime.types; #导入支持的文件类型,是相对于/apps/nginx/conf的目录,在响应报文中将指定的文件扩展名映射至MIME对应的类型default_type  application/octet-stream; #除mime.types中文件类型外,设置其它文件默认类型,访问其它类型时会提示下载不匹配的类型文件#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;#作为web服务器的时候打开sendfile加快静态文件传输,指定是否使用sendfile系统调用来传输文件,#sendfile系统调用在两个文件描述符之间直接传递数据(完全在内核中操作),从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,#操作效率很高,被称之为零拷贝,硬盘 >> kernel buffer (快速拷贝到kernelsocket buffer) >>协议栈。sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;  #长连接超时时间,单位是秒#开启gzip压缩,若想关闭gzip压缩,则需要注释掉这句话,或者将on换成off#gzip  on;#配置允许压缩的页面的最小字节数,页面字节数从header头中的Content-Length中获>取,建议设置成1k,因为如果数据小于1k,他也会压缩成1k,这样会起到反作用。#gzip_min_length 1k;#4个16k的数据流用于存储gzip的压缩结果数据流#gzip_buffers 4 16k;#支持的http版本为1.1#gzip_http_version 1.1;#判断客户端是否支持gzip技术,若不支持则不会进行gzip处理#gzip_vary on;# 全局跨域配置#为 * 表示服务器可以接受所有的请求源(Origin),即接受所有跨域的请求,也可以指定一个确定的URLadd_header 'Access-Control-Allow-Origin' '*' always;#可选字段,为true表示允许发送Cookie。同时,发送时,必须设置XMLHttpRequest.withCredentials为true才有效,请求若服务器不允许浏览器发送,删除该字段即可。add_header 'Access-Control-Allow-Credentials' 'true';#代表允许使用指定的方法请求该地址add_header 'Access-Control-Allow-Methods' 'GET, POST, PATCH, DELETE, PUT, OPTIONS';#代表允许在请求该地址的时候带上指定的请求头,例如:Content-Type,Authorization,使用逗号(,)拼接起来放在双引号(")中add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type, X-Custom-Header, Access-Control-Expose-Headers, Token, Authorization';add_header 'Access-Control-Allow-Headers'  '*';#代表着在 1728000 秒之内不用请求该地址的时候 不需要再进行预检请求,也就是跨域缓存。add_header 'Access-Control-Max-Age' 1728000;

4、server 虚拟服务器详解及通用配置

#每个server用于定义一个虚拟主机,第一个server为默认虚拟服务器server {#设置一个虚拟机主机,可以包含自己的全局快,同时也可以包含多个location模块。#比如本虚拟机监听的端口、本虚拟机的名称和IP配置,多个server 可以使用一个端口,比如都使用80端口提供web服务listen       80; #配置server监听的端口server_name  localhost; #本server的名称,当访问此名称的时候nginx会调用当前serevr内部的配置进程匹配。#是否在响应报文中的Content-Type显示指定的字符集,默认off不显示#charset charset | off;#charset koi8-r;#设置编码格式,默认是俄语格式,建议改为utf-8#示例#charset utf-8;#access_log  logs/host.access.log  main;autoindex on; # 显示目录,默认不开启autoindex_localtime on;# 显示文件修改时间 # 显示文件大小#多个 location 配置....}

5、server 中 多个location 配置 

        #以http的方式转发mp4请求到指定web服务器。#访问 http://127.0.0.1/6d.mp4 就可以播放视频,而视频6d.mp4就在html/dist目录下。location ~ /.mp4$ {#root E:\sh\nginx; # 你的文件目录mp4;			# 支持mp4mp4_buffer_size 10m;#处理mp4初始内存大小mp4_max_buffer_size 50m;#处理mp4最大内存大小}location / {root   html/dist;#相当于默认页面的目录名称,默认是安装目录的相对路径,可以使用绝对路径配置。index  index.html index.htm;#默认的页面文件名称#给OPTIONS 添加 204 的返回,为了处理在发送POST请求时Nginx依然拒绝访问的错误,发送"预检请求"时,需要用到方法 OPTIONS,所以服务器需要允许该方法。if ($request_method = 'OPTIONS') {return 204;}}#proxy_pass的配置详解在后面location /test {proxy_pass http://127.0.0.1:9006;proxy_redirect off;#关闭重定向#proxy_redirect #旧地址 新地址;#proxy_redirect default;  #默认配置#若客户端发过来的请求header中有HOST这个字段,$http_host和$host表示的就是原始请求host,比如请求的时候HOST的值是http://demo.com,那么反代后还是http://demo.com。proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;#将$remote_addr的值放进变量X-Real-IP中,此变量名可变,$remote_addr的值为客户端的ipproxy_set_header X-forwarded-For $proxy_add_x_forwarded_for;#获得用户真实ip}location /ars {proxy_pass http://192.8.3.211:9006;}#/person/getPersonUrllocation /kvc {add_header 'Access-Control-Allow-Origin' '*' ;add_header 'Access-Control-Allow-Credentials' 'true';add_header 'Access-Control-Allow-Methods' '*';add_header 'Access-Control-Allow-Headers'  '*';add_header 'Access-Control-Max-Age' 1728000;proxy_pass http://192.8.3.211:1288;}location /about {root /app/html; #必须要在html目录中创建一个名为about的目录才可以访问,否则报错。}location /about { #注意about后不要加/ , 使用alias的时候uri后面如果加了斜杠,则下面的路径配置必须加斜杠,否则403alias /opt/html/about; #当访问about的时候,会显示alias定义的/opt/html/about里面的内容。}#注意:location中使用root指令和alias指令的意义不同#root 给定的路径对应于location中的/uri 左侧的/#alias 给定的路径对应于location中的/uri 的完整路径#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 { #location处理对应的不同错误码的页面定义到/50x.html,这个跟对应其server中定义的目录下。root   html;#定义默认页面所在的目录}

6、第二个server,单独处理视频播放

#serverd第二个服务虚拟服务器#访问http://127.0.0.1:8088/6d.mp4 就可以播放视频,而视频6d.mp4就在E:/sh/nginx/nginx目录下。server {listen 8088;server_name 127.0.0.1;charset utf-8,gbk;#root /usr/local/nginx/html/files; # 你的文件目录root E:/sh/nginx/nginx; # 你的文件目录# 显示目录,默认不开启autoindex on;# 显示文件大小# 显示文件修改时间autoindex_localtime on;location ~ /.mp4$ {mp4;			# 支持mp4mp4_buffer_size 10m;mp4_max_buffer_size 50m;}}

7、第三个server 单独展示图片

#作为下载服务器配置#官方文档:http://nginx.org/en/docs/http/ngx_http_autoindex_module.html#作为上传服务器# 定义缓存目录proxy_cache_path E:/sh/nginx/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m;server {listen 8081;location ~* /.(jpg|jpeg|png|gif)$ {# 开启缓存功能proxy_cache my_cache;# 指定缓存时间(单位为秒)proxy_cache_valid any 30d;# 如果未命中缓存则从后端服务器获取并进行缓存#proxy_pass http://backend-server;# 其他相关配置...}location ~* /.(css|js)$ {#1h代表一小时expires 1h;# 开启缓存功能proxy_cache my_cache;# 指定缓存时间(单位为秒)proxy_cache_valid any 30d;}}

8、整个配置文件展示


#全局配置端,对全局生效,主要设置nginx的启动用户/组,启动的工作进程数量,工作模式,Nginx的PID路径,日志路径等。
#user  nobody;
#user nginx nginx;#启动Nginx工作进程的用户和组
worker_processes  1; #启动工作进程数数量
#worker_processes [number | auto]; #启动Nginx工作进程的数量,一般设为和CPU核心数相同
#worker_cpu_affinity 00000001 00000010 00000100 00001000 | auto ; 
#将Nginx工作进程绑定到指定的CPU核心,默认Nginx是不进行进程绑定的,绑定并不是意味着当前nginx进程独占以一核心CPU,
#但是可以保证此进程不会运行在其他核心上,这就极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,
#减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;#events设置快,主要影响nginx服务器与用户的网络连接,比如是否允许同时接受多个网络连接,
#使用哪种事件驱动模型处理请求,每个工作进程可以同时支持的最大连接数,是否开启对多工作进程下的网络连接进行序列化等。
events {#设置单个nginx工作进程可以接受的最大并发,作为web服务器的时候最大并发数为worker_connections * worker_processes,#作为反向代理的时候为(worker_connections * worker_processes)/2worker_connections  1024;
}#http块是Nginx服务器配置中的重要部分,缓存、代理和日志格式定义等绝大多数功能和第三方模块都可以在这设置,
#http块可以包含多个server块,而一个server块中又可以包含多个location块,
#server块可以配置文件引入、MIME-Type定义、日志自定义、是否启用sendfile、连接超时时间和单个链接的请求上限等。
http {include       mime.types; #导入支持的文件类型,是相对于/apps/nginx/conf的目录,在响应报文中将指定的文件扩展名映射至MIME对应的类型default_type  application/octet-stream; #除mime.types中文件类型外,设置其它文件默认类型,访问其它类型时会提示下载不匹配的类型文件#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;#作为web服务器的时候打开sendfile加快静态文件传输,指定是否使用sendfile系统调用来传输文件,#sendfile系统调用在两个文件描述符之间直接传递数据(完全在内核中操作),从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,#操作效率很高,被称之为零拷贝,硬盘 >> kernel buffer (快速拷贝到kernelsocket buffer) >>协议栈。sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;  #长连接超时时间,单位是秒#开启gzip压缩,若想关闭gzip压缩,则需要注释掉这句话,或者将on换成off#gzip  on;#配置允许压缩的页面的最小字节数,页面字节数从header头中的Content-Length中获>取,建议设置成1k,因为如果数据小于1k,他也会压缩成1k,这样会起到反作用。#gzip_min_length 1k;#4个16k的数据流用于存储gzip的压缩结果数据流#gzip_buffers 4 16k;#支持的http版本为1.1#gzip_http_version 1.1;#判断客户端是否支持gzip技术,若不支持则不会进行gzip处理#gzip_vary on;# 全局跨域配置#为 * 表示服务器可以接受所有的请求源(Origin),即接受所有跨域的请求,也可以指定一个确定的URLadd_header 'Access-Control-Allow-Origin' '*' always;#可选字段,为true表示允许发送Cookie。同时,发送时,必须设置XMLHttpRequest.withCredentials为true才有效,请求若服务器不允许浏览器发送,删除该字段即可。add_header 'Access-Control-Allow-Credentials' 'true';#代表允许使用指定的方法请求该地址add_header 'Access-Control-Allow-Methods' 'GET, POST, PATCH, DELETE, PUT, OPTIONS';#代表允许在请求该地址的时候带上指定的请求头,例如:Content-Type,Authorization,使用逗号(,)拼接起来放在双引号(")中add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type, X-Custom-Header, Access-Control-Expose-Headers, Token, Authorization';add_header 'Access-Control-Allow-Headers'  '*';#代表着在 1728000 秒之内不用请求该地址的时候 不需要再进行预检请求,也就是跨域缓存。add_header 'Access-Control-Max-Age' 1728000;#每个server用于定义一个虚拟主机,第一个server为默认虚拟服务器server {#设置一个虚拟机主机,可以包含自己的全局快,同时也可以包含多个location模块。#比如本虚拟机监听的端口、本虚拟机的名称和IP配置,多个server 可以使用一个端口,比如都使用80端口提供web服务listen       80; #配置server监听的端口server_name  localhost; #本server的名称,当访问此名称的时候nginx会调用当前serevr内部的配置进程匹配。#是否在响应报文中的Content-Type显示指定的字符集,默认off不显示#charset charset | off;#charset koi8-r;#设置编码格式,默认是俄语格式,建议改为utf-8#示例#charset utf-8;#access_log  logs/host.access.log  main;autoindex on; # 显示目录,默认不开启autoindex_localtime on;# 显示文件修改时间 # 显示文件大小#以http的方式转发mp4请求到指定web服务器。#访问 http://127.0.0.1/6d.mp4 就可以播放视频,而视频6d.mp4就在html/dist目录下。location ~ /.mp4$ {#root E:\sh\nginx; # 你的文件目录mp4;			# 支持mp4mp4_buffer_size 10m;#处理mp4初始内存大小mp4_max_buffer_size 50m;#处理mp4最大内存大小}location / {root   html/dist;#相当于默认页面的目录名称,默认是安装目录的相对路径,可以使用绝对路径配置。index  index.html index.htm;#默认的页面文件名称#给OPTIONS 添加 204 的返回,为了处理在发送POST请求时Nginx依然拒绝访问的错误,发送"预检请求"时,需要用到方法 OPTIONS,所以服务器需要允许该方法。if ($request_method = 'OPTIONS') {return 204;}}#proxy_pass的配置详解区别 https://blog.csdn.net/jsxztshaohaibo/article/details/134578031location /test {proxy_pass http://127.0.0.1:9016;proxy_redirect off;#关闭重定向#proxy_redirect #旧地址 新地址;#proxy_redirect default;  #默认配置#若客户端发过来的请求header中有HOST这个字段,$http_host和$host表示的就是原始请求host,比如请求的时候HOST的值是http://demo.com,那么反代后还是http://demo.com。proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;#将$remote_addr的值放进变量X-Real-IP中,此变量名可变,$remote_addr的值为客户端的ipproxy_set_header X-forwarded-For $proxy_add_x_forwarded_for;#获得用户真实ip}location /artemis {proxy_pass http://192.8.3.211:9006;}#/person/getPersonUrllocation /kcvc {add_header 'Access-Control-Allow-Origin' '*' ;add_header 'Access-Control-Allow-Credentials' 'true';add_header 'Access-Control-Allow-Methods' '*';add_header 'Access-Control-Allow-Headers'  '*';add_header 'Access-Control-Max-Age' 1728000;proxy_pass http://192.8.3.211:1288;}location /about {root /app/html; #必须要在html目录中创建一个名为about的目录才可以访问,否则报错。}location /about { #注意about后不要加/ , 使用alias的时候uri后面如果加了斜杠,则下面的路径配置必须加斜杠,否则403alias /opt/html/about; #当访问about的时候,会显示alias定义的/opt/html/about里面的内容。}#注意:location中使用root指令和alias指令的意义不同#root 给定的路径对应于location中的/uri 左侧的/#alias 给定的路径对应于location中的/uri 的完整路径#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 { #location处理对应的不同错误码的页面定义到/50x.html,这个跟对应其server中定义的目录下。root   html;#定义默认页面所在的目录}}#serverd第二个服务虚拟服务器#访问http://127.0.0.1:8088/6d.mp4 就可以播放视频,而视频6d.mp4就在E:/sh/nginx/nginx目录下。server {listen 8088;server_name 127.0.0.1;charset utf-8,gbk;#root /usr/local/nginx/html/files; # 你的文件目录root E:/sh/nginx/nginx; # 你的文件目录# 显示目录,默认不开启autoindex on;# 显示文件大小# 显示文件修改时间autoindex_localtime on;location ~ /.mp4$ {mp4;			# 支持mp4mp4_buffer_size 10m;mp4_max_buffer_size 50m;}}#作为下载服务器配置#官方文档:http://nginx.org/en/docs/http/ngx_http_autoindex_module.html#作为上传服务器# 定义缓存目录proxy_cache_path E:/sh/nginx/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m;server {listen 8081;location ~* /.(jpg|jpeg|png|gif)$ {# 开启缓存功能proxy_cache my_cache;# 指定缓存时间(单位为秒)proxy_cache_valid any 30d;# 如果未命中缓存则从后端服务器获取并进行缓存#proxy_pass http://backend-server;# 其他相关配置...}location ~* /.(css|js)$ {#1h代表一小时expires 1h;# 开启缓存功能proxy_cache my_cache;# 指定缓存时间(单位为秒)proxy_cache_valid any 30d;}}
}

9、参考proxy_pass的配置详解区别

参考代理uri区别文章

到此,单体服务的多种使用场景从不同角度展示出来了,分享告一段落,后面会持续更新,敬请期待!

相关文章:

win环境nginx实战配置详解

项目中经常使用nginx做负载均衡,接口路由、文件、文档的上传及下载、视频的代理播放等等,都离不开nginx的支持,今天我们分享一下其个使用场景。 1、配置文件 nd-nginx.conf 全局配置 #全局配置端,对全局生效,主要设置…...

数字化转型导师坚鹏:如何制定证券公司数字化转型年度培训规划

如何制定与实施证券公司数字化转型年度培训规划 ——以推动证券公司数字化转型战略落地为核心,实现知行果合一 课程背景: 很多证券公司都在开展数字化转型培训工作,目前存在以下问题急需解决: 缺少针对性的证券公司数字化转型…...

新王炸:文生视频Sora模型发布,能否引爆AI芯片热潮

前言 前方高能预警,Sora来袭! 浅析Sora的技术亮点 语言模型中构建关键词联系 视频素材分解为时空碎片 扩散模型DiT Not for play, But change world! OpenAI的宏大目标 未来已来,只是尚未流行 Sora的成本与OpenAI的7万亿美金豪赌 算…...

代码随想录算法训练营|day48

第九章 动态规划 121.买卖股票的最佳时机122.买卖股票的最佳时机II代码随想录文章详解 121.买卖股票的最佳时机 本题中股票只能买卖一次 dp[i][0] 表示第i天不买入股票持有的最大现金;dp[i][1] 表示第i天买入股票持有的最大现金。 不买股票持有的最大现金买入股票…...

架构面试题汇总:并发和锁(三)

在现代软件开发中,并发编程和多线程处理已成为不可或缺的技能。Java作为一种广泛使用的编程语言,提供了丰富的并发和多线程工具,如锁、同步器、并发容器等。因此,对于Java开发者来说,掌握并发编程和多线程处理的知识至…...

蓝桥杯(3.2)

1209. 带分数 import java.io.*;public class Main {static BufferedReader br new BufferedReader(new InputStreamReader(System.in));static PrintWriter pw new PrintWriter(new OutputStreamWriter(System.out));static final int N 10;static int n, cnt;static int[…...

[数据集][目标检测]鸟类检测数据集VOC+YOLO格式11758张200类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):11758 标注数量(xml文件个数):11758 标注数量(txt文件个数):11758 标…...

YOLOv9:使用可编程梯度信息学习您想学习的内容

摘要 arxiv.org/pdf/2402.13616.pdf 当今的深度学习方法侧重于如何设计最合适的目标函数,以便模型的预测结果能最接近于实际结果。同时,还必须设计一个适当的架构,以便于获取足够的预测信息。现有的方法忽略了一个事实,即当输入数据经历层层特征提取和空间变换时,会损失…...

uniapp:使用DCloud的uni-push推送消息通知(在线模式)java实现

uniapp:使用DCloud的uni-push推送消息通知(在线模式)java实现 1.背景 今天开发app的时候遇到一个需求: 业务在出发特定条件的时候向对应的客户端推送消息通知。 为什么选择在线模式,因为我们使用的是德邦类似的手持终端&#xf…...

【简说八股】面试官:你知道什么是AOP么?

回答 AOP(Aspect-Oriented Programming),即面向切面编程,是一种编程范式,它的主要思想是将应用程序中的横切关注点(如日志记录、性能统计、安全控制等)从业务逻辑中剥离出来,然后通过特殊的方式将这些横切…...

ASUS华硕天选5笔记本电脑FX607JV原装出厂Win11系统下载

ASUS TUF Gaming F16 FX607JV天选五原厂Windows11系统 适用型号: FX607JU、FX607JI、FX607JV、 FX607JIR、FX607JVR、FX607JUR 下载链接:https://pan.baidu.com/s/1l963wqxT0q1Idr98ACzynQ?pwd0d46 提取码:0d46 原厂系统自带所有驱动、…...

Unity(第二十一部)动画的基础了解(感觉不了解其实也行)

1、动画组件老的是Animations 动画视频Play Automatically 是否自动播放Animate Physics 驱动方式,勾选后是物理驱动Culling Type 剔除方式 默认总是动画化就会一直执行下去,第二个是基于渲染播放(离开镜头后不执行), …...

写时复制简介

写时复制技术(Copy on Write)是比较常用的一种技术,它的主要目的是延迟减少以及延迟内存的分配,增加执行效率,只有在真正进行写操作的过程中才会真正分配物理资源。同时,也可以保护数据在系统崩溃时出现的丢失。比如,我…...

运行Python文件时出现‘utf-8’code can‘t decode byte 如何解决?(如图)

如图 亦或者出现“SyntaxError: Non-UTF-8 code starting with \xbb ” 出现这种问题往往是编码格式导致的,我们可以在py文件中的第一行加入以下代码: # codingutf-8或者 # codinggdk优先使用gbk编码 解释一下常用的两种编码格式: utf-…...

行为树入门:BehaviorTree.CPP Groot2练习(叶子节点)(2)

以《行为树BehaviorTree学习记录1_基本概念》练习。 1 SequenceNode顺序控制节点 代码下载 git clone https://gitee.com/Luweizhiyuan2020/ros2_bt.git例程 1.1 sequence 顺序执行 下载版本SequenceNode1。 1.2 ReactiveSequence 异步执行 注意: ①only a…...

leetcode-字符串中的单词数

434. 字符串中的单词数 题解: 这个问题可以通过遍历字符串,当遇到非空格字符时,判断其前一个字符是否为空格,如果是,则说明这是一个新的单词的开始,计数器加一。最后返回计数器的值即可。 class Solutio…...

一些C语言题目

求10个整数中最大值 #include <stdio.h>//求10个整数中最大值 int main() {int arr[10]{2,5,8,6,19,1,7,3,11,3};int i 0;int max 0;/*for(i 0;i < 10;i){scanf("%d",&arr[i]);}*/for(i 0;i < 10;i){if(arr[i] > max)max arr[i];}printf(&q…...

JVM相关问题

JVM相关问题 一、Java继承时父子类的初始化顺序是怎样的&#xff1f;二、JVM类加载的双亲委派模型&#xff1f;三、JDK为什么要设计双亲委派模型&#xff0c;有什么好处&#xff1f;四、可以打破JVM双亲委派模型吗&#xff1f;如何打破JVM双亲委派模型&#xff1f;五、什么是内…...

32单片机基础:旋转编码器计次

接线图如上图所示。 我们初始化一下PB0和PB1两个GPIO口外设中断&#xff0c;当然&#xff0c;这里只初始化一个外部中断也能完成功能的对于编码器而言&#xff0c;下图所示为正转的波形。如果把一相的下降沿用作触发中断&#xff0c;在中断时刻读取另一相的电平&#xff0c;正…...

【C++】vector的使用和模拟实现(超级详解!!!!)

文章目录 前言1.vector的介绍及使用1.1 vector的介绍1.2 vector的使用1.2.1 vector的定义1.2.2 vector iterator 的使用1.2.3 vector 空间增长问题1.2.3 vector 增删查改1.2.4 vector 迭代器失效问题。&#xff08;重点!!!!!!&#xff09;1.2.5 vector 在OJ中有关的练习题 2.ve…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

go 里面的指针

指针 在 Go 中&#xff0c;指针&#xff08;pointer&#xff09;是一个变量的内存地址&#xff0c;就像 C 语言那样&#xff1a; a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10&#xff0c;通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...