- 博客(15)
- 收藏
- 关注
原创 java表达式陷阱
int a = 10; int b = a + (a = 5) + a + (a = 10); //10+5+5+10 先算括号 System.out.println(b);//b = 30 int i = 1; i = (i=i+(i+(i=2)+i)+i)+3; //1+1+2+2+2+3 System.out.println(
2018-01-29 17:28:18 170
原创 关于LruCache
LinkedHashMap LruCache中维护了一个LinkedHashMap实例。缓存的实现主要由LinkedHashMap来完成。LinkedHashMap继承自HashMap,拥有HashMap的特性,比如线程不安全,初始容量是16,装载因子0.75等。不同的是其用双向循环链表把所有数据串在了一起。 LinkedHashMap中有两个重要的变量,分别是header和acc
2018-01-26 17:35:40 129
原创 IntentFilter匹配规则
启动activity分为隐式启动和显式启动,其中隐式启动不指定具体的activity,而是通过一些条件来匹配,分别是category ,action,data。一个intent必须同时匹配这三个条件才能启动相应的activity。一个activity可以有多个action,category和data。action的匹配规则 action是一个字符串。系统预定义了一些actio
2018-01-25 00:06:51 186
原创 Android中的欢迎页处理
若把太多的初始化操作放在Application的初始化方法中处理,可能造成应用启动时白屏。在这里用一个默认的欢迎页来取代空白页。具体的做法如下: 在styles.xml中创建一个App主题<style name="AppTheme.Launcher"> <item name="android:windowBackground">@drawable/laun...
2018-01-23 16:13:06 460
原创 ClassLoader
JAVA自带的ClassLoaderBootStrapClassLoader:最顶层类加载器,用于加载lib目录下的rt.jar,resource.jar,charset.jar等核心类库。是用C/C++实现的。ExtentionClassLoader:扩展的类加载器,用于加载lib/ext目录下的jar包和class文件。AppClass Loader(SystemAppClass)
2018-01-22 17:50:28 115
原创 HashMap和ConcurrentHashMap
HashMap 在不考虑哈希冲突的情况下,HashMap的增加,删除,查找元素的时间复杂度都为O(1)。效率十分的高。 哈希表的主干是数组。 在增加时把当前的元素时把当前元素的关键字通过哈希函数映射到数组中的某个位置,查找时通过哈希函数确定下标,再直接通过下标获取数组指定元素。 当通过哈希函数计算一个并得到一个元素的下标,但是发现该下标对应位置已经被别的元素占据,这就是所谓的哈希冲突,也叫哈希碰撞
2018-01-18 17:04:27 155
原创 <<,>>和>>>
右移运算符>>(有符号)用来将一个数的各二进制位全部右移若干位.例如:a = a>>2,使a的各二进制位右移两位,移到右端的低位被舍弃,最高位则移入原来高位的值. (正数右移是正数,负数右移是负数)如:a = 00110111,则a>>2=00001101,b=11010011,则b>>2 = 11110100 右移一位相当于除2 取商,而且用右移实现除法比除法运算速度要快 左移运算符同上,末位补
2018-01-18 15:16:45 2403 1
原创 自定义控件
自定义控件 自定义控件一般继承自View类。 对控件自身来说比较重要的两个方法是onDraw()方法和onMeasure()方法。 onMeasure() 该方法在View类中有默认实现。 重写onMeasure()方法,该方法有两个入参@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpe
2018-01-17 22:43:36 162
原创 View的绘制过程
关于MeasureSpecMeasureSpec是一个32位整数。由SpecSize和SpecMode组成。其中高2位代表SpecMode,低30位代表SpecSize。SpecMode是测量模式,SpecSize是测量尺寸。View的SpecMode由本View的LayoutParamas和父ViewGroup的MeasureSpec共同决定。SpecMode的取值如下:EXACTLY:: 对于
2018-01-17 22:16:50 90
原创 代理模式
代理模式的用途代理模式是对类的扩展比如有一个字体提供类,有多种实现(从磁盘,从网络,从系统)public interface FontProvider { Font getFont(String name);}public abstract class ProviderFactory { public static FontProvider getFont
2018-01-15 09:57:18 132
原创 Java中的垃圾回收
GC 的职责1.分配内存2.确保有引用的对象保留在内存中3.回收不能通过引用关系找到的对象的内存.JVM使用分代式的内存管理方式, 将Heap分成三代 --- 新生代, 老一代, 持久代.新生代分为Eden space, Survivor 0 和 Survivor 1 三个部分.新生代对应小GC老一代对应大GC小GC执行频繁,大GC执行时间间隔一般是小G
2018-01-15 09:40:35 99
转载 synchronized的几种锁和实现原理
对象在堆中的结构对象头包括两个部分,第一部分用于存储自身运行时的数据例如GC标志位、哈希码、锁状态等信息。第二部分存放指向方法区类静态数据的指针。实例变量存放类的属性数据信息,包括父类的属性信息。如果是数组的实例部分还包括数组的长度。这部分内存按4字节对齐。填充数据区域的存在是因为虚拟机要求对象起始地址必须是8字节的整数倍。填充数据不是必须存在的,仅仅是为了字节对齐
2018-01-13 21:57:52 3199
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人