自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 索引不生效的5种情况

笔记

2022-07-05 14:49:33 2319 1

原创 简单实现HashMap

简单实现HashMap理论JDK 1.6, JDK 1.7 HashMap 采用位桶(数组) + 链表实现。JDK 1.8 HashMap 采用位桶(数组) + 链表 + 红黑树实现。(当链表长度超过阈值 “8” 时,将链表转换为红黑树)哈希冲突利用哈希冲突特性 存取数据定义一个链表数组 Node[] data = new Node[16];put 的时候,通过hashCode算出在data数组中索引,2种情况hash值算出的索引一样,key不一样,存入链表 (hash冲突)has

2020-10-13 11:27:22 195

原创 ndk (一)

// Used to load the 'native-lib' library on application startup.static { System.loadLibrary("native-lib");}@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_m

2020-06-23 11:46:19 221

原创 websocket和socket的区别是什么?

websocket 是一种协议socket 是管道

2020-06-15 13:37:54 257

原创 android 热修复原理

安装过程1、将apk复制到/data/app/包名/ 下面(预制应用没有这步system/app或者 priv-app)2、解压/data/app/package/base.apk中的so 到 /data/app/package/lib目录3、解压apk,把其中的classes.dex 拷贝到data/dalvik-cache,命名规则是 apk路径+classes.dex4、在data/data/目录下创建对应的包名目录加载dex1、classloader 双亲委托模型2、反射的方式

2020-06-15 13:16:44 147

原创 Android 压力测试之monkey

adb shell monkey -p 包名 -s 500 --throttle 400 -v 100000随机数500延时 400毫秒次数 100000 次

2020-06-15 13:03:27 120

原创 android 解耦方案,反射调用其他apk中的方法

这样做的目的可以让一个apk分成多个升级,完全解耦。解耦是有代价的:会有调用不到主工程api的烦恼Context mmsCtx = createPackageContext("包名", Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);Class<?> clazz=Class.forName("类名", true, mmsCtx.getClassLoader());Object object = cla

2020-06-15 12:53:27 495

原创 Android源码学习(二) -- 源码编译

源码下载,环境配置略过强调一点,用源码对应的ubuntu系统版本,会让你少遇很多坑1、source build/envsetup.sh2、lunch3、make -j84、emulator

2020-06-15 12:43:13 138

原创 java线程池设计原理

线程池的构造函数有7个参数1、corePoolSize 线程池核心线程大小2、maximumPoolSize 线程池最大线程数量3、keepAliveTime 空闲线程存活时间4、unit 空间线程存活时间单位5、workQueue 工作队列6、threadFactory 线程工厂–创建线程7、handler 拒绝策略 – 线程池满时的策略workQueueArrayBlockingQueue 基于数组的有界阻塞队列LinkedBlockingQuene 基于链表的

2020-05-24 23:42:00 187

原创 Android源码学习(一) -- 如何在源码路径编译项目(systemUI.apk,framework.jar等)

Android源码学习(一)如何在源码路径编译项目(systemUI.apk,framework.jar等)编译命令 (1到3,需要编译整个系统)1、m 根路径编译2、mm 当前路径编译3、mmm 指定路径编译4、mma 当前路径编译(不需要编译整个系统)1、 编译framework资源文件(framework-res.apk)如果修改android framework资源文件,需要先编译资源文件,然后再编译framework才可以正常引用,进入项目目录 cd work/sourc

2020-05-24 23:19:09 1375

原创 Android 内存优化原理

jvm内存模型核心组成部分1 类加载器2 运行时数据区3 执行引擎4 本地方法接口5 本地方法库6 垃圾收集器运行时数据区组成部分(重点)线程共享 :方法区 归类为堆(非堆) 运行时常量池java堆 heap线程私有:虚拟机栈 栈本地方法栈程序计数器java堆组成及对应的GC算法(重重点)新生代 — 复制 算法幸存0幸存1老年代 —标记-清除 或者 标记-整理元空间(永久代)GC算法1 引用计数法(存在循环引用的问题,不被java采纳,c+

2020-05-24 13:19:49 194

原创 ANR类型

ANR类型1. dispatchTimeout输入事件分发超时,一般是主线程在5秒之内没有响应事件。2. BroadcastTimeout广播超时,一般为广播在10秒内未能执行完毕。3. ServiceTimeout服务超时,一般为服务在20秒内未能执行完毕。...

2019-09-18 10:27:11 244

原创 requestLayout和invalidate区别

这里写自定义目录标题总结:相关知识点:总结:View绘制分三个步骤,顺序是:onMeasure,onLayout,onDraw。经代码亲测,log输出显示:调用invalidate方法只会执行onDraw方法;调用requestLayout方法只会执行onMeasure方法和onLayout方法,并不会执行onDraw方法。所以当我们进行View更新时,若仅View的显示内容发生改变且新显...

2019-09-09 15:52:15 124

原创 android性能优化总结

android性能优化总结启动优化性能优化的APMAPP启动优化內存合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入启动优化性...

2019-08-18 01:55:02 505

原创 Activity启动过程

1、startActivity2 、ActivityManagerNative().startActivity3、mRemote.transact(start_activity_transaction,data,reply,0)4、public void onTransaction(int code,Parcel data,parcel,reply,int flags){switch...

2019-08-14 17:58:04 148

原创 Android 应用程序启动过程

1、用户触发应用组件(Activity,server,receiver,provider)2、给AMS发消息要先启动应用进程3、AMS通过socket的方式给Zygote,发送ActivityThread的类名4、Zygote fork出应用进程,反射加载ActivityThread的main函数5、开启Looper.prepareMainLooper(),并调用attach(false)...

2019-08-14 01:35:35 93

原创 Android系统如何启动,及涉及的类

1、linux中的init.rc启动配置文件配置启动的进程zygote,servermanager,surfaceflinger,media等启动方式 fork+handle ,fork+execve信号处理(-SIGCHLD)监听子进程的转态信号是linux的跨进程通信之一,管道,socket,共享内存,信号2、zygote的作用启动Android虚拟机,注册AndroidJnI函...

2019-08-14 00:13:11 645

原创 Android 启动优化-IdleHandler

Android 启动优化-IdleHandler1、IdleHandler 的简单使用2、系统使用的案例3、IdleHandler的源码实现1、IdleHandler 的简单使用在Android中,当消息队列没有可处理的消息的时候,就是消息队列时空的,或者消息队列里的消息还没到可触发的时间,就会执行IdleHandler。 Looper.myQueue().addIdleHandler(ne...

2019-08-13 22:07:49 713

空空如也

空空如也

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

TA关注的人

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