自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LiuHe

Strive to be Extraordinary.

原创 Android基础&进阶

基础总结篇之一:Activity生命周期 基础总结篇之二:Activity的四种launchMode 基础总结篇之三:Activity的task相关

2013-07-26 17:19:08 40863 26

原创 数据结构与算法简记:红黑树

上次记录了AVL树的相关内容,其规定节点左右子树高度之差不超过1,在添加或移除多个节点后能够对自身重新建立平衡,使其仍可维持一棵良好的二叉查找树结构,不过AVL树为了维护良好的结构,在添加或删除频繁时,性能也会相应的下降。一种替代的方案是使用红黑树。 红黑树(Red Black Tree) 也是...

2016-08-15 10:46:37 2559 2

原创 数据结构与算法简记:AVL树

前面记录了二叉查找树,它在搜索方面的效率显而易见,可它也存在某种缺陷,假设我们连续插入较小或较大的数据,那么二叉查找树将会逐渐退变为一个线性结构,从而搜索就变为了线性查找,效率将会大打折扣。所以,我们需要一棵这样的树,它在插入新节点后,能够重新调整自己的结构,使左右恢复平衡。AVL树就符合这个条件...

2016-08-10 16:50:49 2382 2

原创 数据结构与算法简记:二叉查找树相关操作

二叉查找树(Binary Search Tree)又称或二叉搜索树或二叉排序树,它满足下面的条件: 1. 如果左子树不为空,则左子树上的所有节点值都小于根节点 2. 如果右子树不为空,则右子树上的所有节点值都大于根节点 3. 所有子树都遵循以上规则 所以二叉查找树从整体看来,是按中序序列从小到...

2016-08-03 13:10:43 1988 0

原创 数据结构与算法简记:线索化二叉树

二叉树是一个复杂的非线性结构,所以在遍历结点时,一个结点只能获取左右子结点,不能直接获取遍历序列中的后继结点,这显然不太方便。线索化二叉树就可以很好的解决这个问题,将遍历中的前驱和后继结点串联起来,让我们在遍历二叉树时,像线性表一样方便快捷。今天就来记录一下:中序线索化二叉树和遍历线索二叉树。对上...

2016-07-29 13:00:35 1793 0

原创 数据结构与算法简记:按层次顺序遍历和存储二叉树

前面曾经记录过,给出一个按层次顺序排放的存储数据,进而可以构建出一棵二叉树,今天就来简单记录一下,如何按层次顺序遍历二叉树,最后又如何根据二叉树生成层次存储数据,对于满二叉树来讲这十分必要。对与这棵二叉树来说,它的层次遍历顺序和层次存储顺序分别为: A B E C D F A B E C...

2016-07-22 13:53:01 4378 0

原创 数据结构与算法简记:非递归遍历二叉树

前几次在创建二叉树时也顺带写了几个二叉树遍历的方法,包括前序、中序和后序遍历,都是递归的方法,今天就记录几个对应的非递归方式。 还是这个二叉树,我们需要使用栈结构对其进行非递归方式的前序、中序和后序遍历。 前序思路: 在遍历一颗子树时,首先访问其根节点,然后将其入栈,接着继续探索其左子...

2016-07-21 13:40:42 1067 0

原创 数据结构与算法简记:根据层次顺序存储结构构建二叉树---改进版

上次记录了如何根据二叉树层次顺序存储结构来构建一颗二叉树,其思路是求出每一层的节点个数,然后根据当前节点层的指针遍历每个节点,并与父层节点指针指向的节点建立关联,逐层进行。 不过这种思路显得不够开阔,算法不够精简,代码也有些冗余,所以今天记录一个改进版的构建函数。 还是同样一张图,还是同样的...

2016-07-15 16:35:51 1153 0

原创 数据结构与算法简记:根据层次顺序存储结构构建二叉树

在存储满二叉树或近似满二叉树时,按节点层次顺序存储是个不错的主意,我们从根节点开始,逐层由左到右扫描各个节点,依次将节点数据存放到指定的数组中,如果偶尔遇到空的子节点,就用特殊符号来表示。 这个树结构已接近满二叉树了,如果使用按层次顺序存储,将会更简单,更节省空间。按照上面的方法,这棵树所对...

2016-07-12 12:13:40 4075 1

