- 博客(12)
- 资源 (7)
- 问答 (1)
- 收藏
- 关注
原创 jvm学习笔记(二)垃圾收集器与内存分配策略
一、对象可回收状态判断 1、引用计数算法 原理:给对象添加一个引用计数器,每当有一个地方引用它时,计数器值加1;当引用失效时,计数器值减一。 计数器为0的对象,可以回收。 缺点:难以解决对象之间互相循环引用的问题;两个对象互相引用,但没有其他引用指向这两个对象,这两个对象 已经不可能再被访问,但是它们的引用计数都不为1,通过引用计数法无法通知GC收集器回收它们。 2、可达性...
2018-04-27 19:00:30 190
原创 JVM学习笔记(一)内存区域,对象创建,对象内存布局
前置1、符号引用:符号引用以一组符号来描述所引用的目标,符号可以是任何形式的字面量,只要使用时能够无歧义的定位到目标即可。 1)符号引用与虚拟机的内存布局无关,引用的目标并不一定加载到内存中。 2)在Java中,一个java类将会编译成一个class文件。在编译时,java类并不知道所引用的类的实际地址,因此只能使用符号引用来代替。2、直接引用:直接引用可以是 1)直接指向目标的指针(比如,指向"...
2018-04-25 20:51:30 229
原创 Okio源码阅读笔记(四)Buffer
Buffer里缓存了一个双向闭合Segment链表,head引用指向链表的头部,head.prev就是链表尾部链表的每个元素Segment内部都缓存有一个字节数组,segment的有效起点是pos,有效数据终点是limitBuffer中封装了对该缓存链表的读、写等操作的方法,其中把其他类型的数据转成字节写入缓存中的代码运用了大量的位运算,我表示看不怎么懂,暂时先不钻研了。也算是个笔记。public...
2018-04-23 20:36:49 928
原创 Okio源码阅读笔记(三)ByteString
其实ByteString没什么好看的。看之前以为有重要内容,看完后发现没有,不过既然已经看了,就记录下来吧。ByteString封装了以下几点1、就是把一些输入类型(字符串/字节数组/ByteBuffer/byte)转成字节数组,并封装成新的ByteString返回。比如ByteString.of(...)2、封装了对ByteString的比较、加密操作,方便使用比如ByteString.enco...
2018-04-23 16:37:30 9791
转载 Okio源码阅读笔记(二)复习下位运算
原作:Java位运算原理及使用讲解为了加深记忆,还是在上面博客基础上细节处加了点补充,方便时间久了回忆Okio高性能IO的关键在三点:1)的Segment对象池、Segment内部的压缩内容2)Buffer中缓存了一个Segment双向闭合链表,用空间换时间嘛。且有大量位运算,把写入的数据通过位运算转换成字节写入缓存,提高了性能。3)ByteString封装大量api,把各种输入(字符串/...)...
2018-04-21 12:28:35 197
原创 Okio源码阅读笔记(一)Segment与SegmentPool解析
1、 SegmentPool源码解析/** * 一个单例的线程安全的segment对象池,避免频繁创建和回收对象带来的性能消耗 */final class SegmentPool { //SegmentPool最大容量 64KB static final long MAX_SIZE = 64 * 1024; // 64 KiB. //由Segment组成的双向链表的第...
2018-04-19 22:02:27 909 1
原创 算法题库leetcode多加练习
多加练习:https://leetcode-cn.com/problemset/all/https://blog.csdn.net/notOnlyRush/article/details/79996933https://blog.csdn.net/jiangyanting2011/article/details/70325215https://blog.csdn.net/it_yangkun/ar...
2018-04-16 20:50:49 7125
原创 java Lock的实现AbstractQueuedSynchronizer源码阅读(一)ConditionObject解析
一、Condition接口public interface Condition { /** * 暂停此线程直至一下四种情况发生 * 1.此Condition被signal() * 2.此Condition被signalAll() * 3.Thread.interrupt() * 4.伪wakeup * 以上情况.在...
2018-04-14 20:05:47 741
原创 java锁的实现-AbstractQueuedSychronizer源码阅读(二)源码解析、深入理解排它锁(独占锁)的实现
AbstractQueuedSynchronizer设计者:Doug Lea一、简介1、本质上,AQS是基于Unsafe.CAS Unsafe.park Unsafe.unpark的原子操作来实现锁功能 Unsafe的操作粒度不是类,而是数据和地址。 1)先理解LockSupport.park,unpark(LockSupport.park内部是Unsafe.park,unpark也类似) 使用...
2018-04-13 15:18:15 842
原创 ThreadPoolExecutor源码笔记(三)线程池的实现
1、5种状态//线程池能够接受任务,并且可以运行队列中的任务private static final int RUNNING = -1 << COUNT_BITS;//不接受新的任务,但是之前队列里面的任务还是会被调用[shutDown()之后的状态]private static final int SHUTDOWN = 0 << COUNT_BITS;...
2018-04-10 17:17:07 645
原创 ThreadPoolExecutor源码阅读笔记(二)FutureTask
BlockingQueue: 队列他决定了任务的调度方式,我们主要关注BlockingQueue的offer, poll,take三个方法 offer往队列里面添加任务如果队列已经满了话返回false, poll在规定的时间内从队列里面取出任务如果队列是空的就返回null, take也是从队列里面取出任务如果队列是空的则阻塞(保证线程池核心线程一直存在的时候有妙用)SynchronousQ...
2018-04-08 16:55:22 285
原创 从源码看Activity启动过程(二)从Activity到AMS
1、Activitypublic class Activity extends ContextThemeWrapper implements LayoutInflater.Factory2, Window.Callback, KeyEvent.Callback, OnCreateContextMenuListener, ComponentCallbacks2, Window.OnWindow...
2018-04-03 12:38:41 179
Android高级编程(第三版)中文版高清PDF文档
2014-08-15
android封装了常用功能的ioc框架
2014-04-06
chm文档生成器
2014-04-05
android http 文件上传遇见的难题!!!求大神指点!!!
2014-05-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人