数据库范式 发表于 2017-02-13 | 分类于 数据库 范式是为了消除重复数据减少冗余数据,从而让数据库内的数据更好的组织,让磁盘空间得到更有效利用的一种标准化标准,满足高等级的范式的先决条件是满足低等级范式。 第一范式(1NF)第一范式(1NF):是指数据库表中的每一列都是不可再分的基本数据项。 如果可以再分或者出现重复属性,就可能需要定义一个新的实体 ... 阅读全文 »
Java 内存管理 发表于 2017-02-12 | 分类于 JVM 内存管理Java 的内存管理就是对象的分配和释放问题。 分配 :内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。 释放 :对象的释放是由垃圾回收机制决定和执行的,这样做确实简化了程序员的工作。但同时,它也加重了 ... 阅读全文 »
Java 序列化 发表于 2017-02-12 | 分类于 IO Java序列化技术的基础是被序列化的类需要实现 Serializable 接口,使用 ObjectInputStream 和 ObjectOutputStream 进行对象的读写。 默认的序列化机制如果仅仅只是让某个类实现Serializable接口,而没有其它任何处理的话,则就是使用默认序列化机制 ... 阅读全文 »
SwordPointToOffer(66): 矩阵中的路径 发表于 2017-02-11 | 分类于 SwordPointToOffer 题目请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含 ... 阅读全文 »
SwordPointToOffer(65): 滑动窗口的最大值 发表于 2017-02-11 | 分类于 SwordPointToOffer 题目给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。 例如:输入数组 {2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,它们的最大值分别为 {4,4,6,6,6,5}。 分析滑动窗口可以看成是一个队列,当窗口滑动时,处于窗口的第一个数字被删除,同时在窗口的末 ... 阅读全文 »
SwordPointToOffer(64): 数据流中的中位数 发表于 2017-02-11 | 分类于 SwordPointToOffer 题目如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有值排序之后位于中间的数值。如果数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 分析由于数据是从一个数据流中读出来的,数据的数目随着时间的变化而增加。如果用一个数据容器来保存从流中读出来的数据 ... 阅读全文 »
SwordPointToOffer(63): 二叉搜索树的第k个节点 发表于 2017-02-10 | 分类于 SwordPointToOffer 题目给定一棵二叉搜索树,请找出其中的第k个的节点(按节点的数值大小顺序)。 分析如果按照中序遍历的顺序遍历一棵二叉搜索树,遍历序列的数值是递增排序的。 实现123456789101112131415161718192021222324252627282930313233343536373839pub ... 阅读全文 »
SwordPointToOffer(62): 序列化二叉树 发表于 2017-02-10 | 分类于 SwordPointToOffer 题目请实现两个函数,分别用来序列化和反序列化二叉树。 分析方法一我们知道可以从前序遍历和中序遍历构造出一棵二叉树。受此启发,我们可以先把一棵二叉树序列化成一个前序遍历序列和一个中序序列,然后再反序列化时通过这两个序列重构出原二叉树。 这个思路有两个缺点。一个缺点是该方法要求二叉树中不能用有数值重复的 ... 阅读全文 »
SwordPointToOffer(61): 按之字形顺序打印二叉树 发表于 2017-02-10 | 分类于 SwordPointToOffer 题目请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 分析按之字形顺序打印二叉树需要两个栈。我们在打印某一行结点时,把下一层的子结点保存到相应的栈里。如果当前打印的是奇数层,则先保存左子结点再保存右子结点 ... 阅读全文 »
SwordPointToOffer(60): 把二叉树打印成多行 发表于 2017-02-10 | 分类于 SwordPointToOffer 题目从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 分析二叉树的层序遍历,需要借助队列完成。 本题需要注意的问题,将每层分行打印,需要两个变量: 一个变量表示在当前层中还没有打印的节点数; 一个变量表示下一层节点的数目。 实现12345678910111213141 ... 阅读全文 »