07 2018 档案

摘要:还记得刚刚接触Java的时候,学习到集合这一章节的时候,实在是理解不了迭代器这一概念,只能是囫囵吞枣地记住迭代器是用来遍历集合对象中的元素的(其实当时对集合也是一知半解)。当时主要不能理解的是为什么一个看似与集合没有联系的东西能够操纵集合。其实现在看来迭代器能够给我这种印象,正说明了迭代器设计者的成 阅读全文
posted @ 2018-07-20 10:39 大将军姜伯约 阅读(126) 评论(0) 推荐(0)
摘要:快排运用的基本思想是经典的荷兰国旗问题。就是给定一个无序数组和一个数(在数组中出现),将数组中大于给定数的放在左边(小于区),等于给定数的放在中间(等于区),大于给定数的放在右边(大于区)。然后在小于区和大于区继续这一过程,不断递归进行,直到最终小于区、大于区只有一个元素为止。 为什么时间复杂度都是 阅读全文
posted @ 2018-07-17 16:16 大将军姜伯约 阅读(159) 评论(0) 推荐(0)
摘要:堆排序利用了二叉堆这一特殊的数据结构,关于二叉堆我们可以将其想象成一棵完全二叉树,虽然其实现是通过数组,为什么能通过数组实现呢?因为其父节点与左、右子节点存在明确的关系,已知父节点的索引就可以找到其子节点,已知子节点索引也能很容易找到父节点的索引。 如果父节点索引为 i,那么其左节点的索引为 2*i 阅读全文
posted @ 2018-07-17 15:57 大将军姜伯约 阅读(118) 评论(0) 推荐(0)
摘要:归并排序利用了递归的思想以及外部排序。外部排序就是给两个有序数组整体排成一个有序的大数组或者将一个数组分成有序的两部分后进行整体排序,基本过程是由两个指针分别指向两个有序数组的头部位置,然后比较两个指针指向的元素,同时需要一个一个大小为两个有序数组大小之和的辅助数组,比较哪个小就将该元素复制到辅助数 阅读全文
posted @ 2018-07-17 15:36 大将军姜伯约 阅读(102) 评论(0) 推荐(0)
摘要:与选择排序前面的元素有序不同的是,冒泡排序每次排序是将最大的元素交换到后面去,每一趟排序排定一个元素位置,即未排序的最后一位。 阅读全文
posted @ 2018-07-17 15:25 大将军姜伯约 阅读(98) 评论(0) 推荐(0)
摘要:选择排序的思想较为简单,就是每一趟遍历剩下的所有元素,找到其中最小的,然后交换使之排到当前的最前面位置(就是未排定元素中的第一个位置)。 选择排序是一种不稳定排序。 阅读全文
posted @ 2018-07-17 15:19 大将军姜伯约 阅读(113) 评论(0) 推荐(0)
摘要:插入排序的基本思想是当排到位置 i 的时候,前面的所有元素都是有序的,但不保证都处于最终位置上,即可能后面有可能插入新的元素,而这插入的过程就是当前位置 i 上的元素向前插入,直到不能再插入为止。 例如一个数组经过几趟插入排序后是[1,3,4,2,6],此时应该排 i = 3,那么元素2就要与前一个 阅读全文
posted @ 2018-07-17 14:48 大将军姜伯约 阅读(146) 评论(0) 推荐(0)
摘要:对象的创建是一件非常耗费资源的事,如果频繁的创建状态没有改变的对象是一件没有意义的事情。那么,我们可以提供一个给予对象的窗口,而不再允许使用者自由的创建实例对象,这种设计模式就是单例模式。 根据这个对象是在什么时候创建分为懒加载和非懒加载。懒加载就是在使用者明确要对象的时候才创建对象,非懒加载是类一 阅读全文
posted @ 2018-07-17 14:21 大将军姜伯约 阅读(104) 评论(0) 推荐(0)
摘要:虽然对于Spring的基本思想Aop是基于动态代理和CGlib这一点很早就有所认识,但是什么是动态代理却不甚清楚。为了对Spring加深理解,我觉得好好学习一下java的动态代理是非常有必要的。 静态代理 在学习动态代理之前我先花一点时间了解一下静态代理,从静态代理出发了解代理到底是怎么一回事,以及 阅读全文
posted @ 2018-07-17 12:56 大将军姜伯约 阅读(420) 评论(0) 推荐(1)