自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android学习笔记

博客大都是自己整理的精华笔记,包含Java和Android两大部分

  • 博客(26)
  • 资源 (10)
  • 收藏
  • 关注

原创 【Android进阶笔记】系统启动流程(init进程、Zygote进程、SystemServer)

文章目录1. 系统启动流程概括2. init 进程启动2.1. init 进程的入口函数2.2. 解析 init.rc 文件3. Zygote 进程启动3.1. 启动过程3.1.1. app_main.cpp3.1.2. AndroidRuntime.cpp3.1.3. ZygoteInit.java3.1.4. ZygoteServer.java3.2. 启动总结4. SystemServer 的处理4.1. 启动 SystemServer 进程4.1.1. 启动 Binder线程池4.1.2. main

2021-05-14 15:08:25 812

原创 【Android进阶笔记】虚拟机(Dalvik、ART)

文章目录Dalvik 虚拟机与 JVM 的区别架构区别字节码区别其他区别DVM 运行时堆COW 策略运行时堆垃圾回收GC 日志GC 原因其他字段日志示例ART 虚拟机与 DVM 的区别运行机制区别CPU 区别解释器、JIT 和 AOT简介三者的配合method 的编译运行垃圾回收Android 8 之前Android 8 开始Android 10 开始GC 日志GC 原因垃圾收集器名称其他字段Dalvik 虚拟机Dalvik 虚拟机(Dalvik Virtual Machine),简称 DVM。它并

2021-05-13 11:25:10 454

原创 【Android进阶笔记】热修复(代码、资源、动态链接库)

文章目录1. 热修复1.1. 作用1.2. 主流热修复框架1.2.1. 主流框架1.2.2. 框架对比2. 代码修复2.1. 类加载方案2.1.1. Dex 分包机制2.1.2. 类加载2.1.3. 修复方案2.2. 底层替换方案2.2.1. ArtMethod2.2.2. 修复方案2.3. Instant Run 方案2.3.1. Instant Run 原理2.3.2. 修复方案3. 资源修复4. 动态链接库修复4.1. so 的加载4.2. 注册 Native 方法4.2.1. 静态注册Native方

2021-05-10 15:43:34 437

原创 【Android进阶笔记】NDK-C++面向对象(封装、继承、多态、RVO、NRVO)

文章目录1. 类与对象1.1. C++ 类定义1.1.1. 类访问修饰符1.1.2. 构造函数 & 析构函数1.1.3. 静态成员1.2. C++ 函数1.2.1. 拷贝构造函数1.2.2. 友元函数1.2.3. 内联函数2. 函数重载和运算符重载2.1. 函数重载2.2. 运算符重载2.2.1. 可重载运算符2.2.2. 不可重载运算符3. 封装4. 继承4.1. 继承类型4.2. 多继承4.3. 基类 & 派生类5. 多态5.1. 静态多态5.2. 动态多态(虚函数)5.2.1. 虚函数

2021-03-09 15:02:59 352

原创 【Android进阶笔记】NDK-C/C++基础核心(数组、指针、函数、预处理器、结构体)

文章目录1. 数据类型1.1. 基本类型1.2. bool 类型1.3. void 类型2. 数组2.1. 声明数组2.2. 初始化数组2.3. 动态数组2.3.1. malloc2.3.2. calloc2.3.3. realloc2.3.4. free3. 指针3.1. 指针与数组3.1.1. 数组指针3.1.2. 指针数组3.2. 指针与常量3.2.1. 常量指针3.2.2. 指针常量3.2.3. 常指针常量3.3. 多级指针4. 函数4.1. 函数声明4.2. 函数定义4.3. 传递参数的方式4.3

2021-03-09 10:31:29 420

原创 【Java进阶笔记】Java泛型原理(类型擦除)

文章目录1. 泛型的概念2. 泛型的使用2.1. 泛型类/接口2.2. 泛型方法2.3. 通配符2.4. 上下边界限定3. 泛型的原理3.1. 类型擦除3.1.1. 未指定上界的泛型类型会以`Object`类型替换3.1.2. 已指定上界的泛型类型会以上界类型替换3.2. 绕过编译时泛型类型检查1. 泛型的概念泛型,即“参数化类型”。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(类型形参),然后在使用/调用时传入具体的类型(类型实参)。JDK1.5 之后引

2021-03-09 10:19:49 214

原创 【Android进阶笔记】进程保活

文章目录1. 进程的优先级1.1. 前台进程1.2. 可视进程1.3. 服务进程1.4. 后台进程1.5. 空进程2. LowmemoryKiller2.1. 原理2.2. 划分标准3. 进程保活3.1. Activity提权3.2. Service提权3.3. 广播拉活3.4. 全家桶拉活3.5. 推送拉活3.6. Sticky Service拉活3.7. JobScheduler 拉活3.8. 系统账户拉活3.9. 双进程守护3.10. 自启动白名单1. 进程的优先级https://devel

