自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 资源 (4)
  • 收藏
  • 关注

转载 smali语法

smali文件格式每个smali文件都由若干条语句组成,所有的语句都遵循着一套语法规则。在smali 文件的头3 行描述了当前类的一些信息,格式如下:[java] view plaincopy.class  [ 修饰关键字]   .super   .source   打开MainActivity.smali 文件,头3 行代码如下:[java] view plaincopy.class publi

2017-01-19 14:20:09 2221

转载 基于寄存器与基于栈的虚拟机

什么是虚拟机虚拟机是借助于操作系统对物理机器的一种模拟。但是我们今天所讲述的虚拟机概念比较狭义,与vmware或者virtual-box不同,而是针对具体语言所实现的虚拟机。例如在JVM或者CPython中,JAVA或者python源码会被编译成相关字节码,然后在对应虚拟机上运行,JVM或CPython会对这些字节码进行取指令,译码,执行,结果回写等操作,这些步骤和真实物理机器上的概念都很相似。相

2017-01-09 15:59:31 1953

原创 git冲突解决

刚刚在上传自己的项目到github上时出现了一些错误,在网上百度了一下,根据网友提供的解决方式还是没能解决,折腾了半天,最终还是解决了,因此记录一下,或许以后还可能遇到这个错误,另外也可以帮助遇到相同错误的小伙伴们。错误主要是在push自己的本地项目到远程仓库时一直拒绝,具体错误信息如下:根据错误提示,要先使用git pull origin master,但是任然报错,错误如下:后来折腾半天,终于

2016-10-21 12:26:09 738

转载 MD5算法原理

MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2、MD3和MD4发展而来。MD5算法的使用不需要支付任何版权费用。    MD5功能:    输入任意长度的信息,经过处理,输出为128位的信息(数字指纹);    不同的输入得到的不同的结果(唯一性);    根据128位的输出结果不可能反推出输入的信息(不可逆);     MD5属不属

2016-08-25 21:32:06 931 1

原创 【BAT经典算法面试题系列】求和为n的连续正整数

马上就要到9月份了,意味着一年一度的秋招就要开始了,相信不论是正在实习的童鞋还是马上就要找工作的童鞋,BAT无疑是国内的“明星企业”,是每个学计算机的小伙伴们心之向往的企业,但是呢?对于进BAT来讲,即使你项目经验非常丰富,想进BAT,还有一道门槛要过那就是算法面试,尤其是想去百度的小伙伴们,那算法必须得考,也是面试中的重点。说实话,对于算法这个东西,真的得靠天赋的,不是像项目那样,你多做多动手自

2016-08-12 11:11:16 5176 2

原创 【安卓自定义控件系列】自绘控件打造界面超炫功能超强的圆形进度条

在前面我们讲过了安卓自定义控件三种方式中的组合控件,现在我们来讲解一下通过自绘的方式来实现自定义控件,本博客将以自定义圆形进度条为例向大家讲解自定义控件的知识,首先来看一下效果图吧,这个是本人自定义圆形进度条demo工程的运行截图:首先说一下自己这个自定义圆形进度条要达到的目标:1能够支持设置进度条各种属性,如圆环的大小,颜色,进度条的大小,颜色,进度条的颜色支持设置三种颜

2016-07-28 14:33:31 5525 3

原创 【安卓自定义控件系列】安卓自定义控件之组合控件

在安卓开发中,谷歌已经为我们提供了许多原生控件,基本上能够满足我们日常的开发需求,但是某些项目中原生控件可能达不到产品所要求的各式各样的酷炫效果或功能效果,这个时候我们只能自己自定义控件来满足项目需求,我们知道自定义控件包括三种方式:1继承控件,即继承谷歌提供的原生控件,在此基础上提供一些原生控件不具备的功能,如github上各种酷炫效果的开源组件基本上都是采用的这种方式.2组合控件:即组

2016-07-24 18:51:48 6440 2

原创 使用百度地图实现基本的地图显示与定位功能

