- 博客(8)
- 资源 (6)
- 收藏
- 关注
原创 android 热修复方案总结
代码修复主要有三个方案,分别是底层替换方案、类加载方案和Instant Run方案。类加载方案在android类加载过程中,其中一个环节就是调用DexPathList的findClass方法,如下图所示。 public Class<?> findClass(String name, List<Throwable> suppressed) { ...
2018-06-29 10:27:03 334
原创 java类加载机制
类加载机制jvm类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这个5个过程加载加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的入口。注意这里不一定非得要从一个Class文件获取,这里既可以从zip包中获取(比如从jar包和war包中读取),也可以在运行时计算生成(动态...
2018-06-28 13:09:40 147
原创 java对象的生命周期
在java中,对象的生命周期包含以下几个阶段: 1、创建阶段(Created) 2、应用阶段(In Use) 3、不可见阶段(Invisible) 4、不可达阶段(Unreachable) 5、收集阶段(Collected) 6、终结阶段(Finalized) 7、对象空间重分配阶段(De-allocated)创建阶段通过以下步骤,完成对象的创建(1)为对象分配存储空间 ...
2018-06-20 16:11:52 521
转载 java 线程池总结
如果我们使用线程的时候就去创建一个线程,这样实现起来非常方便,但是会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个事件很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种方法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?java中可以通过线程池来达到这样的效果。java中的Thr...
2018-06-19 23:25:45 148
转载 查找算法之B树、B+树
B树是为了磁盘或其他存储设备而设计的一种多叉平衡查找树.磁盘中有两个机械运动的部分,分别是盘片旋转和磁臂移动。盘片旋转就是我们市面上所提的多少转每分钟,而磁盘移动则是在盘片旋转到指定位置以后,移动磁臂后开始进行数据的读写,那么这就存在一个定位到磁盘中的块的过程,而定位是磁盘的存取中花费的时间比较大的一块,毕竟机械运动花费的时间要远远大于电子于东的时间。当大规模数据存储到磁盘中的时候,显然定位是一个...
2018-06-17 20:15:52 1344
原创 查找算法之红黑二叉查找树
红黑二叉查找树背后的基本思想是用标准的二叉查找树(完全由2-节点构成)和一些额外信息(替换3-节点)来表示2-3树。我们将树中的链接分为两种类型:红链接将两个2-节点连接起来构成3-节点,黑链接是2-3树中的普通链接。确切地说,我们将3-节点表示为由一条左斜的红色链接(两个2-节点其中之一是另一个的左子节点)相连的两个2-节点 定义红黑树的另一种定义是含有红黑链接并满足下列条件的二叉树:...
2018-06-16 22:58:46 353
原创 查找算法之平衡查找树
前面介绍的算法在最坏的情况下还是很糟糕。这次会介绍一种二分查找树并能保证无论如何构造它,他的运行时间都是对数级别的。理想情况下我们希望能够保持二分查找树的平衡性。但是,在动态插入中保证树的完美平衡的代价太高了。2-3查找树我们将一棵标准的二叉查找树中的节点成为2-节点(含有一个键和两条链接),现在我们引入3-节点,它含有两个键和三条链接。 查找要判断一个键是否在树中,我们先将它和...
2018-06-16 00:27:56 1967
原创 查找算法之二叉查找树
定义一棵二叉查找树(BST)是一棵二叉树,其中每个节点都含有一个键且每个节点的键都大于其左子树中的任意节点的键而小于右子树的任意节点的键。查找从根节点开始查找,如果要查找的元素大于根节点,就在根节点的右子树中开始查找,如果要查找的元素小于根节点,就在根节点的左子树中进行查找。 从根节点开始,在每个节点中查找的进程都会递归地在它的一个子节点上展开,因此一次查找也就定义了树的一条路径...
2018-06-15 15:44:11 685
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人