【鸿蒙学习】HarmonyOS应用开发者高级认证 - 应用DFX能力介绍(含闯关习题)

news2024/9/20 20:46:30

在这里插入图片描述
学完时间:2024年8月24日
学完排名:第1698名

一、Performance Analysis Kit简介

Performance Analysis Kit(性能分析服务)为开发者提供应用事件、日志、跟踪分析工具,可观测应用运行时状态,用于行为分析、故障分析、安全分析、统计分析,帮助开发者持续改进应用体验。
使用场景

  • 应用调试:
    提供流水日志功能,帮助开发者记录和获取日志,进行问题分析。
  • 问题定位:
    提供各类场景的故障现场,包含可靠性、性能、功耗、分布式故障相关的日志、事件、跟踪。
  • 线上监控:
    提供应用构建线上观测所需的日志、事件、跟踪接口,方便开发者记录、分析应用线上运行情况。
    能力范围
  • HiLog流水日志,提供开发者记录和获取流水日志能力。
  • HiTraceMeter和HiTraceChain跟踪,提供开发者Trace度量和跨线程跨进程分布式跟踪的能力。
  • HiAppEvent应用事件,提供开发者记录故障、行为、安全、统计事件的能力,并订阅系统事件,设置数据处理者完成数据上传。
  • FaultLogger故障日志管理,提供开发者主动查询故障日志的通道。
  • HiDebug资源采集,提供开发者获取应用、系统资源的使用情况。

亮点/特征

便捷的构建APM系统

  • 提供接口(HiDebug、HiAppEvent、HiLog)可自建端侧APM SDK,与厂商自研APM对接。
  • 基于HiAppEvent自定义事件、订阅系统事件功能,快捷记录和收集运营和运维所需事件。

强悍的异常处理机制

  • 提供精简标准完备的异常日志,支持精准记录异常传播路径。
  • 全面的异常检测机制,实时感知异常,通知应用,自动拉起恢复。

全面的基础维测能力

  • 日志提供分级分类功能,支持多语言,隐私处理和流量控制。
  • 提供完备的事件框架和事件打点、记录、上报机制。
  • 支持追踪进程轨迹,进行程序性能分析。

故障分析

基于 Performance Analysis Kit(性能分析服务),为开发者提供了完善的故障检测、异常处理等能力。由于故障种类异常繁多,产品和软件业务不同,故障的原因和表现也千差万别,因此分析定位疑难问题是对工程师经验、能力、智慧的多重考验。稳定性是应用的重要质量属性,很大程度上决定了应用的开发效率和交付成本,严重影响应用质量和体验。通常可以通过开发态和运行态的故障管理设计来提升版本质量,包括故障检测、故障分析、定位、恢复、质量度量等。

为了帮助开发者更好更快的定位和解决各位应用稳定性故障,本章节还会介绍JS Crash、CppCrash、AppFreeze、资源泄露等故障的通用定位方法以及一些通用分析案例。相关内容需要开发者有编程语言、操作系统等基础知识,案例分析过程还会关联 DevEco Studio 相关能力以及 SDK 相关套件的基础运用和实践。

使用HiLog打印日志(ArkTS)

在应用开发过程中,可在关键代码处输出日志信息。在运行应用后,通过查看日志信息来分析应用执行情况(如应用是否正常运行、代码运行时序、运行逻辑分支是否正常等)。

系统提供不同的API供开发者调用并输出日志信息,即HiLog与console。两个API在使用时略有差异,本文重点介绍HiLog的用法。
HiLog中定义了DEBUG、INFO、WARN、ERROR、FATAL五种日志级别,并提供了对应的方法输出不同级别的日志

参数解析

说明
isLoggable()和具体日志打印接口使用的domain和tag应保持一致。
isLoggable()使用的level,应和具体日志打印接口级别保持一致。

  • domain
    用于指定输出日志所对应的业务领域,取值范围为0x0000~0xFFFF,开发者可以根据需要进行自定义。

  • tag
    用于指定日志标识,可以为任意字符串,建议标识调用所在的类或者业务行为。

  • level
    用于指定日志级别。取值见LogLevel。

  • format
    格式字符串,用于日志的格式化输出。日志打印的格式化参数需按照“%{private flag}specifier”的格式打印。

约束与限制

日志打印最多打印4096字节,超出限制文本将被截断。

HiAppEvent是在系统层面为应用开发者提供的一种事件打点机制,帮助应用记录在运行过程中发生的故障信息、统计信息、安全信息、用户行为信息,支撑开发者分析应用的运行情况。以便进一步统计分析访问数、日常用户活跃数量、用户操作习惯以及其他影响用户使用产品的关键因素。

三、HiAppEvent介绍

基本概念

打点: 记录由用户操作引起的变化,提供业务数据信息,供开发、产品、运维分析。

