引言

在当今的 AI 应用开发领域,选择合适的部署方式对于应用的性能表现资源利用成本控制至关重要。华为云为开发者提供了多样化的部署选择,其中基于单机 Flexus 实例的基础版部署和基于 CCE 容器的高可用版部署是两种常见的方式。本文将深入对比这两种部署方式在性能及其他方面的差异,帮助开发者更好地根据自身需求做出决策。

架构设计的本质差异

单机 Flexus X 的轻核架构解析

单机 Flexus X 实例采用单节点物理机部署范式,以 x1.8u.16g 规格云服务器为核心载体,标配 100GB EVS 系统盘300Mbit/s 公网带宽。这种架构遵循 “All-In-One” 设计理念,将 LLM 推理引擎、向量数据库、API 网关等组件集成于单一计算节点,如同独立工坊的全流程作业模式。部署链路呈现线性特征:通过华为云控制台完成服务器创建后,执行镜像加载、环境配置、服务启动三步操作,典型部署耗时约 20 分钟,适合 POC 验证与小型应用场景。

在这里插入图片描述

CCE 容器的分布式网格架构

CCE 容器集群构建了多层级分布式体系,核心组件包括:

  • 计算层: 3 台 x1.16u.16g 规格 Flexus 节点组成 Kubernetes 集群
  • 流量调度层: ELB 负载均衡与 NAT 网关构成的智能路由系统
  • 存储体系: OBS 对象存储与 RDS PostgreSQL 形成的混合存储架构
  • 缓存加速层: 4GB Redis Cluster 分布式缓存集群

该架构采用微服务网格化设计,将 Dify 系统拆分为推理服务、Embedding 服务、路由网关等独立容器组,通过 Service Mesh 实现服务间通信。部署过程引入声明式配置,需完成集群创建、节点池配置、服务编排文件编写等操作,典型部署耗时约 90 分钟,形成 “计算 - 存储 - 调度” 解耦的弹性架构体系。

在这里插入图片描述

核心性能指标实测对比

基准测试环境构建

测试维度单机 Flexus 基础版CCE 容器高可用版
计算节点规格x1.8u.16g(8 核 16GB)x1.16u.16g×3(16 核 48GB)
存储配置100GB EVS(普通 IO)OBS+RDS(SSD 存储池)
网络配置300Mbit/s 公网带宽300Mbit/s×3+ELB 流量分发
测试工具JMeter+Grafana+Prometheus同上
  • JMeter:负责模拟用户请求、生成负载并收集基础性能指标
  • Prometheus:通过插件或 exporter 收集 JMeter 及系统指标,存储时间序列数据
  • Grafana:从 Prometheus 拉取数据,以可视化图表展示性能趋势

实现步骤

以下是针对 CPU、内存、网络性能测试的 JMeter 脚本:

