手机银行客户端框架之TMF框架介绍

腾讯移动开发平台(Tencent Mobile Framework)整合了腾讯在移动产品中开发、测试、发布和运营的技术能力,为企业提供一站式、覆盖全生命周期的移动端技术平台。核心服务包括移动客户端开发组件、H5容器、灰度发布、热更新、离线包、网关服务、消息推送、数据同步、移动分析、移动监控、应用加固、环境安全检测等移动端开发运营关键服务,帮助企业低成本、高效率地打造移动服务。

应用架构

组件功能

类别组件名称描述
客户端开发组件H5容器与离线包提供移动端 Hybrid 解决方案。H5容器提供H5页面与Native交互的解决方案,离线包则用来解决H5资源本地加载问题。
页面路由与组件化通过建立scheme和组件间的映射关系来支持模块间的路由和通信,实现组件代码的完全隔离,以此构建大型跨团队的超级App。
定位通过LBS定位接口API获取定位结果、逆地理编码等功能。
文件预览依赖X5内核提供的强大文件能力,提供在线预览网页中各种文档附件的功能。
统一存储拥有客户端持久化存储的完整解决方案,底层提供多样化的存储方式以满足不同的存储需求,支持数据库加密功能。
社交分享支持文字、图片、链接、音视频、文件、表情等内容一键分享到微信好友、微信朋友圈、QQ及微博等主流社交平台,避免开发者处理各SDK的接口差异性。
安全键盘提供键盘控件和安全的EditText输入控件,保证信息输入安全;同时提供云端拉取键位显示与键值映射数据,保证与云端的动态联动;约束好一次一密流程,保证数据流的安全性。
扫一扫能够快速扫描识别二维码、条形码等码,获取其蕴含的相关信息。
UI组件库以标准化的视觉规范为基础,将抽象的视觉规范概念转化为控件实体,通过使用统一组件库,可以在接入控件时,实现客户端视觉规范的统一。
后台服务移动网关根据网关接口定义,自动生成客户端接口,并抽象了网络层的协议,开发者可以像调用本地方法一样直接调用网关接口,而无需管理网络连接等。网关服务还支持加密、签名验证,限流等功能,提高移动端访问安全。
设备标识提供终端设备的唯一标识ID体系服务,支持Android、iOS等主流平台的终端用户身份识别。
数据同步提供一个安全的数据通道,及时、准确地将服务器端的业务数据,下推到手机终端App,用户可以预先定义实时发布所需要的各种配置数据。且不需要每次手工输入,提升效率,降低出错可能性。
用户属性提供用户基础属性设置、用户标签管理等功能,用来支持消息推送、数据同步等服务进行人群定位、人群划分。
文件上传基于安全网关TMFShark,提供分片上传功能和断点续传功能。
应用发布应用发布基于多维度的灰度规则进行的客户端升级功能,支持App灰度发布策略管理,支持按用户、机型、系统版本、App版本等多种维度的灰度策略,精准控制发布范围。
热修复提供紧急修复线上bug,无需重新发版,即可在用户无感知的情况下完成问题修复的能力,支持多种修复策略设置。
离线包提供将HTML、CSS等静态资源预加载到客户端的能力,提升访问速度和在弱网或无网情况下的访问体验。
监控运营移动监控提供移动App卡顿、闪退、webview分析等移动客户端异常监控能力,支持查看趋势分析、异常详情等。
移动分析专注于用户行为数据采集、处理、可视化分析,支持事件分析、留存分析、路径分析和设备分析等。
消息推送提供专业的移动消息推送方案,针对不同的场景推出多种推送类型,满足用户的个性化推送需求,在提供控制台快速推送能力的同时,也提供了服务端接入方案,方便用户快速集成移动终端推送功能,与用户保持互动,从而有效地提高用户留存率,提升用户体验。
智慧投放提供App和小程序内的个性化广告投放能力,支持针对定向人群进行个性化广告投放,帮助App运营人员精准、及时触达用户,实现留存、促活、增长业务的目的。
染色日志提供服务器远程拉取终端日志的能力,提高问题出现后的问题查找速度。

 IOS组件依赖关系图

H5容器和离线包简介

服务概述

H5容器和离线包,经常作为移动端混合开发解决方案来同时使用。H5容器提供了H5页面与Native交互的解决方案。离线包可以将H5资源缓存至本地进行加载。HContainer对离线包和H5容器进行了封装,返回一个包含WebView的ViewController供开发者进行页面跳转。

应用场景

混合开发技术的主要场景是APP使用H5页面进行业务功能开发。通过H5容器和离线包,提高页面的加载速度和进行数据交互。

系统架构及技术原理

  • H5容器:JSBridge Core通过将H5页面的js调用消息封装成URL的方式向Native Code传递信息。Native端将URL信息还原后,通过对比JSBridge Core的JSAPI注册信息,决定将消息丢弃或转发至相应的处理者,完成js调用到Navite Code的调用链路。
  • 离线包:通过拦截 WebView 的资源请求并根据请求资源的 URL 去匹配本地的离线资源。如果存在与之匹配的离线资源则直接加载本地资源,否则请求在线资源。
  • HContainer:继承UIViewController并创建WebView来进行H5容器注册和离线包注册,降低集成门槛。同时它对离线包加载从URL层进行封装,实现使用业务ID(离线包BID)到URL的映射关系来打开离线包页面。
  • X5 内核简介

    服务概述

    X5 内核是基于优秀开源 Webkit 深度优化的浏览器引擎,整合腾讯公司在云安全、云加速和大数据分析应用等相关领域的研发和运营能力。目前已接入 QQ 浏览器、微信、手机 QQ 等超过2万+款 App,涵盖20个多个行业和领域。目前平台日活跃用户超5亿,日均处理访问需求超 150亿次。

    应用场景

    移动互联网时代, Web 浏览不再局限于传统浏览器,已经进入绝大部分 App 的各类应用场景。越来越多的 App 基于 Hybrid 模式开发和部署业务。传统系统内核(Webview)存在适配成本高、不安全、不稳定、耗流量、速度慢、视频播放差、文件能力差等问题,这是移动应用开发商在进行 Hybrid App 开发时普遍面临的难题。腾讯 X5 内核能够有效解决这些问题,提供稳定安全的增强浏览服务。

    注意:为了减少您的apk包大小增量,及时动态发版解决安全隐患,X5 内核采用了后台动态下发内核的方案。由于 Google Play 禁止任何二进制代码的下发(包括so、dex、jar)和插件化技术的使用,故使用 X5 内核的app不支持在海外 Google Play 上架。

离线包简介

服务概述

通过 TMF 的离线包组件,可以将网页的静态资源(html、js、css、图片等)缓存在本地,当用户访问 H5 页面时,这些资源都不需要从服务器即时下载,离线包组件会拦截 WebView 的资源请求并直接读取本地的离线资源,达到“瞬间秒开”的效果。

