自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FSC的专栏

职业程序员,业余厨子

  • 博客(22)
  • 收藏
  • 关注

原创 插件化中Activity的加载

插件化中Activity的加载前面一系列的文章中我们介绍了Android系统资源加载流程,最后引出插件化中资源加载的方法,完成了『资源动态加载』这一大块的介绍。本系列文章将重点介绍『代码动态加载』,拿最熟悉的Activity来开刀。基础知识Activity虽然是一个Java对象,可以使用ClassLoader加载出它的实体,但是由于Activity生命周期管理是由系统框架完成的,为了更好的分析如何加

2017-03-08 15:51:17 1360

原创 RxJava源码浅析

rxjava

2016-06-02 13:37:03 5186

原创 源码解析 Universal Image Loader

在大多数的项目中我们都会用到从网络加载图片显示的功能,在Google发布的Volley框架中也提供了类似的功能,但是个人还是比较习惯Universal Image Loader。在今天的文章中从源码角度简单的分析一下Universal Image Loader的实现流程。在这里就不去介绍Universal Image Loader简单的用法了,如果还没有用过的朋友可以直接看一下该框架中自带的D

2015-12-05 14:48:06 656

原创 java实现二分查找(迭代与递归)

二分查找是比较常用也是很高效的一种查找算法,其要求查找数据集的有序,采用顺序存储。在这里使用数组来简单的模拟数据集,并且要求数组升序元素排列,仅仅作为示例使用。如有错误欢迎批评指正。public class BinarySearch { /** * 二分查找迭代版本 * * @param src原数组从小到大排列 * @param target查找的目标元素位置 * @

2015-12-04 15:20:23 869

原创 源码分析Android中View的绘制流程

在开发中自定义控件的使用是比较频繁的,而自定义控件的基础之一就是View的测量以及绘制。这篇文章从源码的角度简要分析一下View的测量绘制。在了解View绘制流程之前,必须先要了解一个类,MeasureSpec,它是View的内部类,专门来进行对测量的数据和类型进行打包和解包,看一下源码就会清楚不少:public static class MeasureSpec { pri

2015-11-30 17:43:10 374

原创 源码解析HashMap

HashMap是在开发中使用频率较高的一个容器,其源码虽然不是很复杂但是还是有很多地方值得去挖掘和借鉴。今天就对HashMap的源码进行一个简要的分析~在这里我们还是从构造方法来入手:public HashMap(int initialCapacity) { this(initialCapacity, DEFAULT_LOAD_FACTOR); } public

2015-11-29 16:42:32 404

原创 源码解析EventBus

EventBus通过订阅者/发布者机制使得整个系统的耦合度更加的松散,在不使用Handler和AsyncTask的情况下也能实现对界面的更新,在这篇文章中主要对EventBus源码进行一个简要分析,如果还没有接触过这个开源库可以参考一下官方给出的实例代码~还是从我们平时使用的地方开始说起。在使用时我们的入口都是EventBus类的静态方法,那么最常接触的就是getDefault方法了,来看一下

2015-11-27 20:35:59 348

原创 源码解析Volley框架

Volley是Google在2013年I/O大会上发布的一个网络异步请求和图片加载框架。框架设计的非常好,可扩展性极强,很值得我们去学习。在这篇文章中重点去分析一下它的源码,Volley的使用在这里就不多加赘述了,如果有疑问可以参考实例文档。Volley的代码虽然不是很多,但是总有一种看多了代码记不住类的感觉,在这里先贴出一张类图关系,大家如果在后面感觉有找不清类关系的时候可以看一下,图片来源

2015-11-22 15:06:31 552

原创 Activity启动模式

据我们所知Activity有多种启动模式,各种启动模式启动所带来的行为是不同的,据官方文档所说,在manifest文件元素中可以设置如下几个属性:taskAffinitylaunchMode而在Intent中,有如下几个FLAG是比较常用的:FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_T

2015-11-20 20:54:06 415

原创 Activity生命周期详解

Activity是在开发中被用到最多的组件,其生命周期也是一个开发人员必须要了解的。下面的生命周期时从官方文档上翻译的版本:下面是官方文档对各个生命周期给予的解释:1.onCreate:这个方法在Activity第一次被创建的时候调用,在这里你应该进行一些常规的静态操作,像创建View,给List绑定数据等等。这个方法将会传递一个保存了之前状态的Bundle类的对象(如果你之前捕获

2015-11-19 22:11:11 377

原创 AsyncTask源码浅析

在开发的过程中我们如果想进行一些耗时的操作不能直接在UI线程中进行,除了使用Handler机制来进行异步消息处理,Android还给我们提供了一个非常方便的类AsyncTask来进行异步操作,在这篇文章中只对AsyncTask的源码进行一下梳理,如果对AsyncTask的使用还不太熟悉的可以先看一下API的使用方法。我们往往是定义一个类继承AsyncTask,然后创建出这个类的实例,而后调用e

2015-11-19 19:21:37 339

原创 从源码角度解析Android消息机制

在android项目的开发中我们经常会有需求在其他线程内更新UI界面,但是系统并不允许我们这么干。android的UI系统被设计成单线程访问模式,深究其原因,无非也是担心在多线程访问的情况下可能会导致界面更新的混乱,最终形成了这种界面只能在UI线程中进行更新的结局。但是android自身给我们提供了一些很方便的方法可以让我们在其他线程中容易的更新UI界面,其中最典型的有asynctask,hand

2015-11-13 23:05:51 454

原创 java泛型(二)--泛型的擦除

相信通过上一篇泛型相关的文章,大家对泛型有了一个大致的了解,现在我们来简单的看一个小例子:public class GenericEraseTest { public static void main(String[] args){ ArrayList stringList = new ArrayList(); ArrayList intList = new ArrayList();

2015-11-12 19:07:29 826

原创 源码浅析ThreadLocal类

ThreadLocal类的简单介绍在并发编程中我们经常有共享资源的需求,而通过用锁的形式来保证资源的安全在多个方法共同读写同一资源时很难得到保证。再者,若全局共享一份资源,根据访问者的不同来处理不同的逻辑也将变的很困难。这时我们的ThreadLocal类就可以大显身手了,它可以为使用相同变量的每个线程都创建不同的副本。说起来总是很抽象,我们先来看一段实例代码:public class Th

2015-11-10 16:16:02 462

原创 从源码角度解析Android事件分发机制

事件分发是Android中的一个重点也是一个难点,在自定义控件中很是常用。前后看了好多书和博客,感觉写的东西顺序都稍微有些不对,让刚接触的人看起来不是很好懂。在这里也是将我从不清楚到熟悉的过程写下来,希望对大家有所帮助,对自己也起到总结的作用。下面介绍几个方法,只要先有个印象就好,以后会慢慢解释:首先是dispatchTouchEvent(MotionEvent ev)

2015-11-09 20:21:51 528

原创 java泛型(一)--泛型的简单介绍以及常用情况

一.泛型的基本概念泛型是JavaSE5引入的一个新概念,实现了参数化类型的概念,并且使代码可以应用于多种类型。在日常编写程序时,我们都会很注重“泛化”,像多态其实就是一种类型的泛化,将子类的对象赋给父类的引用获得更好的泛化特性,将方法的参数类型设置为父类以获得泛化特性等等......  同样,为类声明出接口,而后对接口进行操作同样也可以获得很好的泛化特性。但是上述的方法都有一定的局限性,那

2015-11-08 22:32:46 656

原创 二叉树前序,中序,后序遍历迭代实现详解

二叉树的遍历迭代实现在上一篇文章中实现了二叉树,但是对于遍历仅仅是简单的用递归来进行了实现。在这篇文章中将给出迭代的实现版本以及分析过程。首先给出我们要分析的二叉树实例:前序遍历迭代版本的分析及实现:根据上面给出的二叉树进行前序遍历的分析,很容易得到正确的遍历顺序:A B D H I E J N O K C F G L M回顾我们手动得到前序遍历时的想法,我将遍历的

2015-11-08 13:05:06 5623

原创 java二叉树的实现

java二叉树的实现树在编程问题中有着很广泛的应用,而二叉树又是其中出现频次较高的一种(可以很方便的将普通的树转化为二叉树)。本文从无到有的实现了二叉树,如果对树的基础概念不太了解可以先看一下概念。接口的抽取公共树接口   TreeInterfacepackage com.fsc.mytree;/** * 所有树共有的公共接口 * @author f

2015-11-07 19:32:49 4620

原创 java实现链表操作

java实现简单链表线性表接口的抽象package com.fsc.mylinkedlist;/** * 线性表操作接口 * @author fsc * * @param */public interface ListInterface { /** * 向表尾添加元素 */ public boolean add(T newEntry); /** *

2015-11-07 14:35:49 406

原创 深入解析单例模式

一.单例模式的定义单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。二.单例模式的应用场景举例1. 在windows下的任务管理器实现。2.编写Web应用时配置对象的读取。3.网页的计数器。4.Java中的线程池集合类的设计。在应

2015-11-03 23:26:26 530

原创 论java快速排序

public class QuickSort { public static void main(String[] args) { QuickSort sorter = new QuickSort(); int src[] = { 10, 9,8,7,6,5,4,3}; sorter.quickSort(src, 0, src.length-1, 3); for (int

2015-04-13 21:43:19 357

原创 浅析java归并排序的递归算法和迭代算法

1.递归算法的实现递归算法相对来讲更好理解些,采用分治法进行实现,在拆分的元素个数小于三个的时候进行排序。这里first,last和mid都为数组元素的下标值。 private void mergeSort1(int[] src, int temp[], int first, int last) { if (last - first < 3) {// 拆分的元素个数小于等于3的时候进行排序

2015-04-12 19:23:18 643

空空如也

空空如也

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

TA关注的人

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