2021-03-08 14:32:33 407

原创 【Android进阶笔记】图片优化(理论大小和实际大小的计算方式)

文章目录1. 图片压缩格式1.1. 常见的图片格式1.2. WebP格式2. Android内存中的图片2.1. 位图配置Bitmap.Config2.2. 计算占用内存大小2.2.1. 理论值2.2.2. 实际值3. 图片压缩3.1. 质量压缩3.2. 采样率压缩3.3. 尺寸压缩3.4. 图片压缩总结3.5. 实际效果对比1. 图片压缩格式1.1. 常见的图片格式格式质量透明压缩方式png较高支持图片压缩算法。把相似的颜色压缩在一起jpg/jpeg良好不

2021-03-08 14:31:34 585

原创 【Android进阶笔记】内存优化(内存泄漏优化)

文章目录1. 内存抖动1.1. 现象1.2. 避免2. 内存泄漏2.1. 内存泄漏的检测与定位2.2. 常见的内存泄漏2.2.1. 静态变量内存泄漏2.2.2. 非静态内部类、匿名内部类内存泄漏2.2.3. 单例模式内存泄漏2.2.4. 系统服务内存泄漏2.3. 防止内存泄漏2.4. LeakCanary 工具1. 内存抖动短时间内创建大量对象,挤占 Eden 区,导致频繁 MinorGC,内存就会发生抖动。1.1. 现象​ MemoryProfile内存图为锯齿状,并伴随大量的白色垃圾

2021-03-08 14:30:36 786

原创 【Android进阶笔记】渲染优化

文章目录1. CPU与GPU协同工作原理1.1. CPU和GPU架构1.1.1. 画面显示过程1.1.2. 没有Vsync1.1.3. 有Vsync1.1.4. 掉帧查看2. CPU优化2.1. 视图层次结构优化2.2. \优化2.3. \优化2.4. \优化3. GPU过度绘制3.1. background优化4. GPU呈现模式分析1. CPU与GPU协同工作原理1.1. CPU和GPU架构CPU:解析布局,生成View对象及位置属性,转化为多维矢量图形。​ GPU:将矢量图

2021-03-08 14:28:34 278

原创 【Android进阶笔记】APP启动优化

文章目录1. 视觉优化1.1. 基本概念1.2. 默认情况1.3. 透明主题优化1.4. 图片主题2. 代码优化2.1. 冷启动耗时统计2.1.1. 方法一:adb2.1.2. 方法二:Logcat2.2. Application优化2.3. 闪屏页优化1. 视觉优化1.1. 基本概念冷启动时,系统有三个任务:加载并启动应用程序启动后立即显示应用程序空白启动窗口创建应用程序进程应用程序进程创建后,就会负责下一阶段:创建APP对象启动主线程创建应用入口的Activity对象填充

2021-03-08 14:27:07 161

原创 【Android进阶笔记】事件分发机制

文章目录1. DOWN 事件的流向2. MOVE 和 UP 事件的流向2.1. dispatchTouchEvent 返回 true2.2. onTouchEvent 返回 true2.3. 总结3. setOnTouchListener1. DOWN 事件的流向【关键点】dispatchTouchEvent、onTouchEvent 返回 true:事件就停止传递了(没有谁能再收到这个事件)。dispatchTouchEvent 返回 false:事件停止往子 View 传递和分发同时开

2021-03-08 14:20:54 142

原创 【Android进阶笔记】消息机制(Handler、Looper、MessageQueue、Message、IdleHandler)

文章目录1. Android 消息机制1.1. 消息机制的模型1.2. 消息机制的作用2. MessageQueue2.1. MessageQueue的插入2.2. MessageQueue的读取2.3. MessageQueue的退出3. Lopper3.1. Looper的创建和退出3.1.1. 创建 Looper3.1.2. Looper 的构造方法3.1.3. 退出 Looper3.2. Looper的循环4. Handler4.1. 发送消息4.2. 插队和撤回4.3. 处理消息5. 消息机制方法

2021-03-08 14:15:30 320

原创 【Android进阶笔记】Binder机制

文章目录1. 传统的Linux进程间通信1.1. 基本原理1.2. 管道和消息队列的原理2. Binder原理2.1. Binder 是什么2.2. 动态内核可加载模块(LKM)2.3. 内存映射(mmap)2.4. Binder 数据流转原理2.5. Binder 和传统 IPC 对比2.5.1. 传统 Linux 跨进程2.5.2. Binder 的优势3. Binder 通信模型3.1. Client / Server / ServiceManager / Binder Dirver3.2. Bind

