zEcong Chai's blogs

每天进步一点点,坚持带来大改变。


  • 首页

  • 归档

  • 标签

类加载过程

发表于 2018-09-05
###类加载过程,Person preson = new Preson(); 1.通过new找到Person.class文件并加载到内存中。 2.执行类中的static代码块,给Person.class类进行初始化。 3.在堆内存中开辟空间分配内存地址。 4.在堆内存中建立对象的特有属性,并进行默认初始化。 5.对属性进行显示初始化。 6.对对象进行构造代码块初始化。 7.对对象进行与之对应的构造函数进行初始化。 8.将内存地址付给栈内存中的p变量。
阅读全文 »

快速排序

发表于 2018-07-15
快速排序是一种交换排序。 基本思想:通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都是比它大的数。 然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 详细的图解往往比大堆的文字更有说明力,所以直接上图: 上图中,演示了快速排序的处理过程: 初始状态为一组无序的数组:2、4、5、1、3。 经过以上操作步骤后,完成了第一次的排序,得到新的数组:1、2、5、4、3。 新的数组中,以2为分割点,左边都是比2小的数,右边都是比2大的数。 因为2已经在数组中找到了合适的位置,所以不用再动。 2左边的数组只有一个元素1,所 ...
阅读全文 »

冒泡排序

发表于 2018-07-14
#冒泡排序 作为一个大前端的开发者来说,算法设计的确不是强项,毕竟在平时开发中很少用到。不过少用并不代表能丢,从今天开始,我们开始把一些常见的算法重新总结一下,行了不废话了。 ###什么是冒泡排序?冒泡排序是一种交换排序。交换排序:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。 ###算法思想重复的遍历要排序的数列,每次两两比较,如果顺序有误,则调换位置,重复操作直到数列完成排序。 假设有一个大小为 N 的无序序列。冒泡排序就是要每趟排序过程中通过两两比较,找到第 i 个小(大)的元素,将其往上排。 以上图为例,演示一下冒泡排序的实际流程: 假设有一个无 ...
阅读全文 »

阿里文娱面试

发表于 2018-07-14
1.热更新原理,为什么要阻止打上标记,如何做增量更新。 2.如何实现组件化。 3.RxJava性能上做了哪些优化,项目中普及程度,如何解决RxJava中的线程和本地线程冲突的问题,RxJava的数据变换原理。 4.项目中如何统一管理Activity或Fragment栈。 5.ClassLoader双亲机制原理。 6.MVP。 7.Activity源码,Activity中的Handler原理,如何实现页面卡顿监听。 8.Volley和OKHTTP性能分析。 9.RecycleView和ListView性能对比分析。 10.如何做push优化,优化后到达率到从多少到了多少。小米对通知提供了哪些优化 ...
阅读全文 »

WebView内存泄漏优化

发表于 2018-07-04
1.首先不要在xml中去添加webView节点,而是在需要的时候动态生成。你可以在需要webview的布局位置放一个LinearLayout,需要时在代码中动态生成webview并add进去:1234//mWebView=new WebView(this);mWebView=new WebView(getApplicationContext());LinearLayout linearLayout = findViewById(R.id.xxx);linearLayout.addView(mWebView); 然后在onDestroy()时手动释放webView资源:123456789@Ov ...
阅读全文 »

Android性能优化

发表于 2018-01-12
什么是性能快,稳,省,小,这四点很形象的代表了性能的四个方面,同时也让我们知道我们App现在是否是款性能良好的APP,如果有一项不达标,那么说明我们的应用有待优化。 很多时候我们注重功能实现,保证能用,但是我们会发现,这样的应用很难拿的出手,里面的槽点太多了,性能很差,但是又不知道从哪里下手进行优化,那么我们就一步一步来,看看我们到底应该怎么优化我们的APP 布局优化和UI相关的首先就是布局,特别是在开发一些复杂界面的时候,通常我们都是采用布局嵌套的方法,每个人的布局思路不太一样,写出的也不太一样,所以就可能造成嵌套的层级过多。多嵌套的小隔断间需要处理,都会占用cpu计算的时间和GPU渲染的时 ...
阅读全文 »

避免ViewStub重复填充

发表于 2017-10-03
ViewStub 是一个不可见的,大小为0的View,最佳用途就是实现View的延迟加载,避免资源浪费,在需要的时候才加载View。在Android性能优化中广泛使用。在使用viewstub的时候要注意一点,viewstub只能inflate一次,而且setVisibility也会间接的调用到inflate,重复inflate会抛出异常:1java.lang.IllegalStateException:ViewStub must have a non-null ViewGroup viewParent 解决方法为设置一个Boolean类型的变量,标记viewstub是否已经inflate,如果 ...
阅读全文 »

Activity启动的概要流程

发表于 2017-04-24
#Activity启动的概要流程 用户从Launcher程序点击应用图标可启动应用的入口Activity,Activity启动时需要多个进程之间的交互,Android系统中有一个zygote进程专用于孵化Android框架层和应用层程序的进程。还有一个system_server进程,该进程里运行了很多binder service,例如ActivityManagerService,PackageManagerService,WindowManagerService,这些binder service分别运行在不同的线程中,其中ActivityManagerService负责管理Activity栈, ...
阅读全文 »

跨进程通信

发表于 2017-04-23
IPC全称 Inter-Process Communication 是进程间通信,是指两个进程间进行数据交换的过程。 IPC机制的使用场景(1)Android对单个应用使用的最大内存做了限制(16M),需要获取更多的内存.(2)当前应用需要向其他应用获取数据 开启多进程模式的唯一方法是在清单文件中设置process属性。 例如 android:process=”:remote” 或 android:process=”com.lzx.app.remote”第一种是一种简写,完整是这样的:android:process=”com.lzx.app:remote” 第二种是一种完整的写法,带有“: ...
阅读全文 »

SurfaceView和TextureView的区别

发表于 2016-03-19
SurfaceView和TextureView均继承于android.view.View,与其它View不同的是,两者都能在独立的线程中绘制和渲染,在专用的GPU线程中大大提高渲染的性能。SurfaceView专门提供了嵌入视图层级的绘制界面,开发者可以控制该界面像Size等的形式,能保证界面在屏幕上的正确位置。但也有局限: 由于是独立的一层View,更像是独立的一个Window,不能加上动画、平移、缩放;两个SurfaceView不能相互覆盖。TextureView更像是一般的View,像TextView那样能被缩放、平移,也能加上动画。TextureView只能在开启了硬件加速的Windo ...
阅读全文 »
123
zEcong Chai

zEcong Chai

积极 乐观 有爱 分享

25 日志
© 2014 - 2019 zEcong Chai
由 Hexo 强力驱动
主题 - NexT.Muse