nginx2

mkdir /usr/local/develop

cd /usr/local/develop

下载

wget http://nginx.org/download/nginx-1.17.4.tar.gz

yum install git

git clone https://github.com/arut/nginx-rtmp-module.git

解压文件

tar zxmf nginx-1.17.4.tar.gz

进入解压目录

cd nginx-1.17.4/

安装编译工具及依赖库 都安装成功后再次执行会有下面提示

yum -y install gcc pcre-devel zlib-devel openssl-devel libxml2-devel libxslt-devel gd-devel GeoIP-devel jemalloc-devel libatomic_ops-devel perl-devel perl-ExtUtils-Embed

编译所有功能模块  可能根据操作系统不同需要指定在./configure --prefix=/usr/local/nginx 加上后面的模块 来指定  我这里不需要

./configure --add-module=/usr/local/develop/nginx-rtmp-module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream=dynamic --with-stream_ssl_module --with-stream_realip_module --with-stream_geoip_module=dynamic --with-stream_ssl_preread_module --with-compat --with-pcre-jit

用上面的  下面的我做个记录

./configure --with-threads \
            --with-file-aio \
            --with-http_ssl_module \
            --with-http_v2_module \
            --with-http_realip_module \
            --with-http_addition_module \
            --with-http_xslt_module=dynamic \
            --with-http_image_filter_module=dynamic \
            --with-http_geoip_module=dynamic \
            --with-http_sub_module \
            --with-http_dav_module \
            --with-http_flv_module \
            --with-http_mp4_module \
            --with-http_gunzip_module \
            --with-http_gzip_static_module \
            --with-http_auth_request_module \
            --with-http_random_index_module \
            --with-http_secure_link_module \
            --with-http_degradation_module \
            --with-http_slice_module \
            --with-http_stub_status_module \
            --with-stream=dynamic \
            --with-stream_ssl_module \
            --with-stream_realip_module \
            --with-stream_geoip_module=dynamic \
            --with-stream_ssl_preread_module \
            --with-compat \
            --with-pcre-jit

make && make install     如果出现下面这种情况说明上面编译没有成功

编译后默认安装目录为    /usr/local/nginx

cd /usr/local/nginx

ll

进入sbin目录

cd sbin/

nginx的常用命令

在 /usr/local/nginx/sbin目录下

./nginx   启动nginx

./nginx -s stop   关闭nginx

./nginx -s quit  优雅关闭

./nginx -s reload  在启动情况下重启nginx 默认加载的是/usr/local/nginx/conf/nginx.conf配置文件

./nginx -s reload -c /path/to/your/nginx.conf  后面可以指定你配置文件位置

./nginx -s reopen  重新打开日志文件

这样每次都需要在/usr/local/nginx/sbin目录下进行操做,比较麻烦

配置Nginx全局环境变量  

vim /etc/profile.d/nginx.sh(用这个)    和vim /etc/profile

说明:vim /etc/profile.d/nginx.sh 配置PATH=$PATH:/usr/local/nginx/sbin 和vim /etc/profile里配置PATH=$PATH:/usr/local/nginx/sbin 效果是一样的,只不过在/etc/profile.d更加有组织性

PATH=$PATH:/usr/local/nginx/sbin
 

:wq是保存退出

:q是退出不保存

:q!是强制退出不保存

配置完成后 更新环境变量

source /etc/profile

这样你就可以在任何目录执行nginx的命令

nginx   启动nginx

nginx -s stop   关闭nginx

nginx -s quit  优雅关闭

nginx -s reload  在启动情况下重启nginx 默认加载的是/usr/local/nginx/conf/nginx.conf配置文件

nginx -s reload -c /path/to/your/nginx.conf  后面可以指定你配置文件位置

nginx -s reopen  重新打开日志文件

nginx -t 检查配置文件

nginx -V  大写v看安装的模块

nginx -v 小写v看版本

把Nginx注册为系统服务

vim /etc/systemd/system/nginx.service(这里不要选这个  可以查下两者区别)

