自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 关于gradle

看这篇文章

2018-01-24 17:04:16 216

原创 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

原创 关于多线程,volatile,工作内存,主内存

看这两篇博客关于volatile主内存和工作内存

2018-01-19 17:34:31 594

原创 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

原创 一些有用的链接

面试方向指导点击打开链接,点击打开链接,点击打开链接刷算法题点击打开链接简历点击打开链接

2018-01-15 09:33:47 144

转载 synchronized的几种锁和实现原理

对象在堆中的结构对象头包括两个部分,第一部分用于存储自身运行时的数据例如GC标志位、哈希码、锁状态等信息。第二部分存放指向方法区类静态数据的指针。实例变量存放类的属性数据信息,包括父类的属性信息。如果是数组的实例部分还包括数组的长度。这部分内存按4字节对齐。填充数据区域的存在是因为虚拟机要求对象起始地址必须是8字节的整数倍。填充数据不是必须存在的,仅仅是为了字节对齐

2018-01-13 21:57:52 3199

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除