随笔分类 - java
摘要:本文整理来源 《轻松学算法——互联网算法面试宝典》/赵烨 编著 插入排序 什么是插入排序 插入排序分为两种,一种是直接插入排序,一种是二分法插入排序。这两种排序实际上都是插入排序,唯一的不同就是插入的方式不一样。 插入排序就是往数列里面插入数据元素。一般我们认为插入排序就是往一个已经排好顺序的待排序
阅读全文
摘要:本文整理来源 《轻松学算法——互联网算法面试宝典》/赵烨 编著 算法基础 对于算法性能分析来说,除了时间复杂度,还是有空间复杂度、稳定性等指标。而我们平时说的算法的复杂度可以分为两个部分:时间复杂度和空间复杂度。 时间复杂度 在科学计算中,算法的时间复杂度是一个函数,它定量地描述了一个算法的运行时间
阅读全文
摘要:汉诺塔 栈的数据结构非常适合汉诺塔来解释,因为二者的操作原理是一样的,由此也衍生了针对汉诺塔的依稀额算法。其中一个就是三根柱子的汉诺塔的移动步骤。 汉诺塔的移动原理 这里我们详细的介绍一个汉诺塔的移动原理,假设三根柱子分别是A、B、C,一开始A上有N个圆盘,从小到大、从上到下分别是1、2......
阅读全文
摘要:本文整理来源 《轻松学算法——互联网算法面试宝典》/赵烨 编著 链表其实也可以使用数组模拟 在C或者C++语言中有“指针”的概念。因为这个概念,链表在编程语言中能够方便地得以发挥作用,但并不是所有的编程语言中都有这个指针概念,比如Java。虽然没有“指针”这个概念,但是Java有“引用”的概念,类似
阅读全文
摘要:本文整理来源 《轻松学算法——互联网算法面试宝典》/赵烨 编著 链表 虽然在很多的高级语言中,链表已经尽量的被隐藏起来,而且其应用之处还有很多的。 什么是链表 链表与数据结构有些不同。栈和队列都是申请一段连续的空间,然后按顺序存储数据;链表是一种物理上的非连续、非顺序的存储结构,数据元素之间的顺序是
阅读全文
摘要:本文整理来源 《轻松学算法——互联网算法面试宝典》/赵烨 编著 用栈实现队列 由于栈和队列的特殊顺序存储结构,一些面试官会出一些题目,比如用栈实现队列和用队列实现栈。 这样的题目在实际工作中并不具有实际应用意义,完全是为了考察大家的思考能力。 用两个栈实现队列 一般会用两个栈来实现队列。首先,我们将
阅读全文
摘要:本文整理来源 《轻松学算法——互联网算法面试宝典》/赵烨 编著 队列 什么是队列 什么是队列?队列就是一个队伍。队列和栈一样,由一段连续的存储空间组成,是一个具有自身特殊规则的数据结构。栈是后进先出的规则,队列刚好相反,是一个先进先出(FIFO,First In First Out)或者说是后进后出
阅读全文
摘要:本文整理来源 《轻松学算法——互联网算法面试宝典》/赵烨 编著 栈 什么是栈 栈是有着特殊规则的数据结构,栈有着重要的一个特点——后进先出(LIFO, Last In First Out),也可以叫做先进后出(FILO, First In Last Out),我们无论如何只能够从一端去操作元素。 栈
阅读全文
摘要:本文整理来源 《轻松学算法——互联网算法面试宝典》/赵烨 编著 数组 自我解读 数组是一堆数据按照顺序放入的固定长度空间。 1. 数组的长度固定,所以在声明时需要指定数组长度。如果长度不够用,也没有什么办法,想要继续存放数据,只能重新声明一个数组空间。 2. 数据只能够按顺序访问,虽然开发时可以通过
阅读全文
摘要:try catch finally的执行顺序学习 首先执行try,如果有异常执行catch,无论如何都会执行finally,当有return以后,函数就会把这个数据存储在某个位置,然后告诉主函数,我不执行了,接下来你执行吧,所以函数就会退出。首先执行try,如果有异常执行catch,无论如何都会执行
阅读全文
摘要:切记,不要忽略异常 尽管这条建议看上去显而易见,但是它常常被违反,因而值得再次被提出来。当API的设计者声明一个方法将被抛出某个异常的时候。他们等于正在试图说明某些事情。所以请不要忽略它!要忽略一个异常非常容易,只需要讲方法调用通过try语句包围起来,并包含一个catch块: 空的catch块会使异
阅读全文
摘要:常用的异常 | 异常 | 使用场合 | | | | | IllegalArgumentException | 非null的参数不正确 | | IllegalStateException | 对于方法调用而言,对象状态不合适 | | NullPointerException | 在禁止使用null的情
阅读全文
摘要:当心字符串的连接性能 字符串连接操作符(+)是把多个字符串合并为一个字符串的便利途径。要想产生单独一行的输出,或者构建一个字符串来表示一个较小的、大小固定的对象,使用连接符操作符是非常合适的,但是它不适合运用在大规模的场景中。未连接n个字符串而重复使用字符串连接操作符,需要n的平方级的时间。这是由于
阅读全文
摘要:将局部变量的作用域最小化 将局部变量的作用域最小化,可以增强代码的可读性和可维护性,并降低出错的可能性。 在较早的程序设计语言(C语言),要求局部变量必须在一个代码块的开头处进行声明,出于习惯,很多程序员目前还是继续这样做。这个习惯过应该纠正。再次提醒,Java允许你在任何可以出现语句的地方声明变量
阅读全文
摘要:理解国际站代码结构 O/R Mapping 是 Object Relationl Mapping(对象关系映射)的缩写。通俗点讲,就是对象与关系数据库绑定,用对象来表示关系数据。在O/R Mapping的世界里,有两个基本的也是很重要的东东需要了解一下,即VO,PO。 VO,值对象(Value Ob
阅读全文
摘要:返回零长度的数组或集合,而不是null 像下面的方法并不少见: 把没有奶酪(cheese)可买的情况当做一种特例,这是不合理的。这样做会要求客户端必须有额外的代码来处理null返回值,例如: 而不是下面这些代码: 对于一个返回null而不是令狐冲那个度数组或者集合的方法,几乎每次都要用到该方法时都需
阅读全文
摘要:用EnumMap代替序数索引 有时候,会见到利用ordinal方法来索引数组的代码。例如下面这个简化的类,表示一种烹饪用的香草: 假设有一个香草的数组,表示一座花园中的植物,想要按照类型(一年生、多年生或者两年生植物)进行组织后将植物列出来。 有些程序员会将这些集合放到一个按照类型序号进行索引的数组
阅读全文
摘要:用EnumSet代替位域 如果一个枚举类型的元素主要用在集合中,一般使用int枚举模式,将2的不同倍数赋予每个常量: java // Bit field enumeration constants OBSOLETE public class Test{ public static final int
阅读全文
摘要:枚举——用实例域代替序数 许多枚举天生就与一个单独的int值相关联。所有的枚举都有一个ordinal方法,它返回每个枚举常量在类型中的数字位置。你可以试着从叙述中得到关联的int值: 虽然这个枚举不错,但是维护起来就像一场噩梦。如果常量进行重新编译,numberOfMusicians方法就会遭到破坏
阅读全文
摘要:泛型的使用 声明中具有一个或者多个类型参数的类或者接口,就是泛型类或者接口。例如,从Java 1.5发行版本起,List接口就只有单个类型参数E,表示列表的元素类型。从技术的角度来看,这个接口的名称应该是指现在的 (读作“E的列表”),但是人们经常把它简称为List。泛型类和接口统称为泛型。 每种泛
阅读全文

浙公网安备 33010602011771号