TMF 控制台实现了离线包的自动打包、状态管理和发布功能,支持推拉结合的更新方式及增量更新机制,可按多种维度进行灰度下发,且能便捷地按 H5 的版本采集灰度数据,对不同版本的业务数据进行对比分析。对于重要业务(如一级页面),还可以直接将离线包预置在发布包中,首次进入页面无需下载即可使用,大幅提升 H5 业务的用户体验。当本地离线包没有准备好时,则直接访问在线资源,不影响正常使用。

应用场景

离线包技术应用于 H5 业务,将网页的静态资源缓存在本地,拦截 WebView 的资源请求并直接读取本地的离线资源,免去了从服务器即时下载资源的耗时,达到“瞬间秒开”的效果,可大幅提升 H5 业务的用户体验。

系统架构及技术原理

  • 客户端:客户端的核心是拦截 WebView 的资源请求并根据请求的资源的 URL 匹配本地的离线资源,如果存在与之匹配的离线资源则直接读取离线资源,否则就通过 WebView 请求在线资源。可通过拉取和推送两种方式对离线包进行更新。
  • 服务端:服务端实现了离线包的数据管理,提供离线包更新服务,并支持按多种条件发布离线包。支持按平台(iOS、Android)、系统版本、客户端版本、时间窗、用户量级、地域、用户标签、设备ID等条件进行灰度验证,验证通过再进行全量发布。
  • 控制台:控制台包含离线包的打包服务、离线业务管理、离线包版本管理和发布管理等。

H5容器简介

服务概述

H5 容器组件,提供了成熟的移动端 Hybrid 解决方案,拥有丰富的内置功能,也提供了良好的外部扩展功能,具备单/多容器管理、单/多页面管理、事件透传、信息互换、埋点上报等基础能力,并提供插件定制 JSAPI。

通过 H5 容器组件,可以极大的简化客户端与 H5 页面的交互流程,规范化 H5 页面的会话管理。H5 容器,可以加载 H5 页面及按照会话概念管理各个页面,内置丰富的 JSAPI、标题设置等功能,扩展业务需求。支持自定义网络库、网络通道、键盘、地理位置获取、分享等各模块。通过自定义插件,可轻松实现定制 JSAPI。

应用场景

H5 容器技术打通了客户端与 H5 页面之间的阻碍,可用于客户端与 H5 页面双向数据访问等。H5 容器技术,也可以应用于复杂的 H5 页面管理,完美掌控 H5 页面的状态与安全,充分保障 H5 在客户端的用户体验。

产品架构和技术原理

总体架构

H5 容器的架构分为两个部分:JSBridge Core 和 JSAPI

  • JSBridge Core:移动端 Hybrid 方案的核心中介,JSBridge 架起了一座连接 JavaScript 和 Native Code 的通信桥梁,让双端可以互相调用。 
  • JSAPI:移动端 Hybrid 方案的接口,用于在 H5 页面调用,并在客户端实现相应的处理。除了基本 JSAPI 外,还可以自定义 JSAPI,实现扩展功能,支持基础信息获取、页面控制、事件透传、地理位置获取、分享、上报、网关等能力。 

H5 容器工作流程

H5 容器可以看成是客户端提供给 H5 页面展示的一个管理器,通过捕获 Web 请求来实现一些自定义的流程注入或操作处理。整个流程的核心可分为关键的几部分:

  • H5 调用 Native 功能
  • Native 调用 H5 功能
  • 注册与权限控制
  • 多容器管理
  • 自定义 JSAPI

页面路由与组件化简介

组件概述

随着业务不断的发展,业务变得种类繁多,项目代码集中且耦合在一起,导致编译速度慢、开发效率低、维护困难。从工程效能和业务迭代稳定性的角度考虑,都会把项目拆分成组件化架构。当组件拆分后,页面路由与组件化(TMFPortal组件)基于组件化的设计思路,能快速、方便、灵活的进行组件间跳转、数据通信和组件生命周期的控制,功能灵活,使用简单。

应用场景

TMFPortal组件适用但不限于以下场景:

1.Native+H5混合开发模式,需要进行页面之间的互相跳转,或进行灵活的运营跳转链接下发。

2.统一管理来自App外部的URI跳转,使用统一的页面接收所有外部URI跳转,到首页时再用TMFPortal启动目标页面。

3.页面跳转有复杂判断逻辑的场景。例如多个页面都需要先登录、先定位后才允许打开,如果使用常规方案,这些页面都需要处理相同的业务逻辑;而利用TMFPortal,只需要开发好拦截器并配置到各个页面即可。

4.多工程、组件化、平台化开发。多工程开发要求各个工程之间能互相通信,或者代码复用、依赖注入、编译等问题,这些问题都可以利用TMFPortal组件解决。

5.对业务埋点需求较强的场景。页面跳转作为最常见的业务逻辑之一,常常需要埋点。给每个页面配置好URI,使用TMFPortal统一进行页面跳转,并在全局的回调接口中埋点即可。

6.对App可用性要求较高的场景。一方面,可以对页面跳转失败进行埋点监控上报,及时发现线上问题;另一方面,页面跳转时可以执行判断逻辑,发现异常(例如服务端异常、客户端崩溃等)则自动打开降级后的页面,保证关键功能的正常工作,或给用户友好的提示。

定位简介

服务概述

移动互联网时代,不管是分享位置、搜索周边、创建收货地址、广告推送、还是轨迹监控等,其首要步骤就是对用户进行定位,获取用户所在位置,从而为用户提供更加便捷精准的服务,即定位是一个 LBS 功能的开始。

Android 定位组件适用腾讯地图定位 SDK 提供定位服务,腾讯地图定位 SDK 是一套基于 Android 4.1 及以上版本设备的应用程序接口。通过该接口,您可以轻松使用腾讯地图定位服务,构建 LBS 应用程序。定位 SDK 包括 GPS 定位与网络定位,实现了经纬度坐标偏转与当前位置的 POI 名称、地址或者行政区划的查询。采用了移动缓存策略,节省流量与电量。定位原理:定位 SDK 使用当前设备的 GPS、基站信号和 Wi-Fi 信号生成定位依据,并将定位依据发送到腾讯的定位服务器。定位服务器对定位依据进行计算得到定位结果,最后将结果返回给定位 SDK。

iOS 定位组件基于苹果官方的 CoreLocation 框架提供定位服务,同时提供火星坐标转换接口以及地理位置信息反向接口,协助构建 LBS 应用程序。

应用场景

