深入探讨 Nginx:安装、配置及优化指南

news2024/9/23 9:30:17

一、Nginx 概述及编译安装

1、概述

Nginx是一个高性能的开源HTTP和反向代理服务器,同时也是一个IMAP/POP3邮件代理服务器。它最初由Igor Sysoev于2002年开发,并于2004年首次发布。Nginx以其高并发性、低资源消耗和灵活的配置能力而受到广泛关注,适用于大流量网站和高并发处理场景。

Nginx的主要特点:

  1. 高性能:Nginx的事件驱动架构使其能够处理大量并发连接,而不需要为每个连接创建一个新的线程或进程。

  2. 反向代理:Nginx可以作为反向代理服务器,将客户端请求分发到后端服务器,提高系统的可扩展性和安全性。

  3. 负载均衡:Nginx能够将请求分配到多个后端服务器进行负载均衡,从而优化资源使用和响应时间。

  4. 静态内容服务:Nginx非常擅长提供静态文件服务,如图像、CSS和JavaScript文件,能以极高的性能响应静态内容请求。

  5. 动态内容代理:虽然Nginx本身不处理动态内容,但它可以与FastCGI、uWSGI等模块配合,用于处理PHP、Python等动态请求。

  6. 支持多种协议:不仅支持HTTP和HTTPS,还支持SMTP、POP3和IMAP等邮件协议。

  7. 模块化架构:Nginx具有良好的模块系统,用户可以根据需要添加不同的功能模块,如gzip压缩、SSL支持、HTTP/2等。

  8. 简单的配置文件:Nginx的配置文件结构清晰、易于理解,用户可以方便地设置服务器行为和相关参数。

  9. 高可用性和可扩展性:Nginx可以与其他软件(如Keepalived、HAProxy等)结合,实现高可用性和横向扩展

2、Nginx 进程结构

2.1、web请求处理机制

  • 多进程方式

服务器每接收到一个客户端请求就有服务器的主进程生成一个子进程响应客户端,直 到用户关闭连接,这样的优势是处理速度快,子进程之间相互独立,但是如果访问过大会导致服务 器资源耗尽而无法提供请求

  • 多线程方式

与多进程方式类似,但是每收到一个客户端请求会有服务进程派生出一个线程和此客 户端进行交互,一个线程的开销远远小于一个进程,因此多线程方式在很大程度减轻了web服务器 对系统资源的要求,但是多线程也有自己的缺点,即当多个线程位于同一个进程内工作的时候,可 以相互访问同样的内存地址空间,所以他们相互影响,一旦主进程挂掉则所有子线程都不能工作 了,IIS服务器使用了多线程的方式,需要间隔一段时间就重启一次才能稳定。

Nginx是多进程组织模型,而且是一个由Master主进程和Worker工作进程组成。主进程主要负责配置管理、进程监控和信号处理,并不会直接处理网络请求。工作进程实际执行处理请求的任务,具备高并发和高效率,能够独立工作,为用户提供响应。

2.2、主进程(Master Process)

  • 管理进程:主进程负责管理工作进程的生命周期,包括启动、停止和重启工作进程。

  • 配置管理:在启动时,主进程会读取Nginx的配置文件,并根据配置生成和管理工作进程。

  • 信号处理:主进程接收来自操作系统的信号(如停止、重启、重新加载配置等),并将这些信号转发给相应的工作进程。

  • 负载均衡和监控:虽然主进程不直接处理客户端请求,但它可以监控工作进程的状态并在必要时对其进行调整。

  • 中止工作进程:在进行平滑重启或重新加载配置时,主进程会先启动新的工作进程,然后再把现有的工作进程优雅地终止,以保证零停机。

2.3、工作进程(Worker Process)

  • 处理请求:工作进程负责实际处理客户端的请求,包括接收请求、发送响应以及完成数据的处理。

  • 并发处理:每个工作进程可以处理多个请求,Nginx的事件驱动架构使得它具有非常高的并发处理能力。

  • 利用共享内存:工作进程可以通过共享内存进行数据共享,例如会话信息、缓存等,有助于提升性能。

  • 事件驱动:工作进程使用非阻塞I/O和异步事件处理机制,有效提高了处理效率和响应速度。

  • 独立运行:工作进程在主进程的控制下独立运行,可以以多进程方式处理请求,提高资源的利用率和稳定性

