如何快速搭建nginx服务

华子目录

  • nginx简介
    • 概念
    • 特点
    • nginx框架
    • nginx关键工作机制
  • nginx正向代理功能
  • nginx反向代理功能
    • nginx反向代理的工作流程
    • 代理本质
  • nginx负载均衡
  • 部署nginx
  • 常用命令
    • systemctl系列
    • nginx自带命令
  • nginx配置文件
    • 主配置文件`/etc/nginx/nginx.conf`
      • 内容结构
      • 模块分析
      • 配置分析
      • 注意
        • 示例
      • nginx.conf配置文件的语法规则
  • 实验1:快速搭建网站
  • 实验2:替换网页目录
  • 实验3:搭建location板块的网站

nginx简介

概念

  • nginx是一款轻量级http服务器,也是一款邮箱代理服务器,同时具备反向代理通用tcp/udp代理的功能
  • nginx可以运行在x86、ARM等多种平台上,同时支持Linux,Windows等主流的操作系统

特点

  • 支持高并发
    • 单机nginx可支持十万级的并发连接,经过优化后可最高支持百万级并发连接
  • 内存资源消耗低
    • 同级web服务器中,nginx占用的内存最少一万非活跃的http keep-alive连接仅消耗2.5M内存
  • 高扩展性
    • apache一样,nginx采用模块化设计,并支持非常丰富的第三方模块
  • 高可靠性
    • nginx采用master-worker模式,如果worker出现故障,master可以快速开启一个新的worker来提供服务

nginx框架

  • 主进程:master

    • 检查nginx配置是否正确
    • 创建、监控worker进程的数量和状态
    • 接收对nginx的管理指令,并作出对应操作
  • 工作进程:worker

    • 处理客户端请求
    • 接收master发来的指令,并做对应操作
  • 在这里插入图片描述

  • 注意:默认情况下,nginx会建立和服务器cpu核心数相等的worker进程worker进程之间相互独立若一个进程故障不会影响其他进程

nginx关键工作机制

  • 抢占机制:当客户端发起请求时,会激活accept_mutex互斥锁,哪个worker抢占了该互斥锁,该客户端的请求就由哪个worker响应和处理
  • 在这里插入图片描述
  • 异步非阻塞模式:在传统事件处理模式下,如果所有的worker被客户端阻塞后,新来的客户就需要等待,直到原来的客户端释放worker后才能被处理请求。在异步非阻塞模式下,底层使用了linux的epol模型,就算worker被阻塞,新的客户端请求也会被正常处理
  • 在这里插入图片描述

nginx正向代理功能

  • 图:

  • 在这里插入图片描述

  • 分析:它的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我,从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。

  • 理解:

    • 在这里插入图片描述
    • A租房人(客户端)想租C真实房东的房子,但不认识C真实房东(服务端)
    • B房产中介(代理)认识C真实房东(服务端),并且从C真实房东(服务端)租到了房
    • A租房人(客户端)通过B房产中介(代理)租到了C真实房东(服务端)的房
    • C真实房东(服务端)只知道房子租给了B房产中介(代理),并不知道A租房人(客户端)租了自己的房子
  • 结论:正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端代理发送一个请求并指定目标(原始服务器),然后代理原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理就像要访问googleypn代理翻墙去访问(用户知道要访问真正的服务器)

nginx反向代理功能

  • 图:
  • 在这里插入图片描述
  • 分析:反向代理正好相反,它也是在客户端和服务器端的一个代理服务器,但是这个代理服务器的目的是用来保护服务器端的,当外网客户端来访问我们的服务器时为了避免暴露应用服务器的实际ip地址,我们会让客端访问代理服务器,然后代理服务器再根据客户端的请求去实际的应用服务器获取响应内容并返回客户端

nginx反向代理的工作流程

  • 1.客户端向Nginx发送请求
  • 2.Nginx在收到客户端发送的请求后,将请求转发到后端务器
  • 3.后端服务器将客户端请求的资源回复给Nginx
  • 4.Nginx将资源返回给客户端

