一个简单的配置文件
配置文件路径:/usr/local/nginx/conf/nginx.conf
#-----------------------------------core 基本模块 # 使用的用户和组 user www www; # 指定工作进程数,通常设置和CPU数量相等 worker_processes 1; # 可以使用 [ debug | info | notice | warn | error | crit ] 参数 #error_log logs/error.log; #error_log logs/error.log notice; # 指定 pid 存放的路径 #pid logs/nginx.pid; #-----------------------------------evens 事件模块 events { #每个worker的最大连接数 worker_connections 1024; } #-----------------------------------HTTP 模块 http { #包含一个文件描述了:不同文件后缀对应的MIME,见案例分析 include mime.types; #制定默认MIME类型为二进制字节流 default_type application/octet-stream; #指令 access_log 指派路径、格式和缓存大小。 #access_log off; #开启调用Linux的sendfile(),提供文件传输效率 sendfile on; #是否允许使用socket的TCP_NOPUSH或TCP_CORK选项 #tcp_nopush on; #指定客户端连接保持活动的超时时间,在这个时间之后,服务器会关掉连接。 keepalive_timeout 65; #设置gzip,压缩文件 #gzip on; #为后端服务器提供简单的负载均衡 upstream apaches { server 127.0.0.1:8001; server 127.0.0.1:8002; } #配置一台虚拟机 server { listen 8012; server_name localhost; location / { proxy_pass http://apaches; } } }
== 模块介绍 ==
模块划分:
#Core 核心模块
#Events 事件模块
#HTTP HTTP模块
#Mail 邮件模块
*核心模块的常用组件
- user
- 语法: user user [group]
- 缺省值: nobody nobody
- 指定Nginx Worker进程运行用户,默认是nobody帐号。
- error_log
- 语法: error_log file [ debug | info | notice | warn | error | crit ]
- 缺省值: ${prefix}/logs/error.log
- 制定错误日志的存放位置和级别。
- include
- 语法: include file | *
- 缺省值: none
- include 指令还支持像下面配置一样的全局包含的方法,例如包含一个目录下所有以".conf"结尾的文件: include vhosts/*.conf;
- pid
- 语法: pid file
- 进程id存储文件。可以使用 kill -HUP cat /var/log/nginx.pid/ 对Nginx进行配置文件重新加载。
- worker_processes
- 语法: worker_processes number
- 缺省值: 1
- 指定工作进程数。nginx可以使用多个worker进程。
*事件模块的常用组件
- worker_connections
- 语法:worker_connections number
- 通过worker_connections和worker_proceses可以计算出maxclients: max_clients = worker_processes * worker_connections
- 作为反向代理,max_clients为: max_clients = worker_processes * worker_connections/4 ,因为浏览器访问时会通过连接池建立多个连接。
- use
- 语法:use [ kqueue | rtsig | epoll | /dev/poll | select | poll | eventport ]
- 如果在./configure的时候指定了不止一种事件模型,那么可以设置其中一个,以便告诉nginx使用哪种事件模型。默认情况下nginx会在./configure时找出最适合系统的事件模型。
- 事件模型是指Nginx处理连接的方法。
*HTTP模块的核心组件和变量
- 三个作用域:http, server, location
- server
- 语法:server {...}
- 作用域: http
- 配置一台虚拟机。
- location
- 语法: location [=|~|~*|^~] /uri/ { ... }
- 作用域: server
- 配置访问路径的处理方法。
- listen
- 语法: listen address:port [ default [ backlog=num | rcvbuf=size | sndbuf=size | accept_filter=filter | deferred | bind | ssl ]
- 默认值: listen 80
- 作用域: server
- 指定当前虚拟机的监听端口。
- alias
- 语法: alias file-path|directory-path;
- 作用域: location
- 该指令设置指定location使用的路径.注意它跟 root 相似,但是不改变文件的根路径,仅仅是使用文件系统路径
- root
- 语法: root path
- 默认值:root html
- 作用域:http, server, location
- alias指定的目录是准确的,root是指定目录的上级目录,并且该上级目录要含有location指定名称的同名目录。
- 区别:
- location /abc/ {
- alias /home/html/abc/;
- }
- 在这段配置下,http://test/abc/a.html就指定的是/home/html/abc/a.html。这段配置亦可改成
- location /abc/ {
- root /home/html/;
- }
- 这样,nginx就会去找/home/html/目录下的abc目录了,得到的结果是相同的。
- HTTP模块的其他基本组件将结合案例介绍。
- 变量:
- HTTP header 里边 特定HEADER的值,变量会转成小写,比如 $http_user_agent, $http_referer... header信息 "YOUR-STRANGE-HEADER: values" 能通过 $http_your_strange_header获得.
- $arg_PARAMETER
- $http_HEADER
- $query_string = $args
*邮件模块的常用组件(略)
== 常用场景配置 ==
1.多台服务器配置负载均衡
- http {
- include mime.types;
- default_type application/octet-stream;
- sendfile on;
- keepalive_timeout 65;
- upstream allserver {
- #ip_hash;
- server 127.0.0.1:8083 down;
- server 127.0.0.1:8084 weight=3;
- server 127.0.0.1:8001;
- server 127.0.0.1:8002 backup;
- }
- server {
- listen 8012;
- server_name localhost;
- location / {
- proxy_pass http://allserver;
- }
- }
- }
ip_hash; nginx中的ip_hash技术能够将某个ip的请求定向到同一台后端,这样一来这个ip下的某个客户端和某个后端就能建立起稳固的session
1.down 表示单前的 server 暂时不参与负载
2.weight 默认为 1.weight 越大,负载的权重就越大。
3.backup: 其它所有的非 backup 机器 down 或者忙的时候,请求 backup机器。所以这台机器压力会最轻。
2.通过手机客户端的头信息或者请求的参数转发到不用目录
- http {
- include mime.types;
- default_type application/octet-stream;
- sendfile on;
- keepalive_timeout 65;
- upstream apaches {
- server 127.0.0.1:8001;
- server 127.0.0.1:8002;
- }
- upstream tomcats {
- server 127.0.0.1:8083;
- server 127.0.0.1:8084;
- }
- server {
- listen 8012;
- server_name localhost;
- location / {
- set $ismob 0;
- # 注意if后的空格
- if ( $http_chip ~* "(NOKIA3500)|(NOKIA3200)" )
- {
- set $ismob 1;
- proxy_pass http://apaches;
- }
- if ( $http_chip ~* "(NOKIA3500)|(NOKIA3200)" )
- {
- set $ismob 1;
- proxy_pass http://tomcats;
- }
- if ( $ismob = 0 )
- {
- root /usr/local/nginx/nginx8012/html;
- }
- }
- location ~* /rewrite/testXID.jsp {
- if ( $arg_XID = "13800138000")
- {
- rewrite ^(.*)$ http://192.168.0.190:8084/testSID.jsp break;
- }
- }
- }
- }
1、正则表达式匹配,其中:
= 完全相等;
~为区分大小写匹配;
~*为不区分大小写匹配;
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配。
2、文件及目录匹配,其中:
-f和!-f用来判断是否存在文件;
-d和!-d用来判断是否存在目录;
-e和!-e用来判断是否存在文件或目录;
-x和!-x用来判断文件是否可执行。
if (-d $request_filename){ ... }
哪些地方会出现正则表达式:
1.location ~* /.(gif|jpg|png|swf|flv)${...}
2.rewrite ^(.*)$ /nginx-ie/$1 break;
正则表达式举例:
1.多目录转成参数 abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2
if ($host ~* (.*)/.domain/.com) {
set $sub_name $1;
rewrite ^/sort//(/d+)//?$ /index.php?act=sort&cid=$sub_name&id=$1 last;
}
2.目录对换 /123456/xxxx -> /xxxx?id=123456
rewrite ^/(/d+)/(.+)/ /$2?id=$1 last;
3.防盗链
- http {
- include mime.types;
- default_type application/octet-stream;
- sendfile on;
- keepalive_timeout 65;
- server {
- listen 8012;
- server_name localhost;
- location / {
- root html;
- }
- location ~* ^.+/.(gif|jpg|png|swf|flv|rar|zip)$ {
- valid_referers none blocked server_names http://localhost baidu.com;
- if ($invalid_referer) {
- rewrite ^/ html/50x.html;
- }
- }
- }
- }
4.访问控制:身份验证、限制IP
- http {
- include mime.types;
- default_type application/octet-stream;
- sendfile on;
- keepalive_timeout 65;
- upstream tomcats {
- server 127.0.0.1:8083;
- server 127.0.0.1:8084;
- }
- server {
- listen 8012;
- server_name localhost;
- location / {
- allow 192.168.4.8;
- deny all;
- auth_basic "index";
- auth_basic_user_file ../htpasswd;
- proxy_pass http://tomcats;
- }
- }
- }
cp /usr/local/apache/apache8001/bin/htpasswd /usr/local/bin/
/usr/local/bin/htpasswd -c htpasswd root
5.查看Nginx的运行状态
- http {
- include mime.types;
- default_type application/octet-stream;
- sendfile on;
- keepalive_timeout 65;
- upstream apaches {
- server 127.0.0.1:8001;
- server 127.0.0.1:8002;
- }
- upstream tomcats {
- server 127.0.0.1:8083;
- server 127.0.0.1:8084;
- }
- server {
- listen 8012;
- server_name localhost;
- location / {
- proxy_pass http://tomcats;
- }
- location /NginxStatus {
- stub_status on;
- access_log off;
- auth_basic "NginxStatus";
- auth_basic_user_file ../htpasswd;
- }
- }
- }
== 进阶内容 ==
1.查看Nginx的运行状态
Active connections: 364
server accepts handled requests
5477919 5477919 17515830
Reading: 10 Writing: 26 Waiting: 328
意思如下:
active connections – 当前 Nginx 正处理的活动连接数。
serveraccepts handled requests -- 总共处理了 5477919 个连接 , 成功创建 5477919 次握手 (证明中间没有失败的 ), 总共处理了 17515830 个请求 ( 平均每次握手处理了 3.2 个数据请求 )。
reading -- nginx 读取到客户端的 Header 信息数。
writing -- nginx 返回给客户端的 Header 信息数。
waiting -- 开启 keep-alive 的情况下,这个值等于 active - (reading + writing),意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。
2.案例分析:
将web server由apache换为nginx后,却带来意想不到的问题.多个页面显示模块显示"正在加载中..."然后一直停顿,使用FireBug调试前端,XSL文件解析失败.但载入又是HTTP 200 的正常状态.
继续用FireBug调试,发现XSL文件下载时的HTTP响应头中,
Content-Type是oct/stream ,而在原来的apache中,是text/xml,于是修改/etc/nginx/mime.types文件.将XSL的扩展名加到xml组中.问题解决.
3. 通过系统的信号控制 Nginx
使用信号加载新的配置
平滑升级到新的二进制代码
4. 使用Nginx限制下载速率和并发数
limit_zone limit_conn limit_rate
5. 使用Nginx进行地址转发
rewrite
nginx rewrite中last和break的区别: http://blog.sina.com.cn/s/blog_4b01279a0100hd4c.html
6.Nginx Internals: Nginx源代码、内部机制的分析
http://blog.zhuzhaoyuan.com/2009/09/nginx-internals-slides-video/
== 参考资料 ==
Nginx中文文档:
http://wiki.nginx.org/NginxChs
服务器系统架构分析日志:
http://www.sudone.com/
使用 Nginx 提升网站访问速度:
http://www.ibm.com/developerworks/cn/web/wa-lo-nginx/
推荐:http://blog.csdn.net/shootyou/article/details/6093562/
相关推荐
内容概要:本文详细介绍了如何使用COMSOL Multiphysics进行金属纳米盘的散射、消光和吸收截面的计算。首先,通过几何建模创建一个直径80nm、厚度20nm的金纳米盘,并设置了精确的材料参数(如Drude模型),确保模拟的准确性。接着,选择了电磁波频域作为物理场,配置了合适的边界条件(如散射边界条件和端口激发),并进行了精细的网格划分,特别是在纳米盘边缘加密网格以提高计算精度。然后,利用后处理脚本提取了散射、消光和吸收截面的数据,提供了具体的计算公式和注意事项。最后,强调了验证结果的重要性和一些常见的错误避免方法,如检查能量守恒和调整网格密度。 适合人群:从事纳米光子学研究的科研人员和技术爱好者,尤其是对COMSOL Multiphysics有一定基础的用户。 使用场景及目标:适用于需要精确计算金属纳米盘光学特性的研究人员,帮助他们理解和掌握COMSOL中相关参数的设置和优化方法,从而更好地进行科学研究和发表高质量论文。 其他说明:文中还提供了一个详细的录屏教程,涵盖了从建模到后处理的完整流程,方便用户跟随操作。同时,提醒用户注意单位转换和数据归一化等问题,以确保计算结果的正确性。
DL/T 645-2007 的规定帧编写读写函数,对收到原始数据进行解码
餐饮行业: 店外引流:在餐厅门口放置爆店码,顾客进店前碰一碰,就能了解今日特色菜品、优惠套餐等信息,吸引顾客进店消费。 店内互动:在餐桌等位置设置爆店码,顾客用餐过程中碰一碰,可参与抽奖活动、领取餐后优惠券,或跳转到电子菜单进行加菜,增加顾客的用餐乐趣和二次消费几率。 零售店铺: 服装门店:在橱窗展示新品时,贴上爆店码,顾客碰一碰可查看模特穿搭视频、获取商品详情和尺码信息,以及该商品的会员专属折扣。在试衣镜旁放置爆店码,顾客碰一碰能查看搭配建议、关注公众号或加入会员,提升引流转粉效率。 便利店:在收银台设置爆店码,顾客付款时碰一碰,可领取满减优惠券、了解会员积分规则,或获取当季新品推荐,促进顾客当场购买或成为会员,提升销售额和顾客忠诚度。 线下活动: 展会:在展会入口、展位等位置放置爆店码,参与者碰一碰就能快速获取展会详情、参展商名单、活动议程、展位地图等信息,方便活动的推广和组织,同时也能收集参与者的信息,为后续营销做准备。 促销活动:在商场中庭、店铺门口等举办促销活动时,使用爆店码。顾客碰一碰可了解活动规则、参与方式,还能直接领取电子优惠券或参与线上互动游戏,增加活动的参与度和传播度。 服务行业: 美业:在美甲美睫店的服务台、镜子旁等地方设置爆店码,顾客碰一碰可自动引导添加美业小助理微信,方便预约下次服务,也可获取美容护肤知识、会员专属优惠等信息。 健身行业:在健身房的前台、更衣室门口、器械旁放置爆店码。顾客碰一碰能了解课程安排、教练介绍,还可参与打卡活动,分享训练成果到社交平台,领取健身优惠券或小礼品,吸引更多潜在顾客。 旅游行业: 景区:在景区入口、景点打卡处等设置爆店码,游客碰一碰可获取景区地图、景点介绍、语音讲解,还能领取景区纪念品优惠券或参与线上互动活动,提升游客的旅游体验和景区的知名度。 酒店:在酒店大堂、客房门口、餐厅等位置放置爆店码。客人碰一碰可了解酒店
MIL-STD-454N.PDF
内容概要:本文提出了一种基于标准视频编解码器和优化特征平面的高效压缩方法,用于处理3D高斯点阵(3D Gaussian Splatting)。该方法通过引入统一架构将点云数据和特征平面结合,利用2D特征平面实现连续空间表示,并通过频率域熵建模和通道位分配优化压缩性能。实验结果表明,该方法在显著减少存储需求的同时保持了高质量的渲染效果,特别是在“自行车”场景中实现了146倍的压缩率而图像质量几乎无损。此外,该模型与现有3DGS渲染管道无缝集成,维持了相似的渲染速度。 适合人群:对3D场景压缩和渲染技术感兴趣的计算机视觉研究人员及工程师,特别是关注实时应用和移动设备性能优化的专业人士。 使用场景及目标:①需要在资源受限环境中(如移动设备或头戴显示器)进行高效3D场景表示的应用开发者;②寻求在不牺牲渲染质量的前提下大幅降低存储和传输成本的技术团队;③希望利用标准视频编解码器实现快速硬件解码的研究者。 其他说明:该研究不仅适用于特定的数据集,还为未来3D表示技术的发展提供了关键见解,促进了更高效的3D压缩技术发展。实验验证了该方法的有效性,展示了显著的存储节省和视觉保真度。
内容概要:本文详细介绍了超声波焊接技术在汽车门板塑焊机中的应用,涵盖了从源码程序到硬件加工的各个方面。首先强调了超声波焊接在汽车制造中的重要性,然后展示了控制板和显示板的源码程序,包括初始化代码、PID控制算法、频率跟踪算法等。此外,还讨论了超声波换能器、手柄外壳、铝件和焊头的加工技术及其具体要求。文中提供了多个代码示例,如STM32的PWM配置、DMA传输、PID算法实现等,展示了如何通过软件和硬件的紧密结合实现高效的超声波焊接。 适合人群:从事汽车制造业、电子工程、嵌入式开发等相关领域的技术人员,尤其是对超声波焊接技术和嵌入式系统感兴趣的工程师。 使用场景及目标:适用于希望深入了解超声波焊接技术原理和技术实现的读者,帮助他们掌握从源码编写到硬件加工的全流程知识,提高焊接系统的稳定性和可靠性。 其他说明:文章不仅提供了详细的代码示例,还分享了许多实践经验,如频率跟踪算法、温度补偿、硬件互锁机制等,有助于读者更好地理解和应用这些技术。
可配置阶数和位宽的级联型IIR滤波器(具体代码和工程私聊qq947336191)
程序设计语言基础JAVAWEB_Java的常用工具类[2025网盘版.备考复习]
内容概要:本文详细介绍了Halcon与C#联合开发的一个稳定版工业视觉框架,涵盖环境配置、图像处理流水线设计、异常处理、内存管理和算法模块化等方面的内容。首先,文章强调了环境配置的重要性,确保Halcon的runtime版本与开发环境一致,避免常见的dll版本不匹配问题。接着,描述了图像处理流水线的设计,采用了Task+async/await的方式提高效率,并通过状态机实现流程引擎,使配置更加灵活。此外,文章深入探讨了内存管理,提供了多个实例,如使用using语句确保HRegion对象正确释放,以及通过HalconMemoryKiller类防止内存泄漏。异常处理方面,文章展示了如何将Halcon的错误码转化为易读的信息,并实现了全局异常捕获和日志记录。最后,文章提到了框架的实际应用场景,如PCB板检测,并分享了许多实战经验和技巧,如相机断线自动重连、图像显示控件的手势操作等。 适合人群:具备一定编程基础并希望深入了解Halcon与C#联合开发的工程师和技术爱好者。 使用场景及目标:适用于工业视觉项目的开发,旨在帮助开发者构建高效稳定的图像处理系统,提高系统的鲁棒性和维护性。 其他说明:文中提供的代码片段和实战经验对于解决常见问题非常有价值,尤其是内存管理和异常处理方面的最佳实践。
内容概要:本文详细介绍了基于三菱FX1N-30MR PLC和威纶TK6070触摸屏的恒压供水系统的实战应用。主要内容涵盖系统的关键功能如定时锁定、模式切换、PID控制、故障联锁以及小泵控制等。文中不仅提供了具体的梯形图代码片段,还分享了许多实际调试经验和注意事项。例如,定时锁定功能通过M384和M385实现,确保系统稳定运行;模式切换由M400-M403控制,可在触摸屏上进行选择;PID控制可以选择变频器或3A模块,后者提供更平稳的压力曲线;故障联锁机制能够在变频器故障时自动切换到工频泵,保障供水安全;小泵控制则用于应对压力波动,保持管网压力稳定。 适用人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和触摸屏应用有一定基础的人群。 使用场景及目标:适用于需要理解和实施恒压供水系统的工程项目。目标是帮助读者掌握三菱PLC和威纶触摸屏的具体应用技巧,提高系统的可靠性和效率。 其他说明:文中提到的一些特殊操作和调试技巧,如通过D129输入4016解锁系统,以及在触摸屏上设置隐藏菜单等,有助于解决实际工程中的常见问题。此外,文章强调了硬件配置和通信设置的重要性,提醒读者在实际操作中避免常见的错误。
内容概要:本文详细介绍了基于51单片机的全自动洗衣机系统的设计与实现。系统支持手动和自动两种操作模式,能够灵活调整水位、洗涤时间和漂洗次数等参数。文中提供了详细的Proteus 8仿真图、C语言源码及Hex文件的使用说明。硬件方面,采用STC89C52作为主控芯片,搭配LCD1602显示屏、按键阵列、直流电机驱动模块、水位传感器和门磁开关等组件。软件部分涵盖了按键处理、电机控制、水位检测等功能模块的具体实现方法。此外,还讨论了一些常见的调试技巧和注意事项。 适合人群:具有一定单片机基础知识的学习者、电子爱好者、嵌入式系统开发者。 使用场景及目标:适用于希望深入了解51单片机及其外围设备的应用开发,特别是对于嵌入式控制系统感兴趣的读者。通过本项目的实践,读者可以掌握单片机的基本编程技能,学会如何构建和调试小型自动化系统。 其他说明:文中提供的代码和仿真图可以帮助初学者更好地理解和掌握相关知识点。同时,针对可能出现的问题给出了实用的解决方案,如按键消抖、电机驱动保护等。
Java在线教育学习平台LW PPT
系统名称:基于SSM实现的小说网站 技术栈:SSM框架、MYSQL数据库、JS语言、B/S架构 系统功能:前台界面功能包括站内信息查看(通过作者、小说名、小说类型查找小说)、用户注册、小说列表查看(按章节查看并阅读,用户登录后收藏,付费或免费查看)、在线支付、排行榜(热门小说、点击率);后台功能包括用户管理(管理员和注册用户)、站内信息管理、小说类别管理、小说信息管理、章节信息管理、支付信息管理。 摘要:简单而言信息化就是为了人们的生活便利所带来的新时代的东西,有了淘宝、京东,我们可以进行网购漂亮的衣服;有了快手、抖音我们可以真实的感受主播给我们带来最真实的货物;有了美团我们可以在家就吃到全城的美食。这就是信息化带给我们的福利,别看一个小小的APP或者WEB应用,它能够解决的是社会上的某一类问题。企业资源计划ERP这类软件可能有很多人都听到过,熟悉它的人都知道一个小小的TOB应用软件可以指挥数以万计的企业员工有条不紊的进行着企业各项的生产任务。可想而知,信息化软件的力量足可以撼动整个企业乃至整个行业的情况。此次我们的设计所做的应用也是根据现实生活当中的需求来进行针对性的功能解决的,所有的业务也好,功能啥的都是根据实际的需求设计而来。各种各样应运而生的信息化软件都是为了解决生活当中的问题的,我们也不例外,就是为了能够解决这样或者那样的问题才进行的设计。随着近几年的疫情不断发展,居家办公的情况更多出现在人们的生活当中,那么一些单调无味的工作和生活就影响着人们的心情。小说的需求场景也就越来越多了,人们的娱乐方式也由此变得更加丰富些。电子小说的出现可以大概率的帮助人们随时随地进行小说的阅读,同时还能够搜寻出自己喜欢小说。
内容概要:本文详细介绍了基于模型预测控制(MPC)的异步电机电流环改进仿真项目。首先,文章阐述了双闭环矢量控制框架的整体架构,即外层采用PI控制的速度环和内层采用MPC控制的电流环。接着,深入探讨了电机模型的核心代码,包括磁链观测器的简化处理以及预测控制器的代价函数设计。文中还分享了多个实际调试过程中遇到的技术挑战及其解决方案,如离散化方法的选择、开关频率惩罚项的设定、预测步长的影响等。此外,作者通过实验数据展示了MPC相较于传统PI控制在动态响应、电流跟踪精度等方面的显著优势。 适合人群:电气工程专业学生、从事电机控制系统研究的研发人员和技术爱好者。 使用场景及目标:适用于希望深入了解并掌握异步电机模型预测电流控制技术的研究人员。主要目标是通过理论与实践相结合的方式,提高对MPC的理解和应用能力,特别是在电流环控制方面的优化。 其他说明:文章不仅提供了详细的数学公式和代码实现,还附带了一些实用的小技巧和注意事项,有助于读者更好地理解和复现相关研究成果。同时,文中引用了多篇权威文献作为参考,进一步增强了内容的专业性和可信度。
lvgl-8.3.0 在github下载了好久才下载下来,希望方便大家使用。
兰州石化职业技术大学岗位实习手册(学生)印9200册.doc
On-device Model 在 KMP 的集成与用例.pptx
数据集介绍 整理平台上的几个数据集,调整格式,将验证码内容作为图片名称 整理相关验证码数据集57800张,统一使用验证码内容作为对应图片的文件名,使用的时候可以根据根据需求自行决定切分比例。
中职语文《一碗清汤荞麦面》教学设计.docx
综合实践题目:智能光照调节系统设计.docx