自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 OpenGL 学习记录

OpenGL 基本知识梳理

2022-10-12 17:58:02 298

原创 git 自己常用命令

git initgit clonegit statusgit diffgit add ***git commit -m "****"git commit --amendgit push origna HEADS:refs/for/remote_branchgit format-patch -M commit_hashgit cherry-pick patch_file_namegit stashgit checkout -b local_branch

2022-05-24 16:21:06 180

原创 android Tombstone 流程

1 ANR会触发dump trace信息watchdog里面会监控system server主要service的状态,如果发生anr就会监控到,然后调用ActivityManagerService.dumpStackTrace API,。这边会有dump的进程信息,watchdog中会有指定dump的native 进程,ams 会有check的extra 进程。2 针对每个进程进行for循环dump trace信息。ams>android_os_Debug>debuggerd_c

2022-05-20 11:58:35 5327

原创 Android SurfaceFlinger中Fence机制--个人理解整理

1 Fence 是什么?Fence中文是栅栏/围墙的意思,理解成分界/界限的东西。android中的一个资源锁机制。(i.e. a kind of memory barrier)下面链接是english 介绍Bringing Android explicit fencing to the mainline2 Fence是干什么的?android 从4.4开始提供提供了fence机制,协调下面各模块的运作。各模块都是操作的buffer信息,所有对于buffer加一个资源锁,就可以实现buf

2022-05-19 15:46:11 8779 1

原创 ANR总结

1 ANR即Application Not Responding(应用程序无响应)2 只有java才会产生,因为是JVM收到异常信号后触发的该逻辑。所以native 层或者apk的jni以下不会产生anr。3 kill -3 pid_number产生应用的trace文件,会打印该进程的各线程堆栈4 ANR一般是主线程...

2022-01-13 09:57:30 1241

原创 fd 的泄漏

1 android 系统是基于linux系统上面, linux是一切皆文件的设计。可以代表文件、socket、pipe、memory、io等2 fd 是file descriptor,是一个非负整数,是一个索引值,一个文件句柄文件描述符0与进程的标准输入关联文件描述符1与进程的标准输出关联文件描述符2与进程的标准错误关联3 linux系统对每个进程都有fd的数量限制, android 同样也有,android 的限制是1024.4 当fd满了后,创建fd就会失败,并返回有些信息如:

2022-01-12 18:13:46 3087

原创 android hidl 总结

google HIDL的定义1 android 提供了一套system img与vendor image 通信的机制,为hal定义了一套接口语言,类似aidl2 HIDL其实也是一套binder 通信机制,只是该通信机制的driver使用的是hw binder。android 提供了对应的hw servicemanager,IPCThreadState和ProcessState的等binder code,与正常binder功能差不多。3 定义的HIDL 类似aidl,是一个文件,该文件中定义

2022-01-10 11:30:05 2358 2

原创 Binder 总结

1 android 进程间通信的主要机制: binder2 binder 实现一次memcpy:3 binder 的memory 封装出来了统一类:Parcel4 IINTERFACE是接口封装,定义Proxy端和server端的接口形式5 BpInterFace 其实是BpBinder的代理类,内部的mRemote指的就是BpBinder6 asInterFace的接口在android 内部已经定义了一个宏,内部实现是new BpInterFace(BpBinder)7 BpBin

2022-01-07 10:31:01 873

原创 android apk的sepolicy domain是如何指定的呢

1 ps -AZ可以看到对应进程的sepolicy domain信息如下面的 platform_app gmscore_app priv_app mediashell_appu:r:platform_app:s0:c512,c768 u0_a66 954 383 1109868 51060 do_epoll_wait 0 S com.android.systemuiu:r:gmscore_app:s0:c512,c768 u0_a41

2021-12-29 11:15:07 2221 5

原创 android message handler