vim /usr/lib/systemd/system/nginx.service

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -q
ExecStart=/usr/local/nginx/sbin/nginx -g "pid /run/nginx.pid;"
ExecReload=/usr/local/nginx/sbin/nginx -t -q
ExecReload=/usr/local/nginx/sbin/nginx -s reload -g "pid /run/nginx.pid;"

ExecStop=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target
 

重新加载系统服务

system daemon-reload(我这里  这一步不需要执行)

系统启动后自动启动(注意不要多空格)

systemctl enable nginx  

启动Nginx

systemctl start nginx

重启

systemctl reload nginx

停止

systemctl stop nginx

查看状态

systemctl status nginx

安全组开通80端口

现在你可以通过

http://你的公网IP访问nginx  因为此时nginx的配置文件只配了80端口

基本认证模块(如果需要使用的话,一般不需要安装)

htpasswd -c /usr/local/nginx/htpasswd 你的登录名

安装依赖

yum -y install httpd-tools

再次执行

htpasswd -c /usr/local/nginx/htpasswd 你的登录名  需要确认密码

再次登录时要求你输入用户名密码

文件下载服务器配置

root指令和proxy_pass指令不要写在同一个块中,写了只会执行一个,谁在前执行谁


#user  nobody;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;# 工作进程:根据需要进行设置,一般设置为CPU核心数的2倍或直接设置为auto由程序自动调整
worker_processes 1;
events {# 每个工作进程的连接数,默认为1024个worker_connections 1024;
}
http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;gzip on;server {listen 80;server_name localhost;charset utf-8;root /data/nginx-web/files; # 文件存放目录location / {autoindex on; # 启用自动首页功能autoindex_format html; # 首页格式为HTMLautoindex_exact_size on; # 文件大小自动换算autoindex_localtime on; # 按照服务器时间显示文件时间default_type application/octet-stream;# 将当前目录中所有文件的默认MIME类型设置为# application/octet-streamif ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$) {# 当文件格式为上述格式时,将头字段属性Content-Disposition的值设置为"attachment"add_header Content-Disposition: 'attachment;';
#注意加上下面的,不知什么原因 会导致失效问题(就是变成在线浏览或者在线播放了)add_header Content-Type 'application/octet-stream';}sendfile on; # 开启零复制文件传输功能sendfile_max_chunk 1m; # 每个sendfile调用的最大传输量为1MBtcp_nopush on; # 启用最小传输限制功能aio on; # 启用异步传输directio 5m; # 当文件大于5MB时以直接读取磁盘的方式读取文件directio_alignment 4096; # 与磁盘的文件系统对齐output_buffers 4 32k; # 文件输出的缓冲区大小为128KBlimit_rate 1m; # 限制下载速度为1MBlimit_rate_after 2m; # 当客户端下载速度达到2MB时进入限速模式max_ranges 4096; # 客户端执行范围读取的最大值是4096Bsend_timeout 20s; # 客户端引发传输超时时间为20spostpone_output 2048; # 当缓冲区的数据达到2048B时再向客户端发送chunked_transfer_encoding on; # 启用分块传输标识#加了好像也没效果#expires 365d;  # 设置过期时间为365天#add_header Cache-Control "public, max-age=31536000";  # 设置缓存控制为公共缓存,最大缓存时间为一年}}
}

注意:一个IP可以绑定多个域名

如果有多个server监听同一个端口 当用IP访问时候  server_name首先匹配server_name 是对应IP的那个server 如果没有server_name是那个IP  那么哪个server在前就匹配哪个server 当用域名访问时候 哪个server_name和域名相同就用哪个 这里和用localhost或者127.0.0.1无关  只会和请求的host匹配 匹配不到哪个server在前就用哪个

有点绕    在多个域名绑定同一个IP时候

就是说nginx首先会用server_name和请求的host做匹配 匹配上了 就用哪个server

匹配不上的话,哪个server在前就用哪个  和写localhost  127.0.0.1  没半毛钱关系  除非你在本地测试时候,写了localhost或者127.0.0.1 此时也是因为和请求的host匹配

伪装流媒体配置示例

重新编译下

cd /usr/local/develop/nginx-1.17.4  主要是这个--with-http_xslt_module