定位组件应用场景非常广泛,以下列举常用应用场景:

  • 物流业务
    预分拣准确率决定了物流配送的效率,腾讯位置服务地址解析功能可以帮助合作伙伴快速、有效地提高预分拣准确率,提升物流效率。
  • 智能出行
    对用户来说,快速、准确输入起终点是出行的第一步,腾讯位置服务提供定位、智能推荐上车点、场景化POI检索策略服务,用户平均输入少于4个字即可获得准确的地点。
  • O2O 业务
    配送员配送更多的订单,就会创造更多的收益。腾讯位置服务能够帮助合作伙伴自动生成等时可达配送范围,为配送员提供最优的路线规划服务,提升配送效率,为更多的订单服务。
  • 共享单车
    如何准确找到一辆单车往往是一个让人头疼的问题。腾讯位置服务提供个性化的行业底图,借助定位功能可以准确展示单车位置,步行路线规划服务能够高效引导用户寻找车辆。
  • 运动健康
    对运动进行量化已经成为一种潮流。腾讯位置服务能够准确记录运动轨迹,有趣回放运动路线,精确计算运动距离,为健康的每一步精准量化。
  • LBS 游戏
    游戏和地图结合的 LBS 玩法陆续成为游戏行业的风向标。借助 LBS 玩法,可将虚拟的游戏世界和真实的现实世界打通,构建基于真实世界位置场景的游戏社交。

统一存储简介

服务概述

TMF 统一存储组件提供完整的持久化存储解决方案,组件 SDK 提供多样的存储方式以满足不同的存储需求。目前 TMF 统一存储组件由数据库存储(WCDB)与 键值对存储(MMKV)及 文件存储 三部分组成。

  • WCDB 是一个高效、完整、易用的移动数据库框架,基于 SQLCipher,支持 iOS、macOS 和 Android,提供数据库存储、键值对存储、文件存储三种存储方式。
  • MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。
  • 文件存储是基于 Android 原生 File 封装的接口,提供了加解密读写文件的能力,提高了文件存储的简便性和安全性。

应用场景

TMF 统一存储技术,可以应用于所有涉及数据存储、数据持久化的业务。提供客户端持久化存储解决方案,底层提供多样化的存储方式以满足不同的存储需求,支持数据加密功能。可以视为传统数据存储的更优替代技术组件。

产品优势

数据库存储(WCDB)

TMF 统一存储组件中 WCDB 部分具有以下优势:

  • 易用,WCDB 支持一句代码即可将数据取出并组合为 object。
    • WINQ(WCDB语言集成查询):通过 WINQ,开发者无须为了拼接 SQL 的字符串而写一大坨胶水代码。
  • 高效,WCDB 通过框架层和 SQLCipher 源码优化,使其更高效的表现。
    • 多线程高并发:WCDB 支持多线程读与读、读与写并发执行,写与写串行执行。 ​​​​​​​

键值对存储(MMKV)

文件存储(File)

文件存储基于系统原生文件操作,提供了加密能力,封装文件加解密/明文读写及文件删除接口,无需关注文件存储过程中繁杂的try/catch流程,提高了使用的简便性。

安全键盘简介

服务概述

  • 小程序
    TMF 小程序安全键盘为用户输入的敏感信息提供全面的安全防护,采用一次一密、公钥加密、代码混淆、按键无回显和乱序,从架构上做到防中间人攻击、防内存 dump 攻击、防逆向、防调试、防篡改、防截屏攻击等,且支持国密,是国内唯一支持国密算法的小程序键盘。小程序安全键盘展示风格多样,可自定义键盘背景色、键值颜色和字号,还支持品牌 Logo 展示,产品已获得银行卡检测中心 BCTC 的安全认证。

  • App
    TMF 安全键盘组件可以为用户在输入关键信息时提供全面的安全防护,组件提供的随机分布式虚拟安全键盘,从底层、启动前、输入时、输入后等多个维度进行输入数据保护,有效避免重要个人信息泄漏问题。 

产品优势

小程序

  • 安全加密形式

    • 支持国密 sm2/sm4、RSA/AES 加密。
    • 小程序插件源码加固。
    • 支持乱序数字键盘。
  • 灵活、扩展性高

    • 支持键背景色自定义。
    • 支持主键值色值、字号自定义。
    • 支持键盘的 Logo 展示。

App

  • 完全自建,规避系统键盘接口

    • 自绘实现的键盘和输入控件,未使用系统 API,无键盘劫持和系统漏动风险。
    • 即使系统键盘或者第三方键盘爆出漏洞或者被篡改,也不会被截取到用户的输入。
  • 防止底层获取密码

    • 通过随机布局键盘,防止被底层分析输入节点进而获取密码。
    • 键位显示与键值错乱映射,及时获取按键位置,也无法推测具体的按键信息。
    • 对键盘模拟点击和键盘输入读取进行防护。
    • 对键盘点击记录进行了防护。
  • 防截屏攻击

    • 对截屏攻击进行防御,不会显输入信息。
  • 键位显示与键值映射云安全保障

    • 每次使用键盘时,键位显示与键值映射关系由云端实时生成,使用国密算法加密映射关系数据后下发。
    • 加密算法安全,且客户端无密钥泄漏风险,密钥由客户自行保管。
    • 解密库时间戳校验机制,不合规的密文无法正常解密
  • 灵活、扩展性高

    • UI 样式开放接口,支持高度自定义。
    • autolayout 布局,适配屏幕分辨率和尺寸。
    • 支持 Window 以及 View 集成方式。
    • 支持自定义放大镜样式。
    • 键位显示与键值映射支持云端配置。
    • 支持新增、自定义加密策略。
    • 安全键盘TMF服务私有化部署。
  • 依托加固的安全键盘自我保护

    • 辅助 App 加固服务,防止安全键盘被除去或绕过,从外层对安全键盘形成加壳保护。
    • 防录屏、防调试、防 activity 导出、防内存 dump 攻击。

扫一扫简介

服务概述

TMF 扫一扫组件可以快速的识别带有一维码、二维码、商品码等图片和区域,并解析出其中包含的相应信息,完成二维码、条形码到信息的快速转换。

应用场景

二维码、条形码作为日常中非常常见的信息传递手段,使用主要体现在以下几处:

  • 商品流通的管理
  • 客户的管理
  • 供应商的管理
  • 员工的管理

扫一扫中的相关技术,可应用于二维码、条形码的识别,是二维码、条形码信息传递最关键的一环。通过将二维码、条形码快速转换成相应的信息,完成信息传递闭环。

产品优势

TMF 扫一扫组件具有以下优势:

  • 识别率高和识别速度快:在通用的解码部分代码基础上,对二维码检测、定位和容错,以及语言字符检测进行自研算法并持续优化。
  • 适应范围广:已经应用于微信、手机 QQ、手机管家、同步助手等产品,基本覆盖全国移动互联网手机用户。
  • 良好跨平台型:完美支持 Android、iOS、WinPhone、Embed Linux、Windows、Mac、Linux 等多种平台。
  • 支持多语言和多编码:支持包含简体中文、繁体中文、日文、英文等在内的若干种语言,以及 UTF-8(支持全部语言编码)、GBK、GB2312、BIG-5、SHIFT-JIS、ASCII、ISO-8859-X 等若干种常见多语言编码的智能判断和转码。
  • 校正点定位与缺损二维码识别:对于形变和校正推行缺失情况有较高的识别率。