<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.5"><hashTree><TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="性能综合测试计划" enabled="true"><stringProp name="TestPlan.comments">Flexus与CCE性能对比测试</stringProp><boolProp name="TestPlan.functional_mode">false</boolProp><boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp><boolProp name="TestPlan.serialize_threadgroups">false</boolProp><elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true"><collectionProp name="Arguments.arguments"/></elementProp><stringProp name="TestPlan.user_define_classpath"></stringProp></TestPlan><hashTree><!-- 1. CPU性能测试线程组 --><ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="DeepSeek-LLM推理测试" enabled="true"><stringProp name="ThreadGroup.on_sample_error">continue</stringProp><elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="循环控制器" enabled="true"><boolProp name="LoopController.continue_forever">false</boolProp><intProp name="LoopController.loops">100</intProp></elementProp><stringProp name="ThreadGroup.num_threads">50</stringProp> <!-- 50个并发用户 --><stringProp name="ThreadGroup.ramp_time">10</stringProp> <!-- 10秒内启动所有线程 --><boolProp name="ThreadGroup.scheduler">true</boolProp> <!-- 启用调度器 --><stringProp name="ThreadGroup.duration">300</stringProp> <!-- 测试持续300秒 --><stringProp name="ThreadGroup.delay">0</stringProp><boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp></ThreadGroup><hashTree><!-- CPU测试HTTP请求 --><HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="LLM推理API请求" enabled="true"><elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true"><collectionProp name="Arguments.arguments"><elementProp name="prompt" elementType="HTTPArgument"><boolProp name="HTTPArgument.always_encode">false</boolProp><stringProp name="Argument.value">生成1000词的文本内容</stringProp><stringProp name="Argument.metadata">=</stringProp><boolProp name="HTTPArgument.use_equals">true</boolProp><stringProp name="Argument.name">prompt</stringProp></elementProp></collectionProp></elementProp><stringProp name="HTTPSampler.domain">your-api-domain.com</stringProp><stringProp name="HTTPSampler.port">8080</stringProp><stringProp name="HTTPSampler.protocol">http</stringProp><stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp><stringProp name="HTTPSampler.path">/inference</stringProp><stringProp name="HTTPSampler.method">POST</stringProp><boolProp name="HTTPSampler.follow_redirects">true</boolProp><boolProp name="HTTPSampler.auto_redirects">false</boolProp><boolProp name="HTTPSampler.use_keepalive">true</boolProp><boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp><stringProp name="HTTPSampler.embedded_url_re"></stringProp><stringProp name="HTTPSampler.connect_timeout">30000</stringProp><stringProp name="HTTPSampler.response_timeout">60000</stringProp></HTTPSamplerProxy><hashTree><!-- Prometheus指标输出插件配置 --><ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="汇总报告" enabled="true"><boolProp name="ResultCollector.error_logging">false</boolProp><objProp><name>saveConfig</name><value class="SampleSaveConfiguration"><time>true</time><latency>true</latency><timestamp>true</timestamp><success>true</success><label>true</label><code>true</code><message>true</message><threadName>true</threadName><dataType>true</dataType><encoding>false</encoding><assertions>true</assertions><subresults>true</subresults><responseData>false</responseData><samplerData>false</samplerData><xml>false</xml><fieldNames>true</fieldNames><responseHeaders>false</responseHeaders><requestHeaders>false</requestHeaders><responseDataOnError>false</responseDataOnError><saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage><assertionsResultsToSave>0</assertionsResultsToSave><bytes>true</bytes><sentBytes>true</sentBytes><url>true</url><threadCounts>true</threadCounts><idleTime>true</idleTime><connectTime>true</connectTime></value></objProp><stringProp name="filename"></stringProp></ResultCollector><hashTree/><!-- Prometheus插件配置 --><ResultCollector guiclass="PrometheusRemoteListenerGui" testclass="ResultCollector" testname="Prometheus远程监听器" enabled="true"><boolProp name="ResultCollector.error_logging">false</boolProp><objProp><name>saveConfig</name><value class="SampleSaveConfiguration"><time>true</time><latency>true</latency><timestamp>true</timestamp><success>true</success><label>true</label><code>true</code><message>true</message><threadName>true</threadName><dataType>true</dataType><encoding>false</encoding><assertions>true</assertions><subresults>true</subresults><responseData>false</responseData><samplerData>false</samplerData><xml>false</xml><fieldNames>true</fieldNames><responseHeaders>false</responseHeaders><requestHeaders>false</requestHeaders><responseDataOnError>false</responseDataOnError><saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage><assertionsResultsToSave>0</assertionsResultsToSave><bytes>true</bytes><sentBytes>true</sentBytes><url>true</url><threadCounts>true</threadCounts><idleTime>true</idleTime><connectTime>true</connectTime></value></objProp><stringProp name="filename"></stringProp><stringProp name="prometheus.host">prometheus-server</stringProp><stringProp name="prometheus.port">9091</stringProp><stringProp name="summary.quantiles">0.5;0.9;0.99</stringProp><stringProp name="registry.name">jmeter-test</stringProp></ResultCollector><hashTree/></hashTree></hashTree><!-- 2. 内存与存储性能测试线程组 --><ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="内存与存储测试" enabled="true"><stringProp name="ThreadGroup.on_sample_error">continue</stringProp><elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="循环控制器" enabled="true"><boolProp name="LoopController.continue_forever">false</boolProp><intProp name="LoopController.loops">200</intProp></elementProp><stringProp name="ThreadGroup.num_threads">100</stringProp><stringProp name="ThreadGroup.ramp_time">20</stringProp><boolProp name="ThreadGroup.scheduler">true</boolProp><stringProp name="ThreadGroup.duration">600</stringProp><stringProp name="ThreadGroup.delay">0</stringProp><boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp></ThreadGroup><hashTree><!-- 内存测试:大文件传输 --><HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="大文件上传测试" enabled="true"><elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true"><collectionProp name="Arguments.arguments"><elementProp name="file" elementType="HTTPArgument"><boolProp name="HTTPArgument.always_encode">false</boolProp><stringProp name="Argument.value">/path/to/large/file.zip</stringProp><stringProp name="Argument.metadata">=</stringProp><boolProp name="HTTPArgument.use_equals">true</boolProp><stringProp name="Argument.name">file</stringProp><boolProp name="HTTPArgument.isFile">true</boolProp></elementProp></collectionProp></elementProp><stringProp name="HTTPSampler.domain">storage-service.com</stringProp><stringProp name="HTTPSampler.port">80</stringProp><stringProp name="HTTPSampler.protocol">http</stringProp><stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp><stringProp name="HTTPSampler.path">/upload</stringProp><stringProp name="HTTPSampler.method">POST</stringProp><boolProp name="HTTPSampler.follow_redirects">true</boolProp><boolProp name="HTTPSampler.auto_redirects">false</boolProp><boolProp name="HTTPSampler.use_keepalive">true</boolProp><boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp><stringProp name="HTTPSampler.embedded_url_re"></stringProp><stringProp name="HTTPSampler.connect_timeout">30000</stringProp><stringProp name="HTTPSampler.response_timeout">60000</stringProp></HTTPSamplerProxy><hashTree/></hashTree><!-- 3. 网络并发性能测试线程组 --><ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="网络并发测试" enabled="true"><stringProp name="ThreadGroup.on_sample_error">continue</stringProp><elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="循环控制器" enabled="true"><boolProp name="LoopController.continue_forever">true</boolProp><intProp name="LoopController.loops">-1</intProp></elementProp><stringProp name="ThreadGroup.num_threads">1000</stringProp> <!-- 1000并发用户 --><stringProp name="ThreadGroup.ramp_time">30</stringProp> <!-- 30秒启动所有线程 --><boolProp name="ThreadGroup.scheduler">true</boolProp><stringProp name="ThreadGroup.duration">900</stringProp> <!-- 测试15分钟 --><stringProp name="ThreadGroup.delay">0</stringProp><boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp></ThreadGroup><hashTree><!-- 网络测试:短连接请求 --><HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP短连接测试" enabled="true"><elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true"><collectionProp name="Arguments.arguments"/></elementProp><stringProp name="HTTPSampler.domain">web-service.com</stringProp><stringProp name="HTTPSampler.port">80</stringProp><stringProp name="HTTPSampler.protocol">http</stringProp><stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp><stringProp name="HTTPSampler.path">/api/health</stringProp><stringProp name="HTTPSampler.method">GET</stringProp><boolProp name="HTTPSampler.follow_redirects">true</boolProp><boolProp name="HTTPSampler.auto_redirects">false</boolProp><boolProp name="HTTPSampler.use_keepalive">false</boolProp> <!-- 关闭长连接 --><boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp><stringProp name="HTTPSampler.embedded_url_re"></stringProp><stringProp name="HTTPSampler.connect_timeout">5000</stringProp><stringProp name="HTTPSampler.response_timeout">5000</stringProp></HTTPSamplerProxy><hashTree/></hashTree></hashTree></hashTree>
</jmeterTestPlan>
Prometheus 主配置文件 (prometheus.yml)
global:scrape_interval:     15s # 数据抓取间隔evaluation_interval: 15s # 规则评估间隔# 配置JMeter指标抓取
scrape_configs:- job_name: 'jmeter'static_configs:- targets: ['jmeter-server:9091'] # JMeter Prometheus插件端口metrics_path: '/metrics'- job_name: 'application'static_configs:- targets: ['flexus-app:8080', 'cce-app:8080'] # 被测应用端点metrics_path: '/actuator/prometheus' # Spring Boot应用示例路径- job_name: 'node-exporter'static_configs:- targets: ['flexus-node:9100', 'cce-node1:9100', 'cce-node2:9100', 'cce-node3:9100']metrics_path: '/metrics'# 配置性能测试相关指标规则
rule_files:- "rules/cpu-metrics.yml"- "rules/memory-metrics.yml"- "rules/network-metrics.yml"
节点监控配置 (node-exporter) 需在每个测试节点部署 node-exporter:
# 启动命令
docker run -d --name node-exporter \-v "/proc:/host/proc:ro" \-v "/sys:/host/sys:ro" \-v "/:/rootfs:ro" \-p 9100:9100 \prom/node-exporter \--path.procfs /host/proc \--path.sysfs /host/sys \--collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