代理本质

  • Nginx反向代理通过位于location中的proxy_pass实现
  • 在反向代理的工作流程中,客户端向代理请求资源时使用的端口可以和服务器提供服务的端口不一致
  • 在这里插入图片描述

nginx负载均衡

  • Nginx可以提供四层七层的负载均衡
  • Nginx的负载均衡功能通过位于http中的upstream实现
  • Nginx提供了多种负载均衡算法,如轮询、权重等
  • 轮询算法下,Nginx会轮流将请求发送给不同的服务器,使每个服务器都均等的提供服务
  • 权重算法下,Nginx会按照配置的权重比例,将请求发送给服务器。性能较好的服务器将提供更多的服务,性能较少的服务器将提供较少的服务
  • 在这里插入图片描述

部署nginx

[root@server ~]# setenforce 0

[root@server ~]# systemctl stop firewalld

[root@server ~]# systemctl disable firewalld

[root@server ~]# yum install nginx -y

[root@server ~]# nginx -v  #查看nginx版本,编译器,配置参数等信息
nginx version: nginx/1.20.1

[root@server ~]# systemctl start nginx

[root@server ~]# systemctl enable nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

[root@server ~]# systemctl status nginx

[root@server ~]# ps -ef | grep nginx   # 查看nginx进程
root       32436       1  0 13:49 ?        00:00:00 nginx: master process /usr/sbin/nginx
nginx      32437   32436  0 13:49 ?        00:00:00 nginx: worker process
nginx      32438   32436  0 13:49 ?        00:00:00 nginx: worker process
root       32465    2807  0 13:49 pts/0    00:00:00 grep --color=auto nginx

[root@server ~]# netstat -lntup | grep nginx  #查看nginx端口
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      32436/nginx: master
tcp6       0      0 :::80                   :::*                    LISTEN      32436/nginx: master

常用命令

systemctl系列

[root@server ~]# systemctl start nginx #启动服务

[root@server ~]# systemctl restart nginx #重启服务

[root@server ~]# systemctl enable nginx #开机启动

[root@server ~]# systemctl stop nginx #停止服务

[root@server ~]# systemctl disable nginx #取消开机启动

[root@server ~]# systemctl status nginx #查看状态

nginx自带命令

[root@server ~]# nginx   #启动nginx

[root@server ~]# nginx restart  #重启服务

[root@server ~]# nginx -s reload  #重新加载配置文件

[root@server ~]# nginx -s stop  #强行停止服务

[root@server ~]# nginx -s quit  #优雅停止服务,即所有请求处理完后退出服务

[root@server ~]# nginx -v  #查看版本号

[root@server ~]# nginx -t  #检查配置文件的语法是否错误,无错返回ok

nginx配置文件

[root@server ~]# cd /etc/nginx  #服务目录

[root@server nginx]# tree
.
├── conf.d    #子配置文件目录
├── default.d
├── fastcgi.conf
├── fastcgi.conf.default
├── fastcgi_params
├── fastcgi_params.default
├── koi-utf    #KOI8-R 编码(俄语)转换的映射文件
├── koi-win    #KOI8-R 编码(俄语)转换的映射文件
├── mime.types   #配置支持的媒体类型
├── mime.types.default  #样例文件
├── nginx.conf   #主配置文件
├── nginx.conf.default   #样例文件
├── scgi_params
├── scgi_params.default
├── uwsgi_params
├── uwsgi_params.default
└── win-utf   #KOI8-R 编码(俄语)转换的映射文件
网页默认目录:/usr/share/nginx/html
访问日志:/var/log/nginx/access.log
错误日志:/var/log/nginx/error.log

主配置文件/etc/nginx/nginx.conf

[root@server ~]# vim /etc/nginx/nginx.conf

内容结构

  • 全局配置

    • 运行用户
    • worker数量
    • 日志参数
    • include导入的外部配置文件
  • 性能配置

    • 工作模式
    • TCP连接数
  • http模块配置

    • http请求和响应的参数
    • 路由配置
    • 虚拟主机配置
    • 反向代理配置
    • 负载均衡配置

在这里插入图片描述

模块分析

  • 层级结构图
  • 在这里插入图片描述

配置分析

