自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 字符串之KMP算法(Java)

字符串匹配的KMP算法,我之前复习数据结构的时候看过一遍没有看懂,今天我结合左程云的“程序员代码面试指南”和 阮一峰:字符串匹配的KMP算法 可以算是基本理解了KMP算法的思想。突然发现这个算法也并不复杂,之前想到就头痛(我滴天!)。KMP算法基本思想KMP算法是一种用于字符串匹配的算法,这个算法的高效之处在于当在某个位置匹配不成功的时候可以根据之前的匹配结果从模式字符串的另一个位置开始,而不必从头

2016-07-30 18:29:19 665 1

原创 二叉排序树(Java)

二叉排序树的删除代码,在网上看到很多,都感觉有点繁杂难以理解,于是,我结合了TreeMap的remove()方法写出二叉排序树的实现,如果有错误的地方,还请大家多多指正~~性质二叉排序树又称“二叉查找树”、“二叉搜索树”。二叉排序树:或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值。若它的右子树不空,则右子树上所有结点的值均大于它的根结点的

2016-07-28 00:53:17 655

原创 二叉树的基本知识以及各种遍历(Java)

重要概念完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。 满二叉树——除了叶结点外每一个结点都有左右子叶且叶结点都处在最底层的二叉树,。深度——二叉树的层数,就是高度。性质在二叉树中,第i层的结点总数不超过2^(i-1);深度为h的二叉树最多有2^h-1个结点(

2016-07-27 17:14:47 421

转载 TCP连接复用

文章参考:http://blog.csdn.net/imzoer/article/details/9055811

2016-07-20 10:44:19 674

原创 Android Binder实现原理

参考文章:http://blog.csdn.net/topgun_chenlingyun/article/details/8203823

2016-07-20 10:39:02 299

原创 Android性能优化之常见的内存泄漏

参考文章: http://www.2cto.com/kf/201511/451250.html

2016-07-20 10:34:48 420

转载 socket长连接、短连接以及心跳包机制

出于最近对im研究的兴趣,看到smack里有个30s发送一个空消息的线程,了解了下关于心跳包,keepalive的知识。 TCP的socket本身就是长连接的,那么为什么还要心跳包呢?搜索到的资料解释如下:一:内网机器如果不主动向外发起连接,外网机没法直连内网的,这也是内网机安全的原因之一吧,又因为路由器会把这个关系记录下来,但是过一段时间这个记录可能会丢失 ,所有每一个客户端每隔一定时间就会向服务

2016-07-20 10:15:47 14942 2

原创 Android实现推送方式解决方案

参考文章: http://blog.csdn.net/clh604/article/details/20167263 http://www.cnblogs.com/hanyonglu/archive/2012/03/04/2378971.html

2016-07-20 09:57:06 443

原创 View与ViewGroup分类以及自定义View

参考文章:http://blog.sina.com.cn/s/blog_7dbac12501016cch.html

2016-07-20 09:55:32 698

原创 Bitmap的四种属性,与每种属性对应的大小

参考文章:http://blog.csdn.net/rabbit_in_android/article/details/49967461

2016-07-20 09:22:53 2747

原创 Android开发优化之——使用软引用和弱引用

参考文章:http://blog.csdn.net/arui319/article/details/8489451

2016-07-20 08:48:42 279

原创 Android缓存

参考博客:http://blog.csdn.net/liaoqianchuan00/article/details/8149734

2016-07-20 08:38:59 306

原创 Activity启动以及创建

参考网址: http://www.cnblogs.com/bastard/archive/2012/04/07/2436262.html

2016-07-20 08:24:32 363

原创 Android不同层次开启硬件加速的方式

在Android中,可以四给不同层次上开启硬件加速:1. 应用: <\application android:hardwareAccelerated=”true”>2. Activity <\activity android:hardwareAccelerated=”true”>3. Window getWindow().setFlags(WindowManager.LayoutPa

2016-07-20 08:22:49 295

转载 浅析Android中的消息机制

在分析Android消息机制之前,我们先来看一段代码:[java] view plain copypublic class MainActivity extends Activity implements View.OnClickListener {            private TextView stateText;

2016-07-20 00:11:15 307

转载 Asset目录与res目录的区别

assets目录与res下的raw、drawable目录一样,也可用来存放资源文件,但它们三者有区别,对比总结如下表: assetsres/rawres/drawable获取资源方式:  文件路径+文件名      R.raw.xxx       R.drawable.xxx   是否被压缩:NONOYES(失真压缩)

2016-07-20 00:02:31 4213

转载 Android中IntentService的原理及使用

在Android开发中,我们或许会碰到这么一种业务需求,一项任务分成几个子任务,子任务按顺序先后执行,子任务全部执行完后,这项任务才算成功。那么,利用几个子线程顺序执行是可以达到这个目的的,但是每个线程必须去手动控制,而且得在一个子线程执行完后,再开启另一个子线程。或者,全部放到一个线程中让其顺序执行。这样都可以做到,但是,如果这是一个后台任务,就得放到Service里面,由于Service和Ac

2016-07-19 23:52:41 428

转载 详解Android中AsyncTask的使用

在Android中实现异步任务机制有两种方式,Handler和AsyncTask。Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新,这种方式对于整个过程的控制比较精细,但也是有缺点的,例如代码相对臃肿,在多个任务同时执行时,不易对线程进行精确的控制。关于Handler的相关知识,前面也有所介绍,不清楚的朋友们可以参照一下

2016-07-19 23:43:51 2931

转载 Thread、AsycTask、IntentService的比较

IntentService 是Serivce+handler的结合产物  AsyncTask是thread池+handler的结合产物 为什么用service而不用thread:android 的系统机制有关,我们先拿 Thread 来说 Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后 ,如果你没有主动停止 Thread 或者 Th

2016-07-19 20:56:48 626

转载 Intent介绍及Intent在Activity中的使用方法

1.Intent的实现过程  在Android中,Intent不仅可用于应用程序之间的交互,也可用于应用程序内部的Activity/Service之间的交互。  Intent负责对应用中一次操作进行描述,描述内容包括动作以及动作所涉及的数据,Android中的Intent机制则根据此描述,找到对应的组件,将Intent传递给该被调用组件,完成对组件的一次调用。  这便是In

2016-07-19 18:12:19 5290

原创 Android四大组件之ContentProvider使用方法

Android之ContentProvider总结:http://www.2cto.com/kf/201404/296974.html android四大组件–ContentProvider详解:http://www.2cto.com/kf/201404/296974.html

2016-07-19 18:08:20 376

转载 Android广播机制(两种注册方法)与 中断广播

两种注册类型的区别是:     1)第一种不是常驻型广播,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器。     2)第二种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。在android下,要想接受广播信息,那么这个广播接收器就得我们自己来实现了,我们可以继承BroadcastReceive

2016-07-19 17:55:19 1352

转载 Service服务详解以及如何使service服务不被杀死

排版上的细节有些不好看,主要是我用的MarkDown编辑器预览和这里的不一样,在那个上面的样式很舒服。这里要改的地方太多就不想改了,将就看吧。下次写的时候注意。还有看到错误给我提啊。本文来自: http://www.cnblogs.com/rossoneri/p/4530216.htmlServices服务是一个应用程序组件,可以在后台执行长时间运行的操作,不提供用户界

2016-07-19 17:53:03 3246

转载 Android Service 服务(一)—— Service

一、 Service简介Service是android 系统中的四大组件之一(Activity、Service、BroadcastReceiver、ContentProvider),它跟Activity的级别差不多,但不能自己运行只能后台运行,并且可以和其他组件进行交互。service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放

2016-07-19 17:26:00 195

转载 Android Activity的四种LaunchMode!!!

本文转自: http://marshal.easymorse.com/archives/2950. 写的非常好,分享给大家!!!在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。这需要为Activity配置特定的加载模式,而不是使用默认

2016-07-19 17:12:45 285

转载 Activity缓存方法

有a、b两个Activity,当从a进入b之后一段时间,可能系统会把a回收,这时候按back,执行的不是a的onRestart而是onCreate方法,a被重新创建一次,这是a中的临时数据和状态可能就丢失了。可以用Activity中的onSaveInstanceState()回调方法保存临时数据和状态,这个方法一定会在活动被回收之前调用。方法中有一个Bundle参数,putStri

2016-07-19 16:42:14 776

转载 Android通用流行框架大全

1. 缓存名称描述DiskLruCacheJava实现基于LRU的磁盘缓存2.图片加载名称描述Android Universal Image Loader一个强大的加载,缓存,展示图片的库Picasso一个强大的图片下载与缓存的

2016-07-19 16:37:02 334

原创 Activity与Fragment的生命周期

Fragment的介绍Fragment:碎片、片段,碎片表示轻量级和灵活,是开发android平板电脑必须掌握的技术。其将界面UI进行分块,以块的方式组织UI,完全可以达到界面UI组件的复用。它在一个activity里面表示一个行为或者用户接口的一部分。我们可以将不同的Fragments组合起来放到一个activity中,或者在不同的activity中重用一个fragment。你可以将一个fra

2016-07-19 16:14:09 6221

原创 浏览器访问网页的详细内部过程

我们来看当我们在浏览器输入http://www.mytest.com:81/mytest/index.html,幕后所发生的一切。首先http是一个应用层的协议,在这个层的协议,只是一种通讯规范,也就是因为双方要进行通讯,大家要事先约定一个规范。1.连接 当我们输入这样一个请求时,首先要建立一个socket连接,因为socket是通过ip和端口建立的,所以之前还有一个DNS解析过程,把ht...

2016-07-19 00:57:07 5239

原创 多处理机Cache一致性问题及解决办法

1. 造成Cache一致性问题的原因出现不一致的原因有三个:共享可写的数据、进程迁移和I/O传输。2. 解决办法解决多处理机Cache一致性问题提出了两种解决办法:侦听一致性协议和基于目录的一致性协议。由于多数SMP(对称多处理机)结构是采用总线互连的,侦听一致性协议是基于侦听总线事务来保持Cache一致性的协议,所以多数产品采用侦听协议。基于总线互连的SMP是通过高速共享总线将若干个商用的微处理器

2016-07-17 15:25:30 14460 1

原创 操作系统之虚拟存储器

虚拟存储器概述1. 常规存储器管理方式的特征和局部性原理常规存储器管理方式的特征: 一次性。要求将作业全部装入内存才能运行,当程序大于内存时,作业无法运行。驻留性。装入内存中用的作业一直驻留内存,直到运行结束(处于等待状态的进程也占用内存)。局部性原理: 时间局限性。如果程序中的某条指令一旦执行, 则不久以后该指令可能再次执行;如果某数据被访问过, 则不久以后该数据可能再次被访问。产生时间

2016-07-17 14:25:35 7491

原创 操作系统之存储器管理

存储器的层次结构存储器的层次如下图:上图中,寄存器和主存储器称为可执行存储器。高速缓存的作用是缓和CPU与内存之间的速度差异,主要由硬件实现。磁盘缓存的出现是由于内存容量不够,需要引入磁盘,然而磁盘的I/O速度远低于主存的访问速度,为了缓和两者之间在速度上的差异,设置了磁盘缓存。磁盘缓存与高速缓存不同,它本身并不是实际存在的存储器,是利用主存中的部分空间暂时存放从磁盘中读出写入的信息。程序的装入与链

2016-07-17 13:16:53 4844

原创 操作系统之进程的调度与死锁

一. 操作系统引论操作系统是一组能有效阻止和管理计算机硬件和软件资源,合理地把对各类作用进行调度,以及方便用户使用的程序的集合。1. 操作系统的目标与作用在计算机系统上配置操作系统,其主要目标就是:方便性、有效性、可扩充性和开放性。 方便性:一个未配置的计算机系统是极难使用的。配置了操作系统之后,系统便可使用编译命令将用户采用高级语言编写的程序翻译成机器代码,或直接通过OS所提供的各种命令操纵计

2016-07-16 21:41:12 4726 1

原创 自动装箱、拆箱与遍历循环(Foreach循环)

看如下例子:包含了自动装箱、拆箱以及foreach循环的过程public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4); // 如果在JDK 1.7中,还有另外一颗语法糖 , // 能让上面这句代码进一步简写成List<Integer> list = [1, 2