1 Android 提供了一套异步处理消息机制;有提供两套的实现方案:java side和cpp sidejava side:Handler / Message/Looper/MessageQueuecode 路径:frameworks/base/core/java/android/os/Looper.javaframeworks/base/core/java/android/os/Message.javaframeworks/base/core/java/android/o..

2021-12-22 18:10:20 1782

原创 Android 智能指针

cpp 开发中,指针是比较难处理,如果是一个大系统,管理不善很可能出现内存泄漏(new之后没释放)/野指针(已释放,但还有其他再使用)等问题发生。java 使用引用的方式,不开放指针的操作,所以java side基本没这个问题。有效解决上述问题的方式,andorid 设计一套方法(智能指针)自动管理指针的释放和引用情况,同时内部借助引用计数的方式解决在还有人使用时不释放指针。...

2021-12-17 16:55:55 2213

原创 为什么google apk 的adj为100

1 google gms的apk adj是100console:/ # ps -A | grep gmsu0_a40 1276 382 1251444 58220 do_epoll_wait 0 S com.google.android.gms.persistentu0_a40 1438 382 1366508 67448 do_epoll_wait 0 S com.google.android.gmsu0_a40 ...

2021-12-16 16:30:38 1837

原创 android 修改adj的方法

android提供了low memory killer的机制在内存不足时回收内存。lmk 使用adj的方式判断该回收哪些进程或资源android 修改adj的方法1 native side-- 直接写文档/proc/**/oom_score_adj结论:所有的native bin档都是由init进程管理,并设置adj,默认是-1000,可以在**.rc中配置A init 进程system/core/init/init.cppint SecondStageMai...

2021-12-16 10:45:51 3573

原创 low memory killer

1 android 作为移动设备的操作系统,可能出现管理的内部不足的情况,为了尽量保证程序继续运行,需要有机制处理相关的内存问题。2 Android 操作系统是基于linux的,linux 系统具有缓存内存的功能,即为了加快下次的速度,打开文件后放到内存中,再关闭后不会自动释放掉该内存,所以是cache memory。会出现linux设备内存有多大,linux系统就会尽量多占用内存,减少下次启动的时间。再内存不够用的时候才会去释放。Android 设备也学习了linux的这个机制,但做了部.

2021-12-15 14:41:45 2277

原创 android 基础知识点

1 shared memory2 low memory killer3 art: android runtime 虚拟机,包括classloader4 智能指针5 同步6 JNI7 进程间通信--binder8 消息机制--handleloop9 apk 进程的创建

2021-12-14 16:58:11 685

原创 missing and no known rule to make it

FAILED: ninja: '/AndroidManifest.xml', needed by 'out/target/common/obj/APPS/PressureTest_intermediates/manifest/AndroidManifest.xml', missing and no known rule to make it最后查来查去,发现是 Android.mk 中多了个空格,导致local 目录错误...

2021-09-26 15:02:25 4223 1

原创 cpp 知识点

1. const:不可变const char *p; char const *p; 两者相同,都是指针内容不可修改char * const p; 指针不可修改。const char* const p; 指针和指针内容都不可修改const int a; c++ 中类似#define, 值替换,#define是编译时生效,const是运行时生效; const会有类型检测。2 强制类型转换reinterpret_cast: 修饰指针,转换成long,再有long转成指针...

2021-09-02 10:31:43 995 1

原创 23种设计模式

一、创建类模式:对象的创建和管理职责 - 在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。工厂方法模式 - 定义一个用于创建产品的接口,由子类决定生产什么产品。抽象工厂模式 - 是工厂方法模式的升级版本,提供一个创建产品族(如抢和子弹/ 电脑和键盘等)的接口,其每个子类可以生产一系列相关的产品。工厂方法是由子类自行决定实例化那个类,而抽象工厂是自己决定实例化哪个类。至于是组合还是继承还是实现接口都无所谓。...

2021-08-27 19:08:36 105

原创 四种排序的实现:冒泡、插入、归并、快速