Grafana 仪表盘配置,以下是核心性能指标仪表盘的 JSON 配置片段,可导入 Grafana:

{"id": 1,"title": "性能测试综合仪表盘","panels": [{"gridPos": {"h": 6,"w": 12,"x": 0,"y": 0},"id": 2,"title": "CPU性能对比","type": "graph","targets": [{"expr": "rate(jmeter_threads_running{job=\"jmeter\", instance=~\"flexus.*\"}[1m])","legendFormat": "Flexus 线程数","refId": "A"},{"expr": "rate(jmeter_threads_running{job=\"jmeter\", instance=~\"cce.*\"}[1m])","legendFormat": "CCE 线程数","refId": "B"},{"expr": "avg by(instance) (node_cpu_seconds_total{mode=\"user\"})","legendFormat": "用户CPU使用率","refId": "C"}]},{"gridPos": {"h": 6,"w": 12,"x": 12,"y": 0},"id": 3,"title": "响应时间分布","type": "graph","targets": [{"expr": "histogram_quantile(0.95, sum(rate(jmeter_sample_time_bucket{job=\"jmeter\", instance=~\"flexus.*\", label=\"LLM推理API请求\"}[1m])) by (le))","legendFormat": "Flexus P95响应时间","refId": "A"},{"expr": "histogram_quantile(0.95, sum(rate(jmeter_sample_time_bucket{job=\"jmeter\", instance=~\"cce.*\", label=\"LLM推理API请求\"}[1m])) by (le))","legendFormat": "CCE P95响应时间","refId": "B"},{"expr": "histogram_quantile(0.99, sum(rate(jmeter_sample_time_bucket{job=\"jmeter\", instance=~\"flexus.*\", label=\"LLM推理API请求\"}[1m])) by (le))","legendFormat": "Flexus P99响应时间","refId": "C"}]},{"gridPos": {"h": 6,"w": 12,"x": 0,"y": 6},"id": 4,"title": "吞吐量对比","type": "graph","targets": [{"expr": "rate(jmeter_samples_total{job=\"jmeter\", instance=~\"flexus.*\", label=\"LLM推理API请求\", result=\"success\"}[1m])","legendFormat": "Flexus 成功请求/秒","refId": "A"},{"expr": "rate(jmeter_samples_total{job=\"jmeter\", instance=~\"cce.*\", label=\"LLM推理API请求\", result=\"success\"}[1m])","legendFormat": "CCE 成功请求/秒","refId": "B"},{"expr": "rate(jmeter_samples_total{job=\"jmeter\", instance=~\"flexus.*\", label=\"LLM推理API请求\"}[1m])","legendFormat": "Flexus 总请求/秒","refId": "C"}]},{"gridPos": {"h": 6,"w": 12,"x": 12,"y": 6},"id": 5,"title": "资源利用率","type": "graph","targets": [{"expr": "100 - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes) / node_memory_MemTotal_bytes * 100","legendFormat": "Flexus 内存利用率","refId": "A"},{"expr": "100 - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes) / node_memory_MemTotal_bytes * 100","legendFormat": "CCE 内存利用率","refId": "B","instance": "cce-node1:9100"},{"expr": "node_network_transmit_bytes_total{device!~\"lo|tun.*\"}/1024/1024","legendFormat": "Flexus 出站带宽(MB/s)","refId": "C"},{"expr": "node_network_transmit_bytes_total{device!~\"lo|tun.*\"}/1024/1024","legendFormat": "CCE 出站带宽(MB/s)","refId": "D","instance": "cce-node1:9100"}]}],"time": {"from": "now-1h","to": "now"}
}