2021-03-08 14:10:33 290 3

原创 【Java进阶笔记】ThreadLocal

文章目录1. ThreadLocal1.1. 作用1.2. 使用场景1.3. 示例代码2. ThreadLocal 原理解析2.1. 内部设计2.1.1. 早期方案2.1.2. JAVA 8 方案2.2. ThreadLocal 核心方法源码2.2.1. set 方法2.2.2. get 方法2.2.3. remove方法3. ThreadLocalMap 源码分析3.1. ThreadLocalMap 类的基本结构3.1.1. 成员变量3.1.2. 存储元素3.2. ThreadLocal 内存泄漏3.2

2021-03-08 13:57:49 375 2

原创 【Java进阶笔记】线程池(类比银行业务来理解)

文章目录1. Java 线程池1.1. 线程池的特点1.2. Java 中的线程池类1.3. 线程池的最佳容量2. ThreadPoolExecutor2.1. 线程池状态2.2. 基本原理2.2.1. 构造方法2.2.2. 组成部分2.2.3. 工作流程2.3. 拒绝策略2.3.1. JDK 的4种策略2.3.2. 其他策略2.4. Executors 工厂2.4.1. newFixedThreadPool()2.4.2. newCachedThreadPool()2.4.3. newSingleThre

2021-03-08 13:57:27 336

原创 【Java进阶笔记】synchronized原理(悲观锁和乐观锁)

文章目录1. 悲观锁(阻塞)1.1. 临界区与竞态条件1.1.1. 临界区1.1.2. 竞态条件1.1.3. 原子性1.2. synchronized 概念1.2.1. synchronized 修饰方法1.2.2. 变量的线程安全分析1.2.3. 常见的线程安全类1.3. Monitor(管程)1.3.1. Java 对象头1.3.2. Monitor1.4. synchronized 原理1.4.1. 轻量级锁1.4.2. 重量级锁1.4.3. 偏向锁1.4.4. 自旋优化1.4.5. 同步消除1.5.

2021-03-06 23:11:17 440

原创 【Java进阶笔记】Java内存模型(内存一致性、volatile原理)

文章目录1. 硬件内存模型1.1. 数据加载1.1.1. 处理流程1.1.2. 缓存行1.2. 执行流程2. Java 内存模型2.1. 内存划分2.1.1. 内存模型2.1.2. 模型类比2.2. 主内存与工作内存之间的交互操作2.2.1. 个交互协议2.2.2. 个基本规则2.3. 一致性2.3.1. 原子性2.3.2. 可见性2.3.3. 有序性2.4. 有序性原则2.4.1. happens-Before 原则2.4.2. as-if-serial 语义3. volatile 关键字3.1. 总线嗅

2021-03-06 23:10:14 412

原创 【Java进阶笔记】java并发(进程、线程、协程)

文章目录1. 基本概念1.1. 进程与线程1.1.1. 二者概念1.1.2. 二者区别1.2. 并行与并发2. 线程2.1. 线程运行的原理2.1.1. 栈与栈帧2.1.2. 线程上下文切换2.2. 创建线程2.2.1. 直接创建 Thread2.2.2. 结合 Runnable2.2.3. 结合 FutureTask2.3. 常见方法2.3.1. start() 与 run()2.3.2. sleep() 与 yield()2.3.3. join()2.3.4. interrupt()2.4. 终止线程-

2021-03-06 23:07:47 213

原创 【Java进阶笔记】运行期优化(即时编译、反射优化)

文章目录1. 即时编译1.1. 分层编译1.2. 方法内联2. 反射优化1. 即时编译1.1. 分层编译JVM 的执行状态分为5个层次:0层,解释执行(Interpreter)。1层,使用 C1 即时编译器编译执行(不带profiling)。2层,使佣 C1 即时编译器编译执行(带基本的profiling)。3层,使用 C1 即时编译器编译执行(带完全的profiling)。4层,使用 C2 即时编译器编译执行。profiling 是指在运行过程中收集一些程序执行状态的数据, 例

2021-03-06 23:02:50 282

原创 【Java进阶笔记】字节码与类加载(带你读懂字节码)

文章目录1. 类文件结构1.1. 魔数1.2. 文件版本1.3. 常量池1.4. 访问标识与继承信息1.5. 字段信息1.6. 方法信息1.7. 属性信息2. 字节码指令2.1. 入门2.2. Javap 工具2.3. 方法执行流程2.4. 条件判断指令2.5. 循环控制指令2.6. 为什么 `x=x++` 无效2.7. 构造方法2.7.1. \()V 方法2.7.2. \()V 方法2.8. 方法调用2.9. 异常处理2.9.1. try-catch-finally2.9.2. finally 出现 re

