1. 项目背景与挑战

1.1 开发背景

随着AIGC技术爆发,我们团队决定开发一款多模型支持的AI图片生成器,主要解决以下痛点:

  • 不同AI模型的参数规范不统一
  • 生成结果难以系统化管理
  • 缺乏企业级的安全水印方案
  • 全球用户访问延迟高,中国用户体验尤其差
1.2 核心挑战

在开发过程中,我们面临几个关键技术挑战:

  1. 全球化部署难题:传统CDN要么价格昂贵,要么"免费≠中国可用"
  2. AI生成性能瓶颈:图片生成API响应时间长,用户等待体验差
  3. DDoS攻击风险:AI服务因其计算资源价值,成为攻击高发目标
  4. 跨地域资源调度:不同地区用户访问最近节点的智能路由
1.3 技术选型

代码语言:mermaid

AI代码解释

graph TDA[前端] -->|Next.js 14| B(交互层)A -->|Tailwind CSS| C(样式系统)D[后端] -->|NestJS| E(API服务)D -->|Redis| F(缓存层)G[全球加速] -->|腾讯云EdgeOne| H(CDN加速)G -->|EdgeOne安全防护| I(DDoS/WAF)

2. EdgeOne解决方案设计

2.1 为什么选择EdgeOne?

在项目初期,我们评估了多种CDN和安全防护方案:

方案

优势

劣势

传统CDN

成熟稳定

中国节点需单独付费,配置复杂

开源CDN

免费

缺乏中国节点,安全性差

云厂商CDN

功能丰富

按流量计费,成本高

EdgeOne

全球节点(含中国)、免费套餐、一体化安全

API较新,文档更新中

EdgeOne提供的完全免费安全加速套餐成为我们的首选,主要因为:

  • 不计量的CDN流量,消除了流量成本担忧
  • 内置DDoS防护,保障服务稳定性
  • 全球节点覆盖(包含中国大陆),真正实现全球化部署
  • 一站式配置,简化了运维复杂度

选择EdgeOne配置界面如下:

2.2 架构设计

我们采用了"静态资源+API分离"的架构模式:

代码语言:mermaid

AI代码解释

graph LRA[用户] --> B[EdgeOne全球加速]B --> C[静态资源]B --> D[API网关]D --> E[AI图片生成服务]E --> F[图片存储]F --> B
  • 静态资源:通过EdgeOne加速全球分发
  • API请求:经EdgeOne安全过滤后转发至后端服务
  • 生成图片:存储后通过EdgeOne缓存分发

3. AI图片生成器核心实现

基于模板进行配置

3.1 多模型调度系统

采用抽象工厂模式实现模型适配层,核心接口设计:

代码语言:typescript

AI代码解释

interface AIModel {generate(prompt: string, params: object): Promise<ImageResult>;getCreditCost(): number;
}// 具体实现示例
class StableDiffusionModel implements AIModel {async generate(prompt: string, params: object): Promise<ImageResult> {// 模型特定参数转换const sdParams = this.transformParams(params);// 调用API生成图片return await this.callGenerationAPI(prompt, sdParams);}getCreditCost(): number {return 1; // 每次生成消耗的积分}
}
3.2 参数化生成引擎

实现动态参数验证系统:

  1. 尺寸校验算法:确保生成图片尺寸符合模型要求function validateDimensions(width: number, height: number, model: AIModel): boolean { const maxPixels = model.getMaxPixels(); const aspectRatio = width / height; if (width * height > maxPixels) return false; if (aspectRatio < 0.5 || aspectRatio > 2) return false; return true; }
  2. 风格预设模板:用户可选预定义风格const stylePresets = { realistic: "高度写实,细节丰富,自然光照", anime: "动漫风格,鲜艳色彩,线条清晰", watercolor: "水彩画效果,柔和色调,半透明", // 更多风格... };
  3. 安全词过滤器:防止生成不适当内容function filterPrompt(prompt: string): string { const bannedWords = loadBannedWordsList(); let filteredPrompt = prompt; bannedWords.forEach(word => { filteredPrompt = filteredPrompt.replace(new RegExp(word, 'gi'), '****'); }); return filteredPrompt; }
3.3 前端用户界面

基于Next.js 14和Tailwind CSS构建的响应式界面:

  1. 提示词编辑器:支持历史记录和模板
  2. 参数调节面板:直观调整生成参数
  3. 画廊组件:展示和管理生成结果
  4. 用户积分系统:控制API使用量

4. EdgeOne部署与性能优化

4.1 EdgeOne配置流程
  1. 域名接入
    • 在EdgeOne控制台添加域名(如ai-image.example.com
    • 配置CNAME记录指向EdgeOne分配的域名
    • 验证域名所有权
  2. 加速配置
    • 设置源站信息(我们的API服务器地址)
    • 配置缓存规则:
      • 静态资源:缓存时间设置为7天
      • API响应:使用Cache-Control头控制
      • 生成图片:缓存24小时,通过版本参数刷新
  3. 安全防护设置
    • 开启DDoS防护
    • 配置WAF规则,特别针对API接口
    • 设置自定义CC防护策略,限制单IP请求频率

4.2 性能优化策略
4.2.1 静态资源优化
  1. 资源压缩
    • 启用EdgeOne的Brotli/Gzip压缩
    • 前端资源打包优化,减少文件体积
  2. 预加载关键资源
    • 使用<link rel="preload">预加载关键CSS/JS
    • 实现资源优先级策略
  3. 图片优化
    • 使用EdgeOne图片处理功能自动转换为WebP/AVIF格式
    • 实现响应式图片加载
4.2.2 API性能优化
  1. 请求合并
    • 实现批量处理API,减少请求次数
    • 使用GraphQL优化数据获取
  2. 智能缓存
    • 对相似提示词的生成结果进行缓存
    • 实现渐进式加载策略
  3. 预生成热门模板
    • 分析用户常用提示词
    • 预生成热门模板图片并缓存
4.3 性能测试结果

我们使用WebPageTest和Lighthouse对优化前后进行了测量:

指标

优化前

EdgeOne优化后

提升

首屏加载时间

3.2秒

0.8秒

75%

TTFB

320ms

78ms

76%

图片生成等待时间

8.5秒

4.2秒

51%

全球平均访问速度

2.8秒

0.9秒

68%

中国用户访问速度

5.6秒

1.1秒

80%

关键发现:中国用户访问速度提升最为显著,从原本几乎无法使用的状态(5.6秒)提升到了流畅体验(1.1秒)。

5. 全球化部署实践

5.1 多区域用户体验优化

EdgeOne的全球节点分布使我们能够为不同地区用户提供一致的体验:

  1. 智能DNS解析
    • 用户自动路由到最近的EdgeOne节点
    • 减少DNS解析时间
  2. 区域特定优化
    • 针对中国用户:优化字体加载,使用本地CDN
    • 针对欧美用户:预加载高清资源
    • 针对东南亚用户:优化移动端体验
5.2 跨区域资源调度

为解决AI模型在不同区域的部署问题,我们实现了智能资源调度系统:

代码语言:typescript

AI代码解释

class GlobalResourceScheduler {// 根据用户地理位置选择最佳模型服务器selectOptimalModelServer(userRegion: string): string {const availableServers = this.getAvailableServers();const rankedServers = this.rankServersByProximity(availableServers, userRegion);// 考虑服务器负载和网络状况return this.balanceLoadAndProximity(rankedServers);}// 监控全球服务质量monitorGlobalServiceQuality() {// 实时监控各区域响应时间// 自动调整路由策略}
}
5.3 合规性与本地化

不同地区对AI生成内容有不同的合规要求,我们实现了区域特定的合规过滤:

代码语言:typescript

AI代码解释

function applyRegionalCompliance(prompt: string, region: string): string {const regionalRules = loadRegionalComplianceRules(region);// 应用区域特定的内容过滤规则let compliantPrompt = prompt;regionalRules.forEach(rule => {compliantPrompt = rule.apply(compliantPrompt);});return compliantPrompt;
}

6. 安全防护实践

6.1 DDoS防护效果

在项目上线后的第一个月,我们经历了几次小规模DDoS攻击,EdgeOne的防护效果显著:

攻击类型

攻击规模

EdgeOne处理结果

服务影响

SYN Flood

2.3Gbps

完全缓解

无影响

HTTP Flood

8000 QPS

自动限流处理

轻微延迟增加

混合攻击

3.8Gbps

完全缓解

无影响

6.2 内容安全与水印

为保护生成内容和防止滥用,我们实现了多层次安全措施:

  1. 不可见数字水印
    • 在生成图片中嵌入不可见水印
    • 包含用户ID和生成时间戳
    • 使用EdgeOne的图片处理功能保持水印完整性
  2. 内容安全审核
    • 利用EdgeOne的内容审核功能
    • 对生成图片进行实时审核
    • 自动过滤不适当内容
  3. 访问控制
    • 基于EdgeOne的地域访问控制
    • 实现精细的权限管理

7. 开发过程全记录

7.1 工具调用规范实践

代码语言:mermaid

AI代码解释

graph LRG[需求分析] --> H[工具选择]H --> I[参数验证]I --> J[执行调用]J --> K[结果验证]

在开发过程中,我们建立了严格的工具调用规范:

  1. 需求分析:明确定义每个AI模型的调用需求
  2. 工具选择:根据需求选择最合适的模型和参数
  3. 参数验证:实现多层参数校验,确保安全有效
  4. 执行调用:统一的调用接口,处理异常情况
  5. 结果验证:验证生成结果的质量和合规性
7.2 典型工作流示例
7.2.1 文件操作沙箱约束

为确保系统安全,我们实现了严格的文件操作沙箱:

代码语言:typescript

AI代码解释

class SecureFileManager {private readonly allowedDirectories: string[] = ['/uploads', '/temp', '/public/images'];validatePath(path: string): boolean {// 检查路径是否在允许的目录中return this.allowedDirectories.some(dir => path.startsWith(dir));}async writeFile(path: string, content: Buffer): Promise<void> {if (!this.validatePath(path)) {throw new Error('Security violation: Path not allowed');}// 安全地写入文件await fs.promises.writeFile(path, content);}
}
7.2.2 代码变更控制协议

我们建立了严格的代码变更控制流程:

  1. 变更提案:详细描述变更目的和实现方案
  2. 安全审查:评估变更对系统安全的影响
  3. 性能评估:测量变更对系统性能的影响
  4. A/B测试:在小范围用户中测试变更效果
  5. 全面部署:通过EdgeOne分阶段全球部署
7.2.3 Shell执行环境规范

为确保部署和运维安全,我们实现了严格的Shell执行环境规范:

代码语言:typescript

AI代码解释

class SecureShellExecutor {private readonly allowedCommands: RegExp[] = [/^git (pull|status|log)/,/^npm (install|run|test)/,/^docker (ps|logs|restart)/];validateCommand(command: string): boolean {return this.allowedCommands.some(pattern => pattern.test(command));}async executeCommand(command: string): Promise<string> {if (!this.validateCommand(command)) {throw new Error(`Security violation: Command not allowed: ${command}`);}// 安全地执行命令return new Promise((resolve, reject) => {exec(command, (error, stdout, stderr) => {if (error) reject(error);else resolve(stdout);});});}
}

8. 项目成果与未来展望

8.1 关键成果
  1. 性能提升
    • 全球访问速度提升68%
    • 中国用户访问速度提升80%
    • 图片生成等待时间减少51%
  2. 成本节约
    • 利用EdgeOne免费套餐,节约CDN成本约85%
    • 减少了原本需要的多区域部署成本
    • 降低了安全防护投入
  3. 用户体验改善
    • 用户满意度从72%提升至94%
    • 平均会话时长增加35%
    • 图片生成量增加128%
8.2 技术价值
  1. 架构创新
    • 实现了"全球一致、本地优化"的部署模式
    • 建立了可扩展的多模型调度系统
    • 开发了高效的资源调度算法
  2. 开源贡献
    • 项目核心组件已在Gitee开源:ai-image-generator-starter
    • 贡献了EdgeOne集成最佳实践文档
    • 开发了多个社区插件
8.3 未来规划
  1. 功能扩展
    • 支持视频生成和编辑
    • 实现跨模态内容创作
    • 开发企业级API管理平台
  2. 技术优化
    • 实现边缘计算模型推理
    • 开发自适应内容分发算法
    • 构建全球化内容合规系统
  3. 商业化路径
    • 提供企业级定制服务
    • 开发垂直行业解决方案
    • 建立创作者生态系统

9. 实用部署指南

9.1 EdgeOne快速部署步骤
  1. 注册腾讯云账号
    • 访问腾讯云官网注册账号
    • 进入EdgeOne控制台:https://console.cloud.tencent.com/edgeone
  2. 添加域名
    • 在EdgeOne控制台点击"添加站点"
    • 输入您的域名(如ai-image.example.com)
    • 选择"免费套餐"
  3. 配置CNAME
    • 获取EdgeOne分配的CNAME记录
    • 在您的域名注册商处添加此CNAME记录
    • 等待域名验证完成(通常5-30分钟)
  4. 配置源站
    • 添加您的源站信息(API服务器地址)
    • 配置源站协议(HTTP/HTTPS)
    • 设置回源Host头(如需要)
  5. 缓存配置
    • 设置静态资源缓存规则
    • 配置API响应缓存策略
    • 设置缓存刷新规则
  6. 安全设置
    • 开启DDoS防护
    • 配置WAF规则
    • 设置访问控制策略
  7. 部署验证
    • 使用多地ping测试全球访问速度
    • 验证缓存生效情况
    • 测试安全防护效果
9.2 项目部署流程
  1. 克隆项目代码:git clone https://gitee.com/guzhangmvp/ai-image-generator-starter.git cd ai-image-generator-starter
  2. 安装依赖:npm install
  3. 配置环境变量
    • 创建.env.local文件
    • 添加必要的API密钥和配置
  4. 本地开发:npm run dev
  5. 构建生产版本:npm run build
  6. 部署到服务器
    • 使用CI/CD流程自动部署
    • 或手动部署到您的服务器
  7. 配置EdgeOne
    • 按照9.1节的步骤配置EdgeOne
    • 将源站指向您的服务器

实现效果如下:

10. 总结与反思

10.1 技术选型反思

在项目开发过程中,我们经历了几次技术选型调整:

  1. 从传统CDN到EdgeOne
    • 最初计划使用传统CDN+自建安全防护
    • 发现成本高昂且配置复杂
    • EdgeOne一体化解决方案大幅简化了架构
  2. 从单一模型到多模型支持
    • 初期仅支持Stable Diffusion
    • 用户需求推动我们扩展到多模型支持
    • 抽象工厂模式使扩展变得简单
  3. 从自建缓存到EdgeOne智能缓存
    • 最初计划自建复杂的缓存系统
    • EdgeOne的智能缓存功能使这变得不必要
    • 节省了大量开发和维护成本
10.2 经验教训
  1. 全球化思维
    • 从项目初期就考虑全球用户体验
    • 不同地区用户有不同的网络条件和使用习惯
    • EdgeOne解决了我们最大的全球化障碍
  2. 性能优先
    • AI生成应用对性能要求极高
    • 用户等待时间是关键体验指标
    • 分层缓存策略显著提升了用户体验
  3. 安全意识
    • AI应用面临独特的安全挑战
    • 内容安全和系统安全同等重要
    • EdgeOne的安全功能为我们节省了大量安全开发工作
10.3 对开发者的建议

如果您计划开发类似的AI应用,我们有以下建议:

  1. 利用EdgeOne免费套餐
    • 不要被"免费≠中国可用"的行业常态所限制
    • EdgeOne提供真正全球化的免费解决方案
    • 从项目初期就规划全球部署策略
  2. 关注用户等待体验
    • AI生成过程本身较慢,优化周边体验至关重要
    • 实现渐进式加载和预生成策略
    • 利用EdgeOne的缓存功能减少重复生成
  3. 构建可扩展架构
    • AI技术发展迅速,架构需要适应新模型
    • 使用抽象层隔离具体模型实现
    • 设计灵活的参数映射系统

通过本项目,我们不仅构建了一个高性能的AI图片生成器,更验证了EdgeOne在全球化AI应用部署中的巨大价值。免费却强大的EdgeOne服务,真正打破了地域壁垒,让我们能够为全球用户(特别是中国用户)提供一致的高质量体验。

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

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

相关文章

一、Java 基础入门:从 0 到 1 认识 Java(详细笔记)

1.1 Java 语言简介与发展历程 Java 是一门面向对象的高级编程语言&#xff0c;以“跨平台、安全、稳定”为核心特性&#xff0c;自诞生以来长期占据编程语言排行榜前列&#xff0c;广泛应用于后端开发、移动端开发、大数据等领域。 1.1.1 起源与核心人物 起源背景&#xff1…

uniapp:根据目的地经纬度,名称,唤起高德/百度地图来导航,兼容App,H5,小程序

1、需要自行申请高德地图的key,配置manifest.json 2、MapSelector选择组件封装 <template><view><u-action-sheet :list="mapList" v-model="show" @click="changeMap"></u-action-sheet></view> </template&…

我对 WPF 动摇时的选择:.NET Framework 4.6.2+WPF+Islands+UWP+CompostionApi

目录 NET Framework 4.6.2的最大亮点 为什么固守462不升级 WPF-开发体验的巅峰 为什么对WPF动摇了 基于IslandsUWP的滤镜尝试 总结 NET Framework 4.6.2的最大亮点 安全性能大提升&#xff1a; 默认启用TLS1.2协议&#xff0c;更安全&#xff0c;它为后续的版本提供了重…

SpringBoot大文件下载失败解决方案

SpringBoot大文件下载失败解决方案 后端以文件流方式给前端接收下载文件,文件过大时出现下载失败的情况或者打开后提示文件损坏,实际是字节未完全读取写入。 针对大文件下载失败的情况,以下是详细的解决方案: 大文件下载失败的主要原因 内存溢出:一次性加载大文件到内存…

torch.gather

torch.gather 介绍 torch.gather(input, dim, index, *, sparse_gradFalse, outNone) → Tensor 沿由 dim 指定的轴收集值。 对于三维张量&#xff0c;输出按如下方式确定&#xff1a; out[i][j][k] input[index[i][j][k]][j][k] # 如果 dim 0 out[i][j][k] input[i][i…

Golang | http/server Gin框架简述

http/server http指的是Golang中的net/http包&#xff0c;这里用的是1.23.10。 概览 http包的作用文档里写的很简明&#xff1a;Package http provides HTTP client and server implementations. 主要是提供http的客户端和服务端&#xff0c;也就是能作为客户端发http请求&a…

Vision Transformer (ViT) :Transformer在computer vision领域的应用(三)

Experiment 上来的一段话就概括了整章的内容。 We evaluate the representation learning capabilities of ResNet, Vision Transformer (ViT), and the hybrid. 章节的一开头就说明了,对比的模型就是 ResNet,CNN领域中的代码模型。 ViT。 上一篇中提到的Hybrid模型,也就是…

5-12 WPS JS宏 Range数组规范性测试

Range()数组是JS宏中不缺少的组成部分,了解Range()数组的特性必不可少,下面我们一起测试一下各种Range()数组。 1.Range()数组特性 单元格区域:Range("a2:m2")与Range("a2","m2")的类型都是:Range/Object,功能都为单元格区域,功能…

uniapp微信小程序保存海报到手机相册canvas

在uniapp中实现微信小程序保存海报到手机相册&#xff0c;主要涉及Canvas绘制和图片保存。以下是关键步骤和代码示例&#xff1a; 一、关键代码展示&#xff1a; 1. 模板配置&#xff1a;页面展示该海报&#xff0c;可直接查看&#xff0c;也可下载保存到手机相册&#xff0c;h…

glib2-2.62.5-7.ky10.x86_64.rpm怎么安装?Kylin Linux RPM包安装详细步骤

一、准备工作 ​确认系统版本​ 这个包是 ky10的&#xff08;也就是 openEuler 20.03 LTS SP3 或类似版本&#xff09;&#xff0c;而且是 ​x86_64 架构&#xff08;就是常见的64位电脑&#xff09;​。 你要先确认你的系统是不是这个版本&#xff0c;不然可能装不上或者出问题…

webrtc之语音活动下——VAD人声判定原理以及源码详解

文章目录前言一、高斯混合模型介绍1.高斯模型举例1&#xff09;定义2&#xff09;举例说明2.高斯混合模型(GMM)1&#xff09;定义2&#xff09;举例说明3&#xff09;一维曲线二、VAD高斯混合模型1.模型训练介绍1&#xff09;训练方法2&#xff09;训练结果2.噪声高斯模型分布1…

【Redis】-- 主从复制

文章目录1. 主从复制1.1 主从复制是怎么个事&#x1f914;1.2 拓扑结构1.2.1 一主一从拓扑1.2.2 一主多从拓扑1.2.3 树形拓扑1.3 主从复制原理1.3.1 复制过程1.3.2 数据同步PSYNC1.3.2.1 replicationid/replid (复制id)1.3.2.2 复制偏移量维护1.3.3 psync运行流程1.3.4 全量复制…

开源炸场!阿里通义千问Qwen3-Next发布:80B参数仅激活3B,训练成本降90%,长文本吞吐提升10倍​

开源炸场&#xff01;阿里通义千问Qwen3-Next发布&#xff1a;80B参数仅激活3B&#xff0c;训练成本降90%&#xff0c;长文本吞吐提升10倍​ 开源世界迎来震撼突破&#xff01; 通义千问团队最新发布的Qwen3-Next架构&#xff0c;以其独创的"小而精"设计理念&#x…

【C++入门】C++基础

目录 1. 命名空间 1.1 命名空间的创建和使用 2. 输入输出 2.1 输出 2.2 输入 3. 缺省参数 3.1 全缺省 3.2 半缺省 4.函数重载 4.1 为什么C支持重载而C语言不支持&#xff1f; 4.1.2 编译的四个过程 4.2 extern是什么 5.引用 5.1 引用的特性 5.1.1 引用的“隐式类…

如何往mp4视频添加封面图和获取封面图?

前言&#xff1a;大家好&#xff0c;之前有给大家分享过mp4录像的方案&#xff0c;今天给大家分享的内容是&#xff1a;如何在添加自定义的封面图到mp4里面去&#xff0c;以及在进入回放mp4视频列表的时候&#xff0c;怎么获取mp4视频里面的封面图&#xff0c;当然这个获取到的…

你的第一个Transformer模型:从零实现并训练一个迷你ChatBot

点击 “AladdinEdu&#xff0c;同学们用得起的【H卡】算力平台”&#xff0c;注册即送-H卡级别算力&#xff0c;80G大显存&#xff0c;按量计费&#xff0c;灵活弹性&#xff0c;顶级配置&#xff0c;学生更享专属优惠。 引言&#xff1a;破除神秘感&#xff0c;拥抱核心思想 …

【20期】沪深指数《实时交易数据》免费获取股票数据API:PythonJava等5种语言调用实例演示与接口API文档说明

​ 随着量化投资在金融市场的快速发展&#xff0c;高质量数据源已成为量化研究的核心基础设施。本文将系统介绍股票量化分析中的数据获取解决方案&#xff0c;涵盖实时行情、历史数据及基本面信息等关键数据类型。 本文将重点演示这些接口在以下技术栈中的实现&#xff1a; P…

RabbitMQ如何保障消息的可靠性

文章目录什么是消息可靠性&#xff1f;RabbitMQ消息可靠性的三个维度1. 生产者到Exchange的可靠性2. Exchange到Queue的可靠性3. Queue到消费者的可靠性核心机制详解Publisher Confirm机制消息持久化Mandatory参数消费者确认机制&#xff08;ACK&#xff09;最佳实践建议1. 合理…

二十、DevOps落地:Jenkins基础入门(一)

二十、DevOps落地&#xff1a;Jenkins基础入门&#xff08;一&#xff09; 文章目录二十、DevOps落地&#xff1a;Jenkins基础入门&#xff08;一&#xff09;1、DevOps初识1.1 什么是DevOps1.2 DevOps相关工具链1.3 什么是CICD&#xff1f;1.4 持续集成CI介绍1.5 持续交付和持…

简单易实现的数据校验方法Checksum

简单易实现的数据校验方法Checksum 在数据传输中&#xff0c;Checksum&#xff08;校验和&#xff09; 扮演着 “数据完整性哨兵” 的角色。它的主要作用是 快速检测数据在传输过程中是否发生了错误 。 下面我将详细解释它的作用、工作原理、优缺点以及典型应用。 核心作用&…