移动网关简介

服务概述

移动网关是连接客户端与服务端 API 接口的组件产品,他简化了 API 接口的数据协议和通讯协议,能够显著提升开发效率和网络通讯效率。

产品优势

效率:

  • 接入简单高效:无需关心组包、发包、解包的过程,只需专注自己的业务逻辑。
  • 统一标准的 API 接口管控平台,实现联网策略支持云端管控,降低管理成本,及时发现风险。

性能及稳定性:

  • 极致优化的通信协议,确保接入后通信效率无影响。
    • 协议优化:cmd化,扁平化,编码性能提升30%以上。
    • 心跳包:每个包151B减小到10B,节省比例93.3%。
    • 数据传输智能压缩,降低传输流量(根据压缩后是否可有效降低流量自动选择是否进行压缩)。
  • 4c8g单机支撑100w+长连接,超强的单机性能。
  • 应用于亿级日活 App, 99.9999+%高可用率。
    • 稳定可靠的长连接通道:实际验证上报业务通道切换,用户漏报率由6%降到1.1%,数据漏报率由4%降到1.4%。
    • 支持重连机制,自动探测 Wi- Fi 和数据网络。
    • 支持动态降级和熔断机制,保护后端服务访问正常。

安全:

  • 请求加密:支持对称加密与非对称加密结合的方案对客户端到移动网关的请求进行加密,确保数据在传输过程中的安全性,支持 RSA 、国密等加密算法。
  • 高安全级别加密机制:动态密钥+Session Key 机制。
  • 支持 IP 直连,防止域名劫持。
  • 身份验签:提供验签服务以验证调用者身份保证安全。

应用场景

  • 服务能力移动化对外开放:随着移动互联网迅速发展,企业越来越希望将已有的成熟服务能力实现移动化并且对外开放。接入网关管理,只需要简单的操作,就可以形成移动服务能力。
  • 一套服务,多端输出:在移动互联网时代,多平台多形态多版本的终端频出,这对企业的后台服务系统增加了复杂性要求。网关服务提供各种服务的定义,支持多平台接入。
  • 多种服务,统一接入:企业服务多种多样,对应的预研和结构也会千差万别。网关管理提供标准化的服务接入方法,更好地支持对外统一开放。

系统架构及技术原理

基础模块:

  • 流量接入:收敛后端所有 API 的入口,统一管理流量,支持 TCP、HTTP、HTTPS 网络协议。
  • IP 调度:通过下发 iplist 控制流量在云端的哪些网关服务器上接入。
  • 动态密钥交换和管理:通过非对称密钥协商对称加密密钥,使用对称密钥加密数据。
  • GUID 注册管理:为每个用户生成一个唯一 ID,管理用户数据。
  • Session 管理:网关为每个 TCP 连接都生成一个 session,连接建立的时候数据一次准备,在后面的多次调用中支持被多次复用。
  • Profile 存储维护:维护每个用户的基础信息,包括产品,硬件等,由接入层统一维护,可输送到业务,帮忙业务方便快速获取用户基础信息。

公共功能模块:

  • API 路由:支持多后端 API 接入;支持多后端权重配置;支持按轮询,hash 两种方式进行后端请求路由。
  • 签名校验:由移动网关统一加签,业务服务验签,保证所有请求均来自网关,避免数据内部泄漏。
  • API 结果缓存 :保证相同请求结果幂等,提高响应效率;支持设置缓存时间;配置缓存键值的来源。
  • 超时设置 :每个 API 超时时间支持自定义,根据业务特性设置时间。
  • API 限流 :支持 API 级别频控限流,不正常流量情况下,保证服务可用。
  • API Mock:API 级别 mock 服务,支持服务端开发未完成情况下,仍然可以给终端返回接口数据。
  • API 授权 :支持指定鉴权接口,鉴权失败情况下直接拒绝服务,为后端服务过滤无效请求;根据 API 接口不同,定义授权方接口,并将授权规则应用到 API 中。配置授权规则包括:支持配置授权方名称,授权方接口,授权缓存,缓存存活时间,身份来源等限制,并且 API 授权功能可单独开关。
  • API 熔断:网关具备熔断,及恢复能力。支持熔断阈值,熔断恢复检测时间设置;当后端服务接口出现故障时,熔断机制触发,快速拒绝前端请求,避免影响其他业务接口。
  • API 测试 :在 Web 上实现了终端网络通道功能,可以在页面上模拟客户端请求。

设备标识简介

服务概述

TMF 设备标识又称为 VID(VendorID),提供终端设备的唯一标识 ID 体系服务,支持 Android、iOS 等主流平台的终端用户身份识别,能精准的区分识别每一台终端设备,拥有海量的跨应用用户 ID 关系积累,以及实时的 ID 找回能力,应用于常规运营,结算场景。

应用场景

在移动时代,基于用户账号体系无法有效覆盖全量的移动用户,用户可以在手机上看朋友圈,在 Pad 上玩游戏,在商场使用移动支付,但所有这些都离不开设备,不同的设备连接起了用户的碎片化时间和行为。所以,设备标识是移动用户画像的基础,通过构建统一的设备标识体系,将用户设备、用户账号、用户行为有机的关联起来:

  • 一个用户可以有多个设备,这些设备上的操作信息可以反映用户行为。
  • 一个用户的账号可以通过设备进行关联,通过设备可以有效标识用户。

建立统一的移动终端身份体系,打通注册用户和未注册用户的产品用户身份标识,为企业全局业务重复度分析、精准用户画像应用提供了实现手段,具体应用场景包括:

  • 提升用户规模数据准确性,降低因刷机、山寨机导致的异常新增用户数不准确的问题。
  • 用户安全身份识别,如识别当前支付手机是否为常用手机等。
  • 关联营销,通过构建以设备作为统一标识体系的用户画像,实现关联营销。

系统架构及技术原理

设备标识主要用来判断用户的身份信息,必须是设备唯一和应用唯一才能标识一个用户,其生成原理具体如下:

VID 的生成,是在客户端获取多个终端设备因子,将设备因子传到服务端后按特定算法完成生成,只有当所依赖的所有因子均无法获取时,才会重新生成新的 VID,确保了设备标识的唯一性以及可靠性。 

功能组成及详细说明

VID 是由32位数字组成的字符串,例如:03021907111444510010000000154502,获取方式如下:

  • 方式1:通过 TMF 的Shark SDK 接口直接获取 (终端获取)。
  • 方式2:通过 TMF 网关的每个请求,都会在 HTTP 协议的 header 里面增加 “tmf_vid” 对应的头部,方便后台业务接口直接获取(后台获取)。

