<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hsstc的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hsstc</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hsstc]]></copyright><item><title><![CDATA[Android 重构历程（一）]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/51063794</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/51063794</guid><author>hsstc</author><pubDate>Tue, 05 Apr 2016 12:36:09 +0800</pubDate><description><![CDATA[1.今天开始重构的第一步，就发现程序有问题了，原来，android 在5.0以下整个应用的方法数不可以超过65535，解决的方法有两个，一个是动态加载apk，还有一个是分包。
（1）首先解决白屏问题，当在android studio设置分包，如下配置
在build gradle中：

defaultConfig {
    multiDexEnabled = true
}

dexOpti]]></description><category></category></item><item><title><![CDATA[Java并发编程：volatile关键字解析]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/49758695</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/49758695</guid><author>hsstc</author><pubDate>Tue, 10 Nov 2015 13:49:32 +0800</pubDate><description><![CDATA[Java并发编程：volatile关键字解析
　　 volatile这个关键字可能很多朋友都听说过，或许也都用过。在Java 5之前，它是一个备受争议的关键字，因为在程序中使用它往往会导致出人意料的结果。在Java 5之后，volatile关键字才得以重获生机。
　　volatile关键字虽然从字面上理解起来比较简单，但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模]]></description><category></category></item><item><title><![CDATA[Android GradientDrawable类的详解，设置activity的背景颜色渐变效果]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/49074669</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/49074669</guid><author>hsstc</author><pubDate>Mon, 12 Oct 2015 15:45:49 +0800</pubDate><description><![CDATA[看到这个例子的标题RoundRects，我的第一感觉是介绍RoundRectShape, 打开例子看了代码却是使用GradientDrawable来实现的。
GradientDrawable 支持使用渐变色来绘制图形，通常可以用作Button或是背景图形。
GradientDrawable允许指定绘制图形的种类：LINE，OVAL，RECTANGLE或是RING
 ，颜色渐变支持LINEAR]]></description><category></category></item><item><title><![CDATA[ELF Header 分析]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/46815645</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/46815645</guid><author>hsstc</author><pubDate>Thu, 09 Jul 2015 13:32:18 +0800</pubDate><description><![CDATA[这里先定义数据的表示形式
Name         Size    Alignment
ELF32_Addr    4B       4B
ELF32_Half    4B       2B
ELF32_Off     4B       4B
ELF32_Sword   4B       4B
ELF32_Word    4B       4B
unsigned char 1B   ]]></description><category></category></item><item><title><![CDATA[java并发编程-Executor框架]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/45822775</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/45822775</guid><author>hsstc</author><pubDate>Mon, 18 May 2015 15:14:15 +0800</pubDate><description><![CDATA[Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类，其中包括线程池，Executor，Executors，ExecutorService，CompletionService，Future，Callable等。他们的关系为：
 

并发编程的一种编程方式是把任务拆分为一些列的小任务，即Runnable，然后在提交给一个Executor执行，Execut]]></description><category></category></item><item><title><![CDATA[Android studio学习]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/45331485</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/45331485</guid><author>hsstc</author><pubDate>Tue, 28 Apr 2015 09:45:39 +0800</pubDate><description><![CDATA[一，Android Studio主要目录及文件简介
build：构建目录，相当于Eclipse中默认Java工程的bin目录。
libs：依赖包
src：
    main
        java Java代码
        res 资源文件
            layout App布局及界面元素配置
            menu App菜单配置]]></description><category></category></item><item><title><![CDATA[Android中Handler引起的内存泄露]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/44851041</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/44851041</guid><author>hsstc</author><pubDate>Fri, 03 Apr 2015 09:26:13 +0800</pubDate><description><![CDATA[在Android常用编程中，Handler在进行异步操作并处理返回结果时经常被使用。通常我们的代码会这样实现。



?




1
2
3
4
5
6
7
8
9



public 
class SampleActivity extends
Activity {
 
  private
final Handler mLeakyHandler ]]></description><category></category></item><item><title><![CDATA[Android 5.0 API新增和改进]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/44808405</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/44808405</guid><author>hsstc</author><pubDate>Wed, 01 Apr 2015 16:04:51 +0800</pubDate><description><![CDATA[API 级别：21

Android 5.0 (LOLLIPOP) 为用户和应用开发者提供了新的功能。本文档介绍了最值得注意的新 API。

有关新平台功能的扼要介绍，另请参阅 Android Lollipop 集锦。

开始开发

要构建 Android 5.0 版应用，您必须先下载 Android SDK，然后使用 SDK
 管理器下载 Android 5.0 SDK 平台和]]></description><category></category></item><item><title><![CDATA[Future与FutureTask]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/44779663</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/44779663</guid><author>hsstc</author><pubDate>Tue, 31 Mar 2015 14:57:41 +0800</pubDate><description><![CDATA[API：


Java代码  


public interface Executor {          void execute(Runnable command);    }     public interface ExecutorService extends Executor {             Future submit(Callable task);     ]]></description><category></category></item><item><title><![CDATA[Callable与Future的介绍]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/44779251</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/44779251</guid><author>hsstc</author><pubDate>Tue, 31 Mar 2015 14:33:05 +0800</pubDate><description><![CDATA[Callable与
Future 两功能是Java在后续版本中为了适应多并法才加入的，Callable是类似于Runnable的接口，实现Callable接口的类和实现Runnable的类都是可被其他线程执行的任务。
Callable的接口定义如下；
public interface Callable { 
      V   call()   throws Exception; 
} ]]></description><category></category></item><item><title><![CDATA[Java-Collections Framework学习与总结-LinkedHashMap]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/44777469</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/44777469</guid><author>hsstc</author><pubDate>Tue, 31 Mar 2015 12:06:30 +0800</pubDate><description><![CDATA[前面总结了java.util.HashMap，了解了其内部由散列表实现，每个桶内是一个单向链表。那有没有双向链表的实现呢？双向链表的实现会具备什么特性呢？来看一下HashMap的一个子类——java.util.LinkedHashMap。
        先读了一下源码的注释，首先LinkedHashMap中所有的Entry组成了一个双向链表，该链表定义了内部数据的迭代顺序，通常是按key插入的]]></description><category></category></item><item><title><![CDATA[Java-Collections Framework学习与总结-LinkedList]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/44776951</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/44776951</guid><author>hsstc</author><pubDate>Tue, 31 Mar 2015 11:55:37 +0800</pubDate><description><![CDATA[ArrayList的插入和删除元素的操作会花费线性时间，那么有没有插入和删除元素比较省时的集合呢，看下LinkedList这个实现。
        老样子，先看看它实现了那些接口。


Java代码  


public class LinkedList      extends AbstractSequentialList      implements List, Deque,]]></description><category></category></item><item><title><![CDATA[Java-Collections Framework学习与总结-ArrayList]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/44776895</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/44776895</guid><author>hsstc</author><pubDate>Tue, 31 Mar 2015 11:53:57 +0800</pubDate><description><![CDATA[工作中经常会用到Java的集合类，最近不忙了，把相关知识总结一下，便于理解记忆。
        打开java.util.ArrayList的源代码，首先映入眼帘的是@author  Josh Bloch(相对于源码，本人更喜欢看故事 ，每次看到一份源码，先看看作者是谁。然后搜索一下作者的百科以及一些八卦。。。以及与作者相关的人的百科和一些八卦。。。以及。。。一上午就过去了
 )，这家伙是谁？]]></description><category></category></item><item><title><![CDATA[Java-Collections Framework学习与总结-IdentityHashMap]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/44776833</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/44776833</guid><author>hsstc</author><pubDate>Tue, 31 Mar 2015 11:53:10 +0800</pubDate><description><![CDATA[这篇总结一下java.util.IdentityHashMap。从类名上可以猜到，这个类本质应该还是一个散列表，只是前面有Identity修饰，是一种特殊的HashMap。
        简单的说，IdentityHashMap和HashMap的区别在于对key的比较。
        HashMap中会调用key的hashCode方法，hashCode方法可能会根据具体情况进行重写。在比较]]></description><category></category></item><item><title><![CDATA[Java-Collections Framework学习与总结-HashSet和LinkedHashSet]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/44776793</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/44776793</guid><author>hsstc</author><pubDate>Tue, 31 Mar 2015 11:52:33 +0800</pubDate><description><![CDATA[本篇总结一下两个常用的集合类HashSet和LinkedHashSet。
        它们都实现了相同接口java.util.Set。Set表示一种元素无序且不可重复的集合；之前总结过的java.util.List表示一种元素可重复且有序的集合。它们都扩展自java.util.Collection。


Java代码  


public interface Set extend]]></description><category></category></item><item><title><![CDATA[Java-Collections Framework学习与总结-WeakHashMap]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/44776745</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/44776745</guid><author>hsstc</author><pubDate>Tue, 31 Mar 2015 11:51:32 +0800</pubDate><description><![CDATA[总结这个类之前，首先看一下Java引用的相关知识。Java的引用分为四种：强引用、软引用、弱引用和虚引用。

        强引用：就是常见的代码中的引用，如Object o = new Object();存在强引用的对象不会被垃圾收集器回收。所以我们会在一些代码中看到显示切断强引用，以便回收相关对象的情况。


Java代码  


public void clear() { ]]></description><category></category></item><item><title><![CDATA[Java-Collections Framework学习与总结-EnumMap]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/44776687</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/44776687</guid><author>hsstc</author><pubDate>Tue, 31 Mar 2015 11:49:07 +0800</pubDate><description><![CDATA[看这个类之前，先看一下Java的枚举——Enum。
        枚举是啥？编码时我们经常需要写int型常量，在某些情况下(不是全部)，用枚举更合适。举个例子，在程序中需要两个常量表示性别(男、女)。可能刚开始(JDK1.5之前)我们会这样写：


Java代码  


/**  * 男  */  public static final int MALE = 1;    /**  ]]></description><category></category></item><item><title><![CDATA[Java-Collections Framework学习与总结-PriorityQueue]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/44776693</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/44776693</guid><author>hsstc</author><pubDate>Tue, 31 Mar 2015 11:49:05 +0800</pubDate><description><![CDATA[开发中有时会遇到这样的情况。要求某个调度器去调度一些任务，这些任务放在队列里。任务本身有优先级，调度器要按照优先级去调度队列里的任务，当然也会有新任务不断加入到队列中。
        可以类比操作系统调度程序，操作系统要调度某个进程，简单的说会根据某种优先级进行调度(比如某些情况下，先执行时间较短的任务，保证短任务尽快结束。)
        所以期望有这样一种数据结构，首先它是一个队列，可]]></description><category></category></item><item><title><![CDATA[Java-Collections Framework学习与总结-HashMap]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/44776665</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/44776665</guid><author>hsstc</author><pubDate>Tue, 31 Mar 2015 11:46:50 +0800</pubDate><description><![CDATA[开发中常常会用到这样一种数据结构，根据一个关键字，找到所需的信息。这个过程有点像查字典，拿到一个key，去字典表中查找对应的value。Java1.0版本提供了这样的类java.util.Dictionary(抽象类)，基本上支持字典表的操作。后来引入了Map接口，更好的描述的这种数据结构。
        一个Map中会包含多个K-V对儿，Key不能重复。一个Key最多只能映射到一个Value]]></description><category></category></item><item><title><![CDATA[Java-Collections Framework学习与总结-ArrayDeque]]></title><link>https://blog.youkuaiyun.com/hsstc/article/details/44776635</link><guid>https://blog.youkuaiyun.com/hsstc/article/details/44776635</guid><author>hsstc</author><pubDate>Tue, 31 Mar 2015 11:44:13 +0800</pubDate><description><![CDATA[表、栈和队列是三种基本的数据结构，前面总结的ArrayList和LinkedList可以作为任意一种数据结构来使用，当然由于实现方式的不同，操作的效率也会不同。
        这篇要看一下java.util.ArrayDeque。从命名上看，它是一个由数组实现的双端队列。还是先看一下它实现了哪些接口。


Java代码  


public class ArrayDeque ext]]></description><category></category></item></channel></rss>