3、Nginx 编译安装

tar zxf nginx-1.24.0.tar.gz

dnf install gcc pcre-devel zlib-devel openssl-devel -y

关闭编译时的调试信息(关闭debug功能)

关闭 Nginx 的调试功能可以帮助提高应用程序的稳定性和安全性,同时减少系统资源的消耗,因此在生产环境中通常建议将其关闭。

vim auto/cc/gcc

./configure:这是运行 Nginx 配置脚本的命令,它会检查你的系统环境并生成 Makefile 文件,帮助你编译 Nginx。

./configure --prefix=/usr/local/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将编译好的程序、库和其他必要文件安装到系统的标准目录中

make && make install

为 Nginx 创建一个专用的、没有登录权限的用户

useradd -s /sbin/nologin -M nginx

启动 Nginx

/usr/local/nginx/sbin/nginx

把nginx软件的命令执行路径添加到环境变量中

vim ~/.bash_profile

更新环境变量和配置

source ~/.bash_profile

:怎么删编译的文件

rm -fr /usr/local/nginx/

make clean

4、平滑升级及版本回滚

4.1、版本升级

​wget https://nginx.org/download/nginx-1.26.2.tar.gz
tar zxf nginx-1.26.2.tar.gz
tar zxf echo-nginx-module-0.63.tar.gz

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --add-module=/root/echo-nginx-module-0.63 --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

编译

将旧版本复制一份

将新版本复制到/usr/local/nginx/sbin

\cp -f /root/nginx-1.26.2/objs/nginx /usr/local/nginx/sbin

此时旧版本还在运行,所以无法开启新版本

启动新版本

kill -USR2 38270

这时nginx还是旧版本

回收旧版本

kill -WINCH 38270

查看

4.2、版本回滚

重启旧版本

kill -HUP 38270

回收新版本

kill -WITCH 45011

复制旧版本到nginx

kill新版本

kill -9 45011

查看

二、 Nginx 核心配置

1、常用参数

nginx -s stop   关闭nginx 进程

nginx -v    查看 Nginx 版本

nginx -V    显示版本和编译参数

nginx -t     测试配置文件是否正确

nginx -T    查看并打印

nginx -s reload 不关闭进程,重新加载配置

2、启动脚本编写

vim /lib/systemd/system/nginx.service
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl enable --now nginx

3、全局配置

vim /usr/local/nginx/conf/nginx.conf

vim /usr/local/nginx/conf/nginx.conf

修改pam(可插拔认证模块)限制

vim /etc/security/limits.conf

sudo -u nginx ulimit -a

vim /usr/local/nginx/conf/nginx.conf

总文件里面加载子配置文件的路径

vim /usr/local/nginx/conf.d/vhost.conf


 

mkdir -p /data/web/html
echo www.hao.org > /data/web/html/index.html

测试:

vim /usr/local/nginx/conf.d/vhost.conf

测试:

vim /usr/local/nginx/conf.d/vhost.conf

测试:

4、Nginx 账户认证功能

htpasswd:命令用于管理基本认证的用户密码文件

-m:使用 MD5 加密算法存储密码

htpasswd -m /usr/local/nginx/.htpasswd hao
cat /usr/local/nginx/.htpasswd

mkdir /data/web/hao
echo hao > /data/web/hao/index.html
vim /usr/local/nginx/conf.d/vhost.conf

测试:

5、自定义错误页面

vim /usr/local/nginx/conf.d/vhost.conf

mkdir -p /data/web/errorpage
echo erro page >/data/web/errorpage/40x.html
nginx -t
nginx -s reload

6、自定义日志

vim /usr/local/nginx/conf.d/vhost.conf

mkdir /var/log/hao.org
nginx -s reload
curl www.hao.org
cat /var/log/hao.org/access.log

curl www.hao.org/haha
cat /var/log/hao.org/error.log

7、检测文件是否存在

vim /usr/local/nginx/conf.d/vhost.conf

mkdir /data/web/html/error
echo erroe default > /data/web/html/error/default.html

测试;

curl www.hao.org

8、长连接

vim /usr/local/nginx/conf/nginx.conf

开启长连接后,返回客户端的会话保持时间为60s,单次长连接累计请求达到指定次数请求或65秒就会被断开,第二个数字60为发送给客户端应答报文头部中显示的超时时间设置为60s:如不设置客户端将不显示超时时间。

