什么是nginx 、安装nginx、nginx调优

news2024/9/23 15:31:58

一、 什么是nginx

1.1 nginx的概念

  • 一款高新能、轻量级Web服务软件
  • 系统资源消耗低
  • 对HTTP并发连接的处理能力高
  • 单台物理服务器可支持30 000~50 000个并发请求。

1.2 nginx模块与作用

  • 核心模块:是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录 、配置文件解析 、事件驱动机制 、进程管理等核心功能

  • 标准HTTP模块:提供 HTTP 协议解析相关的功能,比如: 端口配置 、 网页编码设置 、 HTTP响应头设置 等等

  • 可选HTTP模块:主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,比如:Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等

  • 邮件服务模块:主要用于支持 Nginx 的 邮件服务 ,包括对 POP3 协议、 IMAP 协议和 SMTP协议的支持

  • Stream服务模块: 实现反向代理功能,包括TCP协议代理 反向

  • 第三方模块:是为了扩展 Nginx 服务器应用,完成开发者自定义功能,比如: Json 支持、 Lua 支持等

二、怎么在shell上安装 nginx

2.1编译安装

yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel
#安装依赖包   
useradd -M -s /sbin/nologin nginx
#新建nginx用户便于管理

cd /opt/
wget http://nginx.org/download/nginx-1.18.0.tar.gz
#官网下载安装包

tar xf nginx-1.18.0.tar.gz
cd nginx-1.18.0/
#解压软件包
mkdir /apps/nginx -p


./configure --help   
#查看帮助模块

./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module


make    
make install

chown -R nginx.nginx /apps/nginx
#修改权限

vim /usr/lib/systemd/system/nginx.service
#建立文件
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
LimitNOFILE=100000

[Install]
WantedBy=multi-user.target
 

2.2 yum安装

yum安装有缺点:会少包

Centos7 需要安装epel源
 
cd /etc/yum.repos.d
vim epel.repo
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/$releasever/x86_64
gpgcheck=0
 
yum install -y epel-release
 
yum install nginx -y

三、nginx的信号使用

信号    解释
nginx -v    显示版本
nginx -V    
显示编译详细情况、模块等信息

nginx -t    
检查语法格式

nginx -T    打印当前配置
nginx -s    发送信号
nginx -s stop    立即关闭
nginx -s quit    优雅退出,不影响业务的状态下退出
nginx -s reload    重新加载配置文件
nginx -s  USR1    分割日志
nginx -s  USR2    优雅升级
nginx -g 'user zhangsan;'     以张三身份运行,默认是以nginx身份
nginx -g 'daemon off;'    前台运行命令

四、nginx调优

关闭版本或修改版本
 修改启动的进程数
cpu与work 进程 绑定
nginx进程的优先级
调试work进程打开的文件的个数
服务是否已后台方式运行

4.1 关闭版本或修改版本

4.2 隐藏nginx名称

vim  /opt/nginx-1.18.0/src/core/nginx.h

#隐藏nginx,进入配置文件

vim  /opt/nginx-1.18.0/src/http/ngx_http_header_filter_module.c

#修改第二个配置文件

4.3 修改启动的进程数

vim /apps/nginx/conf/nginx.conf

[root@localhost ~]#ps axo pid,cmd,psr,ni|grep nginx
#可以看到 nginx的  worker数量
 18620 nginx: master process /usr/   0   0
 18621 nginx: worker process         2   0
 18622 nginx: worker process         3   0
 18623 nginx: worker process         0   0
 18624 nginx: worker process         3   0
 18641 grep --color=auto nginx       0   0

4.4 cpu与work 进程 绑定

CPU序号:
CPU MASK: 00000001:0号CPU
          00000010:1号CPU
          ................
            10000000:7号CPU
worker_cpu_affinity 00000001 00000010 00000100 00001000;第0号---第3号CPU   
#序号绑定cpu    亲缘性
worker_cpu_affinity 00000101 00001010;
#同一个work  可以绑定  两个cpu可以这么写 但是不建议,本来就是 不希望飘动,这样也是飘动


实际操作
例子:

vim  /apps/nginx/conf/nginx.conf
user nginx;
worker_processes auto;
worker_cpu_affinity 00000001 00000010;
#绑定到  第一 和 第二块cpu上
error_log /var/log/nginx/error.log;
#注意 要绑一起绑

4.5 nginx进程的优先级

vim  /apps/nginx/conf/nginx.conf

worker_priority 0; 
#工作进程优先级,-20~20(19)

ps axo pid,cmd,psr,ni|grep nginx|sort -n

查看所占cpu和优先级

ps -elf 可以查看所有程序优先级