2021-03-06 23:00:07 559

原创 【Java进阶笔记】编译期处理(java语法糖)

文章目录1. 语法糖1.1. 默认构造方法1.2. 自动拆装箱1.3. 泛型取值1.4. 可变参数1.5. foreach 循环1.6. switch 字符串1.7. switch 枚举1.8. 枚举1.9. try-with-resources1.10. 方法重写时的桥接方法1.11. 匿名内部类1. 语法糖语法糖,指java编译器把 .java 源码文件编译为 .class 字节码文件的过程中,自动生成和转换的一些代码,主要是为了减轻程序员的负担,算是java编译器给我们的一个额外福利(给糖吃)

2021-03-06 22:57:34 605

原创 【Java进阶笔记】字符串与StringTable(字符串常量池)

文章目录1. 字符串1.1. 字符串的创建(JDK8)1.1.1. char[]数组创建1.1.2. byte[]数组创建1.1.3. int[]数组创建1.1.4. 从已有字符串创建1.1.5. 字面量创建1.1.6. 拼接创建1.2. JDK 9 的变化1.2.1. 内存结构的变化1.2.2. 拼接方式的变化1.2.3. 默认的拼接策略2. StringTable2.1. 家养与野生2.2. StringTable 的存储位置2.3. intern() 方法2.3.1. StringTable 中已存在

2021-03-06 22:53:14 590

原创 【Java进阶笔记】4种常量池

文章目录1. Class文件常量池1.1. 字面量1.2. 符号引用2. 运行时常量池3. 字符串常量池3.1. 创建字符串对象的方式3.1.1. 字面量创建3.1.2. 构造方法创建3.2. intern 方法4. 包装类对象常量池1. Class文件常量池class文件是一组二进制字节流,class文件常量池在编译阶段就已经确定。class文件常量池主要存放两大常量:字面量和符号引用。class JavaBean{ private int value = 1; public S

2021-03-06 22:42:08 284 1

原创 【Java进阶笔记】垃圾回收器GC(finalize对象复活、强软弱虚引用)

文章目录1. 垃圾回收器 GC1.1. 确定回收对象的方法1.1.1. 引用计数法1.1.2. 可达性分析法1.2. 可作为GC Root的对象1.3. 回收时机1.3.1. finalize方法1.3.2. 对象复活1.4. 垃圾回收方法1.4.1. 标记清除法1.4.2. 复制法1.4.3. 标记整理法1.4.4. 分代收集法1.5. 垃圾收集器1.5.1. Serial 收集器1.5.2. ParNew 收集器1.5.3. Parallel Scavenge 收集器1.5.4. Serial Old

2021-03-06 22:37:01 546

原创 【Java进阶笔记】JVM内存模型(堆、栈、方法区、逃逸分析)

文章目录1. JVM 内存模型1.1. 程序计数器1.2. 虚拟机栈1.2.1. 栈帧1.2.2. 栈内存溢出1.3. 本地方法栈1.4. 堆1.5. 方法区1.5.1. 组成结构1.5.2. 方法区内存溢出2. 逃逸分析2.1. 标量替换2.2. 栈上分配2.3. 同步消除1. JVM 内存模型.java文件会被编译器编译为.class文件,然后由JVM中的类加载器加载各个类的字节码文件,加载完毕后,交由JVM执行。JVM会用一段空间来存储程序执行期间需要的数据和相关信息,这段空间一般称为Runt

2021-03-06 22:19:06 465

STM32F10XXX使用手册.pdf

STM32F10XXX使用手册,简单明了,通俗易懂。

2014-01-06

J-LIN仿真器操作步骤.pdf

J-LIN仿真器操作步骤简单易学,通俗易懂,是很好的学习教程。

2014-01-06

VCMFC编程实例

MFC编程实例,图形化界面,好看的实例教程

2013-09-01

HTML教程(完整版)

HTML教程,最基础的网页制作教程,非常适合无基础者学习

2013-09-01

Android应用开发入门教程(经典版)

Android应用开发入门教程适合初学者学习。

2013-09-01

Android(经典实例

Android经典实例,里面是关于安卓开发的一系列实例

2013-09-01

eXeScope6.5反编译软件

反编译软件可以进行软件的修改!

2013-04-07

开发语言判断器

开发语言判断器,可以判断程序是用何种语言开发的。

2013-04-07

C++程序设计教程+第2版-王珊珊 课件

《C++程序设计教程(第2版)》 教材配套课件

2013-04-07

C++程序设计(谭浩强).pdf

C++程序设计(谭浩强).pdf 高清教材

2013-04-07

空空如也

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

TA关注的人

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