请求改为两次

yum install telnet
vim /usr/local/nginx/conf/nginx.conf

测试:

telnet www.hao.org 80

GET / HTTP/1.1

HOST:www.hao.org

9、作为下载服务器配置

mkdir /data/web/download

dd:用于低级别的数据复制和转换

dd if=/dev/zero of=/data/web/download/haofile bs=1M count=100

vim /usr/local/nginx/conf.d/vhost.conf

nginx -s reload

测试

三、Nginx 高级配置

1、Nginx 状态页

状态页用于输出nginx的基本状态信息

vim /usr/local/nginx/conf.d/status.conf

测试:

status.hao.org/status

上面三个数字分别对应accepts,handled,requests三个值

2、Nginx 压缩功能

Nginx支持对指定类型的文件进行压缩然后再传输给客户端

vim /usr/local/nginx/conf/nginx.conf

echo hello guangyu > /data/web/html/small.html
cat /usr/local/nginx/logs/access.log > /data/web/html/big.html

测试:

curl --head --compressed 172.25.254.111/small.html

3、nginx的内置变量

vim /usr/local/nginx/conf.d/vars.conf

curl -b "key1=hao,key2=hao1" -u hao:hao var.hao.org/var?name=hao&&id=6666

4、nginx自定义变量

vim /usr/local/nginx/conf.d/vars.conf

测试:

curl var.hao.org/var

四、Nginx Rewrite 相关功能

1、ngx_http_rewrite_module 模块指令

1.1、if判定

vim vars.conf

测试:

curl var.hao.org/test2/index.html

1.2、break

用于中断当前相同作用域(location)中的其他Nginx配置,与该指令处于同一作用域的Nginx配置中,位于它前面的配置生效 位于后面的 ngx_http_rewrite_module 模块中指令就不再执行 Nginx服务器在根据配置处理请求的过程中遇到该指令的时候,回到上一层作用域继续向下读取配置, 该指令可以在server块和locationif块中使用

vim /usr/local/nginx/conf.d/vars.conf

curl var.hao.org/break

添加break

vim /usr/local/nginx/conf.d/vars.conf

测试:

curl var.hao.org/break

设定浏览器

vim /usr/local/nginx/conf.d/vars.conf

测试:

curl -A "firefox" var.hao.org/break

curl var.hao.org/break

1.3、return

return用于完成对请求的处理,并直接向客户端返回响应状态码,比如:可以指定重定向URL(对于特殊重 定向状态码,301/302等) 或者是指定提示文本内容(对于特殊状态码403/500等),处于此指令后的所有配 置都将不被执行,return可以在server、if 和 location块进行配置

vim /usr/local/nginx/conf.d/vars.conf

测试:

curl -I var.hao.org/return

mkdir /data/web/html/return

curl -I var.hao.org/return

2、rewrite 指令

通过正则表达式的匹配来改变URI,可以同时存在一个或多个指令,按照顺序依次对URI进行匹配, rewrite主要是针对用户请求的URL或者是URI做具体处理

2.1、rewirte 临时和永久

vim /usr/local/nginx/conf.d/vars.conf

mkdir /data/web/var
echo var page > /data/web/var/index.html

永久重定向301

vim /usr/local/nginx/conf.d/vars.conf

测试:

临时重定向301

vim /usr/local/nginx/conf.d/vars.conf

测试:

curl -I var.hao.org

2.2、rewrite 案例:break 和last

mkdir /data/web/html/{test1,test2,break,last} -p
echo test1 > /data/web/html/test1/index.html
echo test2 > /data/web/html/test2/index.html
echo last > /data/web/html/last/index.html
echo break > /data/web/html/break/index.html
vim /usr/local/nginx/conf.d/vars.conf

测试;

curl var.hao.org/break/

curl var.hao.org/last/

curl var.hao.org/test1/

curl var.hao.org/test2/

添加break和last

测试:

curl var.hao.org/break/index.html

curl var.hao.org/last/index.html

3、Nginx 防盗链

3.1、全站加密

cd /usr/local/nginx/
mkdir certs
openssl req -newkey rsa:2048 -nodes -sha256 -keyout /usr/local/nginx/certs/hao.org.key \ -x509 -days 365 -out /usr/local/nginx/certs/hao.org.crt
vim vhosts.conf