最近在项目中用到了地图显示与定位功能,那么毫无疑问首选百度地图,关于百度地图的基本使用在其官网介绍的十分详细,而且还附带程序Demo代码供大家参考。链接:点击打开链接。注意在自己的项目中使用百度地图需要先注册一个百度开发者账号,然后通过一些配置操作获取一个keyStore。这个不难,但是过程很琐碎,大家可以参照百度地图API官网的步骤一步一步来,这里就不详细叙述,下面给出自己项目中使用百度地图定位

2016-07-01 21:47:06 8435

原创 【java多线程系列】java中的volatile的内存语义

在java的多线程编程中,synchronized和volatile都扮演着重要的 角色,volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的可见性,可见性指的是当一个线程修改一个共享变量时,另一个线程能够读到这个修改后的值。如果volatile修饰符使用恰当的话,它比synchronized的使用和执行成本更低,因为它不会引起线程上下文的切换和调度。本文将从vo

2016-06-27 13:09:25 2516

原创 【java多线程系列】java内存模型与指令重排序

在多线程编程中,需要处理两个最核心的问题,线程之间如何通信及线程之间如何同步,线程之间通信指的是线程之间通过何种机制交换信息,同步指的是如何控制不同线程之间操作发生的相对顺序。很多读者可能会说这还不简单,java中的同步采用的是锁机制或volatile来完成的,的确,在应用层,java中的同步的确是通过加锁来完成的,但是锁机制是如何实现的呢?这就涉及到java中的内存模型的相关知识。本博客将带领大

2016-06-26 10:21:28 2863

原创 【java虚拟机系列】JVM类加载器与ClassNotFoundException和NoClassDefFoundError

在我们日常的项目开发中,会经常碰到ClassNotFoundException和NoClassDefFoundError这两种异常,对于经验足够的工程师而言,可能很轻松的就可以解决,但是却不一定明白为何要去这么做,本博客将从java虚拟机类加载的角度让大家彻底理解ClassNotFoundException和NoClassDefFoundError这两种异常及一些重用的解决方案。在博客

2016-06-24 22:43:10 6364

原创 【java虚拟机系列】从java虚拟机字节码执行引擎的执行过程来彻底理解java的多态性

我们知道面向对象语言的三大特点之一就是多态性,而java作为一种面向对象的语言,自然也满足多态性,我们也知道java中的多态包括重载与重写,我们也知道在C++中动态多态是通过虚函数来实现的,而虚函数是通过一个虚函数表来完成的,这也很好理解,那么java语言的多态性是怎么实现的呢?这就需要我们从java虚拟机字节码执行引擎的执行过程来找答案了,下面就从java虚拟机字节码执行引擎的执行过程带领大家彻

2016-06-24 12:48:03 52927 1

原创 【java虚拟机序列】java中的垃圾回收与内存分配策略

在【java虚拟机系列】java虚拟机系列之JVM总述中我们已经详细讲解过java中的内存模型,了解了关于JVM中内存管理的基本知识,接下来本博客将带领大家了解java中的垃圾回收与内存分配策略。垃圾回收(Garbage Collection,GC)是java语言的一大特色,在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。而在C/C++中是需要

2016-06-22 21:19:38 52532

原创 安卓中的事件分发机制源码解析

安卓中的事件分发机制主要涉及到两类控件,一类是容器类控件ViewGroup,如常用的布局控件,另一类是显示类控件,即该控件中不能用来容纳其它控件,它只能用来显示一些资源类容,如Button,ImageView等控件。暂且称前一类控件为ViewGroup类控件(尽管ViewGroup本身也是一个View),后者为View类控件。

2016-06-05 16:45:05 81816 5

原创 安卓IPC机制之Binder详解

IPC(Inter-Process Communication,跨进程通信)是指两个进程之间数据交换的过程,因此我们首先必须了解什么是进程,什么是线程。

2016-06-02 12:17:05 34258

原创 【安卓中的缓存策略系列】安卓缓存策略之综合应用ImageLoader实现照片墙的效果

在前面的【安卓缓存策略系列】安卓缓存之内存缓存LruCache和【安卓缓存策略系列】安卓缓存策略之磁盘缓存DiskLruCache这两篇博客中已经将安卓中的缓存策略的理论知识进行过详细讲解,还没看过这两篇博客的看官建议先去看一下,本博客将依据这些理论知识打造一个ImageLoader,实现照片墙的效果,关于照片墙的知识网上相关博客也很多,首先解释一下照片墙的概念:用一个GridView控件当作“墙