# main配置段(全局配置)
user nginx;  #运行的账户,默认即是nginx,可以不进行设置
worker_processes auto;  #worker进程数,根据硬件调整,通常等于CPU数量或者2倍于CPU
error_log /var/log/nginx/error.log;  #错误日志存放目录
pid /run/nginx.pid; #指定运行Nginx master主进程的pid文件存放路径

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;  #导入的外部文件位置


#events配置段,性能模块设置,其中可以设置时间处理模式等
events {
	use epoll; #使用epo11事件驱动模型,但不推荐配置它,让nginx自己选择
    worker_connections 1024; #每个进程的最大连接数量(并发数)
    accept_mutex on  #默认是off关闭的,这里推荐打开
}


#http配置段,包含全局块和server块,使用最频繁的部分,代理、缓存、日志定义等绝大多数功能和第三方模块的配置都在这里设置
http {
    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  /var/log/nginx/access.log  main; #访问日志存储位置

    sendfile            on; #高效文件传输模式,默认开启
    tcp_nopush          on; #性能优化参数,数据是否立刻发送
    tcp_nodelay         on; #性能优化参数,小数据包是否延迟发送
    keepalive_timeout   65; #超时时间
    types_hash_max_size 4096; #性能优化参数,影响散列表的冲率

    include             /etc/nginx/mime.types; #可解析的静态资源类型 
    default_type        application/octet-stream; #默认文件类型

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;  #加载子配置项


	#server配置段,虚拟主机设置
    server {
        listen       80; #监听IPV4端口
        listen       [::]:80; #监昕IPV6端口
        server_name  _; #访问的域名
        root         /usr/share/nginx/html; #网页默认目录

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf; #子配置文件存储路径
       

		#1ocation配置段,一般用来匹配不同的URI请求
		location / {
			root    /usr/share/nginx/html;  #相对路径网站根目录
			alias   /usr/share/nginx/html/; #绝对路径网站根目录
			index index.html index.htm; #默认首页文件
			
			deny 172.168.22.11;  #禁止访问的ip地址,可以为a11
			allow 172.168.33.44;  #允许访问的ip地址,可以为a11
			autoindex on;  #开启目录文件列表
			autoindex_exact_size on; #显示出文件的确切大小,单位是bytes
			autoindex_localtime on; #显示的文件时间为文件的服务器时间
			charset utf-8,gbk; #避免中文乱码
			auth_basic "xxxx";  #加密网页验证时的提示信息
			auth_basic_user_file   /路径/文件名; #加密网页使用的密码验证文件
		}
		
		 error_page 404 /404.html;  #404时返回给客户端的页面
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html; #50x错误返回给客户端的页面
        location = /50x.html {
        }
    }



#https虚拟主机定义
# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2;  #监听的IPV4端口
#        listen       [::]:443 ssl http2;
#        server_name  _;
#        root         /usr/share/nginx/html;   #网页默认目录
#
#        ssl_certificate "/etc/pki/nginx/server.crt";  #证书存储路径
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";  #密钥存储
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers PROFILE=SYSTEM;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }
}

注意

  • server_name指令一般用于指定虚拟主机的域名,在匹配时有以下四中写法:
    • 精确匹配:server_name http://www.nginx.com;
    • 左侧匹配:server_name *.http://nginx.com;
    • 右侧匹配:server_name http://www.nginx.*;
    • 正则匹配:server_name ~^www.nginx.*$;
  • 注:匹配优先级:精确匹配 > 左侧通配符匹配 > 右侧通配符匹配 > 正则表达式匹配
  • root指令与alias指令区别
    • root指令用于静态资源目录位置,它可以写在http、server、location等配置中,root指令定义的路径会与URI叠加产生最终访问路径,如:
location /image {
	root  /opt/nginx/static;
}

#当用户访问www.test.com/image/1.png时,实际在服务器找的路径是/opt/nginx/static/image/1.png
  • alias也是指定静态资源目录位置,但只能访问指定的绝对路径,不会叠加目录,只能写在location中且末尾一定要添加 /,如:
location /image {
	alias  /opt/nginx/static/image/;
}