冒泡排序:O{n2} 从后往前,两两比较换位选择排序:O(n2) 选择最小的,与最前面的换位插入排序:O(n2) 从前往后,两两比较换位堆排序: O(nlogn) 使用树结构,树顶点最大,取出后重新排列剩余树。归并排序:O(nlogn) 分两组,在组内继续细分两组,直到一个为一组,然后比较相邻两组,比较换位快速排序:O(nlogn) 找基准值,分左右两侧,左侧比基准小,右侧比基准大,在两侧内继续执行快速排序。冒泡排序:#include <iostream>.

2021-08-20 15:53:35 160

原创 openssl 关于CA的使用

第一步:创建目录结构这些结构与config文件有关系A创建目录结构:certs、client、crl、newcerts、privateB创建文件index.txt serialC echo "01" > /etc/pki/CA/serial第二步:配置文件配置config文件:openssl.cnf/etc/ssl/openssl.cnf有系统的default文件;但不能直接运行,需要修改成自己的路径和key[ CA_default ]dir..

2021-08-03 17:01:38 968

原创 GraphicBufferProducer的引用关系

最近碰到一个问题:压测SurfaceFlinger 会crash掉,提示383 783 F SurfaceFlinger: Suspected IGBP leak: 4097 IGBPs (4096 max), 49 Layers本文侧重点是介绍IGBP的创建与销毁。一. GraphicBufferProducer 的server端该log是SurfaceFlinger.cpp中打印的,其代码段如下status_t SurfaceFlinger::addClientLayer..

2021-07-30 17:38:15 4146 14

原创 android shared memory知识点

android memory share 涉及模块:driver/ libcutils/ cpp端封装/java 端封装1 driver基于tmpfs实现的ashmem驱动程序,负责内存的分配和管理。对应的misc device节点是/dev/ashmem; 提供的接口主要有:init:设备初始化open:打开设备release:设备对应的内存释放:mmap:内存映射ioctl(pin/unpin):内存锁定和解锁driver 作用:使用tmpfs系统,读写速度快,将部分memory

2021-07-23 18:42:46 1372 2

原创 2020-11-13

《深入理解java 虚拟机:JVM高级特性及最佳实践》 知识记录:2.1 JVM在执行java程序的过程中管理的内存分为了以下几个运行时数据区域:方法去(method area)堆(heap) --- > 由所有线程共享的数据区 虚拟机栈(VM stack) 本地方法栈(native method stack) 程序计数器(program counter register) --> 线程隔离的数据区程序计数器: 是一块比较小的内存空间,是当前线程执行的字节码的行号指...

2020-11-13 17:41:36 110

原创 2020 书籍记录

2020 书籍记录记录2020,希望能看到50本,一周一本, 最近比较懒。半年已过还差好多。加油吧。doing:论人类不平等的起源和基础 – 卢梭 – 浙江文艺出版社todo:android投资文学done:游戏改变世界 — 简·麦戈尼格尔—浙江人民出版社沉默的大多数 – 王小波 — 北京十月文艺出版社一只特立独行的猪 – 王小波 — 北京十月文艺出版社唐诗杂论 – 闻一多 – 万卷出版公司设计模式之禅 – 秦小波 – 机械工业出版社瓦尔登湖 – 亨利.戴维.梭罗 – 人民

2020-06-23 17:13:58 136

转载 如何高效的使用百度谷歌去搜索

1. “搜索内容”: 使用“”限定搜索内容,仅搜索包含此搜索内容的网址,不会把其他相关内容也会列出来。2.t:搜索内容,仅将搜索内容限定网站的title3.intitle:搜索内容,仅将搜索内容限定在网页的title里面,不去搜索网址的content内容。4. 搜索内容 intitle:搜索title, 在intitle的结果中在将含有搜索内容的列出来。5.搜索内容 site:

2016-04-09 09:47:02 285

空空如也

空空如也

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

TA关注的人

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