原创 数据结构与算法简记:通过前序中序或中序后序构建二叉树

上次记录了广义表生成二叉树的过程,我们也可以通过前序和中序,或者中序和后序,来构建一棵唯一的二叉树。 还是同样的图,它的前序,中序,后序遍历序列分别是: pre: ABCDEF in: CBDAEF post: CDBFEA 以下是通过前序和中序构建二叉树的过程: 获取前序字符串的...

2016-07-08 12:10:16 3742 0

原创 数据结构与算法简记:根据广义表构建二叉树

使用广义表(generalized lists)来表示二叉树非常方便,假如我们有这么一个二叉树: 它可以表示为L = (A (B (C, D), E ( , F)) ),直观地表达了树中各个节点之间的关系。 今天主要记录如何通过解析这个广义表,构建出真实的树存储结构。 下面是其主要思路:...

2016-07-07 11:56:32 12813 1

原创 数据结构与算法简记:归并排序

归并排序是建立在归并操作上的一种有效的排序算法,简单来讲,就是对一个指定的数据区间进行划分,划分出概念上的左子区间和右子区间,然后对两个子区间进行合并,合并后当前整个区间的数据是顺序存放的。在一趟归并操作开始时,我们需要先获取中间位,把当前区间划分为左子区间和右子区间,然后定义两个指针,分别指向左...

2016-07-04 12:12:32 817 0

原创 数据结构与算法简记:快速排序

快速排序是对冒泡排序的一种改进。首先选定数组中任意位置的元素值做分隔值,然后定义两个指针(可以称为低位和高位),从数组起始位置和结束位置同时向中间靠拢,这个过程中获取它们对应的元素值分别和分隔值进行比较,如果低位指针遇到元素比分隔值大,则暂停,同样地,如果高位指针遇到元素比分隔值小,也暂停,然后交...

2016-07-01 12:36:28 699 0

原创 数据结构与算法简记:希尔排序

希尔排序是直接插入排序的增强版。 直接插入排序以单个元素为单位进行比较和插入,与之不同的是,希尔排序设定一个增量,初始增量小于数组长度,然后以增量为单位对数组进行分组划分,进而对每个分组内的序列进行直接插入排序。 在对所有分组进行一次插入排序之后,增量递减,然后进行下一轮的排序过程,以此类推。...

2016-06-30 12:12:04 866 0

原创 数据结构与算法简记:折半插入排序

上次记录了直接插入排序的算法,这种排序算法需要在每一轮插入操作前,拿待插入元素跟前面排好序的元素逐个进行比较,然后找到合适的位置,这种比较其实是不必要的,因为前面的序列已经是排好序的,我们可以直接通过折半查找方式找到该位置,进而可以节省不少运算成本。折半查找通过高位和低位来限制数据区间,然后获取中...

2016-06-29 12:30:48 978 0

原创 数据结构与算法简记:直接插入排序

插入排序把待排序序列看成是一手扑克牌,刚开始是没有顺序的,然后从后面逐个抽出较大的牌,在前面找到合适的位置,这个位置前面的元素都是较大的值,后面的元素都是较小的只,最后插入进去,若干次之后,这手扑克牌就会按照从小到大的顺序排列好,可以排成一个顺子。而直接插入排序是和前面有序序列的元素逐个进行比较,...

2016-06-28 11:15:33 821 0

原创 数据结构与算法简记:冒泡排序

冒泡排序是一种相邻元素之间比较和交换的排序算法,n个元素的数组从小到大排序时,每一轮比较都会使较大的元素冒泡到数组的末端,然后这个过程会执行n-1趟。 由于第一趟比较之后,最大的元素冒泡到了数组末端,下一次再比较时,待排序区间就减去一个元素的位置,依次类推,每次新的待排序区间等于原数组区间减去已...

2016-06-27 17:07:03 1025 0

原创 数据结构与算法简记:选择排序

最近把数据结构与算法方面的书又温习了一遍,觉得有必要在这里做个备忘记录,以后就算是生疏了,也可以很方便查阅。 今天就来简明扼要地总结一下选择排序的要点,拿n个元素的数组升序排列举例: 先以数组第一个位置做参照,然后遍历数组剩余元素,遍历过程中会跟第一个的元素进行比较,如果小于第一个元素,则交...