应用发布简介

服务概述

应用发布组件终端 SDK 用于实现终端 App 的版本升级过程,当云端发布新版本的时候,SDK 可实现实时监控云端下发的升级单,对监听到的升级单做出判断和处理,完成从监听、接收、判断、到升级回调的过程。

应用发布控制台包含母包管理、发布管理功能,可以清晰管理各版本应用安装包的上传及下载,同时可对已添加的应用包进行发布并管理各发布任务。

组件提供了客户端 SDK,您可以轻松将应用版本升级的能力集成到客户端。在 TMF 控制台上传应用包,进行版本管理,同时可根据不同的发布策略进行测试发布、灰度发布、正式发布等。客户端收到推送信息再去拉取新的发布包进行升级。

应用场景

应用发布组件可应用于发布 App 新版本供终端进行升级,可通过下发测试任务、灰度任务依次进行功能验证后正式发布升级任务,终端 SDK 自动检测或在用户手动检测到新版本后可完成应用升级并回传数据进行任务闭环。

  • 测试任务:用于测试阶段验证应用升级发布流程是否正常。
  • 灰度发布:当测试验证完成后,可以通过自定义部分用户下发规则来做小规模发布(比如内部员工)以验证新包的功能是否达到预期。
  • 正式发布:当测试与灰度发布流程均正常完成时,可进行正式任务发布,发布任务可以选择有效时间窗,选择定向发布人群,符合预期情况下可进行全量推送。

系统架构及技术原理

应用发布系统架构分为三个部分:控制台、云推系统、终端 SDK。

  • 控制台:指 Web 端页面,用于上传新版本应用 APK 包,并配置升级规则和下发范围。
  • 云推系统:指后台推送服务,用于将配置好的升级单下发到对应终端,同时回收终端升级流程上报数据。
  • 终端 SDK:指提供的升级组件 aar 包,将该组件集成到客户端后进行简单配置,即可在客户端实现版本升级流程,同时上报终端升级流程数据。

具体架构流程图如下:

热修复简介

服务概述

热修复服务提供紧急修复线上 bug,无需重新发版即可在用户无感知的情况下完成原生代码问题修复的能力。热修复服务支持多种修复策略设置,包括但不限于修复版本、修复范围等。热修复组件拥有成熟、完整的流程,支持热修复补丁的下发、暂停、灰度、修复、回滚等流程。发布平台可以实时监控热修复补丁下发的阶段,并具备完备的漏斗统计,可以实时统计补丁触达率等。

  • Android
    热修复是基于用户已安装的母(安装)包和新(功能)(安装)包之间进行 diff 生成补丁,通过推送系统动态的将补丁下发到用户手机上,然后和母包进行合并和加载,实现新功能动态加载到母包上的效果,从而达到动态修复线上问题的效果。
  • iOS
    在 iOS 开发领域,应用迭代周期长且发版速度慢,当线上遇到严重问题时是无法通过发版渠道进行快速修复的。因此对于 iOS 应用来说,能快速修复线上严重问题而无需发版的热修复方法是非常重要的。

TMF iOS 热补丁提供基于 JSPatch 的热修复方法,在利用 Objective-C 运行时特性的基础上,通过 JavaScript 原生代码替换原有的方法实现,从而修复线上的问题。

应用场景

  • 热修复组件可在线上快速推送修复补丁到终端进行修复操作。
  • 热修复组件可以通过下发功能性补丁包来完成轻量级业务修改,完成线上快速更新。
  • 热修复组件可以通过下发更新性补丁包来完成轻量级运营或新特性灰度。

产品优势

Android

TMF 是 Android 的热补丁解决方案,支持动态下发代码、So 库以及资源,让应用能够在不需要重新安装的情况下实现更新。

类型TMF 热修复
类替换yes
So 替换yes
资源替换yes
全平台支持yes
即时生效重启进程生效
开发透明yes
  • 支持全面、开发透明,补丁包小,性能损耗低。
  • 全量替换新的 dex(无需插桩,没有 art 地址错乱问题,无兼容问题,开发透明)。
  • 基于 diff 算法新旧 dex 差异计算得到补丁包,体量小。
  • 基于自研 dexdiff 算法,利用 dex 格式进一步优化包大小。
  • 支持完善(Gradle 接入,进程管理,安全校验等)。
  • 海量验证(腾讯系亿级海量用户验证)。
  • 触达率高、精准触达,一小时80%,一天90%,十分钟推送、质量的数据反馈。

iOS

下图是热修复业界核心方案对比,,TMF 采取 JSPatch 的热修复核心方案: 

TMF 热修复下发方案的优势

  • 强大的下发管理
    • 支持热修复下发和版本管理。
    • 支持多补丁下发。
    • 支持热修复中途暂停、回滚等回退操作,具有强大的可控能力。
    • 支持补丁灰度下发,热修复下发前可以充分测试补丁,更好的确保线上正式版安全。
  • 高到达率
    • 利用 TMF 数据同步框架,终端框架利用推拉结合。
    • 尽管 iOS 系统对 App 后台限制严苛,从平台下发热补丁后,6 小时覆盖率高于 70%,12 小时覆盖率高于 90%。
  • 修复能力强
    • 支持 Objective-C 语言的 runtime 钩子。
    • 支持 C 语言的 Fish Hook 。
  • 安全性与完整性
    • 使用签名验证补丁包,本地加密存储保证补丁安全 。
  • 实时监控
    • 客户端针对补丁的触达、下载、回滚等操作进行上报。
    • 可实时监控完整的下发链路,掌握补丁应用情况。

离线包简介

服务概述

通过 TMF 的离线包组件,可以将网页的静态资源(html、js、css、图片等)缓存在本地,当用户访问 H5 页面时,这些资源都不需要从服务器即时下载,离线包组件会拦截 WebView 的资源请求并直接读取本地的离线资源,达到“瞬间秒开”的效果。

TMF 控制台实现了离线包的自动打包、状态管理和发布功能,支持推拉结合的更新方式及增量更新机制,可按多种维度进行灰度下发,且能便捷地按 H5 的版本采集灰度数据,对不同版本的业务数据进行对比分析。对于重要业务(如一级页面),还可以直接将离线包预置在发布包中,首次进入页面无需下载即可使用,大幅提升 H5 业务的用户体验。当本地离线包没有准备好时,则直接访问在线资源,不影响正常使用。

应用场景

离线包技术应用于 H5 业务,将网页的静态资源缓存在本地,拦截 WebView 的资源请求并直接读取本地的离线资源,免去了从服务器即时下载资源的耗时,达到“瞬间秒开”的效果,可大幅提升 H5 业务的用户体验。

