自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

原创 JAVA中函数传参的意义

JAVA中有两种类型,基本类型和引用类型。但在函数传参的过程中,基本类型和引用传递的到底是什么呢?在JVM中,基本类型中的数值使用一块内存来保存。引用类型由两块内存来保存,一块内存中装的是真实的数据,就是引用的对象,另一块内存中装的是指向类数据的引用,存储的是对象的内存地址。jvm需要通过此引用找到该对象的方法表,类型信息。其中类型信息包括类型基本信息,常量池,字段信息,方法信息,类变量信息,

2017-11-17 18:39:42 1311

原创 JAVA集合类解析之List类

JAVA中主要使用的List类有ArrayList和LinkedList,以及不常用的Vector。ArrayList是普通Array数组的扩充,基于队列实现,LinkedList则是基于链表实现。以上两者皆为线程非安全。Vector也是基于队列实现的,但不同于ArrayList的是,它是线程能安全的,因此资源开销相较于ArrayList也会更大。ArrayList相比于普通Array数组最大的特

2017-11-14 17:25:02 351

原创 volley框架的简单说明

volley是Google开发的一款网络框架,我们可以使用volley来获取网络的文本和图片。volley框架有5个方法:StringRequsetImageRequestJsonRequsetImageLoaderNetworkImageViewvolley框架的内部结构,下面用一张官方的图来说明:蓝色的代表主线程,绿色的代表缓存线程,红色的代表网

2017-05-11 22:57:26 344

原创 eventbus全解析