事件设计规范

  • 事件领域:
    标识事件的领域,建议设置为业务模块名称,以便于区分不同的业务模块。

  • 事件名称:
    指定事件的名称,建议设置为具体的业务名称,以便于描述实际的业务意义。

  • 事件类型:
    指定事件的类型,支持以下四种类型事件:

    • 行为事件:记录用户日常操作行为的事件,例如按钮点击、界面跳转等行为。
    • 故障事件:定位和分析应用故障的事件,例如界面卡顿、掉网掉话等异常。
    • 统计事件:统计和度量应用关键行为的事件,例如对使用时长、访问数等的统计。
    • 安全事件:记录涉及应用安全行为的事件,例如密码修改、用户授权等行为。
    • 事件参数:指定事件的参数,每个事件可以包含一组参数,建议设置为事件属性或事件发生上下文信息,以便于描述事件的详细信息。

四、使用HiTraceMeter跟踪性能(ArkTS)

简介

HiTraceMeter提供系统性能打点接口。开发者通过在关键代码位置调用HiTraceMeter接口提供的API接口,能够有效跟踪进程轨迹、查看系统性能。

基本概念

HiTraceMeter Tag:跟踪数据使用类别分类,称作HiTraceMeter Tag或HiTraceMeter Category。一般每个软件子系统对应一个Tag,该Tag在打点API中以类别Tag参数传入。HiTraceMeter命令行工具采集跟踪数据时,只采集给定的Tag类别选项指定的跟踪数据。

实现原理

  1. 应用程序通过HiTraceMeter函数接口进行打点,HiTraceMeter函数将跟踪数据通过内核sysfs文件接口输出到内核的ftrace数据缓冲区。

  2. HiTraceMeter命令行工具读取内核ftrace缓冲区中的跟踪数据,将文本格式的跟踪数据保存到设备侧的文件中。

五、闯关习题

判断题

1.HiAppEvent提供事件监听功能,开发者不能监听到系统事件:

答案:错误(False)

2.HiTraceMeter用于追踪进程轨迹,进行程序性能分析,支持内核ftrace预置埋点和用户态打点:

答案:正确(True)

单选题

1.关于HiLog日志打印规则,下列说法错误的是:

答案:B. 日志中可以打印用户个人隐私信息。

2.下列哪一项不是HiLog定义的日志级别:

答案:E. FAIL

多选题

1.DFX设计范围主要包含以下哪些:

答案: 全选

A. HiLog日志,基础流水日志打印。

B. HiAppEvent应用事件,事件埋点接口,提供事件的埋点写入。

C. HiTrace Meter跟踪,提供追踪进程轨迹,进行程序性能分析。

D. HiTrace Chain调用链,提供业务流程调用链跟踪的维测接口。

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

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

相关文章

游戏分享网站|基于SprinBoot+vue的游戏分享网站系统(源码+数据库+文档)

游戏分享网站 目录 基于SprinBootvue的游戏分享网站 一、前言 二、系统设计 三、系统功能设计 5.1系统功能模块 5.2后台登录 5.2.1管理员功能模块 5.2.2用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#x…

kaggle竞赛宝典 | 量化竞赛第一名的网络模型