2016-05-31 19:10:50 19761 1

原创 【安卓中的缓存策略系列】安卓缓存策略之磁盘缓存DiskLruCache

安卓中的缓存包括两种情况即内存缓存与磁盘缓存,其中内存缓存主要是使用LruCache这个类,其中内存缓存我在【安卓中的缓存策略系列】安卓缓存策略之内存缓存LruCache中已经进行过详细讲解,如看官还没看过此博客,建议看官先去看一下。我们知道LruCache可以让我们快速的从内存中获取用户最近使用过的Bitmap,但是我们无法保证最近访问过的Bitmap都能够保存在缓存中,像类似GridVie

2016-05-12 21:03:01 63737 2

原创 【安卓中的缓存策略系列】安卓缓存之内存缓存LruCache

缓存策略在移动端设备上是非常重要的,尤其是在图片加载这个场景下,因为图片相对而言比较大会花费用户较多的流量,因此可用缓存方式来解决,即当程序第一次从网络上获取图片的时候,就将其缓存到存储设备上,这样在用户下次使用这张图片时就不用从网络上再次获取,这样就能为用户节省一定的流量。这个功能目前绝大部分主流APP都会使用,如腾讯QQ,微信。但很多时候为了提高APP的用户体验,我们还需要把图片在内存中缓存一

2016-05-11 21:04:58 7190 1

原创 安卓中的消息循环机制Handler及Looper详解

我们知道安卓中的UI线程不是线程安全的,我们不能在UI线程中进行耗时操作,通常我们的做法是开启一个子线程在子线程中处理耗时操作,但是安卓规定不允许在子线程中进行UI的更新操作,通常我们会通过Handler机制来完成该功能,即当子线程中耗时操作完成后,在子线程中通过Handler向主线程发送消息,在主线程中的Handler的handleMessage方法中处理接受到的消息。这就是安卓中的消息机制,安

2016-05-09 19:37:15 7736 1

原创 安卓java.lang.IllegalStateException: The specified child already has a parent.解决方案

在使用ViewPager的时候遇到一个错误java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.。经过多次调试及网上查找相关资料,终于弄明白是咋回事,现记录如下:首先跟大家讲解一下为何会出现

2016-05-01 18:25:50 29143 2

原创 安卓java.lang.IllegalArgumentException: The observer is null.解决方案

刚刚在调试自己的APP项目的时候报错java.lang.IllegalArgumentException: The observer is null.,而之前是可以运行通过,所以百思不得其解,后来在网上查找相关资料,终于弄明白是咋回事,现在记录如下,一来算是积累调错方面的知识,二来或许可以帮到出现同样错误的人。出错的主要原因是在ViewPager中使用到了GridView这样的控件,当销毁包含

2016-05-01 16:22:49 4189

原创 【java线程系列】java线程系列之java线程池详解

一线程池的概念及为何需要线程池:我们知道当我们自己创建一个线程时如果该线程执行完任务后就进入死亡状态,这样如果我们需要在次使用一个线程时得重新创建一个线程,但是线程的创建是要付出一定的代价的,如果在我们的程序中需要频繁使用线程,且每个线程执行的时间很短,短到几乎小于线程创建及销毁的时间那么代价将会更大,如:服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的。显然如果

2016-04-27 11:36:43 15460 1

原创 【java线程系列】java线程系列之线程间的交互wait()/notify()/notifyAll()及生产者与消费者模型

关于线程,博主写过java线程详解基本上把java线程的基础知识都讲解到位了,但是那还远远不够,多线程的存在就是为了让多个线程去协作来完成某一具体任务,比如生产者与消费者模型,因此了解线程间的协作是非常重要的,本博客主要讲解多个线程之间使用wait()/notify()/notifyAll()来进行交互的场景。一wait()/notify()/notifyAll():首先我们来看一下它们的

2016-04-26 15:06:36 2285

原创 安卓AsyncTack详解