eventbus旨在为Android中的各组件提供解耦和的数据与事件传递。首先在需要接收事件和数据的组件中(官方推荐在onStart方法中)注册:EventBus.getDefault().register(this);然后在组件中定义接收事件和数据的方法。在最新的eventbus3.0.0中,方法使用注释(annotation)来注册,即在方法的前添加注释@Subscribe(threa

2017-05-10 18:06:23 1099

原创 Android dex分包

Android中使用Dalvik虚拟机来运行应用程序,Dalvik虚拟机是有Google公司为Android平台量身定制的

2017-05-06 22:42:01 1207

原创 java中的volatile与atomic

volatile可以保证所有线程看见的值都是最新的,atomic可以保证+-的原子性操作。每个线程都有自己独立的数据块,对于共享变量,它们先将其拷贝到自己的内存空间,创建一个副本,之后再进行的操作针对的都是副本,最后在线程退出前的某一时刻把值再放回到共享变量中。而volatile保证了每次在线程内存空间中副本的变化都会直接映射到共享内存之中,使共享内存中的变量值始终为最新的。但volati

2017-05-03 23:32:37 915

原创 Java中的CAS(Compare And Swap)

CAS是compareAndSwap的简称,它可以帮助我们实现多线程执行的安全性。CAS有三个操作数:内存值V、旧的预期值A、要修改的值B,当且仅当预期值A和内存值V相同时,将内存值修改为B并返回true,否则什么都不做并返回false。虽然步骤分为两笔,比较和赋值,但CAS是在native层的unsafe类中实现的,属于硬件级别的操作,同样可以保证原子性。下面是compareAn

2017-05-03 22:58:11 429

原创 java中锁的深入理解(二)

上一篇讲到了synchronized实现原理,这一篇一起来学习一下Lock的底层实现原理。java.util.concurrent包中有很多lock接口的实现类,ReentrantLock,ReadWriteLock,这在我的另一篇文章中也提到了。这些实现类的内部都使用了队列同步器AbstractQueuedSynchronizer类作为依赖。下面我们用AQS来指代AbstractQueu

2017-05-03 20:47:39 232

原创 java中锁的深入理解(一)

JAVA中的锁分为两种,synchronized和Lock。他们都可以实现同步,具体的用法,可以参考我的另一篇文章。下面深入探讨一下,synchronized和Lock两种锁方式的原理。首先看一下synchronized。public class SynchronizedDemo { public void method() { synchron

2017-05-03 20:08:43 280

原创 Android中的intent详解

Android中提供intent机制提供应用间的通信。Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,可以将Intent理解为不同组件之间通信的“媒介”专

2017-04-30 12:42:37 449

原创 JAVA中的线程

Java是一个支持多线程编程的语言,我们可以使用Thread类实现多线程操作。我们定义线程,可以使用在Thread的构造方法中传入一个Runnable的形式,也可重写Thread的run方法,但是无论怎么定义,启动线程时,一定要调用线程的start()方法,不要调用线程的run方法;区别就是,调用start()方法,会开启一个新线程执行run()方法中的程序,而调用run()方法只会在原线程中

2017-04-27 22:41:31 183

原创 Java线程池

Java的线程池存在于java.util.concurrent包中的Executor框架。Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。他们的关系为图片来自第七城市网。publ

2017-04-27 17:50:41 194

原创 Android中的JSON解析

关于JSON的解析,下面先贴一段代码:private void parseJSONinfodata(String infodata) { JSONArray jsonArray = null; try { jsonArray = new JSONArray(infodata); } catch (JSONException

2017-04-27 15:02:45 181

原创 JAVA中的String类

Java中有一个很特殊的类,String类,用来存储字符串。有一个很经典的问题,String string = new String("abcdefg");String string = "abcdefg";这两种创建方式有什么不同?首先,我们要明确,对象的创建都是在JVM的堆中的。同时,JVM为了优化字符串的存储,还在方法区中开辟了一块字符串常量池,避免相同字符串对象的重复创建

2017-04-26 22:20:21 206

原创 RelativeLayout与LinearLayout的性能问题

说起RelativeLayout与LinearLayout的性能方面的差异,主要在于Measure部分,在Layout与Draw部分,两者几乎没有什么太大的差别。RelativeLayout在进行onMeasure的时候,会子View进行两次Measure,而LinearLayout只需Measure一次。因为RelativeLayout允许两个组件在X和Y方向分别互相依赖,所以需

2017-04-25 22:34:25 744

原创 Android中的view全解析(四)

最后,我们来看一下View的事件分发机制。现在的智能手机都在保留键盘了,事件只会通过屏幕进行传递。最常用的,是onTouch,onClick,onLongClick三种。

2017-04-25 22:32:55 261

原创 Android中的View全解析(三)

View的内容大致分为一下四项:View的绘制原理,View的自定义属性,View的生命周期,View的事件分发机制再说一说View的生命周期。每个View的生命周期如下:通过view的构造方法构造View——>onFinishInflate方法完成构造——>onAttachedToWindow方法与Window进行连接——>onVisibilityChanged方

2017-04-25 22:30:21 396

原创 Android中的View全解析(二)

View的内容大致分为一下四项:View的绘制原理,View的自定义属性,View的生命周期,View的事件分发机制下面来讲一讲View的自定义属性。我们在自定义VIew的过程中,会为VIew分配许多自定义的属性,这时候,android命名空间已经无法满足我们的要求,我们就需要自己来设置命名空间。首先,我们在values文件夹中新建一个xml文件,在其中定义VIew的属

2017-04-25 22:27:58 293

原创 JAVA设计模式之单例模式

在应用程序中,有些资源是全局共享的,整个应用程序只需要一个就够了,多了反而会产生冲突,例如Windows系统中的回收站。于是,就有了单例模式,制造一个全局共享且唯一的对象,供整个应用程序使用。单例模式分两种,懒汉模式和饿汉模式。所谓懒汉模式,也是线程安全的,当有需要的时候,再去创建一个对象。public class PictureLoader { privat

2017-04-23 22:05:08 175

原创 Android 网络详解(二) HTTP协议

上一篇讲述了TCP协议与UDP协议,这一篇我们来讲一讲基于TCP协议的HTTP协议。HTTP协议位于应用层,建立在TCP协议之上,也属于面向连接的可靠传输。

2017-04-22 23:17:26 1684

原创 Android SharedPreferences,Sqlite,ContentProvider,File

Android长久保持数据的方式一般有如下四种:SharedPreference,Sqlite,ContentProvider,File其中,SharedPreference是以键值对的形式保存数据,存储到XML文件中;Sqlite是Android自带的轻量级数据库,以数据库的形式保存数据;ContentProvider基于Sqlite,为第三方提供数据;File是以文件形式自定义路径

2017-04-20 23:36:28 373 1

原创 Android 网络详解(一) TCP与UDP

HTTP协议在Android中的封装TCP协议在Android中的封装okHttp

2017-04-20 00:46:00 670

原创 Android apk的维护与升级

我们发布了一个新的应用后,由于发布的应用并不完美,可能会出现一些bug,而且为了与时俱进,添加一些新的功能,就需要开发人员对其进行维护与升级。那么,发布后的apk被下载到用户的手机上之后,开发人员该如何对其进行后续的操作呢?为了对旧应用进行维护与升级,首先我们要在用户的手机中找到旧应用。那么,我们该如何在Android系统中精确定位到我们的应用呢?Android的应用程序在Android系

2017-04-18 14:53:46 2695

原创 Android中的View全解析(一)

View的绘制,view的自定义,view的生命周期,view的事件分发

2017-04-17 23:15:34 475

原创 Android动画解析 View动画,帧动画与属性动画

Android的动画形式共分为三种,View动画,帧动画与属性动画。先对这三种动画做一个概述:View动画是一种渐进式动画,通过图像的平移、缩放、旋转和透明度等各种渐进式变换完成动画效果。帧动画是通过不停的切换图片实现动画效果。属性动画是不停的改变对象的属性来实现动画效果。

2017-04-17 23:13:07 259

原创 Android ListView与RecyclerView

Android中,最复杂的原生控件就是ListView,在support-v7中,Google提供了一种功能更加丰富的控件来代替ListView,那就是RecyclerView,本篇文章,就来解析一下ListView与RecyclerView。使用ListView控件需要为设置一个Adapter:public class listadapter extends BaseAdapter {

2017-04-17 21:42:58 315

原创 Java 锁机制

Java中,锁分为内部锁与显式锁两种类型。内部锁又分为对象锁与类锁。Java中,每个对象内部都有一个锁,可以通过synchronized方法来获取对象锁。同样的,每个类也有一个锁,可以直接在用synchronized来修饰方法和使用synchronize(this)来获取类锁。获取了类锁之后,其他被synchronized修饰的方法便无法被调用了。JDK5.0之后,Java中加入了

2017-04-17 20:22:18 234

转载 Android防止内存泄漏的八种方法

原文地址。 原文地址:http://www.jianshu.com/p/c5ac51d804fa在上一篇Android内存泄漏的八种可能(上)中,我们讨论了八种容易发生内存泄漏的代码。其中,尤其严重的是泄漏Activity对象,因为它占用了大量系统内存。不管内存泄漏的代码表现形式如何,其核心问题在于:在Activity生命周期之外仍持有其引用。幸运的是,一旦泄漏发生且被定位

2017-04-17 19:51:47 369

转载 Android内存泄漏的八种可能

原文Eight Ways Your Android App Can Leak Memory解决篇:Android防止内存泄漏的八种方法(下)。Java是垃圾回收语言的一种,其优点是开发者无需特意管理内存分配,降低了应用由于局部故障(segmentation fault)导致崩溃,同时防止未释放的内存把堆栈(heap)挤爆的可能,所以写出来的代码更为安全。不幸的是,在Java中仍存在很多容易导致

2017-04-17 19:45:49 300

原创 Android的垃圾回收与内存泄露

在谈内存泄露之前,我们先谈一谈android的垃圾回收机制。垃圾,即没有利用价值的东西。程序在运行时,需要对象来执行,这些对象都会占用内存空间。那么,当这些对象没有了利用价值,变成了垃圾,我们该如何对其进行回收?这里,可以参看我的另一篇文章  JVM虚拟机以及垃圾回收机制学习总结Android中使用的是Dalvik虚拟机,其使用的垃圾回收算法是Mark&Sweep,标记-清

2017-04-17 18:12:46 279

原创 JAVA的Map类:HashMap,LinkedHashMap,TreeMap,ConcurrentHashMap,WeakReferenceHashMap

首先是HashMap。HashMap实现算法是哈希表,实现的数据结构是链表与数组。初始化的参数有初始容量(initialCapacity)和装载因子(loadFactor)。哈希表通过某种算法,将对象进行分类,每一类即是一个桶,桶由数组实现,桶的数量也是数组的大小,就是初始容量。对于冲突,通过在每一个桶下挂一个链表来解决。装载因子表示哈希表的元素拥挤程度,其计算公式为:α= n/m。其中,n为元素

2017-04-17 17:44:13 3532

翻译 JVM虚拟机以及垃圾回收机制学习总结

JVM虚拟机的内存结构如下图所示方法区和堆由所有线程共享,其他区域都是线程私有的程序计数器(Program Counter Register)通过程序计数器来记录线程执行的jvm字节码的行数虚拟机栈(Java Stack)虚拟机栈也是线程私有的,每创建一个线程,虚拟机就会为这个线程创建一个虚拟机栈,虚拟机栈表示Java方法执行的内存模型,每调用一个方法,就会生成一个

2017-04-01 23:33:17 280

转载 Android异步消息处理机制完全解析,带你从源码的角度彻底理解

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9991569之前也是由于周末通宵看TI3比赛,一直没找到时间写博客,导致已经有好久没更新了。惭愧!后面还会恢复进度,尽量保证每周都写吧。这里也是先恭喜一下来自瑞典的Alliance战队夺得了TI3的冠军,希望明年中国战队能够虎起!开始进入正题,我们都知道,Android UI是线程不安

2017-04-01 23:04:14 156

程序设计练习题pdf

程序设计的练习题,练习程序设计的水平,支持的顶!

2011-08-13

空空如也

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

TA关注的人

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