./configure --add-module=/usr/local/develop/nginx-rtmp-module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream=dynamic --with-stream_ssl_module --with-stream_realip_module --with-stream_geoip_module=dynamic --with-stream_ssl_preread_module --with-compat --with-pcre-jit

make && make install

下面是当1个IP地址有多个域名的情况下 SSL部署文件下载服务器示例

如果你希望把对应IP也写上可以在对应的一个域名上的80和443加上对应IP 不然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;sendfile        on;keepalive_timeout  65;server {listen 80;#填写证书绑定的域名server_name www.example.com example.com;#将所有HTTP请求通过rewrite指令重定向到HTTPS。rewrite ^(.*)$ https://$host$1;location / {index index.html index.htm;}}server {#HTTPS的默认访问端口443。#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。listen 443 ssl;#填写证书绑定的域名server_name www.example.com example.com;#填写证书文件绝对路径ssl_certificate /usr/local/nginx/cert/www.example.com.pem;#填写证书私钥文件绝对路径ssl_certificate_key /usr/local/nginx/cert/www.example.com.key;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;#表示优先使用服务端加密套件。默认开启ssl_prefer_server_ciphers on;root /data/nginx-web/files2; # 文件存放目录	## 白名单设置,只允许下面的ip的客户端以及本地能访问。##allow 123.123.123.1;##deny all;#location是匹配IP+端口或者是域名后面的location / {autoindex on; # 启用自动首页功能autoindex_format html; # 首页格式为HTMLautoindex_exact_size on; # 文件大小自动换算autoindex_localtime on; # 按照服务器时间显示文件时间default_type application/octet-stream;# 将当前目录中所有文件的默认MIME类型设置为# application/octet-streamif ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$) {# 当文件格式为上述格式时,将头字段属性Content-Disposition的值设置为"attachment"add_header Content-Disposition: 'attachment;';
#注意加上下面的,不知什么原因 会导致失效问题(就是变成在线浏览或者在线播放了)add_header Content-Type 'application/octet-stream';}sendfile on; # 开启零复制文件传输功能sendfile_max_chunk 1m; # 每个sendfile调用的最大传输量为1MBtcp_nopush on; # 启用最小传输限制功能aio on; # 启用异步传输directio 5m; # 当文件大于5MB时以直接读取磁盘的方式读取文件directio_alignment 4096; # 与磁盘的文件系统对齐output_buffers 4 32k; # 文件输出的缓冲区大小为128KBlimit_rate 1m; # 限制下载速度为1MBlimit_rate_after 2m; # 当客户端下载速度达到2MB时进入限速模式max_ranges 4096; # 客户端执行范围读取的最大值是4096Bsend_timeout 20s; # 客户端引发传输超时时间为20spostpone_output 2048; # 当缓冲区的数据达到2048B时再向客户端发送chunked_transfer_encoding on; # 启用分块传输标识}}server {listen 80;#填写证书绑定的域名server_name www.example2.com example2.com;#将所有HTTP请求通过rewrite指令重定向到HTTPS。rewrite ^(.*)$ https://$host$1;location / {index index.html index.htm;}	}server {#HTTPS的默认访问端口443。#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。listen 443 ssl;#填写证书绑定的域名server_name www.example2.com example2.com;#填写证书文件绝对路径ssl_certificate /usr/local/nginx/cert/www.example2.com.pem;#填写证书私钥文件绝对路径ssl_certificate_key /usr/local/nginx/cert/www.example2.com.key;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;#表示优先使用服务端加密套件。默认开启ssl_prefer_server_ciphers on;root /data/nginx-web/files; # 文件存放目录		## 白名单设置,只允许下面的ip的客户端以及本地能访问。##allow 123.123.123.1;##deny all;location / {autoindex on; # 启用自动首页功能autoindex_format html; # 首页格式为HTMLautoindex_exact_size on; # 文件大小自动换算autoindex_localtime on; # 按照服务器时间显示文件时间default_type application/octet-stream;# 将当前目录中所有文件的默认MIME类型设置为# application/octet-streamif ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$) {# 当文件格式为上述格式时,将头字段属性Content-Disposition的值设置为"attachment"add_header Content-Disposition: 'attachment;';
#注意加上下面的,不知什么原因 会导致失效问题(就是txt变成在线浏览)add_header Content-Type 'application/octet-stream';}sendfile on; # 开启零复制文件传输功能sendfile_max_chunk 1m; # 每个sendfile调用的最大传输量为1MBtcp_nopush on; # 启用最小传输限制功能aio on; # 启用异步传输directio 5m; # 当文件大于5MB时以直接读取磁盘的方式读取文件directio_alignment 4096; # 与磁盘的文件系统对齐output_buffers 4 32k; # 文件输出的缓冲区大小为128KBlimit_rate 1m; # 限制下载速度为1MBlimit_rate_after 2m; # 当客户端下载速度达到2MB时进入限速模式max_ranges 4096; # 客户端执行范围读取的最大值是4096Bsend_timeout 20s; # 客户端引发传输超时时间为20spostpone_output 2048; # 当缓冲区的数据达到2048B时再向客户端发送chunked_transfer_encoding on; # 启用分块传输标识}}
}

