C++ 构建

GN, Ninja, CMake ...

CMake Ninja GN GN

日常的设计模式

要像白开水一样

六大原则 设计原则并不是设计模式,通常一种设计模式会包含多种原则 单一职责原则 这个是最简单也是最难的 开闭原则 通过抽象和多态来实现来实现 对修改关闭,对拓展开放 里氏替换原则 通过继承和多态,子类不能更改父类的定义,能使用父类的地方,都能直接使用子类来替换; 依赖倒置原则 高层模块不应该依赖低层模块,两者都应该依赖其抽象; ...

从 Choreographer 看绘制

绘制小马达

几个关键类 WindowManager WindowManager 是以服务的形式; 1 context.getSystemService(Context.WINDOW_SERVICE) WindowManager 的实际能力由 WindowManagerGlobal 提供,它是一个单例。 WindowManag...

Android 线上监控方案

线上发生 卡顿/ANR/Crash 了怎么办

前置知识 Linux 知识 1. fork 进程 fork 主进程后,子进程与主进程共享内存空间 子进程中不会有主进程中的线程信息; 2. 抓取堆栈 抓当前线程的堆栈,可以直接抓; 抓其他线程的堆栈,需要将目标线程挂起,抓完后再恢复; 3. hprof 监控 监控卡顿 BlockCanary 方案 主线程所有执行的...

Matter 必知必会

人人都会的 Matter

专有名词 名词 中文解释 英文全称 DCL 分布式加密安全网络 distributed compliance ledger PKI 设备认证公钥基建 Device Attestation Public Key In...

FastDDS

Data Distribution Service

DDS DDS(Data Distribution Service)是一套通信协议和 API 标准;它提供了以数据为中心的连接服务,基于发布者-订阅者模型。这是一套中间件,它提供介于操作系统和应用程序之间的功能,使得组件之间可以互相通信。并且提供了低延迟,高可靠的通信以及可扩展的架构。 DDS本身是一套标准。由Object Management Group(简称OMG)维护。OMG是一个...

CMake

使用 配置工程 配置代码结构 1 2 3 4 5 6 7 8 # 添加目录 include_directories(<dir>) # 搜索目标目录下的所有源文件 aux_source_directory(<dir>, <variable>) # 将上述的搜索到的源文件添加为动态库 add_library(<name>...

C++入门

C++不完全入门指南

名词解释 名称 全称 说明 GNU GNU’s Not Unix GNU 指的是自由软件,自由软件意味着使用者有运行、复制、发布、研究、修改和改进该软件的自由。 GCC GNU Compiler Collection ...

树莓派耍耍

初始化树莓派

找镜像: 除了官方在 raspberry.org 中找,还可以在 ubuntu 中去找镜像,以及 Ubuntu 全部镜像版本 烧录: 1 2 3 4 diskutil list diskutil unmountDisk /dev/rdiskN sudo dd bs=1m if=path_of_your_image.img of=/dev...

ANR

参考 微信Android客户端的卡顿监控方案 微信Android客户端的ANR监控方案 Android 平台 Native 代码的崩溃捕获机制及实现 今日头条 ANR 优化实践系列 - 设计原理及影响因素