- 博客(79)
- 资源 (1203)
- 收藏
- 关注
原创 常用Git命令大全思维导图
开发中代码管理少不了使用Git,对于初学者来说Git命令的学习是一个难过的坎,为了帮助大家记忆并快速掌握Git的基本使用,我把常用的Git命令整理成思维导图,分享给大家。
2016-06-13 14:10:12 17880 12
原创 标准的Java编码规范手册
编码规范体现出一个开发者的基本素质,良好的编码规范可以提高团队编码的效率,避免很多不必要的问题。今天分享一个标准的Java编码规范给大家,希望对于大家今后的开发工作带来帮助。编码规范的意义 在项目开发维护中,编码规范作为开发规范的一个组成部分,是十分重要和必须的,它不仅仅是为了提高开发效率,也有利于降低后期维护开发的成本。
2016-05-10 17:21:53 18783 8
原创 移动开发必知必会的六大数据统计平台(入门篇)
数据统计对于各位移动开发的童鞋并不陌生,小到Bug统计,大到数据分析,一款性能稳定、用户体验良好的APP一定离不开数据统计的支持,为此我将给大家科普一下常用的六大数据统计平台。
2017-05-19 17:07:56 13626
原创 Android开启手电筒功能(完美适配Android4x,5x,6x)
最近在研究开启安卓手电筒功能,总结了下Android4x、5x、6x的手电筒开启方法,写成公共方法,分享给大家。
2016-11-18 12:01:53 18047 6
原创 Android研发安全3-Service安全
在Android系统开发中,Service是一个重要的组成部分。如果现在某些程序中的某部分操作是很耗时的,那么可以将这些程序定义在Service中,这样就可以在后台运行,也可以在不显示界面的形式下运行,即,Service实际上就是相当于一个没有图形界面的Activity程序,而且当用户执行某些操作需要进行跨进程访问的时候也可以使用Service来完成。Service的分类本地服务(Local)
2016-10-30 18:05:06 7579 5
原创 Android屏幕适配
(一)背景知识为什么需要屏幕适配 Android是一个开放的系统,全球各种用户、手机企业、OEM厂商都可以对Android系统进行定制,这就导致了Android系统的碎片化问题。其中对于开发者来讲工作中最常碰到的就是屏幕碎片化,那么如何解决屏幕碎片化问题,实现最优的屏幕适配,是每个Android开发者所要面临的问题,这里我整合CSDN博主赵凯强的关于Android屏幕适配的博文的知识,写成博客
2016-10-26 16:19:48 7653 2
原创 Android6.0触摸事件分发机制解读
本篇博文是Android触摸事件分发机制系列博文的第一篇,带领大家从全局掌握Android触摸事件分发机制。特别声明的是,本源码解读是基于最新的Android6.0版本。为什么要解读触摸事件分发机制1.掌握View事件分发机制 2.为解决View滑动冲突提供理论支持 3.了解Android最新源码改动Touch触摸事件 在Android中Touch触摸事件主要包括点击(onClick)
2016-10-24 18:00:17 10904 2
原创 Android6.0源码解读之ViewGroup点击事件分发机制
本篇博文是Android点击事件分发机制系列博文的第三篇,主要是从解读ViewGroup类的源码入手,根据源码理清ViewGroup点击事件分发原理,明白ViewGroup和View点击事件分发的关系,并掌握ViewGroup点击事件分法机制。特别声明的是,本源码解读是基于最新的Android6.0版本。ViewGroup事件分发中的三个重要方法的源码解析 关于ViewGroup事件分发,我们
2016-10-24 16:01:48 6132
原创 Android6.0源码解读之Activity点击事件分发机制
本篇博文是Android点击事件分发机制系列博文的第四篇,主要是从解读Activity类的源码入手,根据源码理清Activity点击事件分发原理,并掌握Activity点击事件分法机制。特别声明的是,本源码解读是基于最新的Android6.0版本。 Android中通常点击事件用MotionEvent来表示,当一个点击操作发生时,事件最先传递给当前的Activity,由Activity的d
2016-10-23 22:53:38 6612
原创 Android6.0源码解读之View点击事件分发机制
本篇博文是Android点击事件分发机制系列博文的第二篇,主要是从解读View类的源码入手,根据源码理清View点击事件分发原理,并掌握View点击事件分法机制。特别声明的是,本源码解读是基于最新的Android6.0版本。各位童鞋可以参考下面链接进行系统学习 (一)Android6.0触摸事件分发机制解读(二)Android6.0源码解读之View点击事件分发机制(三)Android6.0源码解
2016-10-23 21:22:22 8143 2
原创 Android研发安全2-Activity组件安全(下)
这篇文章是Android研发安全之Activity组件安全第二篇,本文将给大家分享Activity界面劫持方面的预防知识。什么是Activity劫持 简单的说就是APP正常的Activity界面被恶意攻击者替换上仿冒的恶意Activity界面进行攻击和非法用途。界面劫持攻击通常难被识别出来,其造成的后果不仅会给用户带来严重损失,更是移动应用开发者们的恶梦。举个例子来说,当用户打开安卓手机
2016-10-20 13:53:00 9391 6
原创 Java垃圾回收手记
常用定义java垃圾回收 在空闲时间以不定时的方式进行垃圾回收,回收的是无任何引用的对象占据的内存空间而不是对象本身触发主GC(Garbage Collector)的条件 (1)当应用程序空闲时,即没有应用线程在运行时,GC会被调用。因为GC在优先级最低的线程中进行,所以当应用忙时,GC线程就不会被调用,但以下条件除外。 (2)Java堆内存不足时,GC会被调用。当应用线程在运
2016-10-19 18:02:42 5894 2
原创 自定义Android IOC框架
IOC-控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。 控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。这段百度对IOC框架的解释,对于Java开发者来讲最著名的IOC框架莫过于Spring,而
2016-10-18 17:13:34 4836 2
原创 细说Android框架设计三剑客MVC、MVP和MVVM
最近几年的移动端开发越来越火,功能越来越强大,处理业务越来越复杂,因此对系统扩展性的要求越来越高。而为了更好地进行移动端架构设计,我们最常用的就是MVC和MVP,今天本篇博客就和大家一起聊一聊这两种框架设计。MVC框架MVC的定义 MVC (Model-View-Controller):M是指逻辑模型,V是指视图模型,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以
2016-10-14 11:44:41 17646 12
原创 AndroidStudio设置package presentation
最近有小伙伴问我AndroidStudio中的项目package默认的布局方式是嵌套型包结构,如何改为平级型包结构,在此我给大家科普一下AndroidStudio的package presentation配置方法。首先,我们用AndroidStudio新疆项目,默认的包结构如下:我们点击项目根目录右上角的小齿轮按钮,然后勾选Flatten Packages选项即可。改为平级包结构。
2016-10-13 16:37:30 4078
原创 简单实现Android图片三级缓存机制
用户在使用我们的APP时,通常会重复浏览一些图片,这时如果每一次浏览都需要通过网络获取图片,那么将会非常流量。为了节省用户流量,提高图片加载效率,我们通常使用图片三级缓存策略,即通过网络、本地、内存三级缓存图片,来减少不必要的网络交互,避免浪费流量。 网上已经有很多讲述图片三级缓存的策略,这次我也来实现一次三级缓存,其中用到了LRU+SoftReference关于LRU算法,可以参考我之前
2016-10-12 16:35:01 16588 4
原创 Android自实现百分比布局
在开发中,组件布局是大家每日开发必须要面对的工作,对于Android来说提供五种常用布局,分别是:LinearLayout(线性布局)TableLayout(表格布局)RelativeLayout(相对布局)AbsoluteLayout(绝对布局)FrameLayout(框架布局) 但是,开发中如果可以按照百分比的方式进行界面布局,将会对我们的适配工作带来许多便利。前段时间,谷歌正
2016-10-11 20:17:48 2859
原创 Android应用进程防杀指南3-JobService
本篇博文,我将带领大家学习更高端的APP进行防杀技巧,该技巧除了能够应对卫士、管家的清杀以外,更能够在类似于某米、某为系统的清理内存软件清理下确保进程存活下来。它就是我们今天的主角JobShedulerService。通常在5.0之前,我们可以使用广播或者闹钟等方式让我们的进程防杀自启,而5.0以后的Android系统,我们就可以使用JobService
2016-10-10 12:28:39 13169 9
原创 Android应用进程防杀指南2-双进程守护
假设我们的APP中开启了两个Service,分别是A和B,那么:如果A守护B,则B挂掉的同时,A就应该把B启动起来,反之亦然,也就是说A和B应该是互相守护,无论谁被杀掉,对方就把它拉起来。
2016-10-09 17:53:22 24010 22
原创 Android应用进程防杀指南1-常用套路
> 1.如果service正在调用onCreate,onStartCommand或者onDestory方法,那么用于当前service的进程则变为前台进程以避免被killed。> 2.如果当前service已经被启动(start),拥有它的进程则比那些用户可见的进程优先级低一些,但是比那些不可见的进程更重要,这就意味着service一般不会被killed.> 3.如果客户端已经连接到service
2016-10-09 17:00:08 36837
原创 LinkedHashMap最佳实践:LruCache
而谷歌大概从SDK21开始,提供LruCache这个工具类(此类在android-support-v4的包中提供) ,用于作为实现内存缓存技术的解决方案。这个类非常适合用来缓存图片,它的主要算法原理是把最近使用的对象用强引用存储在 LinkedHashMap 中,并且把最近最少使用的对象在缓存值达到预设定值之前从内存中移除。
2016-10-08 15:59:19 3315
原创 Android研发安全1-Activity组件安全(上)
- 谨慎处理接收的Intent以及其携带的信息- 当Activity返回数据时候需注意目标Activity是否有泄露信息的风险- 目标Activity十分明确时尽量使用显示启动- 谨慎处理Activity返回的数据,目的Activity返回的数据有可能是恶意应用伪造的- 验证目标Activity是否恶意app,以免受到Intent欺骗,可用hash签名验证- 尽可能的不发送敏感信息,应考虑到启动p
2016-10-08 11:20:18 8999 2
原创 线性表数据结构解读(六)链式哈希表结构-LinkedHashMap
上一篇文章我和大家一起解读了HashMap的原理源码,各位童鞋可以点击链接查看线性表数据结构解读(五)哈希表结构-HashMap 这次我们一起来看一下LinkedHashMap,它保留插入的顺序,如果需要输出的顺序和输入时的相同,那么就选用LinkedHashMap。就LinkedHashMap而言,它继承了HashMap,底层使用哈希表与双向链表来保存所有元素。其基本操作与父类HashM
2016-10-08 11:00:11 3670
原创 线性表数据结构解读(五)哈希表结构-HashMap
前面的博客中,我给大家分析过数组和链表两种线性表数据结构。数组存储区间连续,查找方便,但是插入和删除效率低下;链表存储区间离散,插入删除方便,但是查找困难。大家肯定会问,有没有一种结构,既能做到查找便捷,又能做到插入删除方便呢?答案就是我们今天要跟大家说的主角:哈希表。 我们先来看一下哈希表的百度定义 散列表(Hash table,也叫哈希表),是根据关键码值(Keyvalue)而直接
2016-10-07 19:46:22 3619
原创 HashMap和HashTable的区别
HashMap和HashTable,这二者的区别经常被别人问起,今天在此总结一下。(一)继承的历史不同public class Hashtable extends Dictionary implements Mappublic class HashMap extends AbstractMap implements Map Hashtable是继承自Dictionary类的,而HashMa
2016-10-07 11:46:23 6244 1
原创 Android增量更新流程讲解
为什么需要增量更新:节省流量,节省流量,节省流量,重要的事情说三遍! 增量更新不仅可以让用户在客户端实现省流量更新,更重要的是增量更新还可以实现服务器端流量的节省,为网站节省成本。增量更新的原理 服务端将应用的旧版本Apk与新版本Apk做差分处理,得到新版APK更新部分的差分包,例如旧版本的APK有6M,新版的有10M,更新的部分则可能只有4M左右(这4M文件除了包含更新内容以外,还包含
2016-10-06 17:24:47 6446 6
原创 详解Android插件化开发-资源访问
动态加载技术(也叫插件化技术),当项目越来越庞大的时候,我们通过插件化开发不仅可以减轻应用的内存和CPU占用,还可以实现热插拔,即在不发布新版本的情况下更新某些模块。 通常我们把安卓资源文件制作成插件的形式,无外乎有一下几种: zip、jar、dex、APK(未安装APK、安装APK) 对于用户来讲未安装的APK才是用户所需要的,不安装、不重启,无声无息的加载资源文件,这正是我
2016-10-05 15:32:51 7326 2
原创 DexClassLoader和PathClassLoader的区别
在使用Java虚拟机时,我们经常自定义继承自ClassLoader的类加载器。然后通过defineClass方法来从一个二进制流中加载Class。而在Android中我们无法这么使用,Android中ClassLoader的defineClass方法具体是调用VMClassLoader的defineClass本地静态方法。而这个本地方法什么都没做,只是抛出了一个“UnsupportedOperati
2016-10-05 10:53:00 15184 2
原创 getApplication()和getApplicationContext()区别
相同二者使用结果相同,我们写个代码分别打印二者返回结果,发现两个方法获取的是同一个对象。
2016-10-04 18:22:02 12540
原创 Android热修复(Hot Fix)案例全剖析(二)
在上一篇文章中,我们已经生成了用于修复Bug的classes2.dex补丁包,通常我们会在APP后台子线程中自动调用热修复接口,并下载修复补丁,这里为了方便演示,我们把已经下载好的dex补丁文件放到SD卡中,然后将下载的修复补丁拷贝到应用的内部缓存目录中cacheDir,之所以这样做是因为下一步我们需要使用类加载器ClassLoader在内部缓存中加载classese.dex包。
2016-10-03 21:32:17 3410 5
原创 Android热修复(Hot Fix)案例全剖析(一)
说到热修复技术,我们不得不先谈一下什么是冷修复。冷修复 当我们发现上线的应用APK存在Bug,我们通过发布新的应用APK,去替换旧的应用APK,以达到解决Bug的目的,但是这样做存在很大的缺点,需要用户二次下载APK,浪费用户流量,费时、费力、用户体验差。热修复 当我们发现上线的应用APK存在Bug,我们在用户使用过程中就把Bug修复了,优点是其过程中用户不需要把应用程序停止、卸载、重新
2016-10-02 16:25:38 4921 2
原创 彻底掌握Android多分包技术MultiDex-用Ant和Gradle分别构建(二)
在上一篇博客中,我给大家详细介绍了ant实现Android多分包技术,具体可以点击查看:彻底掌握Android多分包技术MultiDex-用Ant和Gradle分别构建(一);接下来的这篇博客我将带领大家一起学习使用Gradle构建Android项目多分包。增加多分包配置 说到Gradle,就不得不提到使用AndroidStudio进行开发,首先看一下在AndroidStudio中我们整个项目
2016-10-01 16:41:10 7601 3
原创 ant构建异常UNEXPECTED TOP-LEVEL EXCEPTION com.android.dx.cf.iface.ParseException解决
UNEXPECTED TOP-LEVEL EXCEPTION[exec] com.android.dx.cf.iface.ParseException: bad class file magic(cafebabe) or version (0034.0000)
2016-09-30 21:19:02 3932
原创 彻底掌握Android多分包技术MultiDex-用Ant和Gradle分别构建(一)
Andrid多分包技术在大型项目编译方面起着至关重要的作用,作为一个高级开发者我们有必要掌握此技能,现在我带领大家统一学习此项技能,并教会大家分别使用Ant和Gradle构建。什么是Dex Dex是Dalvik VM executes的全称,即Android Dalvik执行程序。在Android中单个Dex文件所能包含的最大方法数为65536,这包含Android FrameWork、依赖的
2016-09-30 18:07:09 13367 8
原创 线性表数据结构解读(四)队列结构Queue
在上一篇文章中,我们详细介绍了栈结构,并结合Stack源码进行了分析,相关文章大家可以点击这里回看我的博客:线性表数据结构解读(三)栈结构Stack队列的定义 队列是一种插入和删除分别在两端进行操作的线性表,一端进行插入操作,一端进行删除操作。队列的特点 我们把进入队列端称为队列的对尾,用rear表示;离开队列的一端成为队列的头,用front表示,即在队列的头进行删除操作。满队列
2016-09-28 22:24:51 2404
原创 线性表数据结构解读(三)栈结构Stack
在上一篇文章中,我们详细介绍了链式存储结构,并结合LinkedList源码进行了分析,相关文章大家可以点击这里回看我的博客:线性表数据结构解读(二)链式存储结构LinkedList栈的定义 栈是一种特殊的线性表,其全部操作都被限制在表的固定一端进行,而且构成栈的元素必须是同一数据类型。栈的特点 允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称
2016-09-28 13:32:02 3229 2
原创 System.arraycopy()从指定源数组中复制一个数组
System类提供了一个arraycopy()方法public static void arraycopy(Object src, int srcPos, Object dest, int destPos,
2016-09-27 18:44:25 8380
原创 线性表数据结构解读(二)链式存储结构LinkedList
在上一篇文章中,我们详细介绍了线性表数据结构的原理以及顺序存储结构,并结合ArrayList源码进行了分析,相关文章大家可以点击这里回看我的博客:线性表数据结构解读(一)顺序存储结构ArrayList 本篇文章,我将给大家继续解读线性表数据结构,这次我们来谈链式存储结构。链式存储结构链式存储结构是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。
2016-09-27 16:57:28 3873
原创 线性表数据结构解读(一)顺序存储结构ArrayList
线性表 线性表:零个或多个具有相同类型的数据元素的有限序列。数据元素的个数称为线性表的长度。A=(a1,a2,……ai-1,ai,ai+1,……,an); ● A代表一个线性表 ● ai(1<=i<=n)成为线性表的元素,i为元素的下标,表示该元素在线性表中的位置 ● 线性表中n为表长,其中n>=0 ● 长度等于零时称为空表,通常记为:L=( ) ● 将元素ai-1成为元素a
2016-09-27 14:23:24 6225
原创 Android NDK学习笔记15-配置AndroidStudio
现在大家越来越多的使用AndroidStudio进行Android开发,那么今天就和大家一起交流一下AndroidStudio开发NDK的配置方法。AndroidStudio配置NDK通常我们有两种方法实现配置1手动方式配置:1.在Google的官方网站下载Android NDK的安装包 下载地址是http://developer.android.com/sdk/ndk/index.html,打
2016-09-23 15:57:17 4504 3
Android反编译工具包(升级修复版)
2014-04-03
Sencha Touch Cookbook (第1版)高清PDF版
2012-04-24
Android基础教程(第3版·修订版)
2012-01-19
Flex 3 RIA开发详解与精深实践(高清PDF中文版)
2011-12-15
UNIX 网络编程(第2版)(高清PDF中文版)
2011-10-22
黑客与反黑客宝典(高清PDF中文版)
2011-10-22
Flex从入门到精通(高清PDF中文版)
2011-10-19
深入浅出EJB
2011-10-19
web 2.0入门者 Ajax修炼之道-包含源码
2011-10-15
Ajax 从入门到精通(电子书+源代码)(高清PDF中文版)
2011-10-15
JSP由浅入深(高清CHM中文版)
2011-10-13
JSP基础教程(清华版)(高清PDF中文版)
2011-10-13
JSP应用开发详解:第二版(高清PDF中文版)
2011-10-13
JSP设计第二版 - 内附源码(PDF中文版)
2011-10-13
精通CSS高级Web标准解决方案-包含源码(高清PDF中文版)
2011-10-10
NET精髓Web服务原理与开发(高清PDF中文版)
2011-10-09
微软.NET程序的加密与解密(高清PDF中文版)
2011-10-09
Web服务深入编程(高清PDF中文版)
2011-10-09
循序渐进 ASP.NET教程(高清PDF中文版)
2011-10-09
Asp.Net知识锦(高清中文版)
2011-10-08
ASP.NET 2.0数据库入门经典(第四版)(高清PDF中文版)
2011-10-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人