测试:

vim vhosts.conf

测试:www.hao.org/a

3.2、实现盗链

vim /usr/local/nginx/conf.d/vhosts.conf

www.hao.org/images/6.4.jpg

另一台中模拟盗链网页

yum install httpd -y

vim /var/www/html/index.html

systemctl enable --now httpd

测试:

172.25.254.10

3.3、实现防盗链

vim /usr/local/nginx/conf.d/vhosts.conf

测试:

172.25.254.10

Nginx 反向代理功能

1、反向代理

反向代理:reverse proxy,指的是代理外网用户的请求到内部的指定的服务器,并将数据返回给用户的 一种方式,这是用的比较多的一种方式。

Nginx 除了可以在企业提供高性能的web服务之外,另外还可以将 nginx 本身不具备的请求通过某种预 定义的协议转发至其它服务器处理,不同的协议就是Nginx服务器与其他服务器进行通信的一种规范,主要在不同的场景使用以下模块实现不同的功能

  • ngx_http_proxy_module 将客户端的请求以http协议转发至指定服务器进行处理
  • ngx_http_upstream_module 用于定义为proxy_pass,fastcgi_pass,uwsgi_pass #等指令引用的后端服务器分组
  • ngx_stream_proxy_module 将客户端的请求以tcp协议转发至指定服务器处理
  • ngx_http_fastcgi_module 将客户端对php的请求以fastcgi协议转发至指定服务器助理
  • ngx_http_uwsgi_module 将客户端对Python的请求以uwsgi协议转发至指定服务器处理

2、反向代理负载均衡

Nginx在1.9.0版本开始支持tcp模式的负载均衡,在1.9.13版本开始支持udp协议的负载,udp主要用于 DNS的域名解析,其配置方式和指令和http 代理类似,其基于ngx_stream_proxy_module模块实现tcp 负载,另外基于模块ngx_stream_upstream_module实现后端服务器分组转发、权重分配、状态监测、 调度算法等高级功能。

如果编译安装,需要指定 --with-stream 选项才能支持ngx_stream_proxy_module模块

3、FastCGI

FastCGI是用来提高CGI性能的,FastCGI每次处理完请求之后不会关闭掉进程,而是保留这个进程,使这个进程可以处理多个请 求。这样的话每个请求都不用再重新创建一个进程了,大大提升了处理效率。

3.1 、Nginx与php-fpm在同一服务器

nginx编译
rm -rf /usr/local/nginx/
make clean
tar zxf memc-nginx-module-0.20.tar.gz
tar zxf srcache-nginx-module-0.33.tar.gz
tar zxf php-8.3.9.tar.gz
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --add-module=/root/echo-nginx-module-0.63 --add-module=/root/memc-nginx-module-0.20 --add-module=/root/srcache-nginx-module-0.33 --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

yum install -y bzip2 systemd-devel libxml2-devel sqlite-devel libpng-devel libcurl-devel

dnf install oniguruma-devel-6.9.6-1.el9.5.x86_64.rpm

php编译
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-curl --with-iconv --with-mhash --with-zlib --with-openssl --enable-mysqlnd --with-mysqli --with-pdo-mysql --disable-debug --enable-sockets --enable-soap --enable-xml --enable-ftp --enable-gd --enable-exif --enable-mbstring --enable-bcmath --with-fpm-systemd

make && make install

cd /usr/local/php/etc/

cp -p php-fpm.conf.default php-fpm.conf
php相关配置优化
vim php-fpm.conf

cd php-fpm.d/

cp www.conf.default www.conf

生成主配置文件

cd /root/php-8.3.9/
cp php.ini-production /usr/local/php/etc/php.ini
cd /usr/local/php/etc/
vim php.ini

cd /root/php-8.3.9/sapi/fpm/
cp php-fpm.service /lib/systemd/system
vim php-fpm.service

Nginx配置
mkdir /usr/local/nginx/conf.d

总文件里面加载子配置文件的路径

vim /usr/local/nginx/conf/nginx.conf
vim /usr/local/nginx/conf.d/php.conf

访问验证php测试页面

php.hao.org/index.php

3.2、php的动态扩展模块(php的缓存模块)

安装memcache模块
tar zxf memcache-8.2.tgz
yum install autoconf