4.6 调试work进程打开的文件的个数

pid /run/nginx.pid;
worker_priority -20;
worker_rlimit_nofile 65536; 
#所有worker进程能打开的文件数量上限,包括:Nginx的所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制.最好与ulimit -n 或者limits.conf的值保持一致,

4.7 服务是否已后台方式运行

一般服务都是后台运行,前台容器中会用到

user nginx;
worker_processes 2;
worker_cpu_affinity 00000101 00000010;
daemon off;
#加入此选项

4.8 event事件

events {
   worker_connections  65536;  #设置单个工作进程的最大并发连接数
   use epoll;
   #使用epoll事件驱动,Nginx支持众多的事件驱动,比如:select、poll、epoll,只能设置在events模块中设置。
   accept_mutex on; 
   #on为同一时刻一个请求轮流由work进程处理,而防止被同时唤醒所有worker,避免多个睡眠进程被唤醒的设置,默认为off,新请求会唤醒所有worker进程,此过程也称为"惊群",因此nginx刚安装完以后要进行适当的优化。建议设置为on
   multi_accept on; 
   #ON时Nginx服务器的每个工作进程可以同时接受多个新的网络连接,此指令默认为off,即默认为一个工作进程只能一次接受一个新的网络连接,打开后几个同时接受多个。建议设置为on
}

五、Nginx的核心配置指令

5.1 访问状态统计配置

cd /usr/local/nginx/sbin
#根据安装路径自由修改/apps/nginx/sbin也可
nginx -V

Active connections ∶ 表示当前的活动连接数;
server accepts handled requests∶表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数已处理的请求数。
可curl http∶//192.168.79.210/status 结合 awk与if 语句进行性能监控。

5.2 基于授权的访问控制

第一步:生成用户密码认证文件

yum install -y httpd-tools
#安装工具
 
htpasswd -c /usr/local/nginx/passwd.db zhangsan
#生成用户密码认证文件(注意路径
 
chown nginx /usr/local/nginx/passwd.db 
chmod 400 /usr/local/nginx/passwd.db
#修改属性和赋予执行权限

第二步:修改主配置文件相应的目录,添加认真配置

vim 
#路径/apps/nginx/conf/nginx.conf
 
 location / {
            root   html;
            index  index.html index.htm;
            #添加认证配置
            auth_basic "secret";                    #设置密码提示框文字信息
            auth_basic_user_file /usr/local/nginx/passwd.db;
        }

5.3 基于客户端访问控制

访问控制规则如下:
deny IP/IP段:拒绝某个IP或IP段的客户端访问。
allow IP/IP段:允许某个IP或IP段的客户端访问。
规则从上往下执行,如果匹配到则停止,不会再往下继续匹配。

第一步:在主配置文件中添加控制规则

vim
#注意路径/apps/nginx/conf/nginx.conf
 
        location / {
            root   html;
            index  index.html index.htm;
            auth_basic "secret";
            auth_basic_user_file /usr/local/nginx/passwd.db;
            
            # 添加控制规则
            deny 192.168.200.11;                    #拒绝访问的客户端IP
            allow all;                            #允许其他所有客户端访问
        }

第二步:重启服务

systemctl restart nginx.service 

第三步:被拒绝的客户端访问测试 

第四步:其他客户端访问测试 

5.4 基于域名的nginx虚拟主机

第一步:为虚拟主机提供域名和IP的映射

第二步:为虚拟主机准备网页文档

第三步:还原nginx主配置文件

cd /apps/nginx/conf
cp nginx.conf.default  nginx.conf       #还原主配置文件

