android
斐波那契堆
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
四种启动模式
关于启动模式的分析,android开发艺术探索中间的很详细。standard 这要注意的是别的activity启动他的时候他会在启动他的activity的栈中。但是如果singleInstance启动他则不会在启动他的activity的栈中,因为singleInstance是单独一个栈中单独一个实例的。singleTop和standard类似,加上栈顶复用。singleTask 这个和sing原创 2016-09-13 11:36:01 · 333 阅读 · 0 评论 -
HashMap源码学习
Lru的意思是先淘汰时间最远的哪一个,LFU则淘汰使用频率最小的哪一个。Hashmap static int indexFor(int h, int length) { return h & (length-1); } 相当于%但length要是2的幂。hashCode()用来确定对象在hashmap中的位置,函数返回一个整数,如果a.equa转载 2016-10-17 16:29:43 · 256 阅读 · 0 评论 -
SAX解析xml
xml<books xmlns:xx="www.bb.com"> <xx:book xx:id="1"> <name ss="lirui">happy day</name> <author>li</author> </xx:book> <book id="2"> <name>bad bed</name> <au原创 2016-11-01 19:04:21 · 271 阅读 · 0 评论 -
DOM
InputStream in=getResources().openRawResource(R.raw.book); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); try { DocumentBuilder dBuilder=dbFactory原创 2016-11-02 10:45:43 · 235 阅读 · 0 评论 -
PULL解析XML
public void readXMLPull(InputStream in){ try { XmlPullParser parser=XmlPullParserFactory.newInstance().newPullParser(); parser.setInput(in,"UTF-8"); int eve原创 2016-11-02 19:25:33 · 236 阅读 · 0 评论 -
IntentFilter
Action每个Intent只能有一个Action,一般来说set…函数设置的值是唯一的,而add…函数设置的值不是唯一的。如果一个一个intent和IntentFilter要匹配则两者都不为空,且intent中的action能在intentFilter中找到。 我在官网文档中看了这么一句 Action matches if any of the given values match the原创 2016-12-14 20:07:22 · 580 阅读 · 0 评论 -
volley PoolingByteArrayOutputStream
概述PoolingByteArrayOutputStream继承了ByteArrayOutputStream然后其中有加了一个ByteArrayPool,当ByteArrayOutputStream中的buff数组容量慢了之后,从ByteArrayPool获取新的数组,这样heap和垃圾回收机制可以少干活。这个重写了write()函数在调用基类的write之前先检查是否满了如果满了就用Pooling原创 2016-11-23 15:25:45 · 402 阅读 · 0 评论 -
Volley Http缓存机制
https://www.path8.net/tn/archives/2745//如果你第二次 (或第三次,或第四次) 请求相同的数据,你可以告诉服务器你上一次获得的最后修改日期:在你的请求中发送一个 If-Modified-Since 头信息,它包含了上一次从服务器连同数据所获得的日期。如果数据从那时起没有改变,服务器将返回一个特殊的 HTTP 状态代码 304,这意味着 “从上一次请求后这个数据原创 2016-11-23 20:45:26 · 349 阅读 · 0 评论 -
Volley http协议摘要
Etag主要为了解决Last-Modified无法解决的一些问题.他能比Last_Modified更加精确的知道文件是否被修改过.如果有个 文件修改非常频繁,比如在秒以下的时间内进行修改,比如1秒内修改了10次,If-Modified-Since能检查只能秒级的修改,所以这种修改无法 判断.原因是UNIX记录MTIME只能精确到秒.所以我们选择生成Etag,因为Etag可以综合Inode,MTime原创 2016-11-23 21:23:46 · 434 阅读 · 0 评论 -
LinkedHashMap
LinkedHashMap如果只是从头上讲元素删除,接到尾上,其实是可以使用单链表的。其实是可以使用单链表的,在定位到某一个元素的过程中顺便就可以吧他前面的元素找到,这样就可以删除了,而在尾部的插入用单链表也能完成。这样写我才是比较节省时间吧。 这一条(第一条)我理解错了,我以为是用我以为table[]所存的是一个双链表,其实LinkedHashMap是有两个链表,一个是继承了hashMap的ta原创 2016-10-19 15:32:03 · 271 阅读 · 0 评论 -
CopyOnWriteArrayList
public boolean add(E e) { final ReentrantLock lock = this.lock; // 获取独占锁 lock.lock(); try { Object[] elements = getArray(); in原创 2016-11-08 20:43:40 · 219 阅读 · 0 评论 -
volatile
双重检测class Singleton{ private volatile static Singleton instance = null; private Singleton() { } public static Singleton getInstance() { if(instance==null) { synchronize原创 2016-11-03 19:17:10 · 357 阅读 · 0 评论 -
Handler相关
public void dispatchMessage(Message msg) { if (msg.callback != null) { handleCallback(msg); } else { if (mCallback != null) { if (mCallback.handleMessage(msg)) {原创 2016-09-11 16:07:19 · 269 阅读 · 0 评论 -
TypeToken
TypeToken<List<String>> list = new TypeToken<List<String>>() {}这是创建了一个空的匿名内部类{}符号的意思是空的。原创 2016-09-22 20:14:39 · 650 阅读 · 0 评论 -
AdapterVIew
像ListView这种AdapterView是不允许在Adapter内部调用addView()方法的否则就会出错,这样在public View getView(int position, View convertView, ViewGroup parent)方法中就必须这样写convertView=LayoutInflater.from(getContext()).inflate(R.layout.原创 2016-09-22 20:19:46 · 254 阅读 · 0 评论 -
易家项目学习笔记
Gson gson = (new GsonBuilder()).registerTypeAdapter(A.class, new JsonParseAdapter())可以为指定类型定制序列化反序列化的方式,比如只得到一个父类的指针就可以定制将Json反序列化到那一个具体的子类。Obserable Observor 观察者模式 -机械键盘到手了 开心原创 2016-09-20 09:52:24 · 275 阅读 · 0 评论 -
ArrayList
RandomAccess这个借口是空的,这是一个标记借口,可以用instanceof来确定ArrayList是否实现了这个借口,即是否实现了特定功能。 - 浅拷贝:使用一个已知实例对新创建实例的成员变量逐个赋值,这个方式被称为浅拷贝。 深拷贝:当一个类的拷贝构造方法,不仅要复制对象的所有非引用成员变量值,还要为引用类型的成员变量创建新的实例,并且初始化为形式参数实例值。这个方式称为深原创 2016-10-24 16:02:39 · 220 阅读 · 0 评论 -
匿名内部类
interface prin{ public void write(); }public class tt { static int xx=123; public static void main(String[] args){ final String ss="lrui"; new prin(){原创 2016-10-26 18:55:27 · 231 阅读 · 0 评论 -
String
构造方法public String(String original) { this.value = original.value; this.hash = original.hash; }public int compareTo(String anotherString) { //自身对象字符串长度len1 int len1 = value.length; /原创 2016-10-26 19:44:53 · 242 阅读 · 0 评论 -
CorrentHashMap
/** * 使用 key 的散列码来得到 segments 数组中对应的 Segment */ final Segment<K,V> segmentFor(int hash) { // 将散列值右移 segmentShift 个位,并在高位填充 0 // 然后把得到的值与 segmentMask 相“与” // 从而得到 hash 值对应的 segm原创 2016-11-08 17:10:43 · 1004 阅读 · 0 评论 -
Volley DiskBasedCache
大体思路这其实是一个LRU cache 用private final Map<String, CacheHeader> mEntries = new LinkedHashMap<String, CacheHeader>(16, .75f, true);来维护一个优先队列,在空间满了的时候讲那些队头的删掉,因为 LinkedHashMap的构造函数最后一个参数access原创 2016-11-24 15:51:48 · 460 阅读 · 0 评论
分享