phpize 是一个 PHP 命令行工具,用于准备 PHP 扩展的编译环境

phpize

./configure && make && make install

复制测试文件到nginx发布目录中
ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20230831/

cp example.php memcache.php /data/web/php/

vim /data/web/php/memcache.php

配置php加载memcache模块

vim /usr/local/php/etc/php.ini

systemctl reload php-fpm.service

部署memcached
yum install memcached -y

systemctl enable --now memcached.service
netstat -antlupe | grep memcache

cat /etc/sysconfig/memcached

测试

php.hao.org/example.php

php.hao.org/memcache.php

不断刷新页面

性能对比
ab -n500 -c10 http://php.hao.org/index.php

失败51次

​
ab -n500 -c10 http://php.hao.org/example.php

0次失败

3.3、php高速缓存

需两个模块 srcache-nginx-module-0.33 memc-nginx-module-0.20

vim /usr/local/nginx/conf.d/php.conf

​nginx -s reload
ab -n500 -c10 http://php.hao.org/index.php

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

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

相关文章

卡码网KamaCoder 105. 有向图的完全可达性

题目来源&#xff1a;105. 有向图的完全可达性 C题解1&#xff1a; #include <iostream> #include <vector> #include <algorithm>using namespace std;int main(){int N, K;cin>>N>>K;// 如果边的数量不够&#xff0c;则一定不能到达所有点if…

使用Harbor搭建Docker私有仓库

一、harbor&#xff1a;开源的企业级的docker仓库软件&#xff0c;仓库就是保持镜像的。 1.仓库分两种&#xff1a;私有仓库&#xff1a;运维用的最多 公有仓库 2.harbor是有图形化的&#xff0c;页面UI展示的一个工具&#xff0c;操作直观 3.注意点&#xff1a;harbor都是由…

拖拽式报表设计器优点好 实现流程化办公就靠它!

当前&#xff0c;实现流程化办公是很多企业都想要实现的目标。利用低代码技术平台、拖拽式报表设计器的优势特点&#xff0c;可以为企业降低开发成本、提升办公效率、创造更多市场价值。那么&#xff0c;您知道拖拽式报表设计器的优点是什么吗&#xff1f;通过本文一起了解拖拽…

疫情期间我面试了13家企业软件测试岗位,一些面试题整理

项目的测试流程 拿到需求文档后&#xff0c;写测试用例 审核测试用例 等待开发包 部署测试环境 冒烟测试&#xff08;网页架构图&#xff09; 页面初始化测试&#xff08;查看数据库中的数据内容和页面展示的内容是否一致&#xff0c;并且是否按照某些顺序排列&#xff09…

JavaScript_9_练习:随机点名

效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>练习&#xff1a;随机点名</title&g…

C语言中的预处理详解

1. 预定义符号 C语⾔设置了⼀些预定义符号&#xff0c;可以直接使⽤&#xff0c;预定义符号也是在预处理期间处理的。 举个例⼦&#xff1a; printf("file:%s line:%d\n", __FILE__, __LINE__); 2. #define 定义常量 基本语法&#xff1a; #define name stuff 举个例…

桥接模式详解

桥接模式 概念: 将抽象部分和实现部分分离, 使他们都可以独立的变化 概念很抽象, 难以理解, 我们举个例子 例子 设想三种不同品牌的汽车 大车 中车 小车 三种不同类型的引擎 纯电引擎 混动引擎 燃油引擎 如果我们把他们两两组合, 都继承同一个类的话,就会有9个类, 并且如果后…

vue的i18n国际化

一、介绍 i18n 是国际化和本地化&#xff08;Internationalization and Localization&#xff09;的缩写&#xff0c;其中 “i” 和 “n” 分别代表单词的首尾字母&#xff0c;而 “18” 代表中间的字母数。这个术语用于描述软件应用程序支持多种语言和地区设置的过程。 1、国…

调和级数详解

调和级数的来历 早在14世纪,尼克尔奥里斯姆已经证明调和级数发散,但知道的人不多。17世纪时,皮耶特罗曼戈里、约翰伯努利和雅各布伯努利完成了全部证明工作。 调和序列历来很受建筑师重视;这一点在巴洛克时期尤其明显。当时建筑师在建造教堂和宫殿时,运用调和序列为楼面…

怎样把经典CAD工具栏调出来