我们知道安卓中的UI线程不是线程安全的,即不能在UI线程中进行耗时操作,所以我们通常的做法是开启一个子线程来进行耗时操作,然后将处理后的结果运用Handler机制传递给UI线程,在UI线程中根据处理后的结果更新界面。如从网络上获取一张图片显示到界面上的一个ImageView控件上,我们会开启一个子线程来进行网络请求获取图片,然后运用Handler告诉主线程图片已经获取到,可以刷新界面显示图片。即运

2016-04-24 15:29:37 2961

原创 安卓服务Service详解

service(服务)是安卓中的四大组件之一,它通常用作在后台处理耗时的逻辑,与Activity一样,它存在自己的生命周期,也需要在清单文件中配置相关信息,本博客将对Service的各个知识点进行详细讲解。一Service的基本用法:1使用本地服务1)服务的启动方式1通过Context的startService()方法启动服务:以该方法启动的服务,开启该服务的应用组

2016-04-23 21:52:45 63376

原创 安卓中的内存泄漏

因为安卓是基于java语言的,所以我们先来看一看java中的内存泄漏,然后在此基础上来谈谈安卓中的内存泄漏。

2016-04-23 11:45:44 5003

原创 Fragment生命周期详解

关于Fragment的生命周期,博主写过Activity与Fragment生命周期详解,基本上把Fragment的生命周期详细介绍过,但是那仅仅是创建一个Fragmnet时的生命周期,而事实上Fragment的出现是为了动态的切换显示不同的界面的,因此我们对于Fragment的生命周期的了解不能仅仅停留在创建一个Fragment的时候,而是应该能够知道调用不同API切换Fragment时的生命周期

2016-04-21 21:30:50 14748 4

原创 安卓中不同APP之间的消息通信

昨天在腾讯实习生招聘初试面试时面试官问道我关于两个APP之间相互通信的方式,当时自己回道到了contentProvider与BroadcastReceiver。但他接着问还有没有其它的方式,我跟他说可以使用AIDL,但是当时没说清楚,所以最后我说目前只知道这两种方式,然后他说可以使用文件的方式或云端存储的方式共享。自己上网查了一下相关知识,根据自己的理解将安卓中不同APP之间消息通信总结如下:

2016-04-15 14:13:13 19519 2

原创 【安卓网络请求开源框架Volley源码解析系列】定制自己的Request请求及Volley框架源码剖析

通过前面的学习我们已经掌握了Volley的基本用法,没看过的建议大家先去阅读我的博文【安卓网络请求开源框架Volley源码解析系列】初识Volley及其基本用法。如StringRequest用来请求一段文本信息,JsonRequest(JsonObjectRequest、JsonArrayRequest)用于请求一条JSON格式的数据,ImageRequest则是用于请求网络上的图片资源。但是我们

2016-04-11 11:00:43 1587

原创 【安卓网络请求开源框架Volley源码解析系列】初识Volley及其基本用法

