自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

baiiu

每天前进三十公里

  • 博客(253)
  • 资源 (1)
  • 收藏
  • 关注

原创 【置顶】 博文汇总

23年底了,想来也工作十年,也一直在csdn输出。这十年,从业务层做到性能优化,再到音视频,再到播放器稳定性相关的native crash。也积累了不少文章,在此汇总一下;另外还有大量的深度源码分析草稿,之后也整理发出来吧。

2023-12-15 18:50:44 1600

原创 音视频 ColorSpace色彩空间详解

基于前篇介绍YUV格式,本文继续介绍另一个重要概念颜色空间,又叫色彩空间;主要用于在音视频开发中的色彩空间转换。

2025-03-30 14:15:48 326

原创 音视频 YUV格式详解

本文介绍YUV色彩模型,YUV的分类和常见格式。

2025-03-30 14:06:53 199

原创 Android JVM TI使用介绍

本文介绍JVM TI的使用,在做稳定性的时候尝试了下该工具,很强,在Java代码上比方便太多。

2024-12-25 08:00:00 61

原创 Android9.x SurfaceView源码分析

本文是继再次对SurfaceView进行源码分析。看了下代码,上篇文章是基于Android4.x的,本篇基于Android9.x再次进行分析,Android从7.0开始支持SurfaceView动画,并建议7.0之后使用SurfaceView替代TextureView,这里主要在Android9.0上分析SurfaceView如何进行动画的。对layout或者layout.getSurfaceView()做缩放动画,有明显的黑影。

2024-12-24 21:31:33 195

原创 C++ lambada表达式、std::bind、std::function

本文介绍c++ lambada常见的表达式,语法太多了,用到的时候再补充。一个lambda表达式表示一个可调用的代码单元。我们可以将其理解为一个未命名的内联函数。

2024-12-23 08:00:00 324

原创 《More Effective C++》 笔记

侯捷《More Effective C++》 笔记

2024-12-22 16:45:11 622

原创 《Effective C++》 笔记

侯捷 Effective C++ 笔记

2024-10-16 21:32:26 693

原创 python 卸载、安装、virtualenv

本文汇总下python环境的安装与卸载。

2024-10-05 18:25:56 721

原创 C++ 左值、右值、左值引用、右值引用

本文介绍C++11的各种引用的概念,理解清楚各种引用的概念,非常有助于理解基于c11引用的各种操作。

2024-06-03 08:00:00 834

原创 C++ 动态分配内存&智能指针

本文介绍C++中的内存动态分配、和更好的用于对象内存管理的智能指针。

2024-06-03 08:00:00 1185

原创 C++ 类与构造函数 三五法则

定义了拷贝操作的类类通常拥有一个资源,而拷贝成员必须拷贝此资源。但是拷贝一个资源会导致一些额外开销。在这种拷贝并非必要的情况下,定义了移动构造函数和移动赋值运算符的类就可以避免此问题。

2024-06-02 09:08:44 1243 1

原创 iOS object-c 常用API汇总&XCode使用

本文为入门iOS开发,object-c语法汇总。用于日常查阅。

2024-06-02 08:50:38 605

原创 MediaCodec源码分析 ACodec状态机详解

UninitializedState:未初始化状态。在业务层调用完成后切换到LoadedState。LoadedState:表示解码器已经加载完了;调用,和后,在LoadedState::onStart中调用让omx进入可Idel状态,后切换到LoadedToIdleState状态。LoadedToIdleState:初始化Buffer,解码器可用了;在接收到OMX_StateIdle返回后,并发送让omx切换到执行态,后切换到IdleToExecutingState状态。

2024-03-17 10:55:06 311

原创 MediaCodec源码分析 状态简单介绍

本文分析MediaCodec.h层的状态机,下篇介绍ACodec状态机,基于7.0代码。During its life a codec conceptually exists in one of three states: Stopped, Executing or Released.Stopped 状态具有三个子状态:Uninitialized、Configured 和 Error。有三种方式可以使 MediaCodec 进入 Uninitialized 子状态:使用工厂方法创建 MediaCodec

2024-03-17 10:43:17 183

原创 MediaCodec源码分析 Codec消息轮转