本文来源公众号“kaggle竞赛宝典”,仅用于学术分享,侵权删,干货满满。 原文链接:量化竞赛第一名的网络模型 1 简介 今天我们重温Jane Street 大赛第一名的网络模型。该次赛事数据集包含了一组匿名的特征,feature_{0…

2014年4月-2023年上市公司秩鼎ESG评级数据

2014年4月-2023年上市公司秩鼎ESG评级数据 1、时间:2014年4月-2023年11月 2、来源:秩鼎数据 3、指标:证券代码、SC、评级日期、ESG评级、ESG等级、ESG得分、E评级、E等级、E得分、S评级、S等级、S得分、G评级、G等级、G得分、总市值(亿元)、流通市值(…

企业微信聊天记录可以保存多久?员工聊天记录查看指南!合规存档,助力企业规避风险!

在数字化办公的浪潮中,企业微信已成为企业沟通协作的重要工具。然而,聊天记录的保存时长与合规性管理,成为企业不可忽视的问题。 企业微信聊天记录云端最长可保存90天,但企业可根据需求自定义设置。本文将为您详细解析企业微信聊…

Linux TCP多线程服务器

一、多线程开发 线程和进程 程序写好存储在硬盘介质里,CPU读取程序到内存 ,这个在内存中的可执行程序实例就叫进程。一个程序如果多次读取到内存中,那他们就是各自独立的进程 内存中的任何位置都有相应的地址方便访问,而在内存中…

8.23-docker基础命令学习

docker 1.docker容器 [rootdocker ~]# systemctl start docker[rootdocker ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcentos latest 5d0da3dc9764 2 years ago 231MB​# 容器执行完就退出了​[rootdocker ~]# docker run -it …

C++20中的简写函数模板(abbreviated function template)

简写函数模板(abbreviated function template):当占位符类型(auto或concept auto)出现在函数声明或函数模板声明的参数列表中时,该声明将声明一个函数模板,并且每个占位符的一个虚构模板参数(one invented template parameter)将附加到模板参数列表。如下…

【412】【K 次乘运算后的最终数组 I】

第一次打周赛,难绷 后两题都差200个样例。 这题很简单,看题就可以 class Solution:def getFinalState(self, nums: List[int], k: int, multiplier: int) -> List[int]:nlen(nums)for i in range(k):mnmin(nums)for j in range(n):if nums[j]mn:nums…

自定义类加载器使用geotools读取高程报 ImageRead: No OperationDescriptor is registered 问题

背景 项目中使用了 自定义classLoader ,&#xff0c;然后使用下面简化后的代码读取高程数据 public class Test{public static void main(String[] args) throwS Exception{CustomClassLoader cl new CustomClassLoader();Class<?> clazz cl.loadClass(“Test”);Te…

后端代码练习5--验证码案例

我们日常生活中&#xff0c;在进行应用程序注册或者登录的时候&#xff0c;出于安全性的考虑&#xff0c;我们都会被进行一项验证的操作&#xff0c;即通过网页给我们的图片进行一些列的操作&#xff0c;最终完成对我们身份的验证并给我们这些用户返回验证码&#xff0c;让我们…

C语言-有两个磁盘文件A和B,各存放一行字母,今要求把这两个文件的信息合并(按字母顺序排列),输出到一个新文件C中去-深度代码解析

1、题目要求 有两个磁盘文件A和B&#xff0c;各存放一行字母&#xff0c;今要求把这两个文件的信息合并&#xff08;按字母顺序排列&#xff09;&#xff0c;输出到一个新文件C中去 2、准备工作 问题1&#xff1a;为什么不需要手动创建C.txt文件&#xff1f; 答&#xff1a;根…

技术分享-商城篇-订单模块-取消/收货功能(十六)

前言 再上一篇文章技术分享-商城篇-用户订单管理&#xff08;十五) 中&#xff0c;订单模块用户操作含有&#xff1a;取消订单、去支付、确认收货、删除订单、查看详情、去退款、查看物流、再次购买等业务操作&#xff0c;以上的每一个操作&#xff0c;都是对应不同的业务和状…

AudioNotes -将音频内容转 markdown

文章目录 一、关于 AudioNotes效果展示音视频识别和整理与音视频内容对话 二、使用方法1、安装 Ollama2、拉取模型3、部署服务3.1 Docker部署&#xff08;推荐&#xff09;&#x1f433;3.2 本地部署 &#x1f4e6; 一、关于 AudioNotes AudioNotes 能够快速提取音视频的内容&…

贪心处理任务(华为od机考题)

一、题目 1.原题 在某个项目中有多个任务&#xff08;用 tasks 数组表示&#xff09;需要您进行处理&#xff0c; 其中 tasks[i] [si, ei]&#xff0c; 你可以在 si < day < ei 中的任意一天处理该任务。 请返回你可以处理的最大任务数。 注&#xff1a;一天可以完成一…

硬件面试经典 100 题(81~90)题

81、请问下图电路中二极管 D1、D2 有什么作用&#xff1f; 在 Vi 输入电压接近于零时&#xff0c;D1、D2 给三极管 T1、T2 提供偏置电压&#xff0c;使 T1、T2 维持导通&#xff0c;以消除交越失真。 陈氏解释 这道题参见&#xff1a;硬件面试经典 100 题&#xff08;51~70 题…

【学习笔记】STM32F407探索者HAL库开发(三)IO分配

【学习笔记】STM32F407探索者HAL库开发&#xff08;三&#xff09;IO分配 1 STM32F407 IO资源分配表2 STM32F407ZGT6 引脚定义3 IO分配的重要性3.1 硬件设计优化3.2 软件编程3.3 系统性能提升 4 F1/F7/H7芯片的IO分配差异4.1 引脚数量和分组4.2 功能模式4.2.1 输入模式4.2.2 输…

Kubernetes 外部 etcd 集群的快速 Docker Compose 部署指南

一、背景 在高可用 Kubernetes 部署中&#xff0c;需要单独部署外部 etcd 集群&#xff0c;而不是使用 kubeadm 默认在 master 节点上部署的 etcd。以下是关于这一配置场景的详细记录。 二、etcd简介 etcd 是一个高可用的分布式键值存储系统&#xff0c;主要用于存储和管理配…

使用Qt+Visual Stuidio写一个简单的音乐播放器(1)

1.使用QMediaPlayer播放音乐 第三步:在代码头部加上: #include <QtMultimedia/QMediaPlayer> // VS向.pro文件添加代码的方式 #pragma execution_character_set("utf-8") // qt支持显示中文 QMediaPlayer类是一个高级媒体播放类。它可以用来播放歌曲、电…

leetcode 893. Groups of Special-Equivalent Strings

原题链接 You are given an array of strings of the same length words. In one move, you can swap any two even indexed characters or any two odd indexed characters of a string words[i]. Two strings words[i] and words[j] are special-equivalent if after any …

力扣: 设计链表

文章目录 需求代码结尾 需求 你可以选择使用单链表或者双链表&#xff0c;设计并实现自己的链表。 单链表中的节点应该具备两个属性&#xff1a;val 和 next 。val 是当前节点的值&#xff0c;next 是指向下一个节点的指针/引用。 如果是双向链表&#xff0c;则还需要属性 p…