系统架构及技术原理

  • 客户端:客户端的核心是拦截 WebView 的资源请求并根据请求的资源的 URL 匹配本地的离线资源,如果存在与之匹配的离线资源则直接读取离线资源,否则就通过 WebView 请求在线资源。可通过拉取和推送两种方式对离线包进行更新。
  • 服务端:服务端实现了离线包的数据管理,提供离线包更新服务,并支持按多种条件发布离线包。支持按平台(iOS、Android)、系统版本、客户端版本、时间窗、用户量级、地域、用户标签、设备ID等条件进行灰度验证,验证通过再进行全量发布。
  • 控制台:控制台包含离线包的打包服务、离线业务管理、离线包版本管理和发布管理等。

离线包简介

服务概述

通过 TMF 的离线包组件,可以将网页的静态资源(html、js、css、图片等)缓存在本地,当用户访问 H5 页面时,这些资源都不需要从服务器即时下载,离线包组件会拦截 WebView 的资源请求并直接读取本地的离线资源,达到“瞬间秒开”的效果。

TMF 控制台实现了离线包的自动打包、状态管理和发布功能,支持推拉结合的更新方式及增量更新机制,可按多种维度进行灰度下发,且能便捷地按 H5 的版本采集灰度数据,对不同版本的业务数据进行对比分析。对于重要业务(如一级页面),还可以直接将离线包预置在发布包中,首次进入页面无需下载即可使用,大幅提升 H5 业务的用户体验。当本地离线包没有准备好时,则直接访问在线资源,不影响正常使用。

应用场景

离线包技术应用于 H5 业务,将网页的静态资源缓存在本地,拦截 WebView 的资源请求并直接读取本地的离线资源,免去了从服务器即时下载资源的耗时,达到“瞬间秒开”的效果,可大幅提升 H5 业务的用户体验。

系统架构及技术原理

  • 客户端:客户端的核心是拦截 WebView 的资源请求并根据请求的资源的 URL 匹配本地的离线资源,如果存在与之匹配的离线资源则直接读取离线资源,否则就通过 WebView 请求在线资源。可通过拉取和推送两种方式对离线包进行更新。
  • 服务端:服务端实现了离线包的数据管理,提供离线包更新服务,并支持按多种条件发布离线包。支持按平台(iOS、Android)、系统版本、客户端版本、时间窗、用户量级、地域、用户标签、设备ID等条件进行灰度验证,验证通过再进行全量发布。
  • 控制台:控制台包含离线包的打包服务、离线业务管理、离线包版本管理和发布管理等。

功能模块

序号功能模块子功能功能说明
1离线包管理业务管理创建并管理业务
离线包管理在创建好的业务下上传离线包(单个上传或批量上传)
2离线包发布创建发布任务并推送选择上传好的离线包,创建发布任务,并进行推送
3配置管理证书配置上传创建好的离线包证书文件(pem后缀)

名词解析

业务

凡是H5页面,都可以是业务,您可以把1个或1组H5页面看成一个业务,这取决于您的定义。
我们将业务分为两种,一种是用来存放公共资源的,为“公共包”,也可以称之为“公共资源池”,您可以把常用的配置存放在公共资源类型的业务页面下,一种是用来管理不同场景下的H5页面的,为“主包”,也可以称之为“常规业务”。

离线包

离线包是将包括 html、js、css、图片等页面内静态资源打包到一个压缩包内。通过预先下载该离线包到本地,然后在客户端打开,直接从客户端本地加载离线包。

业务和离线包的关系

离线包是某个业务下H5页面的静态资源(html、js、css、图片等),在某个业务下发布一个离线包,即可更新这个业务下某个或全部H5页面的静态资源,从而修改页面展示的内容。

差分包

差分包即新旧两个离线包版本之间存在差异的部分,系统通过自动对比新旧离线包生成差分包,下载差分包和旧离线包组合成新离线包,从而节省流程,提升效率。

详细说明

如果此前已发布离线包,在后续迭代H5页面时,开发者需要重新上传新版资源包,这时,服务器会自动生成新版资源包与旧版资源包的“差分包”。客户端重新拉取更新本地资源包时,只需拉取差分包,在客户端本地与旧资源包进行整合生成新版本资源包。
差分包大小由两个离线包的资源重合度决定,重合度越高,差分包越小:
1)如果新离线包与旧包匹配结果不一致,且比对后差异不超过80%,则产生差分包,下载后将和旧版离线包整合为新版离线包;
2)如果新离线包与旧包匹配结果不一致,但两包之间的对比差异超过80%,将不会生成差分包,会直接下载完整新包,覆盖旧包。

功能模块

序号功能模块子功能功能说明
1离线包管理业务管理创建并管理业务
离线包管理在创建好的业务下上传离线包(单个上传或批量上传)
2离线包发布创建发布任务并推送选择上传好的离线包,创建发布任务,并进行推送
3配置管理证书配置上传创建好的离线包证书文件(pem后缀)

名词解析

业务

凡是H5页面,都可以是业务,您可以把1个或1组H5页面看成一个业务,这取决于您的定义。
我们将业务分为两种,一种是用来存放公共资源的,为“公共包”,也可以称之为“公共资源池”,您可以把常用的配置存放在公共资源类型的业务页面下,一种是用来管理不同场景下的H5页面的,为“主包”,也可以称之为“常规业务”。

离线包

离线包是将包括 html、js、css、图片等页面内静态资源打包到一个压缩包内。通过预先下载该离线包到本地,然后在客户端打开,直接从客户端本地加载离线包。

业务和离线包的关系

离线包是某个业务下H5页面的静态资源(html、js、css、图片等),在某个业务下发布一个离线包,即可更新这个业务下某个或全部H5页面的静态资源,从而修改页面展示的内容。

差分包

差分包即新旧两个离线包版本之间存在差异的部分,系统通过自动对比新旧离线包生成差分包,下载差分包和旧离线包组合成新离线包,从而节省流程,提升效率。

详细说明

如果此前已发布离线包,在后续迭代H5页面时,开发者需要重新上传新版资源包,这时,服务器会自动生成新版资源包与旧版资源包的“差分包”。客户端重新拉取更新本地资源包时,只需拉取差分包,在客户端本地与旧资源包进行整合生成新版本资源包。
差分包大小由两个离线包的资源重合度决定,重合度越高,差分包越小:
1)如果新离线包与旧包匹配结果不一致,且比对后差异不超过80%,则产生差分包,下载后将和旧版离线包整合为新版离线包;
2)如果新离线包与旧包匹配结果不一致,但两包之间的对比差异超过80%,将不会生成差分包,会直接下载完整新包,覆盖旧包。

移动监控简介

服务概述

移动监控(QAPM)是一款面向企业级移动App的综合性能监控平台,只需简单的调用几个接口,便可以分钟级构建起您的专属性能优化解决方案;基于腾讯经验,将多维度指标分析与问题聚类分析有机结合,为您打造发现、定位、解决、度量的一站式性能优化体验。

