- 博客(130)
- 资源 (1)
- 问答 (4)
- 收藏
- 关注
原创 Android 重构历程(一)
1.今天开始重构的第一步,就发现程序有问题了,原来,android 在5.0以下整个应用的方法数不可以超过65535,解决的方法有两个,一个是动态加载apk,还有一个是分包。(1)首先解决白屏问题,当在android studio设置分包,如下配置在build gradle中:defaultConfig { multiDexEnabled = true}dexOpti
2016-04-05 12:36:09
625
转载 Java并发编程:volatile关键字解析
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模
2015-11-10 13:49:32
496
转载 Android GradientDrawable类的详解,设置activity的背景颜色渐变效果
看到这个例子的标题RoundRects,我的第一感觉是介绍RoundRectShape, 打开例子看了代码却是使用GradientDrawable来实现的。GradientDrawable 支持使用渐变色来绘制图形,通常可以用作Button或是背景图形。GradientDrawable允许指定绘制图形的种类:LINE,OVAL,RECTANGLE或是RING ,颜色渐变支持LINEAR
2015-10-12 15:45:49
566
转载 ELF Header 分析
这里先定义数据的表示形式Name Size AlignmentELF32_Addr 4B 4BELF32_Half 4B 2BELF32_Off 4B 4BELF32_Sword 4B 4BELF32_Word 4B 4Bunsigned char 1B
2015-07-09 13:32:18
690
转载 java并发编程-Executor框架
Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。他们的关系为: 并发编程的一种编程方式是把任务拆分为一些列的小任务,即Runnable,然后在提交给一个Executor执行,Execut
2015-05-18 15:14:15
525
转载 Android studio学习
一,Android Studio主要目录及文件简介build:构建目录,相当于Eclipse中默认Java工程的bin目录。libs:依赖包src: main java Java代码 res 资源文件 layout App布局及界面元素配置 menu App菜单配置
2015-04-28 09:45:39
574
转载 Android中Handler引起的内存泄露
在Android常用编程中,Handler在进行异步操作并处理返回结果时经常被使用。通常我们的代码会这样实现。?123456789public class SampleActivity extendsActivity { privatefinal Handler mLeakyHandler
2015-04-03 09:26:13
388
转载 Android 5.0 API新增和改进
API 级别:21Android 5.0 (LOLLIPOP) 为用户和应用开发者提供了新的功能。本文档介绍了最值得注意的新 API。有关新平台功能的扼要介绍,另请参阅 Android Lollipop 集锦。开始开发要构建 Android 5.0 版应用,您必须先下载 Android SDK,然后使用 SDK 管理器下载 Android 5.0 SDK 平台和
2015-04-01 16:04:51
774
转载 Future与FutureTask
API:Java代码 public interface Executor { void execute(Runnable command); } public interface ExecutorService extends Executor { Future submit(Callable task);
2015-03-31 14:57:41
419
转载 Callable与Future的介绍
Callable与Future 两功能是Java在后续版本中为了适应多并法才加入的,Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其他线程执行的任务。Callable的接口定义如下;public interface Callable { V call() throws Exception; }
2015-03-31 14:33:05
326
转载 Java-Collections Framework学习与总结-LinkedHashMap
前面总结了java.util.HashMap,了解了其内部由散列表实现,每个桶内是一个单向链表。那有没有双向链表的实现呢?双向链表的实现会具备什么特性呢?来看一下HashMap的一个子类——java.util.LinkedHashMap。 先读了一下源码的注释,首先LinkedHashMap中所有的Entry组成了一个双向链表,该链表定义了内部数据的迭代顺序,通常是按key插入的
2015-03-31 12:06:30
389
转载 Java-Collections Framework学习与总结-LinkedList
ArrayList的插入和删除元素的操作会花费线性时间,那么有没有插入和删除元素比较省时的集合呢,看下LinkedList这个实现。 老样子,先看看它实现了那些接口。Java代码 public class LinkedList extends AbstractSequentialList implements List, Deque,
2015-03-31 11:55:37
388
转载 Java-Collections Framework学习与总结-ArrayList
工作中经常会用到Java的集合类,最近不忙了,把相关知识总结一下,便于理解记忆。 打开java.util.ArrayList的源代码,首先映入眼帘的是@author Josh Bloch(相对于源码,本人更喜欢看故事 ,每次看到一份源码,先看看作者是谁。然后搜索一下作者的百科以及一些八卦。。。以及与作者相关的人的百科和一些八卦。。。以及。。。一上午就过去了 ),这家伙是谁?
2015-03-31 11:53:57
733
转载 Java-Collections Framework学习与总结-IdentityHashMap
这篇总结一下java.util.IdentityHashMap。从类名上可以猜到,这个类本质应该还是一个散列表,只是前面有Identity修饰,是一种特殊的HashMap。 简单的说,IdentityHashMap和HashMap的区别在于对key的比较。 HashMap中会调用key的hashCode方法,hashCode方法可能会根据具体情况进行重写。在比较
2015-03-31 11:53:10
377
转载 Java-Collections Framework学习与总结-HashSet和LinkedHashSet
本篇总结一下两个常用的集合类HashSet和LinkedHashSet。 它们都实现了相同接口java.util.Set。Set表示一种元素无序且不可重复的集合;之前总结过的java.util.List表示一种元素可重复且有序的集合。它们都扩展自java.util.Collection。Java代码 public interface Set extend
2015-03-31 11:52:33
403
转载 Java-Collections Framework学习与总结-WeakHashMap
总结这个类之前,首先看一下Java引用的相关知识。Java的引用分为四种:强引用、软引用、弱引用和虚引用。 强引用:就是常见的代码中的引用,如Object o = new Object();存在强引用的对象不会被垃圾收集器回收。所以我们会在一些代码中看到显示切断强引用,以便回收相关对象的情况。Java代码 public void clear() {
2015-03-31 11:51:32
383
转载 Java-Collections Framework学习与总结-EnumMap
看这个类之前,先看一下Java的枚举——Enum。 枚举是啥?编码时我们经常需要写int型常量,在某些情况下(不是全部),用枚举更合适。举个例子,在程序中需要两个常量表示性别(男、女)。可能刚开始(JDK1.5之前)我们会这样写:Java代码 /** * 男 */ public static final int MALE = 1; /**
2015-03-31 11:49:07
560
转载 Java-Collections Framework学习与总结-PriorityQueue
开发中有时会遇到这样的情况。要求某个调度器去调度一些任务,这些任务放在队列里。任务本身有优先级,调度器要按照优先级去调度队列里的任务,当然也会有新任务不断加入到队列中。 可以类比操作系统调度程序,操作系统要调度某个进程,简单的说会根据某种优先级进行调度(比如某些情况下,先执行时间较短的任务,保证短任务尽快结束。) 所以期望有这样一种数据结构,首先它是一个队列,可
2015-03-31 11:49:05
430
转载 Java-Collections Framework学习与总结-HashMap
开发中常常会用到这样一种数据结构,根据一个关键字,找到所需的信息。这个过程有点像查字典,拿到一个key,去字典表中查找对应的value。Java1.0版本提供了这样的类java.util.Dictionary(抽象类),基本上支持字典表的操作。后来引入了Map接口,更好的描述的这种数据结构。 一个Map中会包含多个K-V对儿,Key不能重复。一个Key最多只能映射到一个Value
2015-03-31 11:46:50
466
转载 Java-Collections Framework学习与总结-ArrayDeque
表、栈和队列是三种基本的数据结构,前面总结的ArrayList和LinkedList可以作为任意一种数据结构来使用,当然由于实现方式的不同,操作的效率也会不同。 这篇要看一下java.util.ArrayDeque。从命名上看,它是一个由数组实现的双端队列。还是先看一下它实现了哪些接口。Java代码 public class ArrayDeque ext
2015-03-31 11:44:13
376
转载 设计模式6大原则
设计模式六大原则(1):单一职责原则 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使
2015-02-28 15:29:23
765
1
转载 Java对象的强、软、弱和虚引用原理+结合ReferenceQueue对象构造Java对象的高速缓存器
1.Java对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再 把它捡回来使用就不可能了。 但
2014-12-08 13:24:25
352
1
转载 Android 内存溢出解决方案(OOM) 整理总结
在最近做的工程中发现加载的图片太多或图片过大时经常出现OOM问题,找网上资料也提供了很多方法,但自己感觉有点乱,特此,今天在不同型号的三款安卓手机上做了测试,因为有效果也有结果,今天小马就做个详细的总结,以供朋友们共同交流学习,也供自己以后在解决OOM问题上有所提高,提前讲下,片幅有点长,涉及的东西太多,大家耐心看,肯定有收获的,里面的很多东西小马也是学习参考网络资料使用的,先来简单讲下下:
2014-12-05 14:23:21
344
1
转载 深入理解ReferenceQueue GC finalize Reference
概述 1 先看一个对象finalize的顺序问题。 2 对象再生及finalize只能执行一次 3 SoftReference WeakReference 4 PhantomReference 5 ReferenceQueue Q&A 概述 先说一些基本的东西,GC只负责对象内存相关的清理,其他资源如文件句柄,db连接需要手动清理,以防止系统资源不足崩溃。System.gc(
2014-12-05 14:05:57
532
1
转载 Android消息队列模型——Thread,Handler,Looper,Massage Queue
Android系统的消息队列和消息循环都是针对具体线程的,一个线程可以存在(当然也可以不存在)一个消息队列(Message Queue)和一个消息循环(Looper)。Android中除了UI线程(主线程),创建的工作线程默认是没有消息循环和消息队列的。如果想让该线程具有消息队列和消息循环,并具有消息处理机制,就需要在线程中首先调用Looper.prepare()来创建消息队列,然后调用Loope
2014-12-05 11:48:00
392
1
转载 static class 静态类(Java)
一般情况下是不可以用static修饰类的。如果一定要用static修饰类的话,通常static修饰的是匿名内部类。在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定义、使用的时候会有种种的限制。所以在实际工作中用到的并不多。在开发过程中,内部类中使用的最多的还是非静态地成员内部类。不过在特定的情况下,静态内部类也
2014-12-04 15:16:11
339
1
转载 ThreadLocal-分析-总结
ThreadLocal类在Spring,Hibernate等框架中起到了很大的作用,对于其工作原理,很多网上的文章分析的不够彻底,甚至有些误解。 首先,为了解释ThreadLocal类的工作原理,必须同时介绍与其工作甚密的其他几个类(内部类)1.ThreadLocalMap2.Thread可能有人会觉得Thread与ThreadLocal有什么关系,其实真正的奥秘就在Thr
2014-12-04 11:29:03
293
1
转载 PriorityBlockingQueue优先级规则
PriorityBlockingQueue里面存储的对象必须是实现Comparable接口。队列通过这个接口的compare方法确定对象的priority。 规则是:当前和其他对象比较,如果compare方法返回负数,那么在队列里面的优先级就比较搞。下面的测试可以说明这个断言:查看打印结果,比较take出来的Entity和left的entity,比较他们的priority
2014-12-04 11:11:01
569
1
转载 ThreadPoolExecutor使用例子
public class Test1 { private ThreadPoolExecutor threadpool; /** * Param: * corePoolSize - 池中所保存的线程数,包括空闲线程。 * maximumPoolSize - 池中允许的最大线程数(采用LinkedBlockingQueue
2014-12-04 10:13:00
735
1
转载 Concurrent包常用方法简介
Table of Contents1 Executor接口2 ExecutorService接口3 ScheduledExecutorService接口4 Executors类5 结束1 Executor接口留给开发者自己实现的接口,一般情况下不需要再去实现。它只有一个方法void execute(Runnable command)
2014-12-04 09:17:27
500
1
转载 Android 4.0 Http缓存机制
Android早已经在4.0版本添加了缓存支持,以下内容是对Android官方文档的一个总结。(一) HttpResponseCache 类在Android 4.0 版本添加支持,支持 HttpURLConnection和 HttpsURLConnection,但不支持DefaultHttpClient和AndroidHttpClient。HttpResponseCache的好处
2014-12-03 17:11:22
739
1
转载 Android中StatFs获取系统/sdcard存储(剩余空间)大小
package com.orgcent.util;import java.io.File;import android.os.Environment;import android.os.StatFs;public class MemoryStatus { static final int ERROR = -1; /** * 外部存储是否可用 *
2014-12-03 15:47:16
691
1
转载 Java NIO 学习demo
我们都知道TCP是面向连接的传输层协议,一个socket必定会有绑定一个连接,在普通的BIO(阻塞式IO)中,需要有三次握手,然后一般的socket编程就是这样的形式。Socket服务器端流程如下:加载套接字->创建监听的套接字->绑定套接字->监听套接字->处理客户端相关请求。 Socket客户端同样需要先加载套接字,然后创建套接字,不过之后不用绑定和监听了,而是直接连接服务器,发送相关
2014-09-09 13:47:28
476
1
转载 Java NIO学习图文分析
最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。可以参考:http://baike.baidu.com/view/32726.htm )机制时,发现hadoop的RPC机制的实现主要用到了两个技术:动态代理(动态代理可以参考博客:http://weixiao
2014-09-09 11:24:18
432
1
转载 Java NIO 学习(四)
在上一篇文章中介绍了关于缓冲区的一些细节内容,现在终于可以进入NIO中最有意思的部分非阻塞I/O。通常在进行同步I/O操作时,如果读取数据,代码会阻塞直至有 可供读取的数据。同样,写入调用将会阻塞直至数据能够写入。传统的Server/Client模式会基于TPR(Thread per Request),服务器会为每个客户端请求建立一个线程,由该线程单独负责处理一个客户请求。这种模式带来的一个问题就
2014-09-09 11:17:01
514
1
转载 Java NIO 学习(三)
在上一篇文章中介绍了缓冲区内部对于状态变化的跟踪机制,而对于NIO中缓冲区来说,还有很多的内容值的学习,如缓冲区的分片与数据共享,只读缓冲区等。在本文中我们来看一下缓冲区一些更细节的内容。缓冲区的分配在前面的几个例子中,我们已经看过了,在创建一个缓冲区对象时,会调用静态方法allocate()来指定缓冲区的容量,其实调用 allocate()相当于创建了一个指定大小的数组,并把它包装为缓冲
2014-09-09 11:11:11
451
1
转载 Java NIO 学习(二)
在第一篇中,我们介绍了NIO中的两个核心对象:缓冲区和通道,在谈到缓冲区时,我们说缓冲区对象本质上是一个数组,但它其实是一个特殊的数组,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况,如果我们使用get()方法从缓冲区获取数据或者使用put()方法把数据写入缓冲区,都会引起缓冲区状态的变化。本文为NIO使用及原理分析的第二篇,将会分析NIO中的Buffer对象。在缓冲区中,最重要
2014-09-09 11:08:19
442
1
转载 Java NIO 学习(一)
最近由于工作关系要做一些Java方面的开发,其中最重要的一块就是Java NIO(New I/O),尽管很早以前了解过一些,但并没有认真去看过它的实现原理,也没有机会在工作中使用,这次也好重新研究一下,顺便写点东西,就当是自己学习 Java NIO的笔记了。本文为NIO使用及原理分析的第一篇,将会介绍NIO中几个重要的概念。在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统
2014-09-09 11:01:04
487
1
转载 静态内部类的使用
本讲内容:内部类Java语言允许在类中再定义类,这种在其它类内部定义的类就叫内部类。内部类又分为:常规内部类、局部内部类、匿名内部类和静态嵌套类四种。我们内部类的知识在Android手机开发中经常用到。一、常规内部类所谓常规内部类,或者说内部类,指的就是除去后面三种之外的内部类(这算什么解释。。。)先写一个最简单的内部类的例子,大家感觉一下:1pub
2014-09-05 09:35:48
704
1
转载 QQ SDK使用笔记(二)
1. 创建实例Tencent是SDK的功能入口,所有的接口调用都得通过Tencent进行调用。因此,调用SDK,首先需要创建一个Tencent实例,其代码如下:123456789101112131415161718192021@Override publi
2014-09-03 11:23:30
625
空空如也
android 多个文件,每个文件都使用断点下载,线程是否会太多
2013-11-22
请问下这段代码正确的原因,为什么父类可以调用抽象方法,执行的是子类重写的方法
2013-10-05
如何读取AHCI中HBA Memory Registers中的值吗
2013-09-16
请问一下有关httpclient一个问题
2013-08-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人