- 博客(17)
- 收藏
- 关注
原创 第七章 高级排序
一、希尔排序 希尔排序是因为插入排序有个严重的问题。假设一个很小的数据项在很靠近右端的位置上,这里本来应该是比较大的数据项所在的位置。然而要把它移到正确的位置,所有中间的数据项都要右移一位。效率大打折扣。因此希尔排序通过加大插入排序中元素之间的间隔,并在这些有间隔的元素中进行插入排序,从而使数据项能大跨度地移动。当这些数据项排过一趟序后,希尔排序算法减小数据项的间隔再进行排序,以h表示
2015-11-21 19:37:46 476
原创 第八章 二叉树
一、综述 为什么要用树,这种新的数据结构呢?因为树结合了有序数组和链表的优势——在树中查找数据项的速度和有序数组一样快,并且在插入和删除数据项和链表一样快。 树由边连接的节点组成,如下图: 节点一般代表着现实生活中的实体,在Java中也称对象。节点间的边表示关联节点间的路径,在Java中用引用来表示边。在树的顶层总是只有一个节点,称为根。它通
2015-11-21 19:35:28 229
原创 Model类和数据库的关联
一、DataSupport 这个类是类和数据库表的桥梁。使用起来简直是无缝的映射。 你可以这么写: * public class Person extends DataSupport { * private int id; * private String name; * private int age; * } 在此之前你可能是这么写:
2015-11-10 19:29:25 379
原创 LitePal的CRUD操作
前面说到LitePalBase是LitePal所有组件的基类,因此这边很重要的DataHandler就是继承与它,不过依然是抽象类。所有CRUD操作的组件都继承于DataHandler。快来让我们看一下它做了哪些事。 1、mDatabase -> SQLiteDatabase 数据库 2、query(...) -> List 查询一个给定的model的表,返回数据。让我们看下入参
2015-11-10 19:28:50 877
原创 在LitePal中解析XML
在使用LitePal的时候有些关键步骤不可获取,其中一个是创建litepal.xml文件,放到assets目录下,里面有一些数据库名、版本号、映射列表等。那么LitePal需要怎么获取到我们配置的数据呢?这里就要去解析xml文件了。LitePal默认使用的是SAX解析。还有Pull和DOM解析未来将会被引入。 一、LitePalParser 下面先列出几个需要解析的node和attri
2015-11-10 19:28:13 985
原创 一些异常封装
一、DatabaseGenerateException 可能会在生成表或者更新表的时候抛出。列出常见异常: can not find a class namedAn exception that indicates there was an error with SQL parsing or execution.SQL syntax error happens while executin
2015-11-10 19:27:44 3433
原创 LitePal中需要用到的Model
一、Column 用来描述列。 public @interface Column { String name() default ""; boolean nullable() default true ; boolean unique() default false ; } 默认列名将使用映射的Model类中的属性字段名。
2015-11-10 19:27:08 558
原创 Generator数据库的管理者
一、 Generator继承于LitePalBase,用来动态关联数据库。创建或者更新litepal.xml里面需要映射的类。基类主要的任务是从映射类里面读取属性,并且格式化数据类型。具体的分析工作将在子类里面完成。 private Collection mTableModels; private Collection mAllRelationModels; 这边有两个属性
2015-11-10 19:26:34 361
原创 LitePal源码学习开篇
让我们一起来了解下在Android数据库开发中应用广泛的一个开源库——LitePal。它采用了ORM对象关系映射的模式,什么叫对象关系映射?简单地理解就是,我在代码中写了个Model,就能被映射到数据库的表中。首先我们来学习下这个Tony Green大神写的基类——LitePalBase。它主要用在LitePal的组件之间处理它们的一些关联。然后一起来看一下一些重要的属性和方法。 1、类
2015-11-10 19:25:10 575
原创 一起来了解下java的Buffer!
一、Buffer 首先可以看到Buffer的一个层级。Object-Buffer-{ByteBuffer, CharBuffer, DoubleBuffer, FloatBuffer, IntBuffer, LongBuffer, ShortBuffer}。 源码这里给出了Buffer的定义——Buffer是一个基本数据类型的元素组成的列表。下面列出它的属性: Capacity:B
2015-11-09 10:18:27 513
翻译 Android6.0权限管理
一、运行时权限 新系统区别于旧系统对待权限上面更加地考虑用户。旧系统的权限仅在安装时候询问一次,而在6.0中,app不得不在运行时一个一个询问用户授予权限。然后有两个很坑爹的事情,需要开发者在开发app的逻辑上面有所转变。一、权限询问对话框需要开发者自己调用;二、用户可以拒绝权限,并且随时可以在设置中取消已经授权的权限(这样很容易导致崩溃)。 如果低于6.0的系统,用户取消app需要的
2015-11-08 21:50:47 412
原创 第六章 递归
递归是一种方法调用自己的编程技术。递归方法会不断调用自身,直到满足基值(终止)条件,以防止无限递归下去,此时递归方法将会返回。 调用自身当它调用自身的时候,是为了解决更小的问题存在某个足够简单的问题的层次,在这一层算法不需要调用自己就可以直接解答,且返回结果 一、分治算法 递归的二分查找法是分治算法的一个例子。把一个大问题分成两个相对更小的问题,并且分别解决每一个小问题
2015-11-08 21:47:47 367
原创 第五章 链表
链表是一种新的数据存储结构,有别于低效的、大小不可变的数组,它被广泛地应用在许多通用的数据库中。除非需要频繁的通过下标随机访问各个数据,否则在很多使用数组的地方都可以用链表代替。 一、链结点Link 每个数据项都被包含在“链结点”中。一个链结点是某个类的对象,这个类可以叫做Link。每个Link对象中都包含一个对下一个链结点引用的字段(next)。链表本身的对象中有一个字段指
2015-11-08 21:45:46 312
原创 第四章 栈和队列
一、概念 栈:栈只允许访问一个数据项,即最后插入的数据项。符合后进先出的规则。 队列:队列是一种类似于栈的数据结构,但是队列的规则是先进先出。 二、栈的Java写法 class StackX { private int maxSize; //最大容量 private long[] stackArray; //数组
2015-11-08 21:45:09 307
原创 第三章 简单排序
一、概要 三种简单的排序:冒泡排序、选择排序、插入排序。 二、冒泡排序 假设由n个队员,并且根据所站的位置从左到右分别给每一个队员编号,从0到n-1。 冒泡排序的过程如下: 从队列的最左边开始,比较第0号和第1号,如果左边的队员比右边高,则交换两个队员。否则不做任何事。然后右移一个位置,比较第1号和第2号,重复上诉步骤,直到最后一个队员。这
2015-11-08 21:44:21 446
原创 第二章 数组
一、创建数组 Java有两种数据类型:基本类型和对象类型。而数组被当作对象来处理。因此创建数组时需要使用new操作符。 int[] intArray; intArray = new int[100]; 或者 int[] intArray = new int[100]; 由于数组是一个对象,所以它的名字intArray是数组的一个引用,并非数组本身。数组存储在内存中的其它地址中,而int
2015-11-08 21:43:34 260
原创 第一章 综述
数据结构是对计算机内存中(或者磁盘中)的数据的一种安排。 常见的有:数组、队列、链表、二叉树、栈、哈希表等等。 算法是对这些结构中的数据进行各种处理。 学习数据结构和算法的用处: 现实世界数据存储程序员的工具建模 何谓面向对象编程? 先说明一下过程性语言(C语言)的不足,这类语言有两类问题: 程序与现实世界缺乏对应关系;程序内部的结构出现问题。 而面向对象编
2015-11-08 21:42:51 355
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人