#当用户访问www.test.com/image/1.png时,实际在服务器找的路径是/opt/nginx/static/image/1.png
  • location匹配路径
    • 格式:
location [ = | ~ | ~* | ^~ ] uri {
	......
}
  • 匹配规则:
    • = 精确匹配
    • ~ 正则匹配,区分大小写
    • ~* 正则匹配,不区分大小写
    • ^~ 匹配以某个字符串开头,不是正则匹配
    • / 通用匹配,如果其他location都没有匹配,则该location会进行匹配
  • 匹配优先级:= ^~ ~ ~* 不带任何字符
示例
server {
	listen  80;
	server_name  www.nginx-test.com;
	
	#只用当访问www.nginx-test.com/match_all/ 时才会匹配到 /usr/share/nginx/html/match_all/index.html
	location = /match_all/ {
		root  /usr/share/nginx/html;
		index index.html;
	}

	#当访问 www.nginx-test.com/1.jpg 等路径时会去 /usr/share/nginx/images/1.jpg 找对应的资源
	location ~ \.(jpeg|jpg|png|svg)$ {
		root  /usr/share/nginx/images;
	}

	#当访问www.nginx-test.com/bbs 时会匹配上 /usr/share/nginx/html/bbs/index.html
	location ^~ /bbs/ {
		root  /usr/share/nginx/html;
		index index.html index.htm;
	}


	#注意:上述location都找不到的话都在这里找
	location / {
		root html;
		index index.html index.htm;
	}
	#其/不是根目录而是统统都匹配到指定路径,而指定路径为html,即nginx的默认网页目录/usr/share/nginx/html
}
  • uri中的斜线,如;
location /test {  #尾部无/
	......
}


location /test/ {  #尾部有/
	......
}
  • 不带/ 当访问http://www.nginx-test.com/test 时,nginx先找是否有test目录,如果有,则找test目录下的index.html;如果没有test目录,nginx则会找是否有test文件
  • / 当访问http://www.nginx-test.com/test 时,nginx先找是否有test目录,如果有则找test目录下的index.html,如果没有它也不会去找是否存在test文件

nginx.conf配置文件的语法规则

  • 配置文件由指令指令块构成
  • 每条指令以;分号结尾,指令与参数间以空格符号分隔
  • 指令块以 {} 大括号将多条指令组织在一起
  • include 语句允许组合多个配置文件以提升可维护性
  • 通过 # 符号添加注释,提高可读性
  • 通过$符号使用变量
  • 部分指令的参数支持正则表达式,例如常用的location指令

实验1:快速搭建网站

[root@server ~]# yum install nginx -y

[root@server ~]# systemctl start nginx

[root@server ~]# echo "welcome to www.openlab.com" > /usr/share/nginx/html/index.html  #写入网页数据

#使用windows端进入访问

在这里插入图片描述

实验2:替换网页目录

[root@server ~]# yum install nginx -y

[root@server ~]# systemctl start nginx

[root@server ~]# mkdir -p /www/sxhkt  #创建网页目录

#使用mobaxterm上传网页数据到/www/sxhkt中

[root@server ~]# cd /www/sxhkt

[root@server sxhkt]# ls
CSS  img  index.html  js

[root@server sxhkt]# vim /etc/nginx/nginx.conf
#定位到42行,修改如下:
root    /www/sxhkt;

[root@server sxhkt]# systemctl restart nginx

#测试:打开Windows端输入IP地址

在这里插入图片描述

实验3:搭建location板块的网站

[root@server ~]# yum install nginx -y

[root@server ~]# systemctl start nginx

[root@server ~]# mkdir -p /www/sxhkt  #创建网页目录

#使用mobaxterm上传网页数据到/www/sxhkt中

[root@server ~]# cd /www/sxhkt

[root@server sxhkt]# ls
CSS  img  index.html  js

[root@server sxhkt]# vim /etc/nginx/nginx.conf
#server板块中添加location板块
server{
	listen    80;
	listen    [::]:80;
	server_name  _;
	
	location / {
		root   /www/sxhkt;
		index index.html index.htm;
	}
}


[root@server sxhkt]# systemctl restart nginx