执行测试命令

# 单机执行测试(非GUI模式)
jmeter -n -t performance-test.jmx -l jmeter-results.jtl -j jmeter.log# 分布式执行(假设3台slave节点)
jmeter -n -t performance-test.jmx -l jmeter-results.jtl \-R slave1:1099,slave2:1099,slave3:1099 \-Jprometheus.host=prometheus-server \-Jprometheus.port=9091

资源处理能力实测

CPU 计算性能
  • 单机版单核性能 2979 Scores,8 核并发得分 23660 Scores,处理 1000 词文本生成平均耗时 2.14 秒
  • CCE 集群通过任务分片技术,12 核协同处理时平均耗时降至 1.37 秒,吞吐量提升 56.2%
  • 当并发请求超过 500 时,单机版出现 15% 的请求延迟抖动,而 CCE 集群通过负载均衡保持延迟波动 < 5%

在这里插入图片描述

内存与存储性能
测试项目单机 Flexus 基础版CCE 容器高可用版性能差异
内存带宽22GB/s(直连架构)18GB/s(分布式缓存)下降 18.18%
4K 随机 IOPS1200 IOPS(机械盘模拟)8500 IOPS(OBS+SSD)提升 608.33%
向量检索耗时47ms(100 万维数据)32ms(分布式分片)缩短 31.91%