输入域名访问: 浏览器首先会检查本地缓存,看是否有对应域名的解析记录。 如果本地缓存没有,浏览器会查找操作系统的 hosts 文件,看是否有对应的 IP 地址。 如果 hosts 文件中没有,浏览器会向 DNS 服务器发起域名解析请求,获取对应的 IP 地址。 输入 IP 访问: 浏览器会直接使用输入的 IP 地址进行访问,不再进行 DNS 解析。此时不会再向 DNS 服务器发起域名解析请求。 总体来说,如果你直接输入 IP 地址访问,浏览器会跳过 DNS 解析的步骤,直接使用输入的 IP 地址

hosts文件地址:C:\Windows\System32\drivers\etc  目录下

负载均衡:

package com.example.demo16.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author hrui* @date 2024/2/9 19:17*/
@RestController
public class TestController {@Value("${server.port}")private String port;@RequestMapping("/test1")public Object test(String name,String age){return "端口"+port+","+"name="+name+","+"age="+age;}}

端口一个设置为8081,一个设置为8082,一个设置为8083

需要JDK环境

启动命令:分别启动3个jar包

 nohup java -jar backend8081.jar > backend8081.log 2>&1 &

 nohup java -jar backend8082.jar > backend8082.log 2>&1 &

 nohup java -jar backend8083.jar > backend8083.log 2>&1 &