2016-06-24 16:25:39 1145 0

原创 搭建ES6运行环境

当ES5还没有完全普及时,ES6就接踵而来了,2015年6月17日,ECMAScript 6发布正式版本,即ECMAScript 2015,我们也简称它为ES6或ES2015。在发布之后的将近一年内,很多小伙伴都踊跃的学习这门新的语言,之所以说是一门新的语言,是因为跟ES5相比,语法方面变化确实有...

2016-06-06 12:47:14 23027 8

翻译 彻底理解Flexbox

注:本文翻译自CHRIS COYIER的A Complete Guide to Flexbox这篇文章,点击链接可前往原版博文:https://css-tricks.com/snippets/css/a-guide-to-flexbox/ Tips: This tutorial is trans...

2016-06-02 13:01:00 10189 0

原创 React入门实践之TodoList: 添加事件和搜索框

在上篇文章中,我们使用React实现了一个TodoList,可以显示基本的待办事项的列表,今天我们继续添加一些功能,比如选中一个TodoItem的checkbox进而可以改变它的完成状态,添加一个搜索框,在搜索框中输入关键字可以对多条数据进行过滤。 我们还是在原来的基础上做改动,下面是最新的To...

2016-05-23 12:53:10 5975 2

原创 React入门实践之Todo List

上次我们介绍了React入门的Hello World程序,还搭建了一个简单的React运行环境,今天就来写一个TodoList程序,逐步学习React开发。 注意,下面的程序是基于上篇文章中的react-dev项目的,如果没有看过,大家可以移步至:React入门之HelloWorld及环境搭建 ...

2016-05-20 13:20:50 3906 1

原创 响应式设计之媒介查询

你必须像水那样无形:当你把水倒进杯子中,水就变成了杯子的形状;当你把水倒进瓶子中,水就变成了瓶子的形状;当你把水倒进茶壶中,水就变成了茶壶的形状。 — 李小龙 之前读《响应式Web设计实践》,这大概是我印象最深的一句话了。李小龙的功夫了得,可他的功夫哲学更是令人叹服。如今的前端,面临着更多的挑战...

2016-05-16 22:41:22 8502 0

原创 HTML5 New Feature Series: Geolocation

Today handheld devices are so popularly spreading over our around, and the position feature plays an vital role in the application developed for thes...

2016-05-10 11:04:59 928 0

原创 HTML5新特性之Geolocation

在手持设备如此普遍的今天,位置信息对于应用程序来讲是极其重要的,打车应用可以根据用户的位置信息呼叫附近的车辆,团购软件可以根据当前的位置推荐附近的影院和美食,地图应用可以根据用户的位置快速规划到目的地的路线,可以说位置信息对于移动应用是不可或缺的。 为了顺应这个潮流,HTML5为我们提供了Geol...

2016-05-10 11:04:01 1362 0

原创 详解defer和async的原理及应用

defer和async是script标签的两个属性,用于在不阻塞页面文档解析的前提下,控制脚本的下载和执行。 在介绍他们之前,我们有必要先了解一下页面的加载和渲染过程: 1. 浏览器通过HTTP协议请求服务器,获取HMTL文档并开始从上到下解析,构建DOM; 2. 在构建DOM过程中,如果遇...

2016-05-03 10:37:34 17273 0

原创 React入门之HelloWorld及环境搭建

关注React也已经很久了,一直没能系统地深入学习,最近准备好好研究一下,并且亲自动手做一些实践。 学习一门语言也好,学习一个框架也好,都是从最初的hello world程序开始的,今天我们也来用React写一个hello world出来,了解一下如何编写及运行React。 在官方文档中,有一...

2016-04-22 11:18:50 14537 0

原创 ES5规范之严格模式

现如今JavaScript早已不仅仅是网页特效脚本了,更多是用来构建大规模的Web应用,所以语言规范的制定者们也逐渐意识到要对JS进行语法方面的规范,并且有意地引导开发者编程习惯,消除一些不规范和不安全的语法,进而更好的满足以后大规模开发的要求,ES5规范中的严格模式就是其中重要的一环,今天我们就...

2016-04-21 12:45:20 8649 0

原创 ES5规范之Object增强