#测试:打开Windows端输入IP地址

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android创建快捷方式到桌面

效果图 参考 https://blog.51cto.com/u_16175498/8811197https://blog.51cto.com/u_16175498/8811197 权限 <uses-permission android:name"com.android.launcher.permission.INSTALL_SHORTCUT" /> 实现 if (Build.VERSION.SDK_INT > Build.VERSION_C…

【已解决】Python Selenium chromedriver Pycharm闪退的问题

概要 根据不同的业务场景需求&#xff0c;有时我们难免会使用程序来打开浏览器进行访问。本文在pycharm中使用selenium打开chromedriver出现闪退问题&#xff0c;根据不断尝试&#xff0c;最终找到的问题根本是版本问题。 代码如下 # (1) 导入selenium from selenium import …

C++ stack、queue以及deque

1、stack和queue常用接口 严格来说栈和队列的实现是容器适配器 1、常用接口&#xff1a; 栈&#xff1a;top、push、pop、size、emptystack - C Reference (cplusplus.com) 队列&#xff1a;top、push、pop、swap、size、emptyqueue - C Reference (cplusplus.com) 2、deque&a…

Android手势识别面试问题及回答

问题 1: 如何在Android中实现基本的手势识别&#xff1f; 答案: 在Android中&#xff0c;可以通过使用GestureDetector类来实现基本的手势识别。首先需要创建一个GestureDetector的实例&#xff0c;并实现GestureDetector.OnGestureListener接口来响应各种手势事件&#xff0c…

ubuntu安装mysql时候修改root密码

前情&#xff1a; 使用set password for rootlocalhost ‘passwd’&#xff1b; set password for ‘root’‘localhost’‘passwd’&#xff1b; update user set passwordpassword(‘passwd’) where user‘root’ and host ‘localhost’; flush privileges; 以上方法均报…

定制开发AI智能名片商城小程序:玩转积分制度的成功案例

在数字化浪潮席卷而来的今天&#xff0c;企业营销方式不断创新&#xff0c;力求在众多竞争对手中脱颖而出。其中&#xff0c;积分制度以其直观、有效的特点&#xff0c;成为了众多企业的营销利器。某时尚品牌“潮流前线”便是其中的佼佼者。他们通过定制一款AI智能名片商城小程…

德国著名自动化公司Festo设计了一款仿生蜜蜂,仅重34g,支持多只蜜蜂编队飞行!...

德国著名的气动元件研发及自动化解决方案供应商Festo公司近日展示了一款仿生蜜蜂&#xff08;BionicBee&#xff09;&#xff0c;重量只有34g&#xff0c;却完全可以实现自主飞行&#xff0c;还支持多只相同的蜜蜂机器人编队飞行。 BionicBee 重约 34 克&#xff0c;长 22 厘米…

二叉树的前序,中序,后序遍历

二叉树可以分为左子树&#xff0c;右子树和根节点。同时左子树和右子树又可以分为新的左子树和右子树加上新的根节点&#xff0c;以此类推。 二叉树的前序&#xff0c;中序&#xff0c;后序遍历也叫前根遍历&#xff0c;中根遍历&#xff0c;后根遍历或者前序遍历&#xff0c;…

【Vue 2.x】学习vue之三路由

文章目录 Vue三路由第十章1、vue中的路由vue的应用分为a、多页面应用b、单页面应用 2、路由的基本应用1、基础2、使用3、加载 3、vue组件的分类1、普通组件2、路由组件 4、路由的嵌套5、路由传递Query参数1、拼接参数传递2、路由传递对象 6、简化路由1、命名路由 7、parms传递参…

控制台主机不能运行,切换终端实现RPG运行

鄙人转载&#xff0c;主要是移植过程中使用小熊猫C2.25.1 过程中&#xff0c;字符集不同&#xff0c;导致某些空格 从bilibili专栏粘贴导致出现符号不匹配&#xff0c;但是编辑器不能替换 用原来的devc 5.11 发现问题&#xff0c;读出额外的英文&#xff1f; 使用文件替换&…

C语言贪吃蛇项目