server {listen 80;#填写证书绑定的域名server_name www.example.com example.com;#将所有HTTP请求通过rewrite指令重定向到HTTPS。rewrite ^(.*)$ https://$host$1;   location / {index index.html index.htm;}	}server {#HTTPS的默认访问端口443。#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。listen 443 ssl;#填写证书绑定的域名server_name www.example.com example.com;#填写证书文件绝对路径ssl_certificate /usr/local/nginx/cert/www.example.com.pem;#填写证书私钥文件绝对路径ssl_certificate_key /usr/local/nginx/cert/www.example.com.key;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;#表示优先使用服务端加密套件。默认开启ssl_prefer_server_ciphers on;## 白名单设置,只允许下面的ip的客户端以及本地能访问。##allow 123.123.123.1;##deny all;location / {proxy_pass http://backend;}}upstream backend{server 127.0.0.1:8081;server 127.0.0.1:8082;server 127.0.0.1:8083;}

每次访问它都会切换不通端口

此种方式叫轮询策略(轮询单独使用存在无法保持会话的问题,可选用Redis做多个服务器验证会话的中间件)

IP哈希策略(通过IP判断,IP不变会一直指向同一台服务器,虽然可以保持会话,存在的问题,现在的互联网环境比较复杂,比如说手机登录,信号不好,切换了移动基站改了IP,比如在动车上切换了移动基站等原因)    还有url_hash

它会根据你你客户端IP计算得出该访问那台服务器,如果IP不换,就会一致访问同一个端口(服务器)

最少连接策略 (正式不适用)

随机负载策略

权重负载策略  简单说就是81->1次   82->2次  83->3次  此种方式在服务器性能有差距时使用合适

像以上 ip_hash(ip哈希),least_conn(最少连接),url_hash(url哈希),fair(根据后端服务器响应时间(速度))一般都不会在生产上用  这里指大厂,小公司随意   一天就200个请求的无所谓   

原因在于:因无法满足需求,重要一点,都无法动态上线下线一台服务器

轮询和权重相对觉得还是可以   用个redis做验证中间件 比如说SpringSession就是将多个服务器的会话保持写到redis中

jwt  用token也是多服务器保持会话的一种方式

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

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

相关文章

《Go 简易速速上手小册》第9章:数据库交互(2024 最新版)

文章目录 9.1 连接数据库 - Go 语言的海底宝藏之门9.1.1 基础知识讲解安装数据库驱动数据库连接 9.1.2 重点案例:用户信息管理系统准备数据库Go 代码实现连接数据库添加新用户查询用户信息用户登录验证主函数 9.1.3 拓展案例 1:批量添加用户准备数据库Go…

【刷题】牛客— NC21 链表内指定区间反转

链表内指定区间反转 题目描述思路一(暴力破解版)思路二(技巧反转版)思路三(递归魔法版)Thanks♪(・ω・)ノ谢谢阅读!!!下一篇文章见&…

IIC--集成电路总线

目录 一、IIC基础知识 1、设计IIC电路的原因: 2、上拉电阻阻值怎么确定 3、IIC分类 4、IIC协议 二、单片机使用IIC读写数据 1、 IIC发送一个字节数据: 2、IIC读取一个字节数据: 一、IIC基础知识 1、设计IIC电路的原因: (…

【机器学习案例5】语言建模 - 最常见的预训练任务一览表

自监督学习 (SSL) 是基于 Transformer 的预训练语言模型的支柱,该范例涉及解决有助于建模自然语言的预训练任务 (PT)。本文将所有流行的预训练任务放在一起,以便我们一目了然地评估它们。 SSL 中的损失函数 这里的损失函数只是模型训练的各个预训练任务损失的加权和。 以BE…

selenium定位元素报错:‘WebDriver‘ object has no attribute ‘find_element_by_id‘

Selenium更新到 4.x版本后,以前的一些常用的代码的语法发生了改变 from selenium import webdriver browser webdriver.Chrome() browser.get(https://www.baidu.com) input browser.find_element_by_id(By.ID,kw) input.send_keys(Python)目标:希望通…

IP地址+子网掩码+CIDR学习笔记

目录 一、IP地址 1、表示方法: 2、特殊IP地址 二、子网掩码 1、判断网络位和主机位 2、子网划分 三、无分类编址CIDR 1、CIDR路由汇聚 汇聚规则: 汇聚ID: 2、最佳路由匹配原则 一、IP地址 1、表示方法: 机器中存放的…

STM32F1 - 中断系统

Interrupt 1> 硬件框图2> NVIC 中断管理3> EXTI 中断管理3.1> EXTI与NVIC3.2> EXTI内部框图 4> 外部中断实验4.1> 实验概述4.2> 程序设计 5> 中断向量表6> 总结 1> 硬件框图 NVIC:Nested Vectored Interrupt Controller【嵌套向量…

家庭动态网络怎么在公网访问主机数据?--DDNS配置(动态域名解析配置)

前言 Dynamic DNS是一个DNS服务。当您的设备IP地址被互联网服务提供商动态变更时,它提供选项来自动变更一个或多个DNS记录的IP地址。 此服务在技术术语上也被称作DDNS或是Dyn DNS 如果您没有一个静态IP,那么每次您重新连接到互联网是IP都会改变。为了避免每次IP变化时手动更…

WebStorm | 如何修改webstorm中新建html文件默认生成模板中title的初始值

在近期的JS的学习中&#xff0c;使用webstorm&#xff0c;总是要先新建一个html文件&#xff0c;然后再到里面书写<script>标签&#xff0c;真是麻烦&#xff0c;而且标题也是默认的title&#xff0c;想改成文件名还总是需要手动去改 经过小小的研究&#xff0c;找到了修…

【复现】Supabase后端服务 SQL注入漏洞_48

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 Supabase是什么 Supabase将自己定位为Firebase的开源替代品&#xff0c;提供了一套工具来帮助开发者构建web或移动应用程序。 Sup…

Spring Boot3自定义异常及全局异常捕获

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途。 目录 前置条件 目的 主要步骤 定义自定义异常类 创建全局异常处理器 手动抛出自定义异常 前置条件 已经初始化好一个…

Linux第52步_移植ST公司的linux内核第4步_关闭内核模块验证和log信息时间戳_编译_并通过tftp下载测试

1、采用程序配置关闭“内核模块验证” 默认配置文件“stm32mp1_atk_defconfig”路径为“arch/arm/configs”; 使用VSCode打开默认配置文件“stm32mp1_atk_defconfg”&#xff0c;然后将下面的4条语句屏蔽掉&#xff0c;如下&#xff1a; CONFIG_MODULE_SIGy CONFIG_MODULE_…

二叉树前序中序后序遍历(非递归)

大家好&#xff0c;又和大家见面啦&#xff01;今天我们一起去看一下二叉树的前序中序后序的遍历&#xff0c;相信这个对大家来说是信手拈来&#xff0c;但是&#xff0c;今天我们并不是使用常见的递归方式来解题&#xff0c;我们采用迭代方式解答。我们先看第一道前序遍历 1…

前端秘法进阶篇----这还是我们熟悉的浏览器吗?(浏览器的渲染原理)

目录 一.浏览器渲染原理 二.渲染时间点 三.渲染流水线 1.解析html(Parse HTML) 1.1解析成DOM树(document object model) 1.2解析成CSSOM树(css object model) 2.样式计算(Recalculate Style) 3.布局(Layout) 4.分层(Layer) 5. 绘制(Paint) 6.分块(Tiling) 7. 光栅化…

第13章 网络 Page724 asio定时器

程序代码&#xff1a; 11行&#xff0c;声明一个ios对象 13行&#xff0c;使用ios对象作为参数声明一个定时器&#xff0c;此时&#xff0c;定时器和ios完成了关联&#xff0c;后面定时器如果有任务的话&#xff0c;就可以将任务交给ios 16行&#xff0c;为定时器设置一个定…

【图像分割 2024 ICLR】Conv-LoRA

【图像分割 2024 ICLR】Conv-LoRA 论文题目&#xff1a;CONVOLUTION MEETS LORA: PARAMETER EFFICIENT FINETUNING FOR SEGMENT ANYTHING MODEL 中文题目&#xff1a;卷积满足lora:分段任意模型的参数有效微调 论文链接&#xff1a;https://arxiv.org/abs/2401.17868 论文代码&…

C++数据结构与算法——栈与队列

C第二阶段——数据结构和算法&#xff0c;之前学过一点点数据结构&#xff0c;当时是基于Python来学习的&#xff0c;现在基于C查漏补缺&#xff0c;尤其是树的部分。这一部分计划一个月&#xff0c;主要利用代码随想录来学习&#xff0c;刷题使用力扣网站&#xff0c;不定时更…

简单聊聊k8s,和docker之间的关系

前言 随着云原生和微服务架构的快速发展&#xff0c;Kubernetes和Docker已经成为了两个重要的技术。但是有小伙伴通常对这两个技术的关系产生疑惑&#xff1a; 既然有了docker&#xff0c;为什么又出来一个k8s&#xff1f; 它俩之间是竞品的关系吗&#xff1f; 傻傻分不清。…

人工智能|推荐系统——基于tensorflow的个性化电影推荐系统实战(有前端)

代码下载&#xff1a; 基于tensorflow的个性化电影推荐系统实战(有前端).zip资源-CSDN文库 项目简介&#xff1a; dl_re_web : Web 项目的文件夹re_sys&#xff1a; Web app model&#xff1a;百度云下载之后&#xff0c;把model放到该文件夹下recommend&#xff1a; 网络模型相…

Code Composer Studio (CCS) - 文件比较

Code Composer Studio [CCS] - 文件比较 References 鼠标单击选中一个文件&#xff0c;再同时按住 Ctrl 鼠标左键来选中第二个文件&#xff0c;在其中一个文件上鼠标右击选择 Compare With -> Each Other. References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.n…