App端接入QAPM后,QAPM会自动抓取相关性能数据并上报到后台,后台结合专项长期测试经验抽取的规则进行分析,自动分析出各维度存在可疑的性能缺陷。然后您便可以在控制台快速洞悉应用的性能全景,并作出优化决策。QAPM将作为您的数字体验助手,助力您打造良好的用户体验,持续获得良好的数字业务成果突破。

系统架构及技术原理

应用场景

  • 助力研发聚焦重点严重缺陷
    基于多年专项测试经验,在各性能维度对问题进行聚类并提供关键数据辅助判断问题优先级,帮助研发人员将精力有效聚焦在重点问题上。
  • 助力精准打击疑难缺陷
    通过结合用户环境信息、资源使用信息、堆栈信息真实还原用户遭遇性能问题时的情景,助力研发人员精准解决偶现bug等疑难缺陷。
  • 快速搭建综合性能监控体系
    只需接入QAPM SDK并进行简单配置,便可以针对您的项目搭建全方位的综合性能监控体系。在研发流程内,基于QAPM提供的简单易用的API,您可以结合各性能维度数据定制专属于项目组的合流规范;在研发流程外,通过收集数以百万计的真实用户的数据上报,还原您应用的性能全景,并基于QAPM的大数据分析引擎,助力您全面突破性能瓶颈,打造优质用户体验,成就卓越行业口碑。

移动分析简介

产品简介

TMF移动分析是一个专注于互联网产品用户体验数据可视化与自主分析的工具,是从行为数据采集,处理,可视化分析一站式分析平台。针对传统企业向互联化转型中遇到的痛点,收集用户行为分析数据,帮助产品运营掌握用户的需求和喜好,提供成熟的用户行为分析,发掘最有价值的用户细分,并驱动业务增长,打造优质的用户口碑。

产品架构

数据层

抓取用户层级信息,从全局展示产品整体形态,提供全局数据指标,展示整体数据来源情况;抓起页面粒度信息,下降维度监控页面用户行为,积极提升用户体验;多维度抓取到控件粒度的数据,提供基础物料,坚实细化信息呈现。

支持互联网标准产品形态多平台数据接入:

  • Android

  • iOS

分析层

  • 基于腾讯互联网众多的产品运营分析和迭代经验提炼出通用分析模型,面向产品、运营等角色提供协作分析能力,助力产业互联网打造良好口碑,让企业拥有顶级产品提升能力。

  • 可视化分析平台,分析前台后台精细到控件粒度数据,让企业拥有优质大数据分析能力,提升企业竞争力。

应用层

  • 自定义数据大盘,使用者根据自身需求灵活展示大盘数据。

  • 多场景数据分析,为用户运营、产品优化提供数据支撑辅助决策,从业务侧提高产品能力。

功能组成

功能列表

功能项描述
数据概览指标包括启动次数、活跃用户数、新增用户数、用户活跃趋势、App使用趋势、用户留存趋势、页面访问趋势;
自定义大盘将各种数据分析结果集中在一个页面上以报表形式呈现,可以通过新建自定义分析报表或者选择现有分析报表将其添加到大盘
事件分析支持统计并展示登录的人数、人次及页面访问情况统计,支持自定义事件分析,并通过多个事件组合分析。
漏斗分析支持将一个多步骤流程设置为一个漏斗,分析整体的以及每一步的转化与流失情况,进而进行产品优化。用户可将埋点事件组合成漏斗,并配合灵活的筛选条件,实现精准分析。
留存分析支持统计并展示一定时间内的活跃用户7日留存情况;支持查看一段时间内,活跃用户7日、14日、30日的流失情况。
轨迹分析支持通过用户ID及设备ID,查看某个用户的在App的操作记录,并对相关事件进行统计分析。
路径分析支持通过桑葚图展示页面三层流转路径
设备分析支持统计并展示活跃用户的设备信息,包括系统版本、手机型号、应用版本、运营商、操作系统等信息
事件和属性设置支持自定义事件、属性,并进行关联,可在事件分析、漏斗分析中使用。
页面设置支持自定义页面设置,与上报页面进行关联映射。
报表导出支持多个数据报表导出excel格式。

数据概览

数据概览默认展示当日数据,数据指标有:

  • 启动次数:用户进入应用的总次数,包括应用启动或切后台超过 30 分钟后再次打开。

  • 活跃用户数:当天登录的用户数,按账号去重。

  • 新增用户数:首次登录应用的用户数。

数据每半个小时统计一次,刷新时,页面展示数据为最近一次统计的数据结果,可切换Android、iOS平台及对应的应用版本查询数据,应用版本为App获取的版本信息,可切换不同时间维度查询数据。

数据概览页面下方展示启动和活跃用户趋势、用户App使用趋势,新增用户和留存用户数量变化趋势。

消息推送简介

服务概述

消息推送组件提供专业的移动消息推送方案,针对不同的场景推出多种推送类型,满足您的个性化推送需求。为了提升推送的到达率,TMF 集成了华为、小米等厂商的推送功能,在提供控制台快速推送能力的同时,也提供了服务端接入方案,方便用户快速集成移动终端推送功能,与 App 用户保持互动,从而有效地提高用户留存率,提升用户体验。

应用场景

  • 唤醒沉睡用户。
  • 快速推送新闻内容、促销活动、产品信息、版本更新提醒、订单状态提醒等通知栏信息。

系统架构及技术原理

技术原理: 消息推送提供控制台和个性化推送 API 两种下发方案。控制台提供多维策略配置,针对单一消息数据,支持多个任务配置,满足产品风险控制需求。个性化 API 提供业务实时推送接口,支持单个账户,设备 ID 推送。消息数据下发支持自有通道和厂商通道,优先厂商通道下发,厂商通道无效则走自有通道。消息推送保存用户的消息推送记录,避免重复下发打扰用户。 

智慧投放简介

服务概述

智慧投放广告组件提供 App 、H5、微信小程序多应用端内的个性化广告投放能力,支持针对定向人群(包含用户性别、城市、手机系统、自定义人群标签等多维度)进行广告投放,帮助运营人员精准、及时触达用户,实现留存、促活、增长业务的目的。同时支持一次广告活动投放多端应用,且支持设定多端素材展示规律控制广告疲劳度。

架构说明

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

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

相关文章

Vol.41 SEO基本术语解释

1.TDK TDK:即标题、描述、关键词;TDK是网站的基本属性,对SEO非常重要,可以帮助搜索引擎了解你的网站; T:title 谷歌建议不超过70个字符 D:description 谷歌建议不超过150个字符 K&#xff1…

element-ui中el-radio-group组件绑定点击事件触发多次的解决办法

1、需求 电商首页需求,需要做个单选框,然后点击选中切换图标方向及更换价格升倒序,如下图: 从官网文档看,单选框支持change event,使用click加载按钮处不会触发选中 但是使用 click.native 事件不做处理…

