![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
文章平均质量分 84
Ryan ZHENG
Senior Android Frameworks Developer
展开
-
[Android][ASM]指令注入入门(四)——实际需求实现(中)
[Android][ASM]指令注入入门(四)——实际需求实现(中)前言在上一篇中,我们实现了无返回值的方法收尾插入Binder.clearCallingIdentity()/Binder.restoreCallingIdentity()方法;而这一篇,会在此基础上,将使我们的工具支持带返回值的方法;开发步骤源码端import java.util.Random;public class Test2 { private static final Random R = new原创 2022-05-06 10:03:27 · 234 阅读 · 0 评论 -
[Android][ASM]指令注入入门(三)——实际需求实现(前)
[Android][ASM]指令注入入门(三)——实际需求实现(前)前言在上一篇中,我们搭建了基于Ubuntu(WSL2)下JAVA的开发环境,今天我们基于这个环境,来实现一个实际需求:为特定方法的首尾分别插入Binder.clearCallingIdentity()与Binder.restoreCallingIdentity()产生这样需求的原因是如下这样一个情况:某些功能需要system_server内部各个服务间相互调用,但是开发人员在设计API时,无法考虑到调用方是否具备调用其他服务的权限原创 2022-04-29 15:40:02 · 1521 阅读 · 0 评论 -
[Android][ASM]指令注入入门(二)——开发环境搭建与Hello World
[Android][ASM]代码注入入门(二)—— 开发环境搭建与Hello World前言在上一篇中,我们见识了AOSP中使用asm实现的一个功能——lockedregioncodeinjection:其可以在编译时为services.core.unboosted.jar中指定类中的同步代码块添加try-catch代码块,并在代码块的首位追加boostPriorityForLockedSection()与resetPriorityAfterLockedSection()方法调用,并将最后修改产物保存为原创 2022-04-28 11:10:23 · 527 阅读 · 0 评论 -
HashMap源码浅析(一)—— 创建对象与添加元素
本文属于个人随笔,纯原创,转载请注明出处最近面试,屡屡被问道HashMap的实现,回答得总是不太流畅。回头想想,HashMap作为平时用得最多的一个集合框架类,我对其其内部实现确实知之甚少。这有点说不过去,于是把源码搬出来,尝试做个简单分析,如有谬误,还请指出,谢谢!(本文所示源码均来源于JDK1.8.0_131)首先翻译一下类声明前的一大段注释吧,只提取关键信息:1、HashMa...原创 2018-07-18 23:08:55 · 2352 阅读 · 0 评论 -
HashMap源码浅析(二)—— 添加元素与数据结构
在上一篇中,我们把HashMap的构造和内部存储数据的容器简单介绍了一下。在这一篇中,会进一步深挖HashMap在添加元素时的各种情况以及其数据存放形式,如有谬误,还请指出,谢谢!(本文所示源码均来源于JDK1.8.0_131)前一篇已经提到,put方法的实现是将key通过哈希运算求得整形的哈希值hash,再通过调用putVal方法实现元素的添加;那此时我们假设HashMap在构造完成后连...原创 2018-07-19 15:05:57 · 536 阅读 · 0 评论 -
HashMap源码浅析(三)—— 查询元素与删除元素
在上一篇中,我们把HashMap的增加元素时的内部实现简单梳理了一遍,这一篇首先跟一跟与之相对的删除元素,和与之相关的查询元素。(本文所示源码均来源于JDK1.8.0_131)按照常用的“增删改查”四大功能来看,“增”我已经大概讲完了,有兴趣的可以自行拓展、有疑问的可以留言交流,下一个是“删”,我把删除元素放在增加元素之后,主要还是因为这两个操作可以算是互为逆向的一对操作,放在一起也会比较...原创 2018-07-22 16:31:57 · 1382 阅读 · 0 评论