今天给大家带来一款简单的贪吃蛇游戏&#xff0c;一起随我来看看吧 游戏效果&#xff1a; 实现基本的功能&#xff1a; • 贪吃蛇地图绘制 • 蛇吃⻝物的功能&#xff1a;&#xff08;上、下、左、右⽅向键控制蛇的动作&#xff09; • 蛇撞墙死亡 • 蛇撞⾃⾝死亡 • 计算得分…

5.C++动态内存管理(超全)

目录 1 .C/C 内存分布 2. C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free 3. C内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作自定义类型 3.3 operator new函数 3.4 定位new表达式(placement-new) &#xff08;了解&#xff09; 4. 常…

【ARMv8/v9 系统寄存 3 -- system counter CNTPCT_EL0】

文章目录 ARMv8/v9 system countersystem counter读取函数实现 ARMv8/v9 system counter 所有使用Arm处理器的系统中都会包含一个标准化的通用定时器&#xff08;Generic Timer&#xff09;框架。这个通用定时器系统提供了一个系统计数器&#xff08;System Counter&#xff0…

ps科研常用操作,制作模式图 扣取想要的内容元素photoshop

复制想要copy的图片&#xff0c; 打开ps---file-----new &#xff0c;ctrolv粘贴图片进入ps 选择魔棒工具&#xff0c;点击想要去除的白色区域 然后&#xff0c;cotrol shift i&#xff0c;反选&#xff0c; ctrol shiftj复制&#xff0c;复制成功之后&#xff0c;一定要改…

UnityWebGL获取话筒实时数据

看了木子李大佬的数字人https://digital.lkz.fit/之后&#xff0c;我也想搞一个&#xff0c;于是开始研究起来&#xff0c;先从WebGL录音开始&#xff0c;一共试了三个插件&#xff0c;个个都有问题…… 1、UnityWebGLMicrophone 用起来没啥问题&#xff0c;但是只能录音&#…

大型企业总分支多区域数据传输,效率为先还是安全为先?

大型企业为了业务拓展需要&#xff0c;会在全国乃至全球各地设立分公司和办事机构&#xff0c;以便更好地处理当地事务&#xff0c;并进行市场的开拓和客户维护&#xff0c;此时&#xff0c;企业内部就衍生出了新的业务需求&#xff0c;即多区域数据传输。 多区域很难准确定义&…

【大语言模型LLM】-基于ChatGPT搭建客服助手(1)

&#x1f525;博客主页&#xff1a;西瓜WiFi &#x1f3a5;系列专栏&#xff1a;《大语言模型》 很多非常有趣的模型&#xff0c;值得收藏&#xff0c;满足大家的收集癖&#xff01; 如果觉得有用&#xff0c;请三连&#x1f44d;⭐❤️&#xff0c;谢谢&#xff01; 长期不…

2024年五一杯高校数学建模竞赛(A题)|钢板切割问题 | 建模解析,小鹿学长带队指引全代码文章与思路

我是鹿鹿学长&#xff0c;就读于上海交通大学&#xff0c;截至目前已经帮200人完成了建模与思路的构建的处理了&#xff5e; 本篇文章是鹿鹿学长经过深度思考&#xff0c;独辟蹊径&#xff0c;通过路径优化解决钢板切割问题。结合贪心算法&#xff0c;Floyd-Warshall等多元算法…

STM32G030F6P6TR 芯片TSSOP20 MCU单片机微控制器芯片

STM32G030F6P6TR 在物联网&#xff08;IoT&#xff09;设备中的典型应用案例包括但不限于以下几个方面&#xff1a; 1. 环境监测系统&#xff1a; 使用传感器来监测温度、湿度、气压等环境因素&#xff0c;并通过无线通信模块将数据发送到中央服务器或云端平台进行分析和监控。…

Ansys Speos|进行智能手机镜头杂散光分析

本例的目的是研究智能手机Camera系统的杂散光。杂散光是指光向相机传感器不需要的散光光或镜面光&#xff0c;是在光学设计中无意产生的&#xff0c;会降低相机系统的光学性能。 在本例中&#xff0c;光学透镜系统使用Ansys Zemax OpticStudio (ZOS)进行设计&#xff0c;并使用…