在ES5规范中,还有一个比较重要的改进,就是Object对象的增强,ES5为Object新增了一系列函数,用于编写安全健壮的程序,今天我们就来一一介绍它们的使用方法。 下面就是ES5中Object新增的函数: Object.defineProperty(object, propertyName, ...

2016-04-07 12:45:36 6530 0

原创 ES5新增函数之二: Function.prototype.bind();

在上一篇文章里我们分析了ES5对几个常用类新增的函数,今天就重点来讲解一下Function中的bind函数。 简单来说,bind函数用于将当前函数和指定对象绑定,返回一个新的函数,当新函数被调用时,代码会在指定对象的上下文中执行。 这就涉及到JavaScript程序执行上下文Context的知识了...

2016-04-02 17:00:37 3484 2

原创 ES5新增函数之一: Array, JSON, String, Date

ES5即ECMAScript 5.1,在JavaScript语言基础之上添加了很多新的特性,对现有的对象和语句进行相应的增强和规范,主要包括一些新增函数、对象类型增强,以及严格模式编程规范。 今天我们先来介绍以下几个新增的函数: Array.isArray(obj); Array.prototyp...

2016-03-31 20:43:17 3652 0

原创 Angular中实现树形结构视图

近两年当中使用Angular开发过很多项目,其中也涉及到一些树形结构的显示,最近的在项目中封装了大量的组件,其中一些组件也涉及到树形结构,所以写出来总结一下。 相信大家都知道,树结构最典型的例子就是目录结构了吧,一个目录可以包含很多子目录,子目录又可以包含若干个子孙目录,那咱们今天就以目录结构为例...

2016-03-23 21:41:22 23437 5

原创 HTML5 New Feature Series: Web Workers

As we know, client-side JavaScript runs in single thread, in other words, JavaScript and UI rendering program share the main thread, that means, UI r...

2016-03-08 13:11:42 984 0

原创 HTML5新特性之Web Workers

我们知道浏览器端JavaScript是以单线程的方式执行的,也就是说JavaScript和UI渲染占用同一个主线程,那就意味着,如果JavaScript进行高负载的数据处理,UI渲染就很有可能被阻断,从而造成用户体验的大打折扣。Web Workers作为HTML5新特性之一,为浏览器端JavaSc...

2016-03-08 13:09:30 2160 0

原创 HTML5 New Feature Series: WebSocket

Nowadays Web Application becomes increasingly complex, hence, message pushing is playing an vital role in Web Application functionalities. With messa...

2016-01-21 23:30:39 1262 0

原创 HTML5新特性之WebSocket

在Web应用越来越复杂的今天,消息推送已经成为一个非常重要的功能了,有了消息推送,Web页面就能够及时的接收到来自服务端的消息,为用户展现最好的交互体验。过去我们在实现Web页面的消息推送时,一般都是由页面发起请求,以轮询的方式向服务器获取数据,实现起来极为不便,业务逻辑也相对较为复杂。 为了解决...

2016-01-21 23:22:21 13991 4

原创 HTML5 New Feature Series: Communication

Communication is one of the most important HTML5 Features, it provides an interaction mechanism based on the security policy of cross origins, and we...

2015-05-31 22:07:44 1855 2

原创 HTML5新特性之Communication

Communication是众多HTML5新特性中比较重要的一个,它提供一种基于安全策略的跨站交互的机制,即使来自不同的站点的应用之间也能自由的通信,正是这一特性的出现,使得不同站点内容的集成简化了许多。 我们都知道,基于安全方面的考虑,浏览器会合理地限制脚本的执行,禁止访问其他站点的数据服务或操...

2015-05-31 22:06:29 1693 0

原创 HTML5 New Feature Series: History

The rise of Ajax technology has brought new vitality to Internet since few years ago, in the meantime, it has achieved a qualitative leap on user exp...

2015-04-23 23:23:08 1759 0

原创 HTML5新特性之History

几年前,Ajax的兴起给互联网带来了新的生机,同时也使用户体验有了质的飞跃,用户无需刷新页面即可获取新的数据,而页面也以一种更具有交互性的形式为用户展现视图,可以说这种变化对互联网发展的贡献是史无前例的。 但随着Ajax大规模应用,越来越多的开发人员开始注意到其中存在的问题,因为Ajax的视图展现...

2015-04-23 23:21:17 5541 1

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