ACID模型是什么

ACID模型是什么 ACID模型是数据库管理系统中保证事务处理安全性的一组特性。ACID是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)四个英文单词的…

开源博客项目Blog .NET Core源码学习(15:App.Hosting项目结构分析-3)

本文学习并分析App.Hosting项目中前台页面的关于本站页面和点点滴滴页面。 关于本站页面 关于本站页面相对而言布局简单,与后台控制器类的交互也不算复杂。整个页面主要使用了layui中的面包屑导航、选项卡、模版、流加载等样式或模块。   面包屑导航。使用layui…

初探vercel托管项目

文章目录 第一步、注册与登录第二步、本地部署 在个人网站部署的助手vercel,支持 Github部署,只需简单操作,即可发布,方便快捷! 第一步、注册与登录 进入vercel【官网】,在右上角 login on,可登…

WXML模板语法-条件与列表渲染

wx:if 在小程序中&#xff0c;使用wx:if"{{condition}}"来判断是否需要渲染该代码 也可以用wx:elif和wx:else来添加else判断 <!--pages/ifIndex/ifindex.wxml--> <view wx:if"{{type 1}}">男</view> <view wx:elif"{{type …

【Linux】磁盘与文件系统管理

目录 一、 磁盘结构 1. 数据结构 2. 物理结构 3. 硬盘的接口类型 二、 如何使用Linux中的磁盘 三、 文件系统 四、 磁盘分区 1. MBR分区 2. 分区的优缺点 3. 磁盘及分区的管理工具 五、格式化与挂载 1. 格式化 2. 挂载 六、实例演示 1. 演示分区格式化挂载 2. …

24年大一4月14日训练(东北林业大学)

前言&#xff1a; 今晚的5道题。 正文&#xff1a; Problem:A宋哥猜拳(2)&#xff1a; #include<bits/stdc.h> using namespace std; int main(){int t;cin>>t;while(t--){string x;cin>>x;int a0,b0,c0,lx.length();// cout<<l;for(int i0;i<l;i…

反射与动态代理

一、反射 什么是反射? 反射允许对成员变量&#xff0c;成员方法和构造方法的信息进行编程访问 1.获取class对象的三种方式 Class这个类里面的静态方法forName&#xff08;“全类名”&#xff09;&#xff08;最常用&#xff09; 通过class属性获取 通过对象获取字节码文件对…

20240414,类的嵌套,分文件实现

笑死&#xff0c;和宝哥同时生病了 一&#xff0c;封装-案例 1.0 立方体类 #include<iostream>//分别用全局函数和成员函数判定立方体是否相等 using namespace std;class Cube { public:int m_area;int m_vol;int geth(){return m_h;}int getl() { return m_l; }int…

C# Window form 自定义控件的结构和设计(三)

C# Window form 自定义控件的结构和设计(三) 一、前面介绍了如何来创建第一个自定义的控件&#xff0c;以及一个测试程序。下面我们来看下如何在自定义控件中添加属性。 C#和其他.NET语言支持属性作为语言的第一类成员。把属性作为语言的基础属性有两点主要的有点&#xff1a…

Flutter第八弹 构建拥有不同项的列表

目标&#xff1a;1&#xff09;项目中&#xff0c;数据源可能涉及不同的模版&#xff0c;显示不同类型的子项&#xff0c;类似RecycleView的itemType, 有多种类型&#xff0c;列表怎么显示&#xff1f; 2&#xff09;不同的数据源构建列表 一、创建不同的数据源 采用类似Rec…

【设计模式】六大设计原则

设计原则 研究 23 种设计模式是困难的&#xff0c;甚至是没必要的六大设计原则零、单一职责原则开闭原则里氏代换原则依赖倒置原则接口隔离原则迪米特法则合成复用原则 研究 23 种设计模式是困难的&#xff0c;甚至是没必要的 设计模式有23种&#xff0c;我认为对普通人来说想…

快速寻找可以构建出网通信隧道的计算机

点击星标&#xff0c;即时接收最新推文 本文选自《内网安全攻防&#xff1a;红队之路》 扫描二维码五折购书 为加强内网的安全防范&#xff0c;安全管理员往往会限制内网计算机访问互联网&#xff0c;当然不同机构的限制策略是不一样的&#xff0c;有的完全阻断了内网计算机访问…

如何发布自己的Python库?

Python包发布 1、背景概述2、操作指南 1、背景概述 为什么我们要发布自己的Python库&#xff1f;如果你想让你的Python代码&#xff0c;通过pip install xxx的方式供所有人下载&#xff0c;那就需要将代码上传到PyPi上&#xff0c;这样才能让所有人使用 那么&#xff0c;如何发…

群晖双硬盘实时备份(WebDAV Server+Cloud Sync)

安装和设置 WebDAV Server WebDAV 是一种基于HTTP的协议扩展&#xff0c;它允许用户在远程Web服务器上进行文档的编辑和管理&#xff0c;就如同这些文件存储在本地计算机上一样。使用WebDAV&#xff0c;用户可以创建、移动、复制和修改文件和文件夹。 安装和设置 Cloud Sync…

使用 Prometheus 在 KubeSphere 上监控 KubeEdge 边缘节点(Jetson) CPU、GPU 状态

作者&#xff1a;朱亚光&#xff0c;之江实验室工程师&#xff0c;云原生/开源爱好者。 KubeSphere 边缘节点的可观测性 在边缘计算场景下&#xff0c;KubeSphere 基于 KubeEdge 实现应用与工作负载在云端与边缘节点的统一分发与管理&#xff0c;解决在海量边、端设备上完成应…

地球上四大洋介绍

地球上四大洋的分布是&#xff1a; 太平洋&#xff1a;太平洋是世界上最大的海洋&#xff0c;覆盖了约三分之一的地球表面。它位于亚洲、澳大利亚、美洲和南极洲之间。太平洋的面积约为1.6亿平方公里&#xff0c;拥有世界上最深的点——马里亚纳海沟。 大西洋&#xff1a;大西…

2024HW --> 安全产品 Powershell无文件落地攻击

在HW中&#xff0c;除了了解中间件&#xff0c;web漏洞&#xff0c;这些攻击的手法&#xff0c;还得了解应急响应&#xff0c;安全产品&#xff0c;入侵排查&#xff0c;溯源反制...... 那么今天&#xff0c;就来说一下安全产品&#xff08;安全公司我就不说了&#xff0c;这个…

001vscode为什么设置不了中文?

VSCode中文插件安装 在VSCode中设置中文的首要步骤是安装“Chinese (Simplified) Language Pack for Visual Studio Code”扩展插件。这一过程十分简单&#xff0c;只需打开VSCode&#xff0c;进入扩展市场&#xff0c;搜索“ Chinese (Simplified) Language Pack ”然后点击…