【学习笔记】HarmonyOS到底是不是Android套皮?

本文为学习笔记,并非原创。原文链接,原文发表于2021-06-09

HarmonyOS分析

原作者通过分析HarmonyOS应用的构建产物,得出如下结论:

1.构建产物中,包含一个标准Android的apk文件。该apk内AndroidManifest.xml文件中做了两件事:

1)定义Application为ShellApplication

2)定义MainActivity为MainAbilityShellActivity

2.ShellApplication最终继承自Android的Application。

3.MainAbilityShellActivity继承自Android的Activity。

原作者认为鸿蒙的分布式软总线是一个私有RPC协议。通过OpenHarmony源码分析,分布式软总线主要有以下几个模块:

  1. 设备发现:采用了CoAP协议作为设备发现协议,通过在一个局域网内发送广播来实现。
  2. 数据传输:基于Session提供统一的数据传输功能。
  3. 设备认证与管理:主要是安全。
  4. AceEngineLite:应该就是JS开发的Ability页面如何编译以及 在嵌入式设备上如何渲染的相关实现,这也许就是为什么HarmonyOS可以采用多种开发语言开发界面的关键所在。各种小程序、Flutter相关设计都是这样的,设计思想都是:自创UI框架以屏蔽系统差异。

原作者认为,HarmonyOS = Android - GMS + HMS + 分布式软总线 + 以Ability为核心的应用开发框架 …

more ...

【学习笔记】极致首帧播放方案 - 零首帧解决方案

本文为学习笔记,并非原创。原文链接,原文发表于2021-04-06

背景介绍

「零首帧」并不是真的0毫秒启播,而是用户几乎感知不到有首帧时间的存在,在我们的播放质量埋点中对应小于100ms以内的首帧时间。

在现实业务中,有些场景是无法使用所有的优化条件的,比如在随机播放的场景不能进行预加载、某些场景不适合使用播放器复用技术等。

首帧的构成

firset frame

从上图可以看出首帧时间主要包含这么几个部分: 获取视频播放链接,网络建连,下载视频头部数据,音视频解码和渲染。

通用的首帧优化方法

获取播放地址

优化方案:播放地址随feed下发。

通常而言,视频资源会有唯一标识 video id , 在点播的服务端会有一个根据 video id 信息获取播放链接的服务,如果 app server 端能够调用 vod 服务生成播放地址,然后将播放地址随 feed 流一起下发,则省去了客户端的一次网络请求耗时。

网络建连

优化方案:预解析。预连接&连接复用。避免TLS握手。

拿到播放地址,播放器与DNS建连,首先会做DNS解析 …

more ...


【学习笔记】Git各命令的本质,真是通俗易懂啊

本文为学习笔记,并非原创。原文链接,原文发表于2020-11-15

本篇文章写得真的不错,建议全文阅读。这里只记我不熟悉的地方。

commit节点、HEAD和分支

每次commit都会生成一个节点,节点内容是本次及本次之前所有提交的内容。

不管HEAD还是分支,都是对一个commit节点的引用。因为只是引用,所以它们非常轻量。引用+节点是git构成分布式的关键。

HEAD是一个引用,它可以指向任意一个节点。其指向的节点始终为当前工作目录,换句话说就是当前工作目录(也就是你看到的代码)就是HEAD指向的节点

分支也可以视为一个引用,分支指向一个节点时,该节点的内容就是分支的内容。

分支可以存在多个,而HEAD只有一个。

合并

merge

git merge 分支名/节点哈希值   //将指定分支或节点的内容合并至HEAD

如果要合并的内容完全领先于当前分支,如下图中在ft-2上执行git merge ft-1,则会触发fast-foward(快速合并),此时两个分支指向统一节点。

git merge fast-forward

但实际情况中,往往遇到的是下图中的情况。这种就不能直接合并了,在ft-2 …

more ...

iPhone屏幕分辨率

iPhone型号 分辨率(pixel) 分辨率(pt) 屏幕尺寸(inch) 高宽比
2G,3G,3GS 320 x 480 320 x 480 3.5 1.5
4,4S 640 × 960 320 x 480 3.5 1.5
5,5S,5C,SE 640 x 1136 320 x 568 4 1.775
6,6S,7,8,SE2 …
more ...