第四步:修改主配置文件

 server {
        listen       80;
        server_name  www.p.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /var/www/html/p;
            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;
        }
}
    server {
        listen       80;
        server_name  www.c.com;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;

        location / {
            root   /var/www/html/c;
            index  index.html index.htm;
        }

第五步:重启nginx后进行访问测试

5.5  基于IP的nginx虚拟主机

第一步:添加虚拟网卡,修改主配置文件

ifconfig ens33:0 192.168.200.11/24
 
vim /apps/nginx/conf/nginx.conf
 
    server {
        listen       192.168.200.11:80;                #修改监听的为ip
        server_name  www.c.com;
        charset utf-8;
        access_log  logs/c.com.access.log;
        location / {
            root   /var/www/html/c;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        listen      192.168.200.11:80;                #修改监听的为ip
        server_name  www.p.com;
        charset utf-8;
        access_log  logs/p.access.log;
        location / {
            root   /var/www/html/p;
            index  index.html index.htm;
        }

5.6  基于端口的nginx虚拟主机

第一步:修改主配置文件

vim   apps/nginx/conf/nginx.conf同理
 
    server {
        listen       192.168.200.11:666;                #修改监听的为ip的666端口
        server_name  www.p.com;
        charset utf-8;
        access_log  logs/p.com.access.log;
        location / {
            root   /var/www/html/p;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        listen      192.168.200.12:888;                #修改监听的为ip的888端口
        server_name  www.c.com;
        charset utf-8;
        access_log  logs/c.com.access.log;
        location / {
            root   /var/www/html/zhuo;
            index  index.html index.htm;
        }

   

六、Nginx跳转模块之location与rewrite

6.1 location模块与rewrite模块区别

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

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

6.2 location模块的概念

6.2.1 location模块是什么?

        location块是server块的一个指令。作用:基于Nginx服务器接收到的请求字符串,虚拟主机名称(ip,域名)、url匹配,对特定请求进行处理。

6.2.2.三种匹配类别

精准匹配:location = / {}

一般匹配:location / {}

正则匹配:location ~ / {}

location常用正则表达式:

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


\转义字符    用于取消特殊符号的含义
\d    匹配纯数字
\s    匹配空的(空格或者制表符)
{n}    匹配前面的子表达式n次
{n,}    匹配前面的子表达式不少于n次
{n,m}    匹配前面的子表达式n到m次
[ ]    匹配括号中的一个字符
[c]    匹配单个字符 c
[a-z]    匹配 a-z 小写字母的任意一个
[a-zA-Z0-9]    匹配所有大小写字母或数字
()    表达式的开始和结束位置
|    或运算符

6.3 常用的匹配规则

规则表达式    规则含义
=    进行普通字符精确匹配。也就是完全匹配
^~    表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他 location
~    表示执行一个正则匹配,区分大小写
~*    表示执行一个正则匹配,不区分大小写
!~    表示执行一个正则匹配,区分大小写不匹配
!~*    表示执行一个正则匹配,不区分大小写不匹配

6.4  匹配优先级

首先精确匹配 =

其次前缀匹配 ^~

其次是按文件中顺序的正则匹配 ~或~*

然后匹配不带任何修饰的前缀匹配

最后是交给 / 通用匹配

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

优先级总结
        (location = 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (location /)

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

6.5 location模块使用实例

6.5.1 精确匹配优先级小于一般匹配的特殊情况

        location = / {} 和 location / {} ,按道理应匹配前者,但实际确实匹配后者,匹配只写域名精确匹配不生效

1. #在配置文件添加匹规则
vim /apps/nginx/conf/nginx.conf
 
#默认网页
        location / {
            root   html;
            index  index.html index.htm;        }
 
#添加的网页
        location = / {     
            root   /web/test/;
        }
 
2. #新建网页站点目录
mkdir -p /web/test
 
3. #在站点目录下新建index.html
vim /web/test/index.html
 
This is a test!
 
4. #检查语法并重启
nginx -t
systemctl restart nginx.service 
 
5. #在网页中测试
192.168.200.12

1. #修改配置文件
vim /apps/nginx/conf/nginx.conf
 
        location = /index.html {            # 加上index.html 
            root   /web/dog/;
        }
             
2. #检查语法、重启服务
nginx -t
systemctl restart nginx.service 
 
3. #网页测试
192.168.79.210
 
        location = /index.html {            # 加上index.html 
            root   /web/dog/;
        }
              
2. #检查语法、重启服务
nginx -t
systemctl restart nginx.service 
 
3. #网页测试
192.168.200.12 

6.6 实际网站使用中的三个匹配规则

6.6.1 第一个必选规则

        直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,比如说官网。
这里是直接转发给后端应用服务器了,也可以是一个静态首页

        location = / {
    proxy_pass http://tomcat_server/;
}

6.6.2 第二个必选规则是处理静态文件请求

        这是nginx作为http服务器的强项!
        有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用

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

6.6.3 第三个通用规则

比如用来转发带.php、.jsp后缀的动态请求到后端应用服务器
非静态文件请求就默认是动态请求

location / {
    proxy_pass http://tomcat_server;
}

七、rewrite模块的基本介绍

7.1 rewrite功能

        现在 Nginx 已经成为很多公司作为前端反向代理服务器的首选,在实际工作中往往会 遇到很多跳转(重写 URL)的需求。比如更换域名后需要保持旧的域名能跳转到新的域名 上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。如果在后端使用的 Apache 服务器,虽然也能做跳转,规则库也很强大,但是用 Nginx 跳转效率会更高,这也是学习 本章的目的所在。

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

rewrite只能放在server{},location{},if{}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用。

7.2 跳转场景

Rewrite 跳转场景主要包括以下几种

        可以调整用户浏览的 URL,看起来更规范,合乎开发及产品人员的需求

        为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态 URL 地址伪装成静态地址提供服务

        网址换新域名后,让旧的访问跳转到新的域名上。例如,访问京东的 360buy.com会跳转到 jd.com

        根据特殊变量、目录、客户端的信息进行 URL 调整等。

7.3 跳转实现

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


7.4 执行顺序

首先  执行 server 块里面的 rewrite 指令。
其次  执行 location 匹配。
最后  执行选定的 location 中的 rewrite 指令

7.5 语法格式

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

flag标记说明

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

7.6 rewrite模块使用实例

7.6.1 基于域名的跳转

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

第一步:修改主配置文件

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

第二步:创建所需目录与文件 

#创建日志文件夹,检查语法
mkdir -p /var/log/nginx
nginx -t
 
#创建网页test目录与文件1.html
mkdir -p /apps/nginx/html/test
vim /apps/nginx/html/test/1.html
------------------------------------------
<h1 font color=red>
Here is the content of test
<img src="1.jpg"/>
</h1
-------------------------------------------
 
#上传1.jpg图片文件
cd /apps/nginx/html/test
rz -E

第三步:添加域名与IP地址映射关系

#添加映射关系
echo "192.168.79.210 www.jiu.com www.xin.com" >> /etc/hosts
 
#重启服务
systemctl restart nginx                    

第四步:网页验证

#打开浏览器输入
www.jiu.com/test/1.html
 
 
会发现重定向到www.xin.com/test/1.html

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

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

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

相关文章

nginx搭建直播rtmp推流,httpflv拉流环境

背景 工作中发现挺多直播CDN在实现httpflv拉流时都没有使用http chunk编码&#xff0c;而是直接使用no-content-length的做法。所以想自己搭建一个直播CDN支持 http chunk编码。 环境搭建 系统环境 Ubuntu 18.04.4 LTS 软件 nginx-1.18.0 nginx扩展模块 nginx-http-flv-mo…

数据湖Iceberg、Hudi和Paimon比较

1.社区发展现状 项目Apache IcebergApache HudiApache Paimon开源时间2018/11/62019/1/172023/3/12LicenseApache-2.0Apache-2.0Apache-2.0Github Watch1481.2k70Github Star5.3k4.9k 1.7k Github Fork1.9k2.3k702Github issue(Open)898481263Github issue(closed)20542410488…

使用yolo-seg模型实现自定义自动动态抠图

yolov8导航 如果大家想要了解关于yolov8的其他任务和相关内容可以点击这个链接&#xff0c;我这边整理了许多其他任务的说明博文&#xff0c;后续也会持续更新&#xff0c;包括yolov8模型优化、sam等等的相关内容。 YOLOv8&#xff08;附带各种任务详细说明链接&#xff09; …

【MySQL】多表操作、事务、索引

MySQL MYSQL 多表设计 一对多插入测试数据外键约束(物理外键)使用逻辑外键 MYSQL 多表设计 一对一表结构 MYSQL 多表设计 多对多 MYSQL 多表设计 一对多 建表语句 员工表 CREATE TABLE tb_emp (id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT ID,username VARCHAR(20) N…

10大数据恢复软件可以帮助您恢复电脑数据

您可能会非常紧张&#xff0c;因为知道有人意外地从您的硬盘驱动器中删除了您的宝贵数据&#xff08;甚至使用 ShiftDelete 从回收站中删除&#xff09;&#xff0c;并且您确实需要这些数据&#xff0c;并且没有其他备份源可以在其中找到这些数据。不要担心&#xff0c;保持冷静…

Unity中URP实现水体效果(水的深度)

文章目录 前言一、搭建预备场景1、新建一个面片&#xff0c;使其倾斜一个角度&#xff0c;来模拟水底和岸边的效果2、随便创建几个物体&#xff0c;作为与水面接触的物体3、再新建一个面片&#xff0c;作为水面 二、开始编写水体的Shader效果1、新建一个URP基础Shader2、把水体…

编译GCC native编译器的几点启示

启示 编译 GCC native compiler按照官方介绍并不难 步骤见后面实践脚本&#xff0c;以及官方编译指南链接 GCC编译器编译其它程序组件时&#xff0c;会优先使用自身携带的库&#xff0c;例如&#xff0c;常用的自带库&#xff0c;libgcc_s.so、libstdc 如果部署环境与编译要求…

思维导图教你如何学会计算机组成原理

02 给你一张知识地图&#xff0c;计算机组成原理应该这么学 了解了现代计算机的基本硬件组成和背后最基本的冯诺依曼体系结构&#xff0c;我们就可以正式进入计算机组成原理的学习了。在学习一个一个零散的知识点之前&#xff0c;我整理了一份学习地图&#xff0c;好让你对将要…

目标跟踪之KCF详解

High-Speed Tracking with Kernelized Correlation Filters 使用内核化相关滤波器进行高速跟踪 大多数现代跟踪器的核心组件是判别分类器&#xff0c;其任务是区分目标和周围环境。为了应对自然图像变化&#xff0c;此分类器通常使用平移和缩放的样本补丁进行训练。此类样本集…

第三篇:CamX日志打印系统

第三篇:CamX日志打印系统 高通camx的日志主要分2大模块,UMD (user mode driver) 和KMD( kerner mode driver),也就是用户层和kernel层日志。 下面就来看下这2大块日志debug的时候该如何设置? 一、UDM日志 高通camx camera debug日志格式如下: CamX: [][] : . 例子:Ca…

【C++】类与对象—— 初始化列表 、static 静态成员、

类与对象 1 再谈构造函数1.1 构造函数体赋值1.2 初始化列表语法&#xff1a;建议&#xff1a;初始化顺序&#xff1a;注意&#xff1a; 1.3 explicit关键字 2 static 静态成员2.1 概念2.2 声明成员变量2.3 使用类的静态成员2.4 定义静态成员总结 Thanks♪(&#xff65;ω&#…

提高自定义词汇表上的 RAG 性能

原文地址&#xff1a;improve-rag-performance-on-custom-vocabulary Code&#xff1a;Improve RAG performance on custom vocabulary.ipynb 2024 年 2 月 9 日 糟糕的检索系统会导致混乱、沮丧和幻觉。 新的嵌入模型比以往更加强大。我们根据 MTEB 等基准对其进行了全面评…

go 1.18 不同目录package引用问题

go 1.18开始使用module了 不同的package在vs code中引用的话 需要先开启 是Go1.11版本之后 推出的版本管理工具 有点类似java的 maven工具 可以引入依赖使用 go env -w GO111MODULEon 先把这个打开 然后在创建的vs code工作目录下 执行 module gomdoule module 模块名 会生…

前后端分离Vue+nodejs校园论坛bbs系统x450z

开发语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode本论文拟采用计算机技术设计并开发的论坛bbs系统&#xff0c;主要是为用户提供服务。使得用户可以在系统上查看帖子信息、签到积分等…

unity hub (第一部)初学配置

1、安装Unity Hub 2、设置中文 3、安装编辑器 4、新建项目 5、新建完成后进入编辑器 6、 编辑器设置中文 editPreferencesLanguages选择中文

数学建模资料分享

1. 往年各赛题的优秀论文 可以用来参考一下论文是怎么写的。参考论文的结构&#xff0c;格式&#xff0c;思路等等。 链接&#xff1a;https://pan.baidu.com/s/1WG2t4-x9MjtaSgkq4ue5AQ?pwdnlzx 提取码&#xff1a;nlzx --来自百度网盘超级会员V4的分享 2.论文模板 链接&a…

学习JAVA的第二天(基础)

目录 基本概念 关键字 class关键字 字面量 练习 变量 定义格式 变量使用 数据类型 基本数据类型 标识符 命名规则 键盘录入 1.导包 2.创建对象 3.接受数据 运算符 算术运算符 练习 隐式转换&#xff08;自动类型提升&#xff09; 强制转换 自增自减运算符 …

众安保险基于Apache SeaTunnel的生产应用实践

*> 文&#xff5c;曾力 众安保险大数据开发高级专家 编辑整理&#xff5c; 曾辉* 前言 众安保险从2023年4月就开始了数据集成服务的预研工作&#xff0c;意在通过该服务解决当前数据同步场景下的两大痛点&#xff0c;服务化能力薄弱和无分布式同步能力。我们对多种开源数据…

【Java程序设计】【C00291】基于Springboot的网上图书商城(有论文)

基于Springboot的网上图书商城&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的网上图书商城 本系统分为系统功能模块、管理员功能模块以及卖家功能模块。 系统功能模块&#xff1a;在系统首页可以查看首页、图书…

社区志愿者齐心协力,为社区居民营造温馨和谐环境

近日&#xff0c;在我们的社区里&#xff0c;一场温暖而有力的力量正在悄然兴起。一群热心居民自发组织成为社区志愿者团队&#xff0c;积极投身于服务社区的各项活动中&#xff0c;为居民们营造了一个温馨和谐的生活环境。 在每个周末的清晨&#xff0c;志愿者们早早地聚集在社…