2016-07-15 15:42:19 844

原创 Java内存模型与线程

1. Java内存模型Java虚拟机规范中试图定义一种Java内存模型来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致性的并发效果。在此之前,主流程序语言直接使用物理硬件(或者说是操作系统的内存模型),因此会由于不同平台上内存模型的差异,导致程序在一套平台上并发完全正常,而在另一套平台上并发访问却经常出错。1. 主内存与工作内存Java内存模型的主要目标是定义程

2016-07-14 20:43:28 1975

原创 虚拟机字节码执行引擎

在不同的虚拟机实现里面,执行引擎在执行Java代码的时候可能有解释执行和编译执行两种选择,也可能两者兼备,甚至还可能包含几个不同级别的编译器执行引擎。但从外观上,所有的Java虚拟机的执行引起嫩都是一致的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。1. 运行时栈帧结构栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储

2016-07-14 16:14:51 915

原创 虚拟机类加载机制

JVM把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成JVM可以直接使用的Java类型的过程就是类加载机制。1. 类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的生命周期包括了:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Us

2016-07-14 00:07:08 1534

转载 垃圾收集器与内存分配策略

3.1 概述Java内存运行时区域的各个部分,其中程序计数器,虚拟机栈,本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会有JIT编译器进行一些优化,但在基于概念模型的讨论中,大体上可以认为是编译期可知的),因此者几个区域的内存分配和回收都具备确定性,在这几个区域内

2016-07-13 19:03:02 660

转载 虚拟机性能监控与故障处理

一、JDK命令行工具简介所有的java开发人员都知道JDK的bin目录下存放着编译java需要的javac,以及运行java程序需要的java这两个命令工具,但是很多人并没有注意到,其实除了这两个工具,该目录下还有很多工具,这些工具其实为我们提供了很多方便且强大的功能,windows7系统64位jdk1.7/bin目录下部分截图:下面是命

2016-07-13 18:42:26 1819

转载 Java内存区域与内存溢出异常

2.1 运行时数据区域Java虚拟机在执行Java程序的过程中把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。如下图所示: 2.1.1 程序计数器程序计数器是一块较小的内存空间,它是线程的私有内存,可以看作时当前线程所执行的字节码的行号指示器。在虚拟机的概念

2016-07-13 18:18:50 1440

空空如也

空空如也

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

TA关注的人

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