本文梳理MediaCodec的消息轮转流程,基于7.0代码。MediaCodec底层实现为JMediaCodec、MediaCodec.cpp、ACodec,他们之间是通过media包下的ALooper、AHandler、AMeesage这一套机制进行线程间通信的。本文就是分析这里的流程,先分析ALooper这一套,然后再分析MediaCodec.java是怎么调用操作下去的,ACodec又是如何跟MediaCodec.cpp通信的。

2024-03-13 11:38:59 371 2

原创 Android Native Hook 深入理解PLT hook

本文介绍NativeHook技术里的PLT hook,参考开源的xhook和bhook进行理解,本文不涉及该hook技术源码的分析,只分析大体原理,用于在进行修复稳定性问题时候寻找hook点使用。

2023-12-22 20:28:28 1616

原创 Android源码分析 理解Refbase

最近解决稳定性问题,遇到sp问题,本文就简单梳理RefBase和sp、wp下。

2023-12-13 15:02:06 711

原创 Android7.x SurfaceView源码分析

更改layoutParams、surfaceView.setVisibility、滑动等基本任何一个对view的操作都会引起updateWindow,所以我们在对SurfaceView操作的时候要加倍小心,避免引起多次updateWindow,从回调上看,就是避免多次触发sufaceChange。通过调整surfaceViewContainer大小、surfaceHolder.setFixedSize,这三种方式均能触发surfaceChange。

2023-09-24 21:18:17 642

原创 MediaCodec源码分析 configure流程

本文梳理MediaCodec configure流程,基于7.0代码,这里只分析AVC和HEVC的视频硬解,流程图如下。

2023-09-12 08:00:00 469

原创 MediaCodec源码分析 createByCodecName流程

本文梳理MediaCodec初始化流程,即create流程,基于7.0代码。流程图如下,创建流程还是比较清晰简单的。

2023-09-07 08:00:00 400

原创 arm体系结构:汇编指令

ARM微处理器的指令集是加载/存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。

2023-08-26 16:11:51 629

原创 arm体系结构:寄存器

本文主要介绍ARM RISC 32位体系结构下的相关知识,主要理解寄存器和相关指令,要读懂汇编啊。

2023-08-24 20:50:49 556

原创 Linux pthread_create源码分析

本文介绍pthread_create函数的使用和源码分析。

2023-06-03 12:53:58 1378

原创 Android 设置线程优先级源码分析

Android中设置线程优先级有thread.setPriority()方式和Process. setThreadPriority()两个方法。使用Process. setThreadPriority()进行更精准的设置,thread.setPriority可能会将线程优先级设置的比background还低,导致线程运行获取不到足够的时间片,出现不可知问题。本篇文章对这两种设置线程优先级的API的进行源码分析。

2023-05-27 17:26:26 610

原创 Android 创建线程源码分析 JavaThread&NativeThread

本文分析在Android中创建线程时候的源码分析,即JavaThread和NativeThread。

2023-05-20 17:59:32 842

原创 Android 性能优化 命令行查看CPU使用率

本文介绍cpu使用率概念,和使用ps命令、top命令和dumpsys cpuinfo命令来查看cpu使用率,帮助我们了解应用程序在运行过程中的整体状态和各个线程状态。

2023-05-06 23:28:21 4514 1

原创 C语言 非本地跳转 实现native层TryCatch

C语言的本地跳转是指goto、break、continue等语句,但是这个语句最大局限就是只能实现函数内部的跳转。C 语言提供了一种用户级异常控制流形式,称为非本地跳转(non local jump),它将控制直接从一个函数转移到另一个当前正在执行的函数,而不需要经过正常的调用—返回序列。

2023-04-19 23:05:20 556

原创 Android ART&Dalvik虚拟机 追踪对象分配

本文介绍Dalvik虚拟机中的Allocation Tracker,用于追踪dalvik内存分配,能直观的看到分配了什么对象,和分配对象的堆栈。

2023-04-09 15:20:53 168

原创 Android ART虚拟机 GC流程分析

本文分析ART虚拟机的GC流程,主要函数从CollectGarbageInternal开始。当配置CMS为默认回收器时:- collector_type_为kCollectorTypeCMS。- foreground_collector_type_取值为kCollectorTypeCMS。它代表程序位于前台时使用的回收器类型。- background_collector_type_的取值为kCollectorTypeHomogeneousSpaceCompact。它代表程序位于后台时使用的回收器类型。

