ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>91精品国产91久久久久久吃药,精品福利二区三区,亚洲国产日韩a在线播放http://www.aygfsteel.com/all专注于Java技æœ?/description>zh-cnMon, 26 May 2025 08:06:09 GMTMon, 26 May 2025 08:06:09 GMT60长连接网å…ÏxŠ€æœ¯ä¸“é¢?十二)åQšå¤§æ¨¡åž‹æ—¶ä»£å¤šæ¨¡åž‹AI¾|‘关的架构设计与实现http://www.aygfsteel.com/jb2011/archive/2025/05/22/451623.htmlJack JiangJack JiangThu, 22 May 2025 06:08:00 GMThttp://www.aygfsteel.com/jb2011/archive/2025/05/22/451623.htmlhttp://www.aygfsteel.com/jb2011/comments/451623.htmlhttp://www.aygfsteel.com/jb2011/archive/2025/05/22/451623.html#Feedback0http://www.aygfsteel.com/jb2011/comments/commentRss/451623.htmlhttp://www.aygfsteel.com/jb2011/services/trackbacks/451623.html

本文来自哔哩哔哩通用技术团队分享,下文˜q›è¡Œäº†æŽ’版优化和修订ã€?/p>

1、引­a€

随着 AI 技术快速发展,业务å¯?AI 能力的æÍ求日益增é•ѝ€‚当 AI æœåŠ¡é¢å¯¹å¤„ç†å¤§è§„æ¨¡è¯·æ±‚å’Œé«˜åÆˆå‘æµé‡æ—¶åQŒAI ¾|‘关从中扮演着臛_…³é‡è¦çš„角艌Ӏ‚AI 服务通常涉及大量的计½Ž—ä“Q务和讑֤‡èµ„源占用åQŒæ­¤æ—‰™œ€è¦ä¸€ä¸?AI ¾|‘关负责协调˜q™äº›è¯äh±‚来确保系¾lŸçš„½E›_®šæ€§ä¸Žé«˜æ•ˆæ€§ã€‚因此,与传¾lŸå¾®æœåŠ¡æž¶æž„¾cÖM¼¼åQŒæˆ‘们将相关 API ½Ž¡ç†çš„功能(如流量控制、用户鉴权、配额计贏V€è´Ÿè½½å‡è¡¡ã€API 路由½{‰ï¼‰é›†ä¸­æ”„¡½®åœ?AI ¾|‘关层,可以降低¾pȝ»Ÿæ•´ä½“å¤æ‚åº¦åÆˆæå‡å¯ç»´æŠ¤æ€§ã€?/p>

本文要分享的是B站在大模型时代基于多模型AI的网å…Ïxž¶æž„设计和实践æ€È»“åQŒå¸Œæœ›èƒ½å¸¦ç»™ä½ å¯å‘ã€?/strong>

* 相关阅读åQ?/strong>ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">全民AI时代åQŒå¤§æ¨¡åž‹å®¢æˆ·ç«¯å’ŒæœåŠ¡ç«¯çš„å®žæ—¶é€šä¿¡åˆ°åº•ç”¨ä»€ä¹ˆåè®®ï¼Ÿã€?/p>

技术交‹¹ï¼š

- ¿UÕdŠ¨ç«¯IM开发入门文章:ã€?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">新手入门一½‹‡å°±å¤Ÿï¼šä»Žé›¶å¼€å‘移动端IMã€?/p>

- 开源IM框架源码åQ?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">https://github.com/JackJiang2011/MobileIMSDKåQ?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">备用地址ç‚ÒŽ­¤åQ?/p>

åQˆæœ¬æ–‡å·²åŒæ­¥å‘布于:http://www.52im.net/thread-4831-1-1.htmlåQ?/a>

2、系列文�/h1>
  1. ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?一)åQšäº¬ä¸œäº¬éº¦çš„生äñ”¾U§TCP¾|‘关技术实跉|€È»“ã€?/li>
  2. ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?äº?åQšçŸ¥ä¹Žåƒä¸‡çñ”òq¶å‘的高性能长连接网å…ÏxŠ€æœ¯å®žè·?/a>ã€?/li>
  3. ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?ä¸?åQšæ‰‹æ·˜äº¿¾U§ç§»åŠ¨ç«¯æŽ¥å…¥å±‚ç½‘å…³çš„æŠ€æœ¯æ¼”˜q›ä¹‹è·?/a>ã€?/li>
  4. ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?å›?åQšçˆ±å¥‡è‰ºWebSocket实时推送网å…ÏxŠ€æœ¯å®žè·?/a>ã€?/li>
  5. ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?äº?åQšå–œé©¬æ‹‰é›…自研亿¾U§API¾|‘关技术实è·?/a>ã€?/li>
  6. ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?å…?åQšçŸ³å¢¨æ–‡æ¡£å•æœ?0万WebSocket长连接架构实è·?/a>ã€?/li>
  7. ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?ä¸?åQšå°¾c›_°çˆ±å•æœ?20万长˜qžæŽ¥æŽ¥å…¥å±‚的架构演进ã€?/li>
  8. ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?å…?åQšB站基于微服务的API¾|‘å…³ä»?åˆ?的演˜q›ä¹‹è·?/a>ã€?/li>
  9. ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?ä¹?åQšåŽ»å“ªå„¿¾|‘酒店高性能业务¾|‘关技术实è·?/a>ã€?/li>
  10. ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?å?åQšç™¾åº¦åŸºäºŽGo的千万çñ”¾lŸä¸€é•¿è¿žæŽ¥æœåŠ¡æž¶æž„å®žè·?/a>ã€?/li>
  11. ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?十一)åQšæ­¿U˜è…¾è®¯å…¬¾|‘TGW¾|‘å…³¾pȝ»Ÿçš„æŠ€æœ¯æž¶æž„æ¼”˜q?/a>ã€?/li>
  12. ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?十二)åQšå¤§æ¨¡åž‹æ—¶ä»£å¤šæ¨¡åž‹AI¾|‘关的架构设计与实现》(* 本文åQ?/li>

3、AI¾|‘关技术概è§?/h1>

AI ¾|‘关是一个用于统一接入和调度大语言模型åQˆLLMåQ‰æœåŠ¡çš„¾pȝ»ŸåQŒæ”¯æŒå¤šä¾›åº”商、多模型、负载均衡调度的½Ž¡ç†ã€‚同时具备统一鉴权、Token 配额½Ž¡ç†ã€å®‰å…¨å®¡è®¡ä¸Žå¯è§‚‹¹‹èƒ½åŠ›ï¼Œ¼‹®ä¿ API 调用的安全性和½E›_®šæ€§ã€‚负载均衡模块,能够æ ÒŽ®æä¾›å•†å¤š¾U¿èµ\、多模型 å’?API Key ˜q›è¡Œç‰|´»è·¯ç”±åQŒåƈ适用于多模型接入、多¿UŸæˆ·½{‰å¤æ‚场景ã€?/p>

4、整体架构设�/h1>

AI ¾|‘关的整体架构和传统 API ¾|‘关及其¾cÖM¼¼åQŒåœ¨æ•°æ®é¢å’ŒæŽ§åˆ¶é¢ä¸Šæœ‰å‡ ä¹Žç›¸åŒçš„设计ã€?/p>

实际ä¸?AI ¾|‘å…³ž®±æ˜¯è¡ç”ŸäºŽä¹‹å‰å¾®æœåŠ¡å›¢é˜Ÿçš?API GatewayåQŒæˆ‘们在 API Gateway 的基¼‹€ä¸Šåšäº†ä¸€äº›é’ˆå¯?AI 业务接口的特性优化,如无¾~“冲区的è¯äh±‚代理åQŒæ”¯æŒåŸŸåã€æœåŠ¡å‘çŽ°ç­‰æ··åˆè°ƒåº¦åQŒAI ­‘…长响应旉™—´è¯äh±‚的优雅退出等功能ã€?/p>

在此基础上我们ä‹É用于 API Gateway 相类似的数据面、控刉™¢åˆ†ç¦»çš„æž¶æž„,控制面会ž®†å˜æ›´åŽçš„网关配¾|®å‡†å®žæ—¶ä¸‹å‘è‡Ïx•°æ®é¢èŠ‚ç‚¹ã€‚æ•°æ®é¢èŠ‚ç‚¹è¯†åˆ«é…ç½®æœ‰æ›´æ–°åŽåœ¨è¿è¡Œæ—¶ä¼šåŠ¨æ€åˆ‡æ¢ä»£ç†å¼•æ“Žè‡³æ–°çš„ä»£ç†é€»è¾‘ä¸‹ï¼Œòq¶ä¿è¯è€çš„代理逻辑会处理完当下被分配的è¯äh±‚ã€?/p>

在数据面中,我们对请求过滤器有两¿Uæ¨¡å¼çš„æŠ½è±¡åQšè¯·æ±‚过滤器和模型过滤器。请求过滤器作用于用æˆïLš„原始è¯äh±‚åQŒè¿™¾c»è¿‡æ»¤å™¨å¾€å¾€è¢«è®¾è®¡ç”¨äºŽå¤„理鉴权、限‹¹ç­‰é€»è¾‘。而模型过滤器作用于请求被转发臌™¯¥æ¨¡åž‹æ—Óž¼Œå¸¸ç”¨äºŽæ¨¡åž?API 的兼定w€»è¾‘。比如模型发展中目前å¯ÒŽ·±åº¦æ€è€?<think> 的标½{‘Ö¤„理,推理引擎自定义参数的兼容修正½{‰ã€?/p>

除此之外控制面也会提ä¾?OpenAPI ä¾?AI 模型供给团队上架模型åQŒæ–°å¢?API Key ½{‰æ—¥å¸¸è¿è¥èƒ½åŠ›ã€‚æ¨¡åž‹æä¾›æ–¹å¯ä»¥åœ¨ä¸Šæž¶æ¨¡åž‹æ—¶æ”¯æŒä¸ºæ¨¡åž‹é…¾|®ç›¸åº”çš„ RPM、TPM 上限åQŒåƈæ ÒŽ®æ¨¡åž‹çš„æŽ¨ç†å¼•擎选择相应的兼容策略。也可以通过 OpenAPI 为单ä¸?API Key 授权相应模型½{‰åŠŸèƒ½ã€?/p>

5、鉴权认�/h1>

在鉴权机制中åQŒé‡‡ç”¨ç›®å‰ä¸»‹¹?OpenAI SDK 兼容çš?API Key 认证æ–ÒŽ¡ˆã€?/p>

Authorization: Bearer <YOUR_API_KEY>

åœ?API Key 的认证基¼‹€ä¸Šè¿˜æä¾›¾l†ç²’度的权限控制功能åQŒå…è®æ€Ø“每个 API Key 配置可访问的模型范围åQŒä»¥åŠå¯¹ä¸åŒæ¨¡åž‹çš„设¾|®ä¸åŒçš„配额ã€?/p>

另外支持灉|´»çš?API Key 有效期配¾|®ï¼Œç”¨æˆ·å¯æ ¹æ®éœ€æ±‚设¾|?API Key çš?˜q‡æœŸæ—‰™—´ æˆ?不过期ã€?/p>

6、配额管�/h1>

在配额管理体¾p»é‡Œå¯ä»¥é™åˆ¶æ¨¡åž‹æ¶ˆè´¹è€…的调用速率åQŒåœ¨˜q™é‡Œä¸»è¦å‚考了 OpenAI 的配额策略: RPMåQˆæ¯åˆ†é’Ÿè¯äh±‚敎ͼ‰å’?TPMåQˆæ¯åˆ†é’Ÿ Tokens 敎ͼ‰ã€?/p>

åœ¨è¿™é‡Œå¯ä»¥æŒ‰ç…§äØ“æ¯ä¸ªç”¨æˆ·åˆ†é…ä¸åŒæ¨¡åž‹çš?Token 配额åQŒæˆ–指定单位旉™—´çš„请求数限制åQŒä»¥¼‹®ä¿ AI æœåŠ¡çš„é«˜æ•ˆè¿è¡ŒåÆˆé˜²æ­¢­‘…出预算ã€?/p>

同时我们˜q˜æ”¯æŒæœˆ¾l´åº¦çš?Token 配额åQŒä¸šåŠ¡æŒ‰è‡ªç„¶æœˆè¿›è¡Œé¢„½Ž—ç”³è¯øP¼Œ­‘…过预算时请求将被限制。对于接å…?AI 能力而言åQŒæ¯ä¸ªä¸šåŠ¡éƒ½éœ€è¦æå‰ç”³è¯·é¢„½Ž—额度,避免带来难以负担的成本ã€?/p>

7、多模型讉K—®

目前版本仅支持基äº?OpenAI API 的协议è{发。以目前推理引擎发展和在¾U?AI 云服务而言åQŒå…¼å®?OpenAI API åè®®å·²ç»æˆäØ“ä¸šç•Œå…Þp¯†åQŒåœ¨æ­¤åŸº¼‹€ä¸Šæˆ‘们只需要实现根据用户需求的模型名,择优选择一个相应模型的上游 API 提供商(公司自徏 IDC或公有云åQ‰ï¼Œòq¶æ›¿æ¢æˆç›¸åº”服务商的 API Key å’?Upstream 域名ž®±å¯ä»¥è¿›è¡Œè´Ÿè½½å‡è¡¡ã€?/p>

对于公司 IDC 自徏的模型服务而言åQŒæˆ‘们ç‘ô¾l­æ²¿ç”¨åŸºäº?discovery ½{‰æœåŠ¡å‘çŽ°æŠ€æœ¯æ¥å‘çŽ°æŽ¨ç†å¼•æ“ŽèŠ‚ç‚¹åQŒç›´æŽ¥å°†è¯äh±‚包装调度臌™¿™äº›è‡ªå»ºæ¨¡åž‹ã€?/p>

8、模型负载均�/h1>

LLM API 的负载均衡和传统实时 API 的模式有很大的不同�/p>

传统 API 开发中åQ?/strong>一‹Æ¡è¯·æ±‚往往被设计成会极大概率地命中一块结果缓存,且缓å­?Key 的计½Ž—都比较½Ž€å•,因此很多负蝲均衡都简单基于请求相应时间、连接数½{‰ç­‰ã€?/p>

åœ?LLM 推理场景下:每个推理è¯äh±‚都会带来¾|‘关本èín难以评估的计½Ž—时间和讑֤‡èµ„源占用åQŒæ­¤æ—¶åŸºäº?RPS、TTFB、连接数½{‰è´Ÿè½½å‡è¡¡ç­–略将不再适用ã€?/p>

åœ?AI ¾|‘关的默认负载均衡策略中åQ?/strong>我们主要åŸÞZºŽå•模型服务节点处ç?Token 的吞吐和时åšg能力åQŒåœ¨é»‘盒模式下评估节点的饱和度。除此之外,推理引擎自èín和显卡其实也暴露了许多和执行队列相关的指标,¾l¼åˆ˜q™äº›æŒ‡æ ‡åŒæ ·é¢„计能获得比传统负蝲均衡更有效的体验ã€?/p>

另外åQ?/strong>åŸÞZºŽ Prefix Cache 的节炚w€‰æ‹©åŒæ ·ä¼šæ˜¯ä¸€ä¸ªç›¸å½“有效的调度½{–ç•¥åQŒä½† Prefix Cache 的计½Ž—能力往往需要外部服务来˜q›è¡ŒåQŒå› æ­?AI ¾|‘关同样支持接入外置的负载均衡算法,通过前置çš?RPC 来让外置服务选择最合适的模型节点ã€?/p>

9、多¿UŸæˆ·éš”离

业务主要通过 域名 + API Key ˜q›è¡Œè®‰K—®å¤§æ¨¡åž‹æŽ¨ç†ï¼Œå¯ä»¥é€šè¿‡åŸŸå˜q›è¡Œ½Ž¡ç†å¯ÒŽŽ¥çš„æŽ¥å£èµ\由,˜q›è¡Œé…ç½®è½¬å‘到指å®?Model Provider 服务。如果需要进行多业务隔离åQŒåªéœ€è¦é€šè¿‡ä¸åŒçš„åŸŸåè®¿é—®åÆˆé…ç½®ä¸åŒçš„è{发目标ã€?/p>

10、可观测能力

ä»Žä¸šåŠ¡è§†è§’ï¼Œä¸»è¦åˆ†äØ“ Gatewayã€?Domain、Consumer、Provider、UserModel、UpstreamModel ¾l´åº¦åQŒè¿›è¡ŒæŸ¥è¯¢å’Œè§‚察è¯äh±‚接口的可用率åQŒä»¥å?QPS、Latencyã€?xx、Quota ½{‰æŒ‡æ ‡ã€?/p>

11、支持的API协议

11.1 概述

åœ?AI ¾|‘关中,我们主要ä»?OpenAI 提供çš?API ä½œäØ“åŸºç¡€åè®®åQŒè®©å¼€å‘者基äº?OpenAI SDK 实现各种业务场景å¯ÒŽŽ¥ã€?/p>

目前支持�API 协议有:

  • 1åQ?/em>对话式模型交互(CHAT_COMPLETIONåQ‰ï¼›
  • 2åQ?/em>通用文本向量接口åQˆEMBEDDINGåQ‰ï¼›
  • 3åQ?/em>提示词模板(CHAT_TEMPLATEåQ‰ï¼›
  • 4åQ?/em>模型上下文协议(MODEL_CONTEXT_PROTOCOLåQ?ã€?/li>

业务可以æ ÒŽ®è‡ªå·±ä¸åŒçš„场景进行选择对应的协议ã€?/strong>

11.2 对话式模型交互(CHAT_COMPLETIONåQ?/h3>

对话式模型交互是最基础的协议,用于构徏å…ähœ‰å¤æ‚逻辑的对话交互。同æ—?API 支持上下文感知的对话åQŒä‹É得模型能够理解和响应多轮交流åQŒåƈ在对话中保持合理的逻辑和语境一致性ã€?/p>

对话接口æ˜?LLM 与现实世界沟通的重要渠道åQŒå¤§é‡?AI 需求实际上ž®±æ˜¯åœ¨ä¸Žæ¨¡åž‹˜q›è¡Œä¸€è½®æˆ–多轮对话实现的ã€?/p>

例如业务希望通过 LLM 排查¾U¿ä¸Šæ•…障的潜在原因,½Ž€å•来说就是将应用的各™å¹å¯è§‚测指标、故障期间的日志记录或应用上下游的变更记录以对话形式告知 LLMåQŒåƈè®?LLM 输出一ŒDµä¾¿äºŽç¨‹åºç†è§£çš„¾l“果表达模式åQŒè®© LLM 从模型数据中计算出符合直觉潜在故障原因ã€?/p>

11.3 通用文本向量åQˆEMBEDDINGåQ?/h3>

通用文本向量åQˆEMBEDDINGåQ‰æŽ¥å£çš„æ ¸å¿ƒåŠŸèƒ½æ˜¯å°†æ–‡æœ¬è½¬åŒ–ä¸ºé«˜¾l´å‘量,捕捉其语义特征。这在需要进行大规模信息‹‚€ç´¢ã€åŒ¹é…å’ŒçŸ¥è¯†½Ž¡ç†çš„场景中ž®¤äؓ关键ã€?/p>

11.4 提示词模板(CHAT_TEMPLATEåQ?/h3>

提示词模板是一¿Uç»“构化的对话生成方式,允许业务通过讄¡½®é¢„定义的模板来生成系¾lŸåŒ–的回复。这¿Uæ–¹å¼å°†è¯­è¨€æ¨¡åž‹çš„生成能力与模板化结构相¾l“合åQŒä‹É业务能够以普é€?API 的方式进行请求交互,òq¶å¯ä»¥æ›´é›†ä¸­åŒ–地控制生成内容的样式和格式ã€?/p>

同时我们也支持内嵌函敎ͼŒä»¥æ–¹ä¾¿åœ¨æç¤ºè¯æ¨¡æ¿è¿›è¡Œå¤„理内容:

  • 1åQ?/em>len(v any) string
  • 2åQ?/em>jsonify(v any) string
  • 3åQ?/em>make_json_object(v ...any) map[string]any
  • 4åQ?/em>slice_to_index_map(v any, startBy int) map[int]any

以评论内容翻译的场景åQ?/strong>

- path: /v1/reply-to-en

  protocol: HTTP

  timeout: 300s

  middlewares:

  - name: v1_chat_template

    options:

'@type': type.googleapis.com/infra.gateway.middleware.llm.v1.contrib.ChatTemplateConfig

      provider: bilibili

      model_name: index

      prompt_template: |

        ä½ çš„ä»ÕdŠ¡åQšä»¥ä¸‹ç»™å®šæ–‡æœ¬æ˜¯ä¸€ä¸ªB站视频的相关文本信息åQŒå¯èƒ½äؓ标题、简介、弹òq•或评论åQŒè¯·ä½ å°†¾l™å®šçš„æ–‡æœ¬é€æ¡¾˜»è¯‘æˆè‹±æ–‡ã€‚è¾“å…¥äØ“ä¸€ä¸ªjson格式åQŒkeyä¸ºåºåøP¼Œvalue为待¾˜»è¯‘的弹òq•,一共有{{ len .reply_list }}个文本。示例如ä¸?

        è¾“å…¥: {"1": "xxx", "2": "xxx"}

 

        è¾“出: {"1": "xxx", "2": "xxx"}

 

        æ³¨æ„åQŒç”¨{dyn:xxx}½W¦å·åŒ…裹的是囄¡‰‡å¼•用åQŒä¸éœ€è¦ç¿»è¯‘,直接保留。用[xxx]包裹的是表情½W¦å·åQŒä¸éœ€è¦ç¿»è¯‘,直接保留。现在请æ ÒŽ®ä¸Šè¿°è¦æ±‚完成如下片段的翻译,输出一共{{ len .reply_list }}个翻译后的结果,直接输出¾˜»è¯‘后的英文åQŒä¸è¦è¿›è¡Œä“Q何解释ã€?/p>

 

        è¾“å…¥: {{ jsonify (slice_to_index_map .reply_list 1) }}

 

        è¾“出:

提示词模版接口实际上是基于对话接口的一¿Ué«˜æ•ˆå¯¹æŽ¥æ¨¡å¼ã€‚众所周知åQŒè‡ª OpenAI 发布 ChatGPT 后,提示词工½E‹ï¼ˆPrompt EngineeringåQ‰æœ¬íw«è¢«å½“作一¿UæŠ€æœ¯èµ\¾U¿è€Œæå‡ºã€‚提½Cø™¯å·¥ç¨‹ä¸»è¦å…Ïx³¨æç¤ºè¯å¼€å‘与优化åQŒå¸®åŠ©ç”¨æˆ·å°†å¤§è¯­­a€æ¨¡åž‹ç”¨äºŽå„场景和研究领域。研½I¶äh员可利用提示工程来提升大语言模型处理复杂ä»ÕdŠ¡åœºæ™¯çš„èƒ½åŠ›ï¼Œå¦‚é—®½{”å’Œ½Ž—术推理能力ã€?/p>

对于接入 LLM 的业务研发而言åQŒä»–可能本èín不具备很强的提示词工½E‹èƒ½åŠ›ï¼›ç”šè‡³æç¤ºè¯çš„ä¼˜åŒ–æœ¬èín也取决于模型的è„P代更新。因此对于解决特定领域的业务场景åQŒAI 工程师往往会基于最优模型写出最¾_‘Ö‡†çš„æ½Cø™¯åQŒé€šè¿‡ AI ¾|‘关的提½Cø™¯æ¨¡ç‰ˆæŽ¥å£å‘布。业务提交简å?JSON KV 对后åQŒæ¸²æŸ“出最有效的完整提½Cø™¯åQŒLLM åŸÞZºŽæœ‰æ•ˆæç¤ºè¯è¾“出最¾_„¡¡®çš„结果ã€?/p>

11.5 模型上下文协议(MODEL_CONTEXT_PROTOCOLåQ?/h3>

MCP (Model Context ProtocolåQŒæ¨¡åž‹ä¸Šä¸‹æ–‡åè®®) 是由 Anthropic åœ?2024 òq´åº•推出的一¿Uå¼€æ”‘֍è®®ï¼Œæ—¨åœ¨è®©å¤§åž‹è¯­­a€æ¨¡åž‹åQˆLLMåQ‰èƒ½å¤Ÿä»¥æ ‡å‡†åŒ–的方式˜qžæŽ¥åˆ°å¤–部数据源和工兗÷€‚该协议抽象òq¶æ ‡å‡†åŒ–äº?Resources、Prompts、Tools ½{‰èµ„源及其接入方式,允许 LLM Client 应用以一致的方式˜qžæŽ¥åˆ°å„¿Uæ•°æ®æºå’Œå·¥å…øP¼Œå¦‚文件、数据库、API ½{‰ã€?/p>

配置转发到注册中心的 MCP 服务åQ?/strong>

- path: /example-mcp/*

  protocol: HTTP

  timeout: 300s

  middlewares:

  - name: v1_mcp_server

    options:

      '@type': type.googleapis.com/infra.gateway.middleware.llm.v1.contrib.MCPServerConfig

      proxy:

        name: example-mcp

        upstreams:

        - url: 'discovery://infra.example.example-mcp'

- path: /example-mcp/*

  protocol: HTTP

  timeout: 300s

  middlewares:

  - name: v1_mcp_server

    options:

      '@type': type.googleapis.com/infra.gateway.middleware.llm.v1.contrib.MCPServerConfig

      proxy:

        name: example-mcp

        upstreams:

        - url: 'discovery://infra.example.example-mcp'

12、MCP市场与API接入

MCP 市场其实ž®±æ˜¯ä¸€ä¸ªå…¬å¸å†…部的资源å…׃ín和协作åã^台。简单来è¯ß_¼Œå®ƒå¯ä»¥çœ‹ä½œæ˜¯ä¼ä¸šå†…çš„ž®åž‹“App Store”åQŒä¸“门用来提供各¿UæœåŠ¡å’Œèµ„æºçš„æŽ¥å…¥å…¥å£ã€‚å¯ä»¥è®©ä¸šåŠ¡é€šè¿‡˜q™ä¸ªòq›_°è½ÀL¾èŽ·å–ã€æ•´åˆã€ä‹É用这些资源,使业务对接更加地½Ž€å•ã€?/p>

用户可以把自å·Þqš„ MCP 服务快速发布到市场上,òq¶ä¸”接入åˆ?MCP Gateway 后即可ä‹É用ã€?/p>

当前çš?MCP 协议中主要有两个端点åQ?/strong>

  • 1åQ?/em>/sseåQšæ˜¯ä¸€ä¸?Events 长连接通知协议åQŒç”¨äºŽå®žæ—‰™€šçŸ¥èµ„源信息的变æ›ß_¼›
  • 2åQ?/em>/messageåQšç”¨äº?JSONRPC 通信端点åQŒèƒ½å¤Ÿä»¥ JSONRPC 方式˜q›è¡Œé€šä¿¡äº¤äº’ã€?/li>

而我们在 MCP Gateway 中,我们在企业内部将通过¾lŸä¸€çš„域名进行提供业务接入,òq¶ä¸”˜q›è¡Œ½Ž¡ç†æ¯ä¸€ä¸?MCP服务的接口,例如åQ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">https://mcp.example.com/logging-mcpã€?/p>

同时åœ?MCP服务中,需要ä‹É用相同的根èµ\å¾?/logging-mcpåQŒå› ä¸ºåœ¨ MCP 协议中,会先˜qžæŽ¥åˆ?/sse 端点åQŒå†˜q”回对应çš?/message 端点信息åQŒæ‰€ä»¥è¯·æ±‚èµ\径需要保持跟¾|‘关一致ã€?/p>

13、本文小¾l?/h1>

AI ¾|‘关通过¾lŸä¸€æŽ¥å…¥ã€é‰´æƒã€é…é¢ç®¡ç?å’?模型调度支持åQŒäؓ大模型提供了高效、安全、定制的˜qžæŽ¥èƒ½åŠ›ã€‚åŒæ—Óž¼Œæ”¯æŒäº?OpenAI 协议、提½Cø™¯æ¨¡æ¿ å’?MCP 市场½{‰åŠŸèƒ½ï¼Œ˜q›ä¸€æ­¥æ‰©å±•了 AI 技术在企业中的应用场景åQŒäؓ业务接入和资源整合提供了极高的便利性ã€?/p>

14、相兌™µ„æ–?/h1>

[1] Web端即旉™€šè®¯æŠ€æœ¯ç›˜ç‚¹ï¼šçŸ­è½®è¯¢ã€Comet、Websocket、SSE

[2] SSE技术详解:一¿Uå…¨æ–°çš„HTML5服务器推送事件技æœ?/a>

[3] ¾|‘页端IM通信技术快速入门:短轮询、长轮询、SSE、WebSocket

[4] æžæ‡‚çŽîC»£Web端即旉™€šè®¯æŠ€æœ¯ä¸€æ–‡å°±å¤Ÿï¼šWebSocket、socket.io、SSE

[5] å…¨æ°‘AI时代åQŒå¤§æ¨¡åž‹å®¢æˆ·ç«¯å’ŒæœåŠ¡ç«¯çš„å®žæ—¶é€šä¿¡åˆ°åº•ç”¨ä»€ä¹ˆåè®®ï¼Ÿ


åQˆæœ¬æ–‡å·²åŒæ­¥å‘布于:http://www.52im.net/thread-4831-1-1.htmlåQ?/a>



]]>ž®çº¢ä¹¦APP的全新é¿`è’™NEXT端性能优化技术实è·?/title><link>http://www.aygfsteel.com/jb2011/archive/2025/05/19/451622.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Mon, 19 May 2025 03:24:00 GMT</pubDate><guid>http://www.aygfsteel.com/jb2011/archive/2025/05/19/451622.html</guid><wfw:comment>http://www.aygfsteel.com/jb2011/comments/451622.html</wfw:comment><comments>http://www.aygfsteel.com/jb2011/archive/2025/05/19/451622.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jb2011/comments/commentRss/451622.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jb2011/services/trackbacks/451622.html</trackback:ping><description><![CDATA[<blockquote style="background-image: none; border-top: none; border-right: none; border-bottom: none; border-left-width: 3px; border-left-color: #e2dfdf; margin-right: 0px; margin-left: 0px; background-color: #eeeeee; width: 805.112px; color: #555555; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;"><p style="margin-top: 10px; margin-bottom: 10px;">本文来自QCon全球软äšg开发大会王劲鹏的技术分享,下文˜q›è¡Œäº†æŽ’版优化和修订ã€?/p></blockquote><h1>1、引­a€</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">性能和体验在 iOS / Android 双端场景下已¾læ˜¯ä¸€ä¸ªè¾ƒä¸ºæˆç†Ÿçš„话题åQŒä½†éšç€é¸¿è’™ OS 的发展,端侧开发者需要更多的å…Ïx³¨å¤šç«¯åœºæ™¯çš„差异性ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>本次分äín的主题是ž®çº¢ä¹¦åœ¨é¸¿è’™òq›_°ä¸Šçš„工程实践åQŒä¸»è¦èšç„¦äºŽæ€§èƒ½ä¼˜åŒ–和探索ã€?/strong>åQ?strong><span style="color: #ff00ff;">* PPT讲稿原文下蝲åQ?/span></strong>ã€?span style="color: #000080;"><a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;"><span style="color: #000080;"><span style="color: #3366ff;">ž®çº¢ä¹¦é¿`è’™OS下的性能优化探烦与实è·?PPT)[附äšg下蝲</span>]</span></a></span>》)</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">先介¾lä¸€ä¸‹è‡ªå·Þqš„背景。之前一直从事大前端领域的工作,主要专注于跨端和容器化方案。也曾手写过一个跨端框æžÓž¼ŒåäØ“ DoricåQŒå®ƒå¯ä»¥å¯ÒŽ ‡ React Native、Vue Native å’?Flutter ½{‰ã€‚Doric 框架在落地时表现良好åQŒè¿˜æ”¯æŒäº†ä¸€äº›è‡ªç ”çš„ 3D 引擎æ–ÒŽ¡ˆã€‚除此之外,我还有播攑֙¨å†…核研发¾léªŒåQŒä»¥åŠå¤§å‰ç«¯å¸¸è§„ä½“ç³»å»ø™®¾å’?CI/CD ‹¹æ°´¾U¿çš„工程¾léªŒã€‚未来,我将持箋å…Ïx³¨å¤§å‰ç«¯çš„æ¼”è¿›åQŒå°¤å…¶æ˜¯é¸¿è’™˜q™æ ·çš„多端和跨端òq›_°ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">ä»?2023 òq´å¼€å§‹ï¼Œé¸¿è’™çš„ä¼˜åŠ¿æ„ˆå‘æ˜Žæ˜¾ï¼Œå·²ç»æˆäØ“å¯ä¸Ž iOS、安卓媲¾ŸŽçš„½W¬ä¸‰å¤§ç§»åŠ¨æ“ä½œç³»¾lŸã€‚从一些抖韌™§†é¢‘中也可以看出,鸿蒙在流畅性方面甚臛_œ¨æŸäº›å±‚面上超˜q‡äº† iOSã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>今天的分享内容分为四个部分:</strong></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1åQ?/em></strong>介绍整个历程和背景;</li><li style="list-style: inherit;"><strong><em>2åQ?/em></strong>介绍鸿蒙 OS 的相兌™ƒ½åŠ›å’Œž®çº¢ä¹¦åœ¨è¯¥åã^åîC¸Šçš„优化实践;</li><li style="list-style: inherit;"><strong><em>3åQ?/em></strong>通过鸿蒙 OS 提供的性能验证工具åQŒå±•½Cºå°¾U¢ä¹¦åœ¨é¿`è’™åã^åîC¸Šçš„æ€§èƒ½ä¼˜åŒ–验证æ–ÒŽ³•、优化后的性能提升以及具体的收益和¾l“æžœåQ?/li><li style="list-style: inherit;"><strong><em>4åQ?/em></strong>æ€È»“和展望ã€?/li></ul><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095629609-1968841729.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /></div><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"> </div><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"> </div><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><p style="margin-top: 10px; margin-bottom: 10px;"><strong>技术交‹¹ï¼š</strong></p><div><div><div><p style="margin-top: 10px; margin-bottom: 10px;">- ¿UÕdŠ¨ç«¯IM开发入门文章:ã€?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">新手入门一½‹‡å°±å¤Ÿï¼šä»Žé›¶å¼€å‘移动端IM</a>ã€?/p><p style="margin-top: 10px; margin-bottom: 10px;">- 开源IM框架源码åQ?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">https://github.com/JackJiang2011/MobileIMSDK</a>åQ?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">备用地址ç‚ÒŽ­¤</a>åQ?/p></div></div></div><p style="margin-top: 10px; margin-bottom: 10px;"><a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">åQˆæœ¬æ–‡å·²åŒæ­¥å‘布于:http://www.52im.net/thread-4821-1-1.htmlåQ?/a></p></div><h1>2、内容分享和整理</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">分äín者:王劲鹏,内容审校和编辑:Kittyã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095636084-475085880.jpg" alt="" style="border: 0px; max-width: 100%; height: auto !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> <strong>王劲鹏:</strong>ž®çº¢ä¹¦é¿`蒙工½E‹å¸ˆã€‚目前主要负责小¾U¢ä¹¦é¸¿è’™ç‰ˆçš„研发和工½E‹å¾è®¾ï¼Œæ›¾ä»Žäº‹è¿‡å¤§å‰ç«¯æž¶æž„设计、研发效能等方向的工作,在终端架构演˜q›ã€æ€§èƒ½ä¼˜åŒ–以及跨端容器和动态化½{‰æ–¹é¢å…·å¤‡é•¿æœŸå®žè·µåŠæ·±åŽš¾léªŒåQŒæŒ¾l­å…³æ³¨å¤§å‰ç«¯æŠ€æœ¯ä½“¾p»ï¼Œé¸¿è’™ä»¥åŠå¤šç«¯çš„æ¼”˜q›ã€?/p></div><h1>3、版本历½E‹å’Œå¼€å‘背æ™?/h1><h3>3.1 ž®çº¢ä¹¦è„P代历½E?/h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>ä»?2023 òq´å¹´ä¸­å¼€å§‹ï¼Œé¸¿è’™çš?#8220;千帆计划”正式启动åQŒåƈ很快升çñ”ä¸?#8220;鸉K£žè®¡åˆ’”ã€?/strong>ž®çº¢ä¹¦ä½œä¸?7 家头部合作商之一åQŒçŽ‡å…ˆæ”¯æŒäº†é¸¿è’™åQŒåƈäº?2023 òq?11 月中旬上¾U¿äº†ä¸€ä¸ªåŸº¼‹€ç‰ˆçš„ beta 版本 APP。这个版本主要包含笔记浏览和视频½W”è®°‹¹è§ˆä¸¤å¤§åŠŸèƒ½åQŒä»¥åŠä¸€äº›ç®€å•的个äh讄¡½®ã€‚当æ—Óž¼Œž®çº¢ä¹¦çš„动作非常˜q…é€Ÿï¼Œå¯ä»¥è¯´æ˜¯å¤´éƒ¨åº”ç”¨åŽ‚å•†ä¸­å¯¹åŽäØ“æ”¯æŒæœ€ä¸ºç§¯æžçš„å“ç‰Œä¹‹ä¸€ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在整个é¿`飞计划中åQŒæˆ‘们规划了三个核心里程¼„‘:</strong>除了 2023 òq?11 月的 beta 版本外,˜q˜åŒ…æ‹?2024 òq?6 月的 HDC 版本å’?2024 òq?9 月的商用版本。HDC 版本主要是针对华为正式宣发é¿`è’?3åQˆHarmonyOS NextåQ‰å¼€å‘者测试的情况。在 HDC 版本中,我们上线了许多小¾U¢ä¹¦ç‰ÒŽœ‰çš„存量功能,包括视频拍摄、图文拍摄以及多讑֤‡ååŒ½{‰åˆ›æ–°ç‰¹æ€§ã€‚而到äº?2024 òq?9 月的商用版本交付æ—Óž¼Œž®çº¢ä¹¦çš„æ ¸å¿ƒåŠŸèƒ½å·²ç»åŸºæœ¬ä¸Žä¸»ç«¯å¯¹é½ã€‚è€ƒè™‘åˆ°é¿`蒙的开发周期仅有一òqß_¼Œž®çº¢ä¹¦çš„鸿蒙 APP 在这一òq´ä¸­è¦å¯¹é½å¼€å‘了十年甚至十几òq´çš„安卓å’?iOS 版本åQŒéš¾åº¦å’ŒåŽ‹åŠ›éƒ½éžå¸¸å·¨å¤§ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">åˆ?2024 òq?9 月,除了寚w½åŒç«¯çš„æ‰€æœ‰åŠŸèƒ½å¤–åQŒæˆ‘们还开发了许多其他功能åQŒåŒ…括华为支持的创新ç‰ÒŽ€§ï¼Œä¾‹å¦‚æ™ø™ƒ½æ‹–拽——用户可以ž®†å›¾ç‰‡æ‹–拽到中è{站或ž®è‰º½{‰åœºæ™¯ã€‚此外,商用版本˜q˜æ”¯æŒäº†ç”¨æˆ·å‘¼å£°è¾ƒé«˜çš?HDR æˆ?Moonlight Photo 拍摄能力ã€?/p><h3>3.2 ¾U¯è¡€é¸¿è’™ä¸Žå®‰å“的区别</h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">我从几个¾l´åº¦æ¥å¯¹æ¯”一下纯血鸿蒙和安å?OS 的主要区别ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>内核架构¾U¯è¡€é¸¿è’™çš„æœ¬è´¨æ˜¯å¾®å†…核,而安卓是åŸÞZºŽ Linux 宏内核ã€?/strong>微内核只提供基础的内存和文äšg½Ž¡ç†èƒ½åŠ›åQŒé©±åŠ¨å’Œå…¶ä»–¾pȝ»Ÿèƒ½åŠ›éƒ½åœ¨ OS 之外。这样做的好处是¾pȝ»Ÿ½E›_®šæ€§æžé«˜ï¼Œå³ä‹É应用崩溃åQŒä¹Ÿä¸ä¼šå¯ÆD‡´æ•´ä¸ª¾pȝ»Ÿå´©æºƒåQˆsystem crashåQ‰ã€‚而在 Linux å®å†…æ æ€¸­åQŒåº”ç”¨çš„ä¸å½“è¡ŒäØ“å¯èƒ½ä¼šç›´æŽ¥å¯¼è‡´ç³»¾lŸå´©æºƒã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>多设备适配鸿蒙目前支持多种讑֤‡¾cÕdž‹åQ?/strong>包括 Mate 60 Pro ˜q™æ ·çš„直板手机、Mate X5 或非凡大å¸?XT ˜q™æ ·çš„双折叠和三折叠手机、åã^板电脑、èžRæœºï¼Œç”šè‡³åŽäØ“æ­£åœ¨ç ”å‘çš„é¿`è’?PC。é¿`蒙真正实çŽîCº†¾cÖM¼¼ iOS 的多端整合能力,通过一套代码实现多端部¾|ŒÓ€‚其工程体系和架构支持单 HAPåQˆHarmony Ability PackageåQ‰å¤š HSPåQˆHarmony Service PackageåQ‰æ¨¡å—,指ä×o集适配äº?ARM64 ½{‰å¤š¿Uæž¶æž„,开发者只需æ ÒŽ®è®‘Ö¤‡ž®ºå¯¸é€‚配 UI 展示卛_¯ã€‚例如,åœ?2024 òq?9 æœ?的华为全场景讑֤‡å‘布会上åQŒä½™æ‰¿ä¸œå±•示了小¾U¢ä¹¦åœ¨ä»Žç›´æ¿æœºåˆ°åŒæŠ˜å ã€ä¸‰æŠ˜å è®‘Ö¤‡ä¸Šçš„适配能力åQŒå®Œå…¨å®žçŽîCº†å“åº”式编½E‹ï¼Œä¸åŒè®‘Ö¤‡å½¢æ€ä¸‹æœ‰ä¸åŒçš„‹¹è§ˆä½“验ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>开发工具和¾~–程模型鸿蒙的开发工具和¾~–程模型与安卓差异较大ã€?/strong>鸿蒙更类ä¼égºŽ Flutter 的嵌套型容器布局åQŒè€Œä¸æ˜¯å®‰å“é‚£¿Ué¢å‘对象的开发方式。在语言层面åQŒé¿`蒙完全封装了底层逻辑åQŒé‡‡ç”¨ç±»ä¼¼å‰ç«?Flux 单向数据‹¹æ¨¡å¼ï¼Œé€šè¿‡æ•°æ®å˜æ›´é©±åЍ UI åˆäh–°ã€‚è¿™¿Uæ¨¡å¼ç±»ä¼égºŽå‰ç«¯ Redux æˆ?MobX 框架中的 state ½Ž¡ç† ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>ä»?2024 òq?10 æœ?8 日公‹¹‹å¼€å§‹ï¼Œé¸¿è’™çš„应用生态正在逐渐¾Jè£ã€?/strong>不过åQŒç›®å‰åƒå¾®ä¿¡˜q™æ ·çš„应用还处于抢先体验阶段。相比之下,安卓的生态已¾lç›¸å¯ÒŽˆç†Ÿã€‚é¿`蒙的最¾lˆç›®æ ‡æ˜¯æ‰“é€ å…¨åœºæ™¯æ™ø™ƒ½è®‘Ö¤‡ç”Ÿæ€ï¼Œæ¶ëŠ›–所有终端设备,以及åŸÞZºŽ OpenHarmony 内核开发的物联¾|‘终端。它˜q˜æ”¯æŒå¤š¿UèŠ¯ç‰‡ä½“¾p»ï¼Œä¾‹å¦‚瑞芯å¾?RK3568 ½{‰ã€?/p><h3>3.3 ž®çº¢ä¹¦é¿`蒙应用架构层¾U?/h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">ž®çº¢ä¹¦ç»˜q‡ä¸€òq´çš„˜q­ä»£åQŒå…¶æ•´ä½“应用架构已经基本成熟。目前,整体代码量接˜q?200 万行åQŒè¾¾åˆîCº†ä¸€ä¸ªè¾ƒé«˜çš„复杂度。在一般成熟的 APP 架构中,通常会包含一些基¼‹€åº•层能力åQŒä¾‹å¦‚网¾lœã€ç£ç›˜å­˜å‚¨ã€åŸ‹ç‚¹ä½“¾p…R€APMåQˆåº”用性能½Ž¡ç†åQ‰ç³»¾lŸï¼Œä»¥åŠä¸€äº›é€šç”¨¾l„äšg和能力。对于é¿`è’™åã^収ͼŒž®çº¢ä¹¦è¿˜å…·å¤‡ä¸€äº›ç‰¹ŒDŠçš„公共通用能力ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>我们开发了一ä¸?#8220;一多框æž?#8221;</strong>åQŒè¿™æ˜¯ä¸€ä¸ªæ”¯æŒä¸€å¥—代码多端部¾|²çš„具体框架体系。通过˜q™ä¸ªæ¡†æž¶åQŒæˆ‘们实çŽîCº†å¤šè®¾å¤‡çš„æ–­ç‚¹æŽ§åˆ¶åŠŸèƒ½ã€‚ç”¨æˆ·å¯ä»¥æ ¹æ®è®¾å¤‡çš„ž®ºå¯¸å’Œç±»åž‹è¿›è¡Œé€‚配åQŒå› ä¸ºåŽä¸ø™®¾å¤‡æ”¯æŒå¤šç«¯æŠ•屏。例如,用户可以在手æœÞZ¸Š‹¹è§ˆž®çº¢ä¹¦ï¼Œç„¶åŽž®†å†…å®ÒŽŠ•屏到车机上。比如用戯‚´­ä¹îCº†ä¸€è¾†é—®ç•Œæ±½è½¦ï¼Œå¯ä»¥åœ¨èžR内通过车机¾l§ç®‹‹¹è§ˆæ‰‹æœºä¸Šçš„ž®çº¢ä¹¦å†…容,˜q™ç§åœºæ™¯åœ¨é©¾é©¶æ—¶ž®¤å…¶æœ‰ç”¨ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">除了底层框架åQŒå¯¹äºŽä¸Šå±‚业务,<strong>ž®çº¢ä¹¦è¿˜æœ‰ä¸€å¥—自研的¾l„äšg库方æ¡?/strong>åQŒè¿™å¥—组件库承蝲了上层业务的多种功能åQŒåŒ…括图文笔记、视频笔记浏览,以及一äº?Hybrid 容器能力。小¾U¢ä¹¦æœ¬è´¨ä¸Šåœ¨è·¨ç«¯å¼€å‘中仍然使用äº?React NativeåQˆRNåQ‰å’Œ¾c?Web 技术。RN 引擎由华为内部合作提供,采用了自研的 ohos æ–ÒŽ¡ˆåQŒç”¨äºŽè§£å†?React Native çš?bundle å’?JS 加蝲以及渲染问题。此外,˜q˜åŒ…括äñ”品定制层åQŒè¿™é‡Œæ¶µç›–了所有相关的讑֤‡é€‚配内容ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095644107-55583946.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"><strong> 3.4 性能优化与实è·?/strong></p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">目前åQŒå®‰å“å’Œ iOS 在性能优化斚w¢å·²ç»ç›¸å½“成熟åQŒåŒ…括如何分析性能热点问题、有哪些工具以及最佛_®žè·ëŠ­‰ã€‚然而,对于鸿蒙来说åQŒå®ƒæ˜¯ä¸€ä¸ªå…¨æ–°çš„¾pȝ»Ÿã€‚ç›´åˆ?2024 òq´å¹´ä¸­ï¼Œé¸¿è’™çš„稳定性和‹¹ç•…性都˜q˜å­˜åœ¨ä¸€äº›é—®é¢˜ã€‚这里重点讲˜q°å°¾U¢ä¹¦åœ?2024 òq´ä¸ŽåŽäؓ一赯‚¿›è¡Œäº†å“ªäº›å®žè·µåQŒä»¥æå‡åº”用的性能和用户体验ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">我们定义了一个性能指标场景。这个指标体¾pÀL˜¯ž®çº¢ä¹¦ä¸ŽåŽäØ“å…±åŒæŽ¢è®¨çš„ç»“æžœï¼Œå› äØ“åŽäØ“æœ‰ä¸€ä¸ªæ€§èƒ½å·¥åŽ‚åQŒå®ƒå¯Òޝä¸ªåº”用的评çñ”都有一ä¸?S 标标准。小¾U¢ä¹¦ä¸ŽåŽä¸ÞZ¸€èµïL¡®å®šäº†é’ˆå¯¹ž®çº¢ä¹¦åœºæ™¯éœ€è¦è§‚‹¹‹çš„具体指标。性能优化的核心是慢函数指标,它主要包含两部分åQšè¿‡½E‹æ—¶é•¿å’Œåº”用体验的流畅性ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>˜q‡ç¨‹æ—‰™•¿ä¸»è¦åŒ…含以下三点åQ?/strong></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1åQ?/em></strong><span style="color: #800000;">冷启动时长:</span>˜q™æ˜¯ç”¨æˆ·æœ€å…›_¿ƒçš„æŒ‡æ ‡ä¹‹ä¸€åQŒå³ä»Žç‚¹å‡Õdº”用图标到应用完成动画òq¶å±•½Cºç¬¬ä¸€å¸§çš„æ—‰™—´ã€‚对于多数应用,首页通常有缓存机制。例如,ž®çº¢ä¹¦ä¼š¾~“存用户上次åˆäh–°çš„笔讎ͼŒæ·˜å®ä¼šç¼“存用户上‹Æ¡æµè§ˆçš„商品内容åQ?/li><li style="list-style: inherit;"><strong><em>2åQ?/em></strong><span style="color: #800000;">场景完成旉™•¿åQ?/span>指完成某个特定场景所需的时é—ß_¼›</li><li style="list-style: inherit;"><strong><em>3åQ?/em></strong><span style="color: #800000;">应用响应旉™•¿åQ?/span>指用æˆäh“ä½œç•Œé¢åŽåQŒç•Œé¢çœŸæ­£å‘生变化的旉™—´åQŒå³å“åº”æ—¶åšgã€?/li></ul><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">‹¹ç•…性方面,最基础的观‹¹‹æŒ‡æ ‡æ˜¯òq›_‡ FPSåQˆå“á率)åQŒåŒ…括丢帧数、最大连¾l­ä¸¢å¸§æ•°ã€ä¸¢å¸§å¡™å¿æ¬¡æ•îC»¥åŠå¡™å¿çއã€?strong>卡顿率可以通过量化计算得出åQ?/strong>当一个场景中出现丢å“áæ—Óž¼Œä¸¢å“á的时长与场景æ€ÀL—¶é•¿çš„æ¯”值即为卡™å¿çއåQŒå®ƒæ˜¯ä¸€ä¸ªå°äº?1 的百分比数倹{€?/p><h3>3.5 OS 能力 & 优化实践</h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">首先åQŒé’ˆå¯?IO 场景åQŒæˆ‘们进行了相应的优化ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>鸿蒙 OS 的系¾lŸèƒ½åŠ›ä¸»è¦åˆ†ä¸ÞZ»¥ä¸‹ä¸‰ä¸ªæ–¹é¢ï¼š</strong></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1åQ?/em></strong>òq¶è¡ŒåŒ–能力é¿`è’?OS 提供了两¿Uåƈ行化能力åQšWorker å’?TaskPool。Worker ¾cÖM¼¼äºŽä¼ ¾lŸçš„¾U¿ç¨‹æ¨¡åž‹åQŒæ¯ä¸?Worker 都有自己的内存空间和执行单元åQŒæ”¯æŒé€šè¿‡æ¶ˆæ¯åQˆmessageåQ‰è¿›è¡Œé€šä¿¡ã€‚TaskPool 则类ä¼égºŽåç¨‹æˆ–线½E‹æ± åQŒèƒ½å¤ŸåŠ¨æ€ç®¡ç†çº¿½E‹æ•°é‡ï¼Œæ”¯æŒæ ‡è®°ä¸?@concurrent 的函数直接在ä»ÕdŠ¡æ± ä¸­è°ƒåº¦å’Œè¿è¡Œã€‚è¿™ä¸¤ç§æœºåˆ¶éƒ½æ”¯æŒçº¿½E‹é—´éš”离åQŒå†…存不å…׃ínåQ?/li><li style="list-style: inherit;"><strong><em>2åQ?/em></strong>多线½E‹é€šä¿¡å’Œæ•°æ®ä¼ è¾“在多线½E‹é€šä¿¡æ–šw¢åQŒé¿`è’?OS 支持序列化数据传输和åŸÞZºŽæ¶ˆæ¯åQˆmessageåQ‰çš„通信机制。此外,˜q˜å¼•入了事äšg发射器(EmitteråQ‰ç”¨äºŽç³»¾lŸäº‹ä»¶çš„发布和订阅。这¿Uæœºåˆ¶å…è®¸çº¿½E‹é—´é€šè¿‡æ¶ˆæ¯ä¼ é€’来实现复杂的交互逻辑åQ?/li><li style="list-style: inherit;"><strong><em>3åQ?/em></strong>同步转异步机刉™¿`è’?OS 支持åŸÞZºŽ Promise 的异步编½E‹æ¨¡åž‹ï¼ŒåŒ…括 async å’?await 语法åQŒä»¥å?then å’?catch æ–ÒŽ³•。这¿Uæœºåˆ¶èƒ½å¤Ÿæœ‰æ•ˆæå‡åº”用的响应性和用户体验ã€?/li></ul><h1>4ã€åÆˆè¡ŒåŒ–èƒ½åŠ›</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">åœ¨åÆˆè¡ŒåŒ–èƒ½åŠ›æ–šw¢åQŒé¿`è’?OS 提供了两套基¼‹€å®žçŽ°æ–¹å¼ã€‚å¼€å‘è€…å¯ä»¥é€šè¿‡ RTSåQˆè¿è¡Œæ—¶¾pȝ»ŸåQ‰å®žçŽ°åÆˆè¡ŒåŒ–åQŒä¹Ÿå¯ä»¥é€šè¿‡åº•层库(å¦?C++ 标准库中的)实现。不˜q‡ï¼Œå¦‚æžœå®Œå…¨ä¾èµ–åº•å±‚åº“ï¼Œå¯èƒ½ä¼šå¯¼è‡´å¼€å‘æ•ˆçŽ‡ä¸‹é™ã€‚äØ“äº†æ»¡­‘³ä¸šåŠ¡éœ€æ±‚ï¼Œé¸¿è’™ OS 在年初引入了 Worker å’?TaskPool 能力。Worker ¾cÖM¼¼äºŽä¼ ¾lŸçš„¾U¿ç¨‹æ¨¡åž‹åQŒæ¯ä¸?Worker 都有独立的内存空间和执行单元åQŒæ”¯æŒé€šè¿‡æ¶ˆæ¯˜q›è¡Œé€šä¿¡ã€‚消息可以包含可序列化的数据åQŒä¹Ÿå¯ä»¥é€šè¿‡æŒ‡é’ˆç›´æŽ¥˜qç§»æ•°æ®ã€‚TaskPool 则类ä¼égºŽ¾U¿ç¨‹æ± ï¼Œèƒ½å¤ŸåŠ¨æ€ç®¡ç†çº¿½E‹æ•°é‡ï¼Œæ”¯æŒæ ‡è®°ä¸?@concurrent 的函数直接在ä»ÕdŠ¡æ± ä¸­è°ƒåº¦å’Œè¿è¡Œã€‚ä¸Žå®‰å“òq›_°çš„线½E‹æ± ä¸åŒåQŒé¿`è’?OS çš?TaskPool 会根据硬件条件和ä»ÕdŠ¡è´Ÿè²åŠ¨æ€è°ƒæ•´çº¿½E‹æ•°é‡ã€‚è¿™¿Uæœºåˆ‰™¿å…äº†å®‰å“òq›_°ä¸­å› ¾U¿ç¨‹æ± æ•°é‡è¿‡å¤šè€Œå¯¼è‡´çš„¾pȝ»Ÿèµ„源消耗问题ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>接下来我们对比é¿`è’?OS çš?Worker òq¶è¡ŒåŒ–能力和安卓端的相关ç‰ÒŽ€§ã€?/strong>从多个维度来看,Worker 本质上不推荐手动创徏åQŒè€Œæ˜¯é€šè¿‡¾pȝ»Ÿé…ç½® build-provider.json ¾l‘定 ETS æ–‡äšgæ¥å®žçŽ°åˆ›å»ºã€‚è¿™ä¸€ç‚¹ä¸Žå®‰å“ç«¯åÆˆæ— æ˜Žæ˜‘Ö·®å¼‚,安卓端可以通过 THREAD ½{‰æ–¹å¼å¯åŠ¨çº¿½E‹ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在é¿`è’?OS 5.0 以下版本åQˆå¦‚ 4.2 版本åQ‰ä¸­åQŒä¸»è¦è¿è¡Œçš„仍然是安卓系¾lŸã€‚è¿™¿Uæƒ…况下åQŒå®‰å“线½E‹æ•°é‡å­˜åœ¨ä¸Šé™ï¼Œ˜q™å¯¹åº”用开发者来说是一个挑战。如æž?SDK 集成˜q‡å¤šåQŒçº¿½E‹æ•°å¯èƒ½­‘…æ ‡åQŒè¿›è€Œå¯¼è‡´åº”用被¾pȝ»Ÿå¼ºåˆ¶¾lˆæ­¢åQŒæˆ–出现业务场景异常崩溃½{‰ç¨³å®šæ€§é—®é¢˜ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>数据传输斚w¢åQ?/strong>鸿蒙 OS ä¸ÞZº†ä¼˜åŒ– Worker 的性能和负载,å¯?Worker 的数量和单个 Worker 的传输上限进行了限制。é¿`è’?Worker 的单个传输上限类ä¼égºŽå®‰å“中的 Binder 机制åQŒä¹Ÿå­˜åœ¨¾cÖM¼¼çš„传输限制。不˜q‡ï¼Œå®‰å“¾U¿ç¨‹é€šå¸¸æ²¡æœ‰ä¸¥æ ¼é™åˆ¶åQŒå› ä¸ºçº¿½E‹æœ¬è´¨ä¸Šæ˜¯ä¸€ä¸ªå†…存拷贝过½E‹ï¼Œé™¤éžå¼€å‘者通过指针½{‰æ–¹å¼è‡ªå®šä¹‰¾U¿ç¨‹é—´æ•°æ®ä¼ è¾“ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在传输格式上åQ?/strong>鸿蒙 OS 支持通过 Sendable 接口˜q›è¡Œæ•°æ®ä¼ è¾“。Sendable 是一¿Uæ³¨è§£æ–¹å¼å®šä¹‰çš„æ•°æ®¾l“æž„åQŒå…·æœ‰ä¼ æŸ“性,卛_¦‚果一个类被标è®îCØ“ SendableåQŒå…¶å…Œ™”属性也必须æ˜?Sendable ¾cÕdž‹ã€‚é¿`è’?OS 支持基础数据¾cÕdž‹åQˆå¦‚ number、stringåQ‰å’Œé›†åˆ¾cÕdž‹ä½œäØ“ Sendable 传输的内宏V€‚对于跨模块调用åQŒé¿`è’?OS 不允è®?Worker è·?HAP 或跨 HSP 调用。相比之下,安卓应用通常˜qè¡Œåœ¨ä¸€ä¸ªæˆ–多个 Dex æ–‡äšg中,允许è·?Dex 或跨模块的线½E‹é—´è°ƒç”¨ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>TaskPool ¾cÖM¼¼äºŽåŒç«¯çš„协程概念åQŒæ˜¯ä¸€¿Uè½»é‡çñ”¾U¿ç¨‹åQŒä»…存储函数ã€?/strong>不过åQŒTaskPool 与协½E‹æœ‰æ‰€ä¸åŒåQŒå®ƒç‹¬ç«‹äºŽä“Q务维度,且ä“Q务执行时长有限制åQˆè¶…˜q?3 分钟会被¾pȝ»Ÿè‡ªåŠ¨å›žæ”¶åQ‰ã€‚安卓åã^台可以通过 ASM 插桩技术对¾U¿ç¨‹çš„创建和执行˜q›è¡Œç›‘控和优化,但轻量çñ”¾U¿ç¨‹æˆ–协½E‹çš„实现通常依赖于线½E‹æ± æˆ–协½E‹æœºåˆ¶ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">TaskPool 中的ä»ÕdŠ¡é»˜è®¤æ”¯æŒæ•°æ®è½¬ç§»åQˆtransferåQ‰ï¼Œä¸æ”¯æŒæ‹·è´ã€‚此外,TaskGroup 不支æŒ?SDK 初始化包的加载。某些同学习惯在异步¾U¿ç¨‹ä¸­è§¦å?SDK 的行为,在é¿`è’?OS 上可能会å›?TaskPool 生命周期¾l“束而导致变量被释放ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>关于òq¶è¡ŒåŒ–数据传输的 Sendable 概念åQ?/strong>Sendable 通过¾pȝ»Ÿæä¾›çš?SharedHeapåQˆå…±äº«å †åQ‰å®žçŽîC¼ è¾“。共享堆与本地堆åQˆlocal HeapåQ‰çš„区别在于åQŒå…±äº«å †æ”¯æŒ Sendable 化数据的传输åQŒè€Œæœ¬åœ°å †åˆ™éœ€è¦åºåˆ—化。共享堆的管理和控制耗费了华ä¸ÞZ¸“家大量时间和¾_‘ÖŠ›åQŒå…¶ä¸­è¿˜æ¶‰åŠå¤æ‚的异步锁åQˆasync lockåQ‰æœºåˆ¶ã€‚在 RTS òq¶å‘实例期间åQˆåŒ…æ‹?Worker、TaskPool ½{‰ï¼‰åQŒæ•°æ®å¯ä»¥é€šè¿‡ Sendable 传递,ä½?Worker 需要ä‹É用单独的 API。TaskPool 则完全支æŒ?Sendable 的直接传输。这¿Uå¼‚步锁机制允许åœ?TaskPool æˆ?Worker 中锁定其他ä“Q务中的某些函敎ͼŒå®žçް¾U¿ç¨‹é—´çš„同步åQŒç±»ä¼égºŽå®‰å“中的 synchronized 或其他锁机制ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095652084-1773569795.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /></div><h1>5、小¾U¢ä¹¦å…¸åž‹òq¶è¡ŒåŒ–场æ™?/h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>ž®çº¢ä¹¦åœ¨ä¸€äº›å…¸åž‹åŒ–场景中已¾lå®žçŽîCº†òq¶è¡ŒåŒ–处理ã€?/strong>例如åQŒç½‘¾lœè¯·æ±‚是一个典型的耗时操作åQŒå› ä¸ø™¯·æ±‚过½E‹ä¸­æ¶‰åŠéªŒç­¾å’Œå®‰å…¨èƒ½åŠ›çš„å¤„ç†åQŒè¿™äº›æ“ä½œå¦‚果在ä¸Èº¿½E‹ä¸­åŒæ­¥å®ŒæˆåQŒå¯èƒ½ä¼šå¯ÆD‡´åº”用掉å“á。当用户滑动æ—Óž¼ŒæŽ‰å“á现象会非常明显,˜q™é€šå¸¸æ˜¯ç”±äºŽå¤§é‡è®¡½Ž—引èµïLš„ã€‚äØ“äº†è§£å†Œ™¿™ä¸€é—®é¢˜åQŒæˆ‘们采用了 Worker 化的方式åQŒå°†˜q™äº›æ“ä½œ¿UÕdˆ° Worker ¾U¿ç¨‹ä¸­ï¼Œä»Žè€Œé¿å…ä¸»¾U¿ç¨‹çš„卡™åѝ€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在进行埋ç‚ÒŽ—¶åQŒå¯èƒ½ä¼šæ¶‰åŠæ•°æ®åº“çš„ IO 操作åQŒè¿™äº›æ“ä½œä¹Ÿä¸å¾è®®åœ¨ä¸Èº¿½E‹ä¸­æ‰§è¡Œã€‚通过ž®†è¿™äº›æ“ä½œæ”¾åˆ?Worker ¾U¿ç¨‹ä¸­ï¼Œå¯ä»¥æœ‰æ•ˆé¿å…å¯¹ä¸»¾U¿ç¨‹çš„媄响ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">针对双列布局中的囄¡‰‡å’Œèµ„源预加蝲åQŒæˆ‘ä»¬é‡‡ç”¨åŽä¸ø™‡ªç ”çš„ RCP ¾|‘络解决æ–ÒŽ¡ˆåQˆç±»ä¼égºŽ HTTPåQ‰ï¼Œé€šè¿‡ Worker ¾U¿ç¨‹åœ¨è¿œç«¯è¿›è¡Œä¸‹è½½ï¼Œòq¶åœ¨å®ŒæˆåŽå°†¾l“æžœ˜q”回åˆîC¸»¾U¿ç¨‹ã€‚此外,TaskPool 的应用场景也非常òq¿æ³›åQŒä¾‹å¦‚文件上传、多媒体操作以及启动ä»ÕdŠ¡çš„ç¼–æŽ’ç­‰ã€‚TaskPool 的优势在于轻量化åQŒé¿å…äº†¾U¿ç¨‹ä¸Šä¸‹æ–‡åˆ‡æ¢å¸¦æ¥çš„不必要耗时ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>关于冷启动和首刷场景的优化ã€?/strong>˜q™éƒ¨åˆ†ä¸»è¦åŒ…括两个方面:模块的懒加蝲和动态组件的复用池。懒加蝲是应用开发中常见的优化手ŒDµï¼Œ¾cÖM¼¼äºŽå®‰å“端çš?class order 机制。当应用不需要某个类æ—Óž¼Œå¯ä»¥å»¶è¿ŸåŠ è²è¯¥ç±»åQŒç›´åˆ°çœŸæ­£éœ€è¦ä‹É用时才加载。这¿Uæ–¹å¼å¯ä»¥æ˜¾è‘—提高冷启动阶段的代码加载效率,从而大òq…降低冷启动旉™•¿ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>动态组件和¾l„äšgå¤ç”¨æ± åˆ™æ˜¯äØ“äº†è§£å†?UI ¾l„äšg重复创徏的问题ã€?/strong>在应用中åQŒå¯èƒ½ä¼šæœ‰å¤š¿Uç›¸åŒç±»åž‹çš„ UI ¾l„äšgåQˆä¾‹å¦‚小¾U¢ä¹¦ä¸­çš„½W”è®°¾l„äšgåQ‰ã€‚äØ“äº†é¿å…é‡å¤åˆ›å»ºå¸¦æ¥çš„å¼€é”€åQŒæˆ‘们希望在˜qè¡Œæ—¶å°½é‡å¤ç”¨å·²æœ‰çš„¾l„äšgåQŒè€Œä¸æ˜¯é¢‘¾Jåœ°åˆ›å¾å’Œé”€æ¯ã€?/p><h1>6、类前端视角下的模块懒加è½?/h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>我们通过特定的分析工具对懒加载进行了深入分析ã€?/strong>如图所½Cºï¼Œæˆ‘们能够识别出启动过½E‹ä¸­åŠ è²çš„å„¿Uæ¨¡å—,包括 RNOHåQˆReact Native on HarmonyåQ‰ã€Web engineåQˆç½‘™åµå¼•擎)、Red PlayeråQˆæ’­æ”‘Ö™¨åQ‰ç­‰¾l„äšg。这些模块的加蝲˜q‡ç¨‹æ¶‰åŠåˆ°å¤šä¸?so æ–‡äšgåQŒå³å…׃ín对象文äšgã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095658657-2113307207.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> é€šè¿‡è‡ªä¸Šè€Œä¸‹çš„分析方法,我们可以清晰地看到每个模块加载的具体耗时。进一步分析这äº?so æ–‡äšgä¸?RTSåQˆè¿è¡Œæ—¶¾pȝ»ŸåQ‰çš„å…Œ™”åQŒä»¥åŠå®ƒä»¬æ‰€å¼•å…¥çš?Napi çš?TS æ–‡äšg。我们进行了懒加载潜在对象的分析åQŒå‘现许å¤?RTS å®žé™…ä¸ŠåÆˆä¸éœ€è¦çš„¾cÀL–‡ä»¶å·²¾lè¢«åŠ è²ã€‚è¿™æ˜¯å› ä¸ºå¼€å‘è€…åœ¨¾~–写代码æ—Óž¼Œå¯èƒ½òq¶æœªå……分考虑到导入一个类或方法对应用启动延迟的媄响ã€?/p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">ä¸ÞZº†ä¼˜åŒ–˜q™ä¸€˜q‡ç¨‹åQŒæˆ‘们的目标是减ž®‘字节码中需要加载的¾cÀL–‡ä»¶æ•°é‡ï¼Œä»Žè€ŒåŠ å¿«åº”ç”¨çš„å†·å¯åŠ¨é€Ÿåº¦ã€‚åŽä¸ºæä¾›çš„¾~–译器能够将 RTS ¾~–译æˆ?Ark bytecodeåQˆæ–¹èˆŸå­—节码åQ‰ï¼Œ˜q™æ˜¯ä¸€¿Ué«˜æ•ˆçš„字节码格式。通过减少需要加载的¾cÀL–‡ä»¶æ•°é‡ï¼Œæˆ‘们可以显著提高应用的启动速度ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">åŽäØ“˜q˜æä¾›äº†ä¸€¿Uæ‡’加蝲的导入方式,只有在真正需要ä‹É用某个类æ—Óž¼Œå®ƒæ‰ä¼šè¢«åŠ è²ã€‚è¿™¿Uæ‡’加蝲机制有助于减ž®‘应用启动时的资源消耗。这引发了一个问题:ä¸ÞZ»€ä¹ˆåŽä¸ÞZ¸é»˜è®¤é‡‡ç”¨å…¨æ‡’加蝲方式åQŒå³åªæœ‰åœ¨ä‹É用时才加载类文äšg呢?我已¾lå°†˜q™ä¸ªé—®é¢˜åé¦ˆ¾l™åŽä¸ºï¼Œòq¶ä¸”¾pȝ»Ÿä¾§å¯èƒ½ä¼šè€ƒè™‘在未来的版本中默认采用懒加蝲方式åQŒåŒæ—¶ä»ç„¶å…è®¸ç”¨æˆäh‰‹åŠ¨é€‰æ‹©éžæ‡’åŠ è²çš„æ–¹å¼è¿›è¡Œç±»æ–‡äšg的加载ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095706195-1478026318.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /></div><h1>7、动态组ä»?/h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在小¾U¢ä¹¦çš„首™åµåœºæ™¯ä¸­åQŒç¬”记卡¾l„äšg在多个场景中被复用ã€?/strong>ä¸ÞZº†é¿å…é‡å¤åˆ›å¾ UI 坯D‡´çš„æ€§èƒ½æ¶ˆè€—,我们采用了动态组件的概念。动态组件的核心原理是利用占位符来åšg˜qŸç»„件的创徏åQŒè¿™ä¸?Android 开发中使用 Stub 模式的概å¿ëŠ›¸ä¼¹{€‚在˜q™ç§æ¨¡å¼ä¸‹ï¼Œå¯ä»¥ä½¿ç”¨ä¸€ä¸ªä»£ç†å¯¹è±¡ï¼ˆstubåQ‰æ¥ä»£è¡¨ž®šæœªåˆå§‹åŒ–çš„¾l„äšgåQŒä»Žè€Œåšg˜qŸç»„件的创徏˜q‡ç¨‹ã€‚当真正需要渲染组件时åQŒå†ž®†æ¸²æŸ“内容填充进去,从而避免每‹Æ¡è°ƒç”¨æž„建函敎ͼˆå¦?buildåQ‰æ—¶çš„耗时ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">占位逻辑通过¾pȝ»Ÿçš?API 实现åQŒæ¶‰åŠåˆ° NodeContainer å’?NodeController 的绑定关¾p…R€‚Container å’?Controller 一一映射åQŒç”± NodeCore ˜q›è¡Œ½Ž¡ç†ã€‚Container 仅管理当前展现的内存部分åQŒä‹Éç”¨å®Œæ¯•åŽéœ€è¦å°†å…¶æ”¾å›žæ± ä¸­è¿›è¡Œå›žæ”¶å’Œå†åˆ©ç”¨ã€‚ä»¥å†·å¯åŠ¨é¦–åˆ·äØ“ä¾‹ï¼Œåœ¨å¯åŠ¨é˜¶ŒDµå¯ä»¥å…ˆèŽ·å–¼‚ç›˜ä¸Šçš„½W”记内容åQŒç„¶åŽåœ¨ BuilderNode 中预先创建多ä¸?Image ¾l„äšgã€‚è¿™æ øP¼Œåœ¨ç­‰å¾…网¾lœæˆ–推荐接口响应æ—Óž¼ŒImage ¾l„äšg已经创徏完毕åQŒä»Žè€Œåœ¨é¦–页åˆäh–°æ—¶å¯ä»¥ç«‹å³ä‹É用这些组ä»Óž¼Œ˜q™å¯¹äºŽæé«˜é¦–刷非常有益ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095713990-2006155962.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> å¯¹äºŽ¾l„äšg复用池,当动态组件不再ä‹É用时åQŒéœ€è¦å°†å…¶è¿”回到¾l„äšg池中。对于自定义¾l„äšgåQŒé€šè¿‡ NoteContainer 占位方式åQŒç”± NodeController ˜q›è¡Œ½Ž¡ç†ã€‚在需要创建子¾l„äšgæ—Óž¼Œå…ˆåœ¨ NodePool 中查找,如果找不刎ͼŒåˆ™åˆ›å»ºæ–°¾l„äšgåQ›å¦‚果找刎ͼŒåˆ™å°è¯•复用。流½E‹å›¾å±•示了从 Container 装蝲 NodeItem 开始,通过 NodePool 查找åQŒå¦‚果找到则˜q›è¡Œæ¡äšg判断和复用ã€?/p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">¾l„äšg的新建和复用˜q‡ç¨‹ä¸­ï¼Œå¦‚果扑ֈ°å¯¹åº”çš?NodeItemåQŒåˆ™è°ƒç”¨ build æ–ÒŽ³•òq¶æ›´æ–°è‡ªå®šä¹‰¾l„äšg的状态,完成复用。如果有对应çš?NodeItemåQŒå¯ä»¥ç›´æŽ¥é€šè¿‡ update å‡½æ•°æ›´æ–°å†…éƒ¨çŠ¶æ€åÆˆåˆäh–° UI。但要注意,update æ–ÒŽ³•可能会因状态变量过于复杂而导致更新åšg˜qŸï¼Œå‡ºçŽ°å›‘ÖƒŒD‹åª„。因此,需要拆åˆ?stateåQŒä‹Éå…¶èƒö够小åQŒä»¥¼‹®ä¿çŠ¶æ€å˜æ›´åˆ°é€šçŸ¥ UI 的时间羃短,消除ŒD‹åª„ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">我们的策略是优先åœ?NodePoolåQˆèŠ‚ç‚ÒŽ± åQ‰ä¸­æŸ¥æ‰¾å¯ç”¨çš?NodeItemåQˆèŠ‚ç‚šw¡¹åQ‰ã€‚如æž?NodePool 中存在可用的 NodeItemåQŒæˆ‘们就直接使用它,òq‰™€šè¿‡ getNode æ–ÒŽ³•˜q›è¡Œ item ¾l‘定åQŒéšåŽæ›´æ–°å…¶çŠ¶æ€ä»¥å®žçŽ°å¤ç”¨ã€‚å¦‚æž?NodePool 中没有找到对应的 NodeItemåQŒé‚£ä¹ˆæˆ‘们将通过 makeNode æ–ÒŽ³•调用 build 函数来创建新的节炚w¡¹ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">完成¾l„äšg的复用后åQŒæˆ‘们需要将˜q™äº›¾l„äšg˜q”回到缓存池中,以便在未来可以再‹Æ¡ä‹É用。这个过½E‹æ¶‰åŠåˆ° NodeContaineråQˆèŠ‚ç‚¹å®¹å™¨ï¼‰å’?NodeControlleråQˆèŠ‚ç‚ÒŽŽ§åˆ¶å™¨åQ‰çš„销毁,òq¶å°† NodeItem 重新攑֛ž NodePool ä¸­ã€‚äØ“äº†æ›´æœ‰æ•ˆåœ°ç®¡ç†ç¼“å­˜ï¼Œä¸šåŠ¡å±‚å¯ä»¥åˆ©ç”?LRUåQˆæœ€˜q‘最ž®‘ä‹É用)½Ž—法åQŒæˆ–者é¿`蒙系¾lŸæä¾›çš„ LRUCache å’?LiUHashMap ½{‰æ•°æ®ç»“构,来自定义¾~“存的大ž®ï¼Œä»Žè€Œä¼˜åŒ–组件的复用和缓存策略ã€?/p><h1>8、滑动类场景</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在小¾U¢ä¹¦åº”用中,滑动¾cÕdœºæ™¯éžå¸¸æ™®éï¼ŒåŒ…括推荐™å늚„子频道、个人页中的收藏点赞以及用户自己发布的笔讎ͼŒ˜q˜æœ‰æœçƒ¦¾l“æžœ™åµä¸­çš„æœç´¢ç»“果和用户商品½{‰ï¼Œ˜q™äº›éƒ½æ˜¯åŒåˆ—滑动场景。这些双列滑动场景占据了ž®çº¢ä¹¦ç”¨æˆ·ä½“验的 90% åˆ?95%åQŒå› æ­¤ï¼Œæ»‘动体验的流畅性对于用æˆïLš„æ•´ä½“体验臛_…³é‡è¦ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>ä¸ÞZº†æå‡æ»‘动场景的流畅性,ž®çº¢ä¹¦é‡‡ç”¨äº† RCP 框架来优化网¾lœèµ„源的获取ã€?/strong>RCP 是华为提供的一个系¾lŸç»„件能力,主要解决¾|‘络资源获取效率问题。通过 RCPåQŒå¼€å‘者可以在需要时发è“v¾|‘络è¯äh±‚åQŒåƈ自定义资源的写入地址åQŒå¦‚æ–‡äšgæˆ?ArrayBuffer。RCP 负责高效地将资源写入指定位置åQŒè€Œåœ¨ä¸éœ€è¦æ—¶åQŒå¯ä»¥å–æ¶?RCP è¯äh±‚åQŒä»Žè€Œä¼˜åŒ–资源管理ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095720506-16141495.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> RCP 的核心能力在于能够取消请求,òq¶å¯¹å¼Þq½‘场景˜q›è¡Œäº†ä¼˜åŒ–,其徏联过½E‹ä¼˜äº?HTTP 1.1 æˆ?2.0。基äº?RCPåQŒå°¾U¢ä¹¦˜q˜åº”ç”¨äº†åŽäØ“ä¿„ç ”æ‰€æä¾›çš?Prefetch æ–ÒŽ¡ˆã€‚Prefetch æ–ÒŽ¡ˆåœ¨ç€‘布‹¹ç»„件的可见区变更时åQŒé€šè¿‡ worker ¾U¿ç¨‹åQˆå¦‚ prefetched workeråQ‰å¯åŠ¨èµ„æºèŽ·å–ï¼Œå½“ä¸å¯è§æ—¶å…³é—­ï¼Œä»Žè€Œä¼˜åŒ–å¿«é€Ÿæ»‘åŠ¨åœºæ™¯ï¼Œå‡å°‘ä¸å¿…è¦çš„å¸¦å®½æ¶ˆè€—ã€?/p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在快速滑动过½E‹ä¸­åQŒæœ‰äº?item 可能短暂消失åQŒå¯¹äºŽåŒç«¯åœºæ™¯ï¼Œ¾|‘络è¯äh±‚可能已经发出且在途,无法取消åQŒå¯¼è‡´å¸¦å®½æµªè´V€‚Prefetch å’?RCP ¾l“合的方式可以优化这¿Uå¿«æ»‘场景,防止真正惌™¦çœ‹çš„内容出现白块。Prefetched worker ¾U¿ç¨‹½Ž¡ç†å¤šä¸ª RCP è¯äh±‚åQŒæ¯ä¸ªè¯·æ±‚都有完整的生命周期。当通过 RCP è¯äh±‚获取到所需资源æ—Óž¼Œä¼šé€šçŸ¥ä¸Èº¿½E‹ï¼Œä¸Èº¿½E‹æ ¹æ®åœ°å€åŠ è²èµ„æºåˆ?Image ¾l„äšg或占位符 RQI ¾l„äšg中ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在小¾U¢ä¹¦çš„开发过½E‹ä¸­åQŒæˆ‘们遇åˆîCº†ä¸€äº›æ€§èƒ½çƒ­ç‚¹é—®é¢˜åQŒè¿™äº›é—®é¢˜å¤§å¤šæ˜¯é€šè¿‡ Code LinteråQˆä»£ç æ£€æŸ¥å·¥å…øP¼‰‹‚€‹¹‹å‡ºæ¥çš„。由于开发节奏快åQŒå¼€å‘者在¾~–写代码时可能难以关注到性能问题åQŒå› æ­¤éœ€è¦?CIåQˆæŒ¾l­é›†æˆï¼‰‹‚€æŸ¥å·¥å…äh¥è¾…助‹‚€æŸ¥ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>常见的性能热点包括åQ?/strong></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>1åQ?/em></strong><span style="color: #800000;">在列表场景中频繁使用çš?LadyForEach ¾l„äšgåQŒéœ€è¦æŒ‡å®?key 以实现列表复用ã€?/span>如果开发者忘记指å®?keyåQŒCode Linter 会报错提½Cºï¼›</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>2åQ?/em></strong><span style="color: #800000;">åœ?onClick æˆ?onVisible ½{‰å‡½æ•îC¸­¾~–写½I?callbackåQˆå›žè°ƒå‡½æ•ŽÍ¼‰ã€?/span>当这些空 callback ¿U¯ç¯åˆîC¸€å®šæ•°é‡ï¼ˆå¦‚几百个或上千个åQ‰æ—¶åQŒå¯èƒ½ä¼šä¸¥é‡æ‹–慢应用性能。Code Linter å¯ä»¥æ‰«æå‡ø™¿™¾c»é—®é¢˜ï¼›</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>3åQ?/em></strong><span style="color: #800000;">未ä‹Éç”?TaskPool 处理¾|‘络资源ã€?/span>例如åQŒImage Bitmap 直接传é€?URL ˜q›è¡ŒåŒæ­¥åŠ è²åQŒå½“¾|‘络é˜Õd¡žæ—¶ä¼šå¯ÆD‡´ UI ¾U¿ç¨‹å¡é¡¿åQ?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>4åQ?/em></strong><span style="color: #800000;">复杂çš?ETS ¾l„äšg在列表场景下未实现重用ã€?/span>未设¾|®é‡ç”¨çš„ ETS ¾l„äšg在列表滚动时需要重新构建,非常耗时。组件嵌套层¾U§è¿‡æ·×ƒ¹Ÿä¼šå¯¼è‡´æ€§èƒ½é—®é¢˜ã€‚在安卓端,布局‹‚€æŸ¥å™¨å»ø™®®å®¹å™¨åµŒå¥—不超˜q‡å››å±‚ï¼›</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>5åQ?/em></strong><span style="color: #800000;">使用 JSON.stringify ˜q›è¡Œå¯¹è±¡åºåˆ—化ã€?/span>JSON.stringify 有一定耗时åQŒå°¤å…¶åœ¨å¤„理 100KB 左右的数据时åQŒå¯èƒ½éœ€è¦?10 毫秒左右。Code Linter 会提½Cø™¿™éƒ¨åˆ†æ€§èƒ½é—®é¢˜åQŒä½†æ˜¯å¦éœ€è¦è{异步¾U¿ç¨‹éœ€è¦å¼€å‘者自行判断;</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>6åQ?/em></strong><span style="color: #800000;">调用 Image çš?syncLoadåQˆåŒæ­¥åŠ è½½ï¼‰ã€?/span>在某些场景下åQŒå¦‚转场动画åQŒéœ€è¦åŒæ­¥åŠ è½?image 以保证连贯性。但如果 image 是非¼‚ç›˜èµ„源åQˆå¦‚¾|‘络资源åQ‰ï¼Œä¼šå¯¼è‡´å¡å¸§ã€‚Code Linter å¯ä»¥æ‰«æå‡ø™¿™¾c»é—®é¢˜ï¼›</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>7åQ?/em></strong><span style="color: #800000;">关于¾~–译器的优化ã€?/span>ETS ¾l„äšg应避免嵌套过深。如果嵌套过深,可以ž®†æ¯å±‚函数通过¾pȝ»Ÿçš?builder param æˆ?builder 函数转换。ä‹Éç”?@builder 注解标识的函æ•îC¼šåœ¨ç¼–译期间与 ETS 代码整合åQŒä»Žè€Œæé«˜ç¼–译器优化效果ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">Code Linter 支持全量扫描和基äº?Git DIFF 的增量扫描,但目前华为的 Code Linter ˜q˜ä¸èƒ½ä¸Ž Git Prehook å…Œ™”åQŒå¯¼è‡´æ— æ³•在‹¹æ°´¾U¿ä¸Šè‡ªåЍ‹‚€æŸ¥ã€‚虽ç„?CI ‹‚€æŸ¥é˜¶ŒDµå·²æœ?Code LinteråQŒä½†æœ¬åœ°ä»£ç æäº¤é˜¶æ®µä»éœ€æ‰‹åЍ˜qè¡Œè„šæœ¬åQŒæ— æ³•å®žçŽ°è‡ªåŠ¨æ£€æŸ¥ã€‚æˆ‘ä»¬æ­£åœ¨å‚¬ä¿ƒåŽä¸ø™§£å†Œ™¿™ä¸€é—®é¢˜ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095727349-1682226898.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> </p></div><h1>9、UI 重蝲场景分å“áæ–ÒŽ¡ˆ</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在处ç?UI 重蝲场景æ—Óž¼Œæˆ‘们采用了一¿Uç§°ä¸ºåˆ†å¸§æ–¹æ¡ˆçš„æ–ÒŽ³•ã€?/strong>分å“á˜q™ä¸ªæœ¯è¯­çš„含义是åQŒå½“应用在一帧内无法完成所有绘制工作,或者在多å“á内都无法完成æ—Óž¼Œä¼šå¯¼è‡´å±òq•卡™å¿çŽ°è±¡ã€‚å°½½Ž¡ç”¨æˆ·å¯ä»¥çœ‹åˆ°ç”»é¢ï¼Œä½†å´æ— æ³•˜q›è¡Œæ»‘动或操作。在˜q™ç§æƒ…况下,分å“áæ–ÒŽ¡ˆž®±æ˜¾å¾—尤为合适。虽然分帧方案可能看èµäh¥ä¸æ˜¯æœ€ä¼˜é›…的解军_Šžæ³•ï¼Œä½†å®ƒ¼‹®å®žèƒ½å¤Ÿæœ‰æ•ˆåœ°è§£å†Ïx€§èƒ½é—®é¢˜åQŒä‹É应用性能辑ֈ°é¢„期标准。分帧方案虽然看似是一¿Uåº”急措施,但它能够帮助应用性能达标ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>分å“áæ–ÒŽ¡ˆçš„æµ½E‹å¤§è‡´å¦‚下:</strong>假设我们有数æ?a、b、c 需要渲染,未采用分帧方案前åQŒæ•°æ?a、b、c ä¼šåŒæ—¶åˆ°è¾‘ÖÆˆè§¦å‘状态变æ›ß_¼Œ˜q›è€Œé©±åŠ¨æ•´ä¸?UI ˜q›è¡Œåˆäh–°ã€‚这会导致在一帧内需要绘制大é‡?UI ¾l„äšgåQŒä»Žè€Œåª„å“åº”ç”¨æ€§èƒ½ã€‚äØ“äº†è§£å†Œ™¿™ä¸ªé—®é¢˜ï¼Œæˆ‘们采用分å“áæ–ÒŽ¡ˆåQŒå°†æ•°æ® a、b、c 拆分开åQŒåˆ†åˆ«åœ¨ä¸åŒçš„å“á中进行渲染。例如,数据 a 在第一帧中渲染完成后,通过调用宏观指ä×o让其˜q›å…¥ä¸‹ä¸€é˜¶æ®µåQŒç„¶åŽåœ¨ä¸‹ä¸€å¸§ä¸­æ›´æ–°æ•°æ® båQŒä¾æ­¤ç±»æŽ¨ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095737895-546186029.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> </p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在小¾U¢ä¹¦çš„图文笔记场景中åQŒåˆ†å¸§æ–¹æ¡ˆå¾—åˆîCº†åº”用ã€?/strong>当用户在首页的双列场景中点击一½‹‡ç¬”记进入笔记详情页æ—Óž¼Œ˜q™ä¸ª˜q‡ç¨‹æ¶‰åŠåˆ°è®¸å¤šç»„件的加蝲。我们可以将˜q™äº›¾l„äšg拆分成不同的帧,例如å¸?a、å“á b å’Œå“á c。对于用戯‚€Œè¨€åQŒä»–们通常希望在第一旉™—´çœ‹åˆ°æ•´ä¸ªå¤§å±çš„画面,因此我们会优先在å¸?a 中展½Cºå¤§å›¾ã€‚而在å¸?b å’Œå“á c 中,我们再处理顶部导航栏或底部交互区½{‰å†…宏V€‚通过˜q™ç§åˆ†å“á½{–ç•¥åQŒæˆ‘们能够确保用户在½W¬ä¸€æ—‰™—´çœ‹åˆ°æœ€å…³é”®çš„内容,同时避免了因ä¸ÞZ¸€‹Æ¡æ€§åŠ è½½è¿‡å¤šç»„ä»¶è€Œå¯¼è‡´çš„æ€§èƒ½é—®é¢˜ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095744638-1715916034.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /></div><h1>10、é¿`è’™NEXT调优工具</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>传统的主观工具对于é¿`è’?OS 的性能分析仍然适用ã€?/strong>例如åQŒæŠ–韛_’Œž®çº¢ä¹¦éƒ½é€šè¿‡ç«žå“åˆ†æžæ¥è¿›è¡Œä¸»è§‚测评。这¿Uèƒ½åŠ›ä¸»è¦æ˜¯é€šè¿‡å½•å±æ¥å±•½Cºæ•´ä¸ªæµ½E‹çš„耗时和时长,特别适合评估冷启动完成时延和转场˜q‡ç¨‹çš„æ€§èƒ½ã€‚通过录屏åQŒæˆ‘们可以逐å“áæŸ¥çœ‹ç”¨æˆ·ä»Žç‚¹å‡Õd¼€å§‹åˆ°¾l“束的å“áæ•°å’ŒçœŸå®žæ—‰™•¿åQŒä»¥æ­¤æ¥è¡¡é‡æ•´ä¸ª˜q‡ç¨‹çš„æŒ¾l­æ—¶é—´ã€?/p><h3>10.1 é¸¿è’™æ€§èƒ½åˆ†æžå·¥å…·åQšIDE Profiler</h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">除了主观工具åQŒæˆ‘们还可以使用 IDE 提供的性能分析工具åQŒå¦‚ ProfileråQŒæ¥åˆ†æžæ…¢å‡½æ•°ã€‚ç”±äº?ArkTS ¾~–程语言框架主要通过 RTS å’?NAPIåQˆåŽŸç”Ÿåº”ç”¨æŽ¥å£ï¼‰˜q›è¡Œå…Œ™”åQŒå› æ­¤éœ€è¦èƒ½å¤ŸæŸ¥çœ?ArkTS å’?NAPI 的整个堆栈层¾U§ã€‚这与安卓有所不同åQŒå› ä¸ºå½“ Java 通过 Java Native API 与原生代码交互时åQŒå †æ ˆåƈ不那么容易查看ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在小¾U¢ä¹¦çš„æ€§èƒ½åˆ†æžä¸­ï¼Œæˆ‘们展示了一个整体线½E‹åˆ†æžçš„例子。在左侧åQŒå¯ä»¥çœ‹åˆ°å°¾U¢ä¹¦çš„主¾U¿ç¨‹åQˆå¦‚ com 点开头的¾U¿ç¨‹åQ‰ã€Daemon ¾U¿ç¨‹ã€Worker ¾U¿ç¨‹ä»¥åŠ FFRT ¾U¿ç¨‹ã€‚FFRT 是一¿Uè¿è¡Œå‡½æ•°æµçš„线½E‹ï¼Œå¯ä»¥æ‰§è¡Œ TaskPool 上的函数。在下图右侧åQŒæˆ‘们可以看到在 RTS 环境下的分析¾l“æžœåQŒå…¶ä¸­é¡¶éƒ¨æ˜¾½CÞZº† NAPI 调用åQŒåº•部则是一äº?C++ 函数。整个调用栈和它们的执行旉™•¿æ˜¯é€šè¿‡ä¸€¿Uè‡ªä¸Šè€Œä¸‹çš„视图来展示的。利用这¿Uè§†å›¾ï¼Œæˆ‘们可以¾_„¡¡®åœ°è¯†åˆ«å‡ºå“ªäº›æ…¢å‡½æ•°æ˜¯é€ æˆç•Œé¢å¡é¡¿çš„原因ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095751591-1532375318.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"><strong>10.2 æ€§èƒ½åœºæ™¯‹¹‹è¯•工具åQšDevEco Testing</strong></p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">DevEco Testing 是一个性能‹¹‹è¯•工具åQŒå®ƒçš„功能非常全面,性能‹¹‹è¯•只是其中的一部分。除了性能‹¹‹è¯•åQŒå®ƒ˜q˜æ”¯æŒå¤š¿Uæµ‹è¯•场景,包括 debug testing。在 debug testing 场景中,用户可以自定义业务场景,监测 CPU 的耗时和负载、GPU 的耗时和负载、设备发热情况以及功耗等问题ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095758308-470924747.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;">使用 DevEco Testing ˜q›è¡Œæ€§èƒ½‹¹‹è¯•的过½E‹å¦‚下:首先定义‹¹‹è¯•场景åQŒç„¶åŽæ•èŽ·ä¸»å¸§æ•°æ®ã€‚ä¸€æ—¦å¼€å§‹æ•èŽøP¼Œž®±å¯ä»¥è§‚‹¹‹åˆ° FPSåQˆå“á率)、GPU 负蝲以及整体功耗等数据。完成性能数据捕获后,工具会生成一份报告,为用æˆähä¾›äº†ä¸€ä¸ªå®Œæ•´çš„场景分析。不˜q‡ï¼Œç›®å‰åœºæ™¯å®šä¹‰˜q˜ç¼ºä¹è„šæœ¬åŒ–èƒ½åŠ›åQŒéœ€è¦äh工操作辅助。未来,我们期望能够实现场景定义的脚本化配置åQŒç±»ä¼égºŽè‡ªåŠ¨åŒ–æµ‹è¯•ã€‚è¿™æ øP¼Œž®±å¯ä»¥é€šè¿‡è‡ªåŠ¨åŒ–å·¥å…øP¼Œå®žçŽ°æ›´é«˜æ•ˆçš„‹¹‹è¯•‹¹ç¨‹ã€?/p></div><h1>11、小¾l“与展望</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在对性能场景˜q›è¡Œä¼˜åŒ–后,我们可以看到显著的收益。在实验室环境下的测试显½Cºï¼Œå†·å¯åŠ¨æ—¶é—´å¯ä»¥é™ä½?50%åQŒå“åº”时延可以低äº?100 毫秒åQŒå®Œæˆæ—¶å»¶åˆ™ä¿æŒä¸ŽåŒç«¯æŒòqÏxˆ–更优。在‹¹ç•…性方面,在多场景和重载场景下均实çŽîCº† 0 丢å“á的成果。需要注意的是,˜q™é‡Œçš„æµ‹è¯•是在非重蝲模式下进行的åQŒå³æ²¡æœ‰åŒæ—¶˜qè¡Œå¤šä¸ªèµ„源密集型应用,如《王者荣耀》或《和òq³ç²¾è‹±ã€‹ç­‰ã€‚在˜q™ç§æ¡äšg下,我们的核心场景,如冷启动、搜索和个äh™å늭‰åQŒéƒ½èƒ½å¤Ÿä¸ŽåŒç«¯å®Œå…¨å¯¹é½ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095805977-1776350243.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"><strong>展望未来åQŒæœ‰å‡ ä¸ªæ–¹å‘åQ?/strong></p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>1åQ?/em></strong><span style="color: #800000;">首先</span>åQšæˆ‘ä»¬å¸Œæœ›èƒ½å¤Ÿåœ¨å…¨åœºæ™¯ä¸‹å®žçŽ°¾l„äšg复用åQŒä»¥æœ€å¤§ç¨‹åº¦åœ°å®žçް UI 复用。这样可以在多个业务之间的è{场或 UI 创徏˜q‡ç¨‹ä¸­ï¼Œž®†ä¸å¿…要çš?UI 创徏和消耗降到最低ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>2åQ?/em></strong><span style="color: #800000;">其次</span>åQšæˆ‘ä»¬æ­£åœ¨è€ƒè™‘ä»£ç å»¶è¿ŸåŠ è²çš?lazy 机制。华为内部可能将其作为通用的解å†Ïx–¹æ¡ˆï¼Œä½†åœ¨å®žæ–½˜q‡ç¨‹ä¸­æˆ‘们发çŽîCº†è®¸å¤šé—®é¢˜åQŒä¾‹å¦‚å…¨ lazy 加蝲可能会媄响第三方 SDKåQŒå¦‚支付宝等åQŒå› ä¸ºå®ƒä»¬å¯èƒ½è¿›è¡Œäº†é¢å¤–的二˜q›åˆ¶ä¼˜åŒ–åQŒå¯¼è‡´åŠ è½½å¤±è´¥æˆ–æ— æ³•å“åº”ã€‚å› æ­¤ï¼Œæˆ‘ä»¬æœŸæœ›é€šè¿‡ä»£ç å»¶è¿ŸåŠ è²æ¥å®žçŽ°æŒ¾l­æ²»ç†ï¼Œä½†ç›®å‰å®ƒå¯èƒ½˜q˜ä¸é€‚合全场景的 lazy importã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>3åQ?/em></strong><span style="color: #800000;">最å?/span>åQšæˆ‘ä»¬å…³æ³¨é˜²åŠ£åŒ–é—®é¢˜åQŒå³åœ¨æ¯ä¸ªç‰ˆæœ¬å‘布时åQŒæˆ‘们不希望性能指标出现劣化。我们希望能够在开发阶ŒDµå°±å®šä¹‰åŠ£åŒ–æŒ‡æ ‡å’Œå…·ä½“æ•°æ®ï¼Œä»¥é˜²æ­¢åº”ç”¨åŠ£åŒ–ã€‚è¿™éƒ¨åˆ†å¯èƒ½éœ€è¦å€ŸåŠ© DevEco Testing 和主观测评的方式来实现。包括我们关注的指标åQŒä¾‹å¦‚冷启动和流畅性等åQŒæœªæ¥å¯èƒ½ä¼š¾U›_…¥é˜²åŠ£åŒ–åœºæ™¯ã€‚ç›®å‰ï¼Œæˆ‘ä»¬çš?CI 环节æˆ?RC 环节åQŒåŒ…括流水线的性能½Ž¡æŽ§å’Œä»£ç ?CR 机制åQŒéƒ½èƒ½å¤Ÿè§„避˜q™ç±»é—®é¢˜ã€?/p><h1>12、相兌™µ„æ–?/h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[1] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">鸿蒙NEXT官方开发指å?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[2] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">一òq´æ’¸å®Œç™¾ä¸‡è¡Œä»£ç åQŒä¼ä¸šå¾®ä¿¡çš„全新鸿蒙NEXT客户端架构演˜q›ä¹‹è·?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[3] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">鸿蒙NEXT如何保证应用安全åQšè¯¦è§£é¿`è’™NEXTæ•°å­—½{‘֐å’Œè¯ä¹¦æœºåˆ?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[4] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">开源IM聊天½E‹åºHarmonyChatåQšåŸºäºŽé¿`è’™NEXTçš„WebSocket协议</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[5] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信¾U¯è¡€é¸¿è’™ç‰ˆæ­£å¼å‘布,295天走完微ä¿?4òq´æŠ€æœ¯ä¹‹è·¯ï¼</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[6] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">åÏx—¶é€šè®¯æ¡†æž¶MobileIMSDKçš„é¿`è’™NEXT端详¾l†ä»‹¾l?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[7] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">åÏx—¶é€šè®¯æ¡†æž¶MobileIMSDKçš„é¿`è’™NEXT端开发者手å†?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[8] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">拥抱国äñ”化:转è{APPçš„é¿`è’™NEXT端开发尝鲜之æ—?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[9] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信Windows端IM消息数据库的优化实践åQšæŸ¥è¯¢æ…¢ã€ä½“¿U¯å¤§ã€æ–‡ä»¶æŸåç­‰</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[10] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信技术分享:揭秘微信后台安全特征数据仓库的架构设è®?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[11] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">IMè·¨åã^台技术学ä¹?ä¹?åQšå…¨é¢è§£å¯†æ–°QQ桌面版的Electron内存优化实践</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[12] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">企业微信针对百万¾U§ç»„¾l‡æž¶æž„的客户端性能优化实践</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[13] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">揭秘企业微信是如何支持超大规模IM¾l„织架构çš?#8212;—技术解è¯Õd››¾l´å…³¾p»é“¾</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[14] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信团队分äínåQšè¯¦è§£iOSç‰ˆå¾®ä¿¡è§†é¢‘å·ç›´æ’­ä¸­å› å¸§çŽ‡å¼‚å¸¸å¯ÆD‡´çš„功耗问é¢?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[15] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信团队分äínåQšå¾®ä¿¡åŽç«¯æ“v量数据查询从1000ms降到100ms的技术实è·?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[16] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">大型IM工程重构实践åQšä¼ä¸šå¾®ä¿¡Android端的重构之èµ\</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[17] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">IM技术干货:假如你来设计微信的群聊,你该怎么设计åQ?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[18] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信团队分äínåQšæ¥çœ‹çœ‹å¾®ä¿¡åå¹´å‰çš„IM消息收发架构åQŒä½ åšåˆ°äº†å—</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[19] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">æ€ÀL˜¯è¢«ä½Žä¼ŽÍ¼Œä»Žæœªè¢«è¶…­‘Šï¼Œæ­ç§˜QQ极致丝滑背后的硬核IM技术优åŒ?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[20] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">首次公开åQŒæœ€æ–°æ‰‹æœºQQ客户端架构的技术演˜q›å®žè·?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[21] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">大型IM½E›_®šæ€§ç›‘‹¹‹å®žè·µï¼šæ‰‹Q客户端性能防劣化系¾lŸçš„廸™®¾ä¹‹èµ\</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><br /><a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">åQˆæœ¬æ–‡å·²åŒæ­¥å‘布于:http://www.52im.net/thread-4821-1-1.htmlåQ?/a></p><img src ="http://www.aygfsteel.com/jb2011/aggbug/451622.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jb2011/" target="_blank">Jack Jiang</a> 2025-05-19 11:24 <a href="http://www.aygfsteel.com/jb2011/archive/2025/05/19/451622.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>创徏数据集的资源http://www.aygfsteel.com/paulwong/archive/2025/05/18/451621.htmlpaulwongpaulwongSun, 18 May 2025 00:01:00 GMThttp://www.aygfsteel.com/paulwong/archive/2025/05/18/451621.htmlhttp://www.aygfsteel.com/paulwong/comments/451621.htmlhttp://www.aygfsteel.com/paulwong/archive/2025/05/18/451621.html#Feedback0http://www.aygfsteel.com/paulwong/comments/commentRss/451621.htmlhttp://www.aygfsteel.com/paulwong/services/trackbacks/451621.html
AI 数据集生成和模型微调框架 Distilabel 入门指南åQšåŸºæœ¬æ¦‚å¿üc€å®‰è£…与快速开å§?/div>

使用Llama3和distilabel构徏微调数据
https://huggingface.co/blog/dvilasuero/synthetic-data-with-llama3-distilabel



]]>å…¨åã^台开源即旉™€šè®¯IM聊天框架MobileIMSDK的服务端开发指南,支持鸿蒙NEXThttp://www.aygfsteel.com/jb2011/archive/2025/05/15/451618.htmlJack JiangJack JiangThu, 15 May 2025 04:27:00 GMThttp://www.aygfsteel.com/jb2011/archive/2025/05/15/451618.htmlhttp://www.aygfsteel.com/jb2011/comments/451618.htmlhttp://www.aygfsteel.com/jb2011/archive/2025/05/15/451618.html#Feedback0http://www.aygfsteel.com/jb2011/comments/commentRss/451618.htmlhttp://www.aygfsteel.com/jb2011/services/trackbacks/451618.html阅读全文

]]>
强化学习资源http://www.aygfsteel.com/paulwong/archive/2025/04/30/451616.htmlpaulwongpaulwongWed, 30 Apr 2025 06:15:00 GMThttp://www.aygfsteel.com/paulwong/archive/2025/04/30/451616.htmlhttp://www.aygfsteel.com/paulwong/comments/451616.htmlhttp://www.aygfsteel.com/paulwong/archive/2025/04/30/451616.html#Feedback0http://www.aygfsteel.com/paulwong/comments/commentRss/451616.htmlhttp://www.aygfsteel.com/paulwong/services/trackbacks/451616.html蘑菇书EasyRL
李宏毅老师的《深度强化学习》是强化学习领域¾lå…¸çš„中文视频之一。李老师òq½é»˜é£Žè¶£çš„上è¯ùN£Žæ ÆD®©æ™¦æÓ†é𾿇‚的强化学习理论变得轻松易懂,他会通过很多有趣的例子来讲解强化学习理论。比如老师¾lå¸¸ä¼šç”¨çŽ?Atari 游戏的例子来讲解强化学习½Ž—法。此外,ä¸ÞZº†æ•™ç¨‹çš„完整性,我们整理了周博磊老师的《强化学习纲要》、李¿U‘浇老师的《世界冠军带你从零实践强化学习》以及多个强化学习的¾lå…¸èµ„æ–™ä½œäØ“è¡¥å……ã€‚å¯¹äºŽæƒ³å…¥é—¨å¼ºåŒ–å­¦ä¹ åˆæƒ³çœ‹ä¸­æ–‡è®²è§£çš„äººæ¥è¯´ç»å¯ÒŽ˜¯éžå¸¸æŽ¨èçš„ã€?br />
本教½E‹ä¹Ÿ¿UîCØ““蘑菇ä¹?#8221;åQŒå¯“æ„æ˜¯å¸Œæœ›æ­¤ä¹¦èƒ½å¤Ÿä¸ø™¯»è€…注入活力,让读è€?#8220;å?#8221;下这本蘑菇之后,能够饶有兴致地探索强化学习,像马里奥那样愈加强大åQŒç‘ôè€Œåœ¨äººå·¥æ™ø™ƒ½é¢†åŸŸè§…得意外的收莗÷€?/div>




]]>
å…¨åã^台开源即旉™€šè®¯IM框架MobileIMSDKåQ?ç«?TCP/UDP/WebSocket协议åQŒé¿`è’™NEXT端已发布åQ?.7K Starshttp://www.aygfsteel.com/jb2011/archive/2025/04/29/451615.htmlJack JiangJack JiangTue, 29 Apr 2025 07:29:00 GMThttp://www.aygfsteel.com/jb2011/archive/2025/04/29/451615.htmlhttp://www.aygfsteel.com/jb2011/comments/451615.htmlhttp://www.aygfsteel.com/jb2011/archive/2025/04/29/451615.html#Feedback0http://www.aygfsteel.com/jb2011/comments/commentRss/451615.htmlhttp://www.aygfsteel.com/jb2011/services/trackbacks/451615.html一、基本介¾l?/h1>

MobileIMSDK是一套全òq›_°åŽŸåˆ›å¼€æºIM通信层框æžÓž¼š

  • ­‘…轻量çñ”、高度提ç‚û|¼ŒlibåŒ?0KB以内åQ?/li>
  • ¾_‘Ö¿ƒž®è£…åQŒä¸€å¥—API同时支持UDP、TCP、WebSocket三种协议åQˆå¯èƒ½æ˜¯å…¨ç½‘唯一开源的åQ‰ï¼›
  • 客户端支持iOS、Android、标准Java、H5、微信小½E‹åºã€Uniap、é¿`è’™Next(Demo完整源码)åQ?/li>
  • 服务端基于NettyåQŒæ€§èƒ½å“越、易于扩å±?nbsp;newåQ?/li>
  • 可与姊妹工程 MobileIMSDK-Web æ— ç¼äº’通实现网™å늫¯èŠå¤©æˆ–推送等åQ?/li>
  • 可应用于跨设备、跨¾|‘络的聊天APP、企业OA、消息推送等各种场景ã€?/li>

二、源码仓库同步更�/h1>

GitHub.comåQ?/strong>

码云giteeåQ?/strong>

三、设计目�/h1>

让开发者专注于应用逻辑的开发,底层复杂的即旉™€šè®¯½Ž—法交由SDK开发äh员,从而解偶即旉™€šè®¯åº”用开发的复杂性ã€?/p>

四、框架组�/h1>

整套MobileIMSDK框架ç”׃»¥ä¸?部分¾l„成åQ?/strong>

  1. Android客户端SDKåQ?/strong>用于开发Android版即旉™€šè®¯å®¢æˆ·ç«¯ï¼Œæ”¯æŒAndroid 4.0及以上版本,查看API文档åQ?/li>
  2. iOS客户端SDKåQ?/strong>用于开发iOS版即旉™€šè®¯å®¢æˆ·ç«¯ï¼Œæ”¯æŒiOS 12.0及以上版本,查看API文档åQ?/li>
  3. Java客户端SDKåQ?/strong>用于开发跨òq›_°çš„PC端即旉™€šè®¯å®¢æˆ·ç«¯ï¼Œæ”¯æŒæ ‡å‡†Java 1.6及以上版本,查看API文档åQ?/li>
  4. H5客户端SDKåQ?/strong>查看¾_„¡¼–注释ç‰?/a>åQ?/li>
  5. 微信ž®ç¨‹åºç«¯SDKåQ?/strong>查看¾_„¡¼–注释ç‰?/a>åQ?/li>
  6. Uniapp端SDKåQ?/strong>查看¾_„¡¼–注释ç‰?/a>åQ?/li>
  7. 鸿蒙Next端SDKåQ?/strong>SDK暂无开源版åQ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">查看¾_„¡¼–注释ç‰?/a>åQ‰ï¼ŒDemo完整工程源码åQ?/li>
  8. 服务端SDKåQ?/strong>用于开发即旉™€šè®¯æœåŠ¡ç«¯ï¼Œæ”¯æŒJava 1.7及以上版本,查看API文档åQ?/li>

整套MobileIMSDK框架的架构组成:

MobileIMSDK一直在持箋开发和升çñ”中,鸿蒙Next客户ç«?/a>是MobileIMSDK工程的最新成果ã€?/p>

五、技术特�/h1>

六、演½Cºç¨‹åº?/h1>
  1. Android客户ç«?DemoåQ?/strong>ç‚ÒŽ­¤å®‰è£…å’Œä‹Éç”?/a>åQ?/li>
  2. iOS客户ç«?DemoåQ?/strong>ç‚ÒŽ­¤å®‰è£…å’Œä‹Éç”?/a>åQ?/li>
  3. Java客户ç«?DemoåQ?/strong>ç‚ÒŽ­¤å®‰è£…å’Œä‹Éç”?/a>åQ?/li>
  4. H5客户ç«?DemoåQ?/strong>ç‚ÒŽ­¤æŸ¥çœ‹ä»‹ç»åQ?/li>
  5. 微信ž®ç¨‹åºç«¯ DemoåQ?/strong>ç‚ÒŽ­¤æŸ¥çœ‹ä»‹ç»åQ?/li>
  6. Uniappç«?DemoåQ?/strong>ç‚ÒŽ­¤æŸ¥çœ‹ä»‹ç»åQ?/li>
  7. 鸿蒙Nextç«?DemoåQ?/strong>ç‚ÒŽ­¤æŸ¥çœ‹ä»‹ç» newåQ?/li>
  8. 服务ç«?DemoåQ?/strong>ç‚ÒŽ­¤å®‰è£…å’Œä‹Éç”?/a>ã€?/li>

七、应用案�/h1>

RainbowChat是一‹Æ‘ÖŸºäºŽMobileIMSDKçš„äñ”品çñ”聊天APPåQŒæ›´å¤šè¯¦æƒ…:点击下蝲体验 æˆ?nbsp;查看˜qè¡Œæˆªå›¾ã€?/p>

① åŸÞZºŽMobileIMSDKçš„äñ”品çñ”聊天APPåQ?/strong>

▶ è¯¦ç»†ä»‹ç»ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">下蝲体验 æˆ?nbsp;查看˜qè¡Œæˆªå›¾ã€?/p>

② MobileIMSDK在高¾|‘络延迟下的案例åQ?/strong>

▶ 某款åŸÞZºŽMobileIMSDK的商业商品,曾运营于跨洲际的复杂¾|‘络环境下,端到端通信延迟在洲际网¾lœç¹å¿™æ—¶å¯é«˜è¾?00ms以上åQˆä¸ŽæœåŠ¡ç«¯çš„å•å‘å»¶è¿Ÿ¾U¦äØ“300ms左右åQŒè€Œé€šå¸¸å¤§å®¶è®‰K—®å›½å†…ä¸ÀLµé—¨æˆ·çš„åšg˜qŸçº¦ä¸?0~50msåQ‰ï¼ŒæŸæ®µæ—¶æœŸçš„非敏感˜qè¥æ•°æ® ç‚ÒŽ­¤æŸ¥çœ‹ã€?/p>

八、打包下载(all in oneåQ?/h1>

说明åQ?/strong>最新发布版打包内容中,已包含完整的demo源码、sdk源码、api文档、编译后的分发包½{‰ã€?/p>

九、典型应用场�/h1>

场景1åQšèŠå¤©APP

应用说明åQ?/strong>可用于开发类ä¼égºŽå¾®ä¿¡ã€QQ½{‰èŠå¤©å·¥å…—÷€?/p>

消息走向åQ?/strong>需使用C2C、C2S、S2C全部¾cÕdž‹ã€?/p>

特别说明åQ?/strong>MobileIMSDKòq¶æœªå®šä¹‰èŠå¤©åº”用的应用层逻辑和协议,开发者可自行定义òq¶å®žçŽîC¹‹ã€?/p>

场景2åQšæ¶ˆæ¯æŽ¨é€?/strong>

应用说明åQ?/strong>可用于需要向客户端实时推送信息的各种¾cÕdž‹APPã€?/p>

消息走向åQ?/strong>仅需使用S2C 1¿Uæ¶ˆæ¯èµ°å‘,属MobileIMSDK的最½Ž€å•应用场景ã€?/p>

场景3åQšä¼ä¸šOA

应用说明åQ?/strong>可用于实çŽîC¼ä¸šOA的指令、公文、申è¯ïL­‰å„种消息实时推送,极大提升用户体验åQŒåƈ可åšg伸至¿UÕdŠ¨è®‘Ö¤‡ã€?/p>

消息走向åQ?/strong>仅需使用S2C 1¿Uæ¶ˆæ¯èµ°å‘,属MobileIMSDK的最½Ž€å•应用场景ã€?/p>

场景4åQšä¼ä¸šOA的增强型

应用说明åQ?/strong>可用于实çŽîC¼ä¸šOA中各¿Uç³»¾lŸçñ”、用æˆïLñ”消息的实时互动,充分利用åÏx—¶é€šè®¯æŠ€æœ¯æå‡ä¼ ¾lŸOAçš„ä­h倹{€?/p>

消息走向åQ?/strong>可ä‹É用C2C、C2S、S2C全部¾cÕdž‹åQŒè¿™ä¸ŽèŠå¤©APP在很多方面已无差别,但企业OA有自已的用户关系½Ž¡ç†æ¨¡åž‹å’Œé€»è¾‘åQŒè¾ƒä¹‹å…¨åŠŸèƒ½èŠå¤©APP要简单的多ã€?/p>

十、开发指�/h1>
  1. Android客户端开发指南:ç‚ÒŽ­¤æŸ¥çœ‹åQ?/li>
  2. iOS客户端开发指南:ç‚ÒŽ­¤æŸ¥çœ‹åQ?/li>
  3. Java客户端开发指南:ç‚ÒŽ­¤æŸ¥çœ‹åQ?/li>
  4. H5客户端开发指南:ç‚ÒŽ­¤æŸ¥çœ‹åQ?/li>
  5. 微信ž®ç¨‹åºç«¯å¼€å‘指南:ç‚ÒŽ­¤æŸ¥çœ‹åQ?/li>
  6. Uniapp端开发指南:ç‚ÒŽ­¤æŸ¥çœ‹åQ?/li>
  7. 鸿蒙Next端开发指南:ç‚ÒŽ­¤æŸ¥çœ‹åQ?/li>
  8. Server端开发指南:ç‚ÒŽ­¤æŸ¥çœ‹ã€?/li>

附录1åQšDemo截图

1、在鸿蒙Next端运行效果:

>> ¾~–译和运行:查看鸿蒙Next端Demo完整源码ã€?/p>

2、Android端、iOS端运行效�/strong>

>> 安装和ä‹É用:˜q›å…¥Android版Demo帮助™å?/a>ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">˜q›å…¥iOS版Demo帮助™å?/a>ã€?/p>

>> 安装和ä‹É用:˜q›å…¥Java版Demo帮助™å?/a>ã€?/p>

>> 安装和ä‹É用:˜q›å…¥Java版Demo帮助™å?/a>ã€?/p>

8.1åQ‰MobileIMSDK-Web在手机端‹¹è§ˆå™¨è¿è¡Œæ•ˆæžœï¼šåQˆå¦‚何获取MobileIMSDK-Web版:ç‚ÒŽ­¤˜q›å…¥åQ?/p>

8.2åQ‰MobileIMSDK-Web在PC端浏览器˜qè¡Œæ•ˆæžœåQšï¼ˆå¦‚何获取MobileIMSDK-Web版:ç‚ÒŽ­¤˜q›å…¥åQ?/p>

附录2åQšåŸºäºŽMobileIMSDK的全功能IM【案例ã€?/span>

>> å…³äºŽRainbowChat的更多资料请见:RainbowChat前端APP功能截图¾|‘页 åQ?span style="color: #ff00ff;">* 推荐 - 真机实拍视频åQ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">Andriodç«?/a>ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">iOSç«?/a>åQ‰ã€?/p>

附录3åQšåŸºäºŽMobileIMSDK-Web的网™å늫¯IM¾pȝ»Ÿã€æ¡ˆä¾‹ã€?/strong>

下图为RainbowChat-Web的主界面åQ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多截图ç‚ÒŽ­¤˜q›å…¥ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多演示视频ç‚ÒŽ­¤˜q›å…¥åQ‰ï¼š

下图为RainbowChat-Web的主界面[聊天½H—全屏时] åQ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多截图ç‚ÒŽ­¤˜q›å…¥ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多演示视频ç‚ÒŽ­¤˜q›å…¥åQ‰ï¼š

下图为RainbowChat-Web的主界面[独立UI效果] åQ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多截图ç‚ÒŽ­¤˜q›å…¥ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多演示视频ç‚ÒŽ­¤˜q›å…¥åQ‰ï¼š

åQ?strong>以上内容同步发布于:http://www.52im.net/thread-52-1-1.html åQ?/div>

]]> Ö÷Õ¾Ö©Öë³ØÄ£°å£º ¸»ÄþÏØ| ÃɳÇÏØ| ¸£ÈªÊÐ| ÑÉêÈ| ÕÑͨÊÐ| Ö¯½ðÏØ| ÄÚÏçÏØ| ¾°¹È| ÀúÊ·| ³¤ÐËÏØ| ºÎ÷ÊÐ| ÉÐÒåÏØ| á³á°ÏØ| °ÍÖÐÊÐ| ÍûÚÓÏØ| ¹ÌÔ­ÊÐ| ÍÁÄ¬ÌØÓÒÆì| ÂêÇúÏØ| ÌúÁëÊÐ| ÎÚÀ­ÌØÇ°Æì| ºÏɽÊÐ| ̨±±ÏØ| ÒË·áÏØ| äųØÏØ| ÆÕÍÓÇø| ´óÍÝÏØ| ¡»¯ÏØ| Ûº£ÏØ| Óà½­ÏØ| ÊÖÓÎ| Ç­Î÷ÏØ| ¹ÁÔ´ÏØ| ×õË®ÏØ| ¶«Ì¨ÊÐ| ºªµ¦ÊÐ| ºç¿ÚÇø| ÁøÖÝÊÐ| ׿ÄáÏØ| Ð˳ÇÊÐ| ͬ½­ÊÐ| É«´ïÏØ|