在安卓中当涉及到网络请求时,我们通常使用的是HttpUrlConnection与HttpClient这两个类,但是因为网络请求一般是比较耗时,因此我们通常会在一个线程中来使用,但是在线程中使用这两个类时就要考虑到如何将处理结果传出去,通常的解决方法就是采用接口回调技术来解决,代码如下:public static void doGetRequest(final String uri,final

2016-04-10 17:02:09 1814

原创 java中hashCode()与equals()详解

首先之所以会将hashCode()与equals()放到一起是因为存在一个相同的作用:用来比较某个东西。其中hashCode()主要是用在hash表中提高 查找效率,而equals()则相对而言使用更广泛,用于比较两个对象的值是否相同,在Java集合框架中它们共同出现用来比较某元素是否相等。一hashCode()hashCode()位于Object类中,其定义如下:public nat

2016-04-08 17:22:02 1399

原创 【java虚拟机系列】java虚拟机系列之JVM总述

我们知道java之所以能够快速崛起一个重要的原因就是其跨平台性,而跨平台就是通过java虚拟机来完成的,java虚拟机属于java底层的知识范畴,即使你不了解也不会影响绝大部分人从事的java应用层的开发,但是如果你了解JVM的底层知识,你就能更加了解java这门语言的本质,从而对你应用层的java程序的性能优化起到很大的帮助(主要是指内存方面的)另外像一些要求比较高的公司可能在面试的时候会问一些

2016-04-06 11:36:10 5338

原创 java线程详解

要提到线程,则不得不提进程这个概念,因为线程是依附于进程的,它们都属于操作系统中的知识,现在的操作系统都属于多任务的,多线程是实现多任务的一种方式。进程是指一个内存中运行的应用程序的一次活动,是一个动态的概念,是系统进行资源分配和调度的基本单位,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。线程是指进程中的一个

2016-04-04 20:04:29 1604

原创 【java集合框架源码剖析系列】java源码剖析之java集合中的折半插入排序算法

注:关于排序算法,博主写过【数据结构排序算法系列】数据结构八大排序算法,基本上把所有的排序算法都详细的讲解过,而之所以单独将java集合中的排序算法拿出来讲解,是因为在阿里巴巴内推面试的时候面试官问过我,让我说说java集合框架中用的哪种排序算法,当时回答错了,面试结束后看了一下java源码,用的是折半插入排序算法,本来早就打算写此博客,但是因为准备鹅厂的在线考试,所以一直没动手写。既然java的

2016-04-04 16:44:26 9252 1

原创 【java集合框架源码剖析系列】java源码剖析之TreeSet

本博客将从源码的角度带领大家学习TreeSet相关的知识。一TreeSet类的定义:public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, java.io.Serializable可以看到TreeSet是继承自AbstracSet同时实现了NavigableSet,Cloneable,

2016-04-04 15:28:26 2367

原创 【java集合框架源码剖析系列】java源码剖析之HashSet

注:博主java集合框架源码剖析系列的源码全部基于JDK1.8.0版本。本博客将从源码角度带领大家学习关于HashSet的知识。一HashSet的定义:public class HashSet extends AbstractSet implements Set, Cloneable, java.io.Serializable可以看到HashSet继承自AbstractSe

2016-04-04 14:35:21 1683

原创 【java集合框架源码剖析系列】java源码剖析之TreeMap

注:博主java集合框架源码剖析系列的源码全部基于JDK1.8.0版本。本博客将从源码角度带领大家学习关于ArrayList的知识。一TreeMap的定义:public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, java.io.Serializable可以看到TreeMap是继

2016-04-04 09:20:29 1689

原创 【java集合框架源码剖析系列】java源码剖析之ArrayList

注:博主java集合框架源码剖析系列的源码全部基于JDK1.8.0版本。本博客将从源码角度带领大家学习关于ArrayList的知识。一ArrayList类的定义:public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializabl

2016-04-03 21:11:40 1709

原创 【java集合框架源码剖析系列】java源码剖析之LinkedList

注:博主java集合框架源码剖析系列的源码全部基于JDK1.8.0版本。在实际项目中LinkedList也是使用频率非常高的一种集合,本博客将从源码角度带领大家学习关于LinkedList的知识。一LinkedList类的定义:public class LinkedList extends AbstractSequentialList implements List,

2016-04-03 19:51:57 1535

原创 【java集合框架源码剖析系列】java源码剖析之HashMap

前言:之所以打算写java集合框架源码剖析系列博客是因为自己反思了一下阿里内推一面的失败(估计没过,因为写此博客已距阿里巴巴一面一个星期),当时面试完之后感觉自己回答的挺好的,而且据面试官最后说的这几天可能会和你联系来看当时以为自己一面应该是通过的,但是事与愿违,痛定思痛,仔细回顾了一下面试官问我的整个过程,感兴趣的可以参看我的博客:【阿里内推一面】记我人生的处女面。感觉自己回答的不是很好的地方就

2016-04-02 22:22:36 12921 2

NDK开发so层与java代码相互调用

NDK开发so层与java代码相互调用

2017-06-14

安卓逆向分析基本工具集合

安卓逆向分析基本工具集合,包括apktool,dex2jar,jd-gui,android killer

2017-06-07

安卓动态换肤

动态加载未安装的apk中的资源文件,实现类似QQ换肤效果

2017-06-03

【数据结构课程大作业】通信录管理系统

该软件为本人数据结构课程设计作业,采用win32控制台程序,基于链表的增删改查,实现简单的通信录管理系统,具体可以参看我的博客http://blog.csdn.net/htq__/article/details/50846567

2016-03-10

空空如也

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

TA关注的人

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