2023-04-05 14:01:14 799

原创 Android ART虚拟机 GC的各种类型

本文介绍ART虚拟机的GC类型,为下篇介绍ART的GC做准备。每个Space都有自己的gc回收策略,如下图所示:- kGcRetentionPolicyNeverCollect:不需要回收某个Space所包含的垃圾对象(因为该Space可能不存在垃圾对象)。- kGcRetentionPolicyAlwaysCollect:每次垃圾回收都需要处理某个Space空间。- kGcRetentionPolicyFullCollect:直到最后时刻才回收某个Space空间中的垃圾对象。

2023-04-04 23:23:13 663

原创 Android ART虚拟机 对象创建内存分配流程

本篇文章介绍我们在日常开发使用Java时new对象的时,ART在堆上的内存分配是如何分配的。内存又和gc相关,下篇文章会分析ART的gc流程。本文可以参考之前写的Dalivk虚拟机下的对象创建时内存分配流程一起看,会对ART虚拟机理解的更深刻些。

2023-04-03 23:38:55 652

原创 Android ART虚拟机 Space类体系

在ART虚拟机实现中,内存分配和释放的算法是封装在不同的Space中来完成的。而外部使用者只能借助Space及派生类的接口来完成内存的分配与释放。通过阅读这些Space的实现,可以看出ART虚拟机的一个重要的特点就是大量使用映射内存,相较于Dalvik虚拟机来说在内存分配上管理的更细致。

2023-04-02 18:41:38 1428

原创 Android ART虚拟机 堆Heap类构造函数

本文主要介绍Heap的构造函数,从构造函数里大量使用各种Space,可以看出ART虚拟机的一个重要的特点就是大量使用映射内存。主要代码在art/runtime/gc/heap.cc里。

2023-04-01 23:04:10 1023

原创 Android ART虚拟机 关键类

本文介绍ART虚拟机中的关键类,方便之后对ART更方便的理解。此处几个类和dalvik一脉相承,也可以更好的理解dalvik里面的GC模块。

2023-03-31 22:56:40 586

原创 Andriod ART虚拟机 启动和初始化

之前整理了一系列Dalvik虚拟机的关于堆内存和GC的文章,轮到对ART内存进行分析优化了,继续整理输出一波,本篇为ART虚拟机系列的第一篇,介绍ART虚拟机的启动和初始化。本ART系列基于7.0代码分析。

2023-03-29 20:30:07 725

原创 C++ 进阶知识整理

本文整理c++进阶语法和知识点。

2023-03-27 18:46:00 166

原创 Android Dalvik虚拟机 堆内存管理 增长&释放

本篇继续介绍安卓dalvik虚拟机系列,介绍Dalvik虚拟机的堆内存管理,即堆是如何增长和释放的。

2023-03-04 14:46:36 979

原创 Android Dalvik虚拟机 GC流程分析

本篇继续介绍安卓dalvik虚拟机,介绍Dalvik虚拟技的GC流程。

2023-03-01 21:26:02 1074

原创 设计模式 状态机

本文梳理状态机概念,在实操中状态机和类似,只是被封装起来,可以很方便的实现状态初始化和状态转换。

2023-02-19 22:02:13 1478

深入理解Android内核设计思想第一版高清完整带目录

第一版,带目录,高清完整 《深入理解Android内核设计思想》适用于Android 4.3以上的版本。全书从操作系统的基础知识入手,全面剖析进程/线程、内存管理、Binder机制、GUI显示系统、多媒体管理、输入系统等核心技术在Android中的实现原理。书中讲述的知识点大部分来源于工程项目研发,因而具有较强的实用性,希望可以让读者“知其然,更知其所以然”。全书分为编译篇、系统原理篇、应用原理篇、系统工具篇共4篇22章,基本涵盖了参与Android开发所需具备的知识,并通过大量图片与实例来引导读者学习,以求尽量在源代码分析外为读者提供更易于理解的思维方式。 《深入理解Android内核设计思想》既适合Android系统工程师,也适合于应用开发工程师来阅读提升Android开发能力。读者可以在《深入理解Android内核设计思想》潜移默化的学习过程中更深刻地理解Android系统,并将所学知识自然地应用到实际开发难题的解决中。

2018-05-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除