Wxy's Blog
  • 首页
  • 归档
  • 标签
  • 关于
  • 友链
不因虚度年华而悔恨,不因碌碌无为而羞愧

Android中的Hook-InlineHook

Inline Hook 本文定位:面向 Android 开发者的 Inline Hook 原理入门,重点是理解“为什么要用、怎么工作、如何验证生效”。 在 Android中的Hook-PLTHook 里,PLT Hook 的切入点是“导入方模块的 GOT 表项”。这意味着它拦截的是调用路径,不是函数本体。 与 PLT Hook 的边界差异PLT Hook 生效的前提是:目标调用必须经过动态链接
2025-10-02
#Hook

ANR分析

ANR概述 ANR:Application Not Responding应用程序未响应,Android会要求一些事件需要在规定时间内处理完成,如果超过预定事件内未能得到有效响应或者响应时间过长,就会造成ANR。 ANR由消息处理机制保证,Android在系统层实现了发现ANR的机制,核心原理是消息调度和超时处理。 ANR本质是性能问题。实际上是对应用程序主线程的限制,要求主线程在限定时间内处
2019-01-28
#Android

Android中的GC分析-Dalvik和ART虚拟机

Dalvik虚拟机 Dalvik Virtual Machine,简称Dalvik VM或者 DVM。DVM是Google专门为Android平台开发的虚拟机,是Android的重要组成部分,支持dex格式的Java应用程序运行。 dex格式是专门为DVM设计的一种压缩格式,适合内存和处理器速度有限的系统。 从架构图中可知,DVM运行在Android的运行时库层。 DVM与JVM的区别基
2018-05-13
#Android

Android中的Hook-PLTHook

基本原理Linux在执行 动态链接的ELF时候,为了优化性能会使用一个 延迟绑定 的策略。 (延迟绑定:为了解决原本静态编译时要把各种系统API的具体实现代码都编译进ELF文件导致文件巨大臃肿的问题。) 当动态链接的ELF程序调用共享库的函数时,会去查找PLT表中的对应项目,PLT表在跳跃到GOT表中找到执行函数的实际地址,后续再调用的时候会直接去执行GOT表中对应的目标函数。(通过 _dl_r
2025-10-02
#Hook

Android性能优化-内存优化详解

内存的概念内存是计算机中最重要的部件之一,是硬盘与CPU之间沟通的桥梁,所有程序都是运行其上,会对程序的性能造成很大的影响。 Why 内存优化?减少Crash 减少因为内存问题引起的Crash,其中最典型的就是OOM 运行流畅 当内存紧张时,就会导致频繁触发GC。当触发GC时,所有线程都要停止,会导致所有运行被搁置,导致运行卡顿。 延长后台运行时间 Android会按照特定的机制进行进程清理,
2020-03-23
#Android

Android性能优化-网络优化详解

2020-10-09
#性能优化

Android音频技术攻略-上层业务交互

一、AudioFocus:功能与关键参数1.1 AudioFocus 的核心功能 发声仲裁:当多个 App 同时需要播放音频时,系统通过 AudioFocus 决定“谁可以发声”。 中断分级:区分长期中断、短期中断、可降音中断,不同类型触发不同动作(暂停/降音/恢复)。 恢复控制:焦点恢复后不等于必须自动播放,仍需结合用户意图与业务状态判定。 体验兜底:减少“界面显示播放中但无
2026-02-15
#音视频

数据结构--ConcurrentHashMap原理及解析

HashMap本身不是线程安全的,通常在多线程情况下可以去使用HashTable替代HashMap使用,该类中基本所有的操作方法都采用synchronized进行修饰,所以在高并发的情况下,每次只能有一个线程获取对象监视器锁,并发性能太低。 针对上述情况,就产生了ConcurrentHashMap这个类去解决上述问题,提高效率。 ConcurrentHashMap重要参
2019-01-16
#数据结构

数据结构--CopyOnWriteArrayList实现原理及简析

CopyOnWriteArrayList定义 ArrayList本身不是线程安全的,在读线程读取ArrayList的数据时,此时在去写入数据,就会触发fast-fail机制,抛出ConcurrentModificationException异常。也可以使用Vector去代替ArrayList使用,或者使用Collections.synchronizeList()包裹ArrayList。但他们都
2019-01-18
#数据结构

Java-synchronized原理及解析

synchronizedsynchronized场景一般用在以下场景 修饰实例方法(锁定当前对象实例)12345public class SynchronizedInstance{ public synchronized void test(){ //... }} 锁定的是访问该方法的实例对象,如果在多个线程中的不同对象访问该方法,则不可保证互
2018-12-18
#Java

Java - 反射

Java反射机制基础 反射机制定义反射(Reflection)是Java的特征之一,它允许运行中的Java程序获取自身的信息,并且可以操作类或对象的内部属性。对于任何一个类,能够知道这个类中的所有属性和方法;对于任何一个对象,都能够调用它的任意一个方法和属性。 反射机制功能通过反射,可以在运行时获取程序中的每一个类型的成员和成员信息。利用Java的反射机制可以动态的创建对象并调用其属性。反射可以
2018-12-14
#Java

Java - 泛型

泛型基本概念 Java泛型是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。 本质上是编译器为了提供更好的可读性而提供的一种方式,JVM中是不存在泛型的概念的。 泛型的出现在很大程度上是为了方便集合的使用,使其能够记住元素的数据类型。泛型是对Java语言类型系统的一种拓展,可以把类型参数看作是使用参
2019-01-02
#Java

Java多线程基础

Java多线程基础 基础概念进程 操作系统结构的基础,是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的基本单位。进程就是程序的实体 线程 线程是进程的一个实体,是CPU调度和分配的基本单位,线程是一个比进程更小的执行单位,一个进程在执行期间可以产生多个线程。一个进程至少一个线程。一般应用于高并发场景,可以提高CPU的利用率。 多进程 每个进程都拥有自己独立的资源,多个进程可在
2018-12-19
#Java

Java中的锁事

Java中提供了种类丰富的锁,定义这些锁可以在适当的场景中发挥更好的作用。 乐观锁&悲观锁乐观锁 每次去拿取数据的时候认为不会有人进行修改,所以不会去添加锁。只是会在更新数据时去判断是否有其他线程对这个数据进行了修改。通过判断版本号检测是否发生了更新,未发生变化直接写入新数据;发生了变化,就需要重复执行‌读版本号-比较有无发生变化-写入新数据操作。在Java中一般通过CAS算法实现。例如A
2019-03-15
#Hide

Java字节码学习-应用场景

2019-11-18
#Java
123456…11

搜索

Hexo Fluid