阅读更多cad如何显示工具栏&#xff1f;教你三个方法快速调出

ELFK基础搭建流程及在SpringBoot项目中进行日志采集的简单实践

目录 一、前言 二、ELK简介 三、ELK常见的几种架构 四、Docker安装ELFK的详细流程 4.1环境说明。 4.2ElasticSearch搭建 配置ElasticSearch 启动ElasticSearch 4.3Kibana搭建 配置kibana 启动kibana 4.4LogStash搭建 配置LogStash 启动LogStash 4.5Filebeat搭建 …

Elasticsearch之RestClient的简单操作(附java代码案例)

目录 前言 1. 案例Demo前期准备 1.1 sql数据 1.2 项目结构 1.3 mapping映射分析 1.4 初始化RestClient 2.索引库操作 2.1 创建索引库 2.1.1 代码解读 2.1.2 完整代码示例 2.2 判断索引库是否存在 2.3 删除索引库操作 2.4 索引库操作总结 3.RestClient操作文档 3.…

什么是逃逸分析

如何快速判断是否逃逸就看方法内new的对象实体是否能够被外部方法进行调用 什么是逃逸分析 在java虚拟机中&#xff0c;对象是在java堆中分配内存的&#xff0c;这是一个普遍的常识。但是&#xff0c;有一种特殊情况&#xff0c;那就是如果经过逃逸分析&#xff08;escape an…

nvidia系列教程-AGX-Orin can接口调试

目录 前言 一、AGX-Orin can介绍 二、原理图连接 三、系统配置 四、can数据收发 总结​​​​​​​ 前言 NVIDIA Jetson AGX Orin 是一款高性能的嵌入式平台,专为自动驾驶、机器人、物联网和其他需要大量计算能力和人工智能处理的应用设计。Jetson AGX Orin 集成了多个 …

【原创】java+swing+mysql客户信息管理系统设计与实现

个人主页&#xff1a;程序员杨工 个人简介&#xff1a;从事软件开发多年&#xff0c;前后端均有涉猎&#xff0c;具有丰富的开发经验 博客内容&#xff1a;全栈开发&#xff0c;分享Java、Python、Php、小程序、前后端、数据库经验和实战 文末有本人名片&#xff0c;希望和大家…

【xilinx】Versal Adaptive SoC DDRMC - NoC QoS 选项卡未出现

在 2024.1 之前的 Vivado 版本中&#xff0c;用户在使用 NoC 验证块设计时可以访问 NoC 对象窗口和 QoS 选项卡。 Vivado 2024.1 中存在一个已知问题&#xff0c;即 NoC 对象窗口和 QoS 选项卡不出现。 要显示 NoC 对象窗口和 QoS 选项卡&#xff0c;请保存块设计&#xff0c;…

【pwnable.kr】0x02-collision Writeup

题目描述 解法 拉取文件 scp -P2222 colpwnable.kr:col . scp -P2222 colpwnable.kr:col.c .分析源码 #include <stdio.h> #include <string.h>// hashcode值 unsigned long hashcode 0x21DD09EC;// 返回res&#xff0c;对main函数中传参进行“加密”变换操作 …

【特殊文件---properties】

properties 1. 注释 在properties中注释是采用#号开头的方式来进行注释的 2. 编写properties文件 在properties中&#xff0c;一行就是一个键值对&#xff08;keyvalue&#xff09;&#xff0c;简单的理解就是一行可以保存一个变量&#xff0c;键和值之间用号隔开 记住&…

使用Maple Flow进行工程计算与代码生成的图文教程

在工程和科学计算领域&#xff0c;Maple Flow以其强大的数学引擎和代码生成功能&#xff0c;成为工程师和研究人员的得力助手。本文将通过一系列步骤&#xff0c;引导您如何使用Maple Flow从概念验证到生成可在其他环境中运行的代码&#xff0c;完成一个完整的工作流程。 第一…

LLM大模型技术实战:一文讲透专补大模型短板的RAG

大型语言模型&#xff08;LLMs&#xff09;已经成为我们生活和工作的一部分&#xff0c;它们以惊人的多功能性和智能化改变了我们与信息的互动方式。但是当我们将大模型应用于实际业务场景时会发现&#xff0c;通用的基础大模型基本无法满足我们的实际业务需求&#xff0c;主要…