在这里插入图片描述

网络并发处理能力
  • 单机版最大并发连接数 1.2 万,带宽利用率峰值 82%
  • CCE 集群通过 ELB 分流实现 5.8 万 并发连接,带宽利用率稳定在 75%
  • 在 1000QPS 持续压测中,单机版第 30 分钟出现 23% 请求超时,CCE 集群则保持 98.7% 的请求成功率

在这里插入图片描述

非性能维度的深度解构

技术架构复杂度对比

评估维度单机 Flexus 基础版CCE 容器高可用版
服务弹性手动扩容(需停机操作)自动扩缩容(分钟级响应)
故障恢复能力单点故障(MTTR 4 小时多节点冗余(MTTR 15 分钟
部署技术栈Linux 基础 + DockerKubernetes+Helm+YAML
监控体系基础云监控全链路追踪 + APM

成本与资源效率分析

  • 基础版月度成本:1200 元(含 Flexus 实例 720 元 + EIP 流量 480 元
  • 高可用版月度成本:8500 元(含 3 节点 Flexus 2160 元 + ELB 1200 元 + RDS 2400 元等)
  • 资源利用率对比: 基础版平均 CPU 利用率 45%,高可用版通过资源调度提升至 68%,内存利用率提升 23%

安全防护体系差异

高可用版构建了多层防护架构:

  1. 网络层: ELB 集成 DDoS 清洗 + WAF 防护模块
  2. 容器层: 通过 Seccomp+AppArmor 限制容器权限
  3. 数据层: OBS 加密 + RDS 透明加密 + 备份策略
  4. 管理端: IAM 角色分权 + 操作审计 + 异常行为检测

而基础版主要依赖安全组实现网络隔离,需手动配置防火墙规则,安全防护粒度较粗。

场景化部署决策指南

基础版适用场景图谱

  • 科研实验场景: 高校 NLP 实验室的模型调试环境,支持单节点快速迭代
  • 中小企业应用: 日活 < 5000 的智能客服系统,如电商平台基础咨询服务
  • 开发测试环境: 本地开发团队的 CI/CD 流程,支持单机部署的持续集成

高可用版最佳实践场景

  • 金融级应用: 银行智能客服系统,要求可用性 > 99.95%,支持 7×24 小时不间断服务
  • 电商大促场景: 年中大促期间的智能推荐系统,需应对瞬时 10 万 + QPS 的流量冲击
  • 企业知识中台: 集成千万级向量库的智能检索系统,支持跨部门协同查询

技术演进与选型建议

从实测数据可见,CCE 容器架构通过分布式设计突破了单机性能瓶颈,但引入了架构复杂度。 华为云最新推出的 CCE Turbo 集群结合弹性裸金属技术,将容器化性能损耗从 18% 降低至 9%,在保持弹性的同时接近物理机性能。对于 AI 推理场景,建议关注即将上线的 GPU 容器集群方案,其 vGPU 资源池化技术可使 LLM 推理性能再提升 30%

在部署策略上,推荐采用 “阶梯式演进” 模式:初期使用基础版快速验证业务模型,当日活突破 1 万 或 QPS 超过 200 时,通过华为云容器迁移工具平滑过渡至高可用架构。该策略可实现:

  • 开发阶段成本降低 65%
  • 业务增长时服务零中断迁移
  • 资源利用率随业务规模动态优化

这种分阶段部署方案既能控制初期投入,又为业务扩张预留技术弹性,充分平衡了成本与性能的矛盾关系。

结论

综上所述,单机 Flexus 实例(基础版)和 CCE 容器(高可用版)在性能及其他方面存在明显差异。单机 Flexus 实例部署简单、成本低,适合个人开发者、小型团队进行探索、实验以及构建轻量级应用;而 CCE 容器高可用部署虽然部署和运维复杂度较高、成本也更高,但在 CPU 性能扩展性、内存利用效率、磁盘 IO 性能以及应对高并发网络请求等方面具有显著优势,更适合大型企业级应用、高流量和高并发的业务场景。开发者在选择部署方式时,应综合考虑自身的业务需求、技术能力和成本预算,以选择最适合的部署方案,充分发挥 Dify - LLM 应用开发平台的优势。

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

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

相关文章

钉钉小程序框架:Pinia 状态管理与持久化存储封装

上一篇文章完成了 Pinia 在钉钉小程序中的引入与基础配置 文章地址&#xff1a;钉钉小程序框架引入 Pinia 状态管理-CSDN博客 本文将深入探讨如何通过Pinia 结合持久化存储 实现用户状态 在上一章节中&#xff0c;我们已经完成了 Pinia 在钉钉小程序中的引入与基础配置。本章将…

云计算产业链

一、云计算定义与分类体系 本质特征 按需服务模式&#xff1a;以网络化方式提供可配置的计算资源共享池&#xff08;网络/服务器/存储/应用&#xff09;。核心能力&#xff1a;快速弹性扩容、资源池化共享、按使用量付费、低管理开销。技术原理&#xff1a;通过分布式计算将大型…

git使用详解和示例

什么是 Git&#xff1f; Git 是一个 分布式版本控制系统&#xff08;DVCS&#xff09;&#xff0c;用于跟踪文件的变化&#xff0c;协调多人协作开发。由 Linus Torvalds 开发&#xff0c;用于管理 Linux 内核代码。 Git 的核心概念 名称说明工作区 (Working Directory)你看到…

深度学习的引出

虽然我们的神经⽹络给出了令⼈印象深刻的表现&#xff0c;但这样的表现带有⼏分神秘 ⽹络中的权重和偏置是被⾃动发现的。这意味着我们不能⽴即解释⽹络怎么做的、做了什么。我们能否找 到⼀些⽅法来理解我们的⽹络通过什么原理分类⼿写数字&#xff1f;并且&#xff0c;在知道…

GEO(生成式引擎优化)—— 内容创作者与企业的生死新战场

在搜索引擎优化&#xff08;SEO&#xff09;定义了互联网信息获取规则数十年后&#xff0c;一场由生成式人工智能&#xff08;AIGC&#xff09;驱动的风暴正悄然重塑整个格局。当ChatGPT、Claude、Gemini等AI助手能够直接生成整合后的答案&#xff0c;而非仅仅提供链接列表时&a…

混合密度模型GMM的似然函数(二)

设 Θ { π k , θ k } k 1 K \varTheta \{ \pi_k, \boldsymbol {\theta}_k \}_{k1}^{K} Θ{πk​,θk​}k1K​为参数向量&#xff0c; X { x 1 , ⋯ , x n } \mathcal {X} \{ {\bm x}_1, \cdots, {\bm x}_n \} X{x1​,⋯,xn​}为观测数据&#xff0c;给定数据点的独立性&a…

selenium元素定位

当我们可以打开浏览器后我们如果想要进行web测试我们自然要对网页的一些功能进行单独拿出来进行测试&#xff0c;但是我们要怎么才能拿到我们想要的元素&#xff0c;并且对其进行操作呢。 我们就以百度主页的输入框为例&#xff0c;如果我们想要王输入框中输入一些内容我们就需…

2025第十五届上海生物发酵展:江苏健达干燥盛装赴会

2025 年 8 月 7 - 9 日&#xff0c;上海新国际博览中心将迎来一场生物发酵行业的盛会 —— 第 15 届上海国际生物发酵产品与技术装备展览会&#xff08;BIOCHINA 2025&#xff09;。作为国内干燥设备领域的领军企业&#xff0c;江苏健达干燥工程有限公司受邀盛装参展&#xff0…

【效率工具】单机游戏修改方案:轻量管理器+全能平台组合

大家好&#xff01;今天我要给大家介绍两款超级实用的软件&#xff0c;专门为喜欢玩单机游戏的小伙伴们准备。 一、风灵月影管理器 不想满网翻修改器&#xff1f;这个 27M 的小工具直接帮你一键搞定&#xff0c;这款软件是由B站UP鸦无量 开发。 收录上千款游戏补丁&#xff0c;…

七天学会SpringCloud分布式微服务——01——基础概念

重点是复习体系&#xff0c;从今天6.24开始&#xff0c;确保转化为自己的东西心平气和&#xff0c;脚踏实地学习的是尚硅谷微服务 1、从单体架构到集群架构再到分布式架构 单体架构 就是 所有的功能&#xff08;服务&#xff09;模块 都部署在同一台服务器&#xff08;一台服…

三分钟学会利用deepseek将复杂信息转换成可视化图表

数据可视化是传达复杂信息的重要手段。通过将数据转化为直观的图表、图形和交互式界面,我们可以更高效地理解信息、发现趋势并做出决策。对于普通人来说,要将数据可视化可谓千难万难。但在AI工具飞速发展的今天,这个过程将会变得非常简单。今天分享的内容就是如何使用生成式…

PDF处理控件Spire.PDF系列教程:Python中快速提取PDF文本、表格、图像及文档信息

在 Python 中读取 PDF 文档是实现文档自动化、内容分析和数据提取的基础操作之一。无论你处理的是合同、报告、发票&#xff0c;还是科研论文&#xff0c;能够通过代码访问 PDF 内容&#xff0c;不仅能节省时间&#xff0c;还能带来更高效的处理流程。 要在 Python 中准确提取…

微软人工智能证书AI-102 | 如何快速通过?

微软 AI-102 考试&#xff0c;全称 “Designing and Implementing a Microsoft Azure AI Solution”&#xff0c;是微软推出的用于验证考生在 Azure 平台上设计和实施 AI 解决方案核心能力的认证考试。以下是具体介绍&#xff1a; 考试描述&#xff1a; 考试主要衡量考生实施计…

github使用指南

1、生成SSH密钥对 ssh-keygen -t ed25519 -C "你的github邮箱"然后根据提示保存路径&#xff0c;设置密码 2、将公钥添加到github cat ~/.ssh/id_ed25519.pub复制输出内容。 在gihub中点击New SSH Key&#xff0c;添加密钥 3、配置git使用SSH地址 git remote se…

AD22以上的基础操作

1.检测创建的原理图器件库 2.原理图页加大 Size&#xff1a;常规和自定义 推荐可视化栅格100mil 快捷键VG 3.原理图器件器件号排序 自动排序&#xff1a;快捷键TAA 先解锁 4.BOM(Bill of Material)物料表导出 description描述&#xff1a;类似精度。 导出各种类型bom表 5…

FastAPI技术深度解析与实战指南

导读&#xff1a;在Python Web开发领域经历了Django和Flask多年统治后&#xff0c;FastAPI的崛起正在重新定义API开发的技术标准。这篇深度技术解析将为开发者揭示FastAPI如何通过独特的架构设计解决传统框架的核心痛点。 传统Python Web框架在面对高并发场景时暴露出明显的性能…

Python 可迭代的对象、迭代器 和生成器(何时使用生成器表达式)

何时使用生成器表达式 在示例 10-16 中&#xff0c;为了实现 Vector 类&#xff0c;我用了几个生成器表达 式&#xff0c;eq、hash、abs、angle、angles、format、add 和 __mul__ 方法中各有一个生成器表达式。在这些方法中使用列表推 导也行&#xff0c;不过立即返回的列表要…

复习和预习(C++)答案解析

填空题答案及解释 在 for 循环实现累加时&#xff0c;通常在循环上方初始化累加器变量&#xff0c;如 int m ______。 答案&#xff1a;0 解释&#xff1a;累加器需从 0 开始&#xff0c;才能正确累积后续值的总和。 switch 语句根据表达式的值与各个______后的常量表达式进行…

uniapp处理后端返回的html字符串

前言&#xff1a;采用v-html方法处理 1.处理前 <html><head><meta http‐equiv"Content‐Type" content"text/html; charsetUTF-8"></head><body><form ↵<input type"submit" value"立刻提交"…

如何在 Ubuntu 上通过终端或在 VirtualBox 中安装 GCC

无论你是正在编译 C 程序,还是在 Linux 上从源代码构建软件,GNU 编译器集合(GCC)都是每位 Linux 开发者需要的工具之一,因为它能够编译 C、C++,甚至 Fortran、Ada 等其他语言。但如果你想知道如何在 Ubuntu 上安装 GCC 并设置它来编译代码,别担心——你来对地方了。 本…