自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

天行九歌

Time to waste, not reduce efficiency

  • 博客(16)
  • 资源 (1)
  • 收藏
  • 关注

转载 FastJson解析

本篇接下来的内容是基于FastJSON 1.1.40,着重讲述其序列化、反序列化实现,最后分析FastJSON为何如此“fast”的原因。序列化所谓序列化,就是将java各种对象转化为json串。不多说,先上图。 序列化入口平常我们经常用到的是JSON.toJSONString()这个静态方法来实现序列化。其实JSON是一个抽象类,该类实现了JSONAware(转为json串)和JSONStr

2016-05-17 15:24:43 2150

原创 listview异步加载图片乱序解决方案

-控制异步任务执行的频率,滑动时停止加载图片,等列表停下来后再加载,可以在onScrollListener的onScrollStateChanged方法里设置判断条件 -给view设置tag,view.setTag(url) -使用NetworkImageView

2016-05-17 01:20:02 551

原创 Android的Window

分类-应用Window,对应于一个activity -子Window,如Dialog(不能采用ApplicationContext) -系统Window,如Toast和系统状态栏 WindowManager是外界访问Window的入口,Window的具体实现位于WindowManagerService中,WindowManager和WindowManagerService的交互是一个IPC过程

2016-05-16 23:32:24 345

原创 EventBus3.0源码分析

1.简介想必每个入了门的Android开发者都多少对EventBus有过了解,EventBus是一个Android事件发布/订阅框架,通过解耦发布者和订阅者简化 Android 事件传递。EventBus使用简单,并将事件发布和订阅充分解耦,从而使代码更简洁。一直以来很受开发者的欢迎,截止到目前EventBus的安装量已经超过一亿次。足以看出EventBus有多么的优秀。目前网上已经有不少优秀的Ev

2016-05-15 16:00:04 739

原创 ButterKnife框架原理和使用

大部分Android开发应该都知道@JakeWharton 大神的ButterKnife注解库,使用这个库我们可以不用写很多无聊的findViewById()和setOnClickListener()等代码 ButterKnife项目的主页在这里:http://jakewharton.github.io/butterknife/ 简单介绍一下使用方法:public class ExampleAct

2016-05-15 14:04:05 4142

原创 Android异步消息处理源码解析

概述Android异步事件处理有很多方式,常用的有Handler的send(message)系列方法,post(runnable)系列方法,view.post(runnable)方法,runOnUiThread方法,AsyncTask以及EventBus。前面几种都是基于Handler机制,AsyncTask基于handler和线程池的封装,EventBus是基于发布者和订阅者的库,主要可以代替ha

2016-05-14 01:47:21 545

原创 StringBuilder和StringBuffer源码浅析

首先我们来看两个类的继承体系:public final class StringBuilder extends AbstractStringBuilder implements Appendable, CharSequence, Serializable;public final class StringBuffer extends AbstractStringBuilder imp

2016-05-13 00:53:22 716

原创 Android事件分发源码分析

概述点击事件是由用户的触摸行为所产生的,它通过硬件来捕获,然后点击事件会交给WMS来处理。activity的onresume()方法中,ViewRootImpl会被创建,会将decorview添加到window中.当有点击事件时,ViewRootImpl把点击事件传递给DecorView的dispatchTouchEvent方法,DecorView是phonewindow内部类,phonewindo

2016-05-10 02:31:23 1660

原创 PID,UID,sharedUserId以及Android开启多进程模式

linux下的UID是系统用户名的意思,Android系统修改了linux 的UID的含义:每个APP对应一个UID。通过设置ShareUID,拥有同一个ShareUID并且签名相同的两个APP可以跑在同一个进程中;PID是进程id的意思,一个UID可以对应多个PID包名和签名: 包名不一致:系统会认为是个新的软件,这就不算升级了 包名一致,签名不一致:系统会提示先卸载之前安装的版本,才能继续

2016-05-06 20:37:05 3282

原创 常用查找和排序

查找:二分查找,顺序查找,插值查找二分查找:输入数组有序;O(logN)顺序查找:数组无序;O(N)插值查找:有时会更快,但实用性差,(每次访问所需时间更多,数组在磁盘上而不是内存中;这些数据不仅进行了排序还必须是相当均匀的分布)O(loglogN)排序:插入排序,希尔排序,归并排序,快速排序插入排序:适用于少量输入,如果处理大量数据就很费时(O(N2),O(N)(预排序)),最坏O(N2

2016-05-03 16:52:37 922

原创 单例模式,工厂模式,代理模式汇总

1.单例模式: 饿汉式 (可用) public class Demo{ private static Demo demo = new Demo(); private Demo(){ } public static Demo getInstance(){ return demo; } } 懒汉式双锁(不可用) public class Demo{ privat

2016-05-03 16:17:18 7129

原创 Java集合

Java集合:Collection(List,Set,Queue);Map;Iterator(依附于Collection对象,主要用于遍历Collection集合中的元素)Set:HashSet,LinkedHashSet,TreeSet,EnumSet(都是线程不安全的)HashSet:除了排序外都比TreeSet要好,默认大小是16LinkedHashSet:HashSet的子类,使用链表维

2016-05-03 15:54:06 575

原创 Java多线程

1多线程的优势:进程间不能共享内存,而线程间很容易,创建线程的代价比较小,java语言内置了多线程功能(一个浏览器同时下载多张图片) 1) 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 2) 线程的划分尺度小于进程,使得多线程程序的并发性高。 3) 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 4) 线程在执行过程中与进程还是有

2016-05-03 15:29:01 559

原创 Java类加载器与反射

一个命令对应一个进程 当我们启动一个Java程序,即启动一个main方法时,都将启动一个Java虚拟机进程,不管这个进程有多么复杂。而不同的JVM进程之间是不会相互影响的。这也就是为什么说,Java程序只有一个入口——main方法,让虚拟机调用。而两个mian方法,对应的是2个JVM进程,启动的是两个不同的类加载器,操作的实际上是不同的类。故而不会互相影响。类加载 当我们使用一个类,如果这个类还未

2016-05-03 15:16:11 3140 1

原创 Android自定义View

view的显示过程:ActivityThread中,activity对象被创建后,会将DecorView添加到window中(控制DecorView的外观和行为策略,有唯一的实现类PhoneView)同时会创建ViewRoot对象将window和view关联起来,ViewRoot对象的performTraversal方法完成顶级View(decorview)的mesure,layout,draw方法

2016-05-03 15:11:36 617

原创 Win7下安装Ubuntu16.04以及Ubuntu配置Android环境

Ubuntu配置Android环境1.配置Java环境1下载JDK1.8,链接(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)2.进入文件根目录,输入命令行tar zxf +gz压缩包名进行解压3解压完毕后输入命令sudo gedit /etc/profile 对profi

2016-05-02 00:05:44 2683

Java泛型的擦除与补偿

Java泛型擦除后的常用补偿方法

2016-04-27

空空如也

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

TA关注的人

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