随笔分类 -  Java

上一页 1 2 3 4 5 6 ··· 8 下一页
摘要:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法(如果覆盖了finalize()方法),并且在下一次垃圾回收器发生时,才会真正回收对象占用的内存。 至于为什么在下一次垃圾回收动作发生时才会回收内存,原因是如果一个对象覆盖了 finalize() 方法,那么在真正被宣告 阅读全文
posted @ 2019-03-09 14:12 林木声 阅读(1230) 评论(0) 推荐(0)
摘要:类加载器的双亲委托模型并不是一个强制的约束模型,而是 Java 设计者推荐给开发者的一种加载器方式。上面类加载器的父子关系一般不会以继承的方式实现,而是采用组合的关系来复用父类加载器的代码。 工作过程:如果一个类加载器收到了类加载的请求,它首先不会自己去加载这个类,而是把这个请求委派给父类加载器去完 阅读全文
posted @ 2019-03-09 14:06 林木声 阅读(225) 评论(0) 推荐(0)
摘要:一、直接插入排序 往有序的数组中快速插入一个新的元素。 基本思想:将数组中的所有元素依次跟前面已经排好的元素相比较,如果选择的元素比已排序的元素小,则交换,直到全部元素都比较过为止。 二、希尔排序 希尔排序又称递减增量排序算法。希尔排序是先把待排序的记录序列分割成若干子序列,分别进行直接插入排序,待 阅读全文
posted @ 2019-03-08 19:31 林木声 阅读(316) 评论(0) 推荐(0)
摘要:一、定义 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。 二、实现 观察者模式使用三个类 Subject、Observer 和 Client。Subject 对象带有绑定观察者到 Clie 阅读全文
posted @ 2019-03-08 16:37 林木声 阅读(157) 评论(0) 推荐(0)
摘要:一、定义 一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。 意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 二、实现 阅读全文
posted @ 2019-03-08 16:29 林木声 阅读(110) 评论(0) 推荐(0)
摘要:一、定义 动态的给对象添加一些额外的属性或行为。相比于使用继承,装饰者模式更加灵活。 Component:装饰者和被装饰者共同的父类,是一个接口或者抽象类,用来定义基本行为 ConcreteComponent:定义具体对象,即被装饰者 Decorator:抽象装饰者,继承自Component,从外类 阅读全文
posted @ 2019-03-08 16:14 林木声 阅读(137) 评论(0) 推荐(0)
摘要:一、定义 适配器模式,即定义一个包装类,用于包装不兼容接口的对象。 包装类=适配器 被包装的类=被适配的类 二、解决的问题 原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 三、模式原理 3.1 类适配器模式 类的适配器模式是把适配的类的API转换成为目标类的API。 在上图中可以看出: 冲 阅读全文
posted @ 2019-03-08 16:01 林木声 阅读(144) 评论(0) 推荐(0)
摘要:一、定义 简单工厂模式,又被称为静态工厂方法模式。在简单工厂模式中,可以根据参数的不同,返回不同类的实例。 二、模式组成 1、抽象产品 2、具体产品 3、工厂 三、适用的场景 其实由定义也大概能推测出其使用场景,首先由于只有一个工厂类,所以工厂类中创建的对象不能太多,否则工厂类的业务逻辑就太复杂了, 阅读全文
posted @ 2019-03-08 15:25 林木声 阅读(191) 评论(0) 推荐(0)
摘要:一、java.util.concurrent介绍 java.util.concurrent包含了许多线程安全,测试良好,高性能的并发模块。创建java.util.concurrent的目的就是要实现Collection框架对数据结构所执行的并发操作。 二、核心组件 Executor Executor 阅读全文
posted @ 2019-03-08 15:04 林木声 阅读(1511) 评论(0) 推荐(0)
摘要:题目:There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity 阅读全文
posted @ 2019-03-07 09:04 林木声 阅读(149) 评论(0) 推荐(0)
摘要:题目: 数字以0123456789101112...格式序列化到一个字符序列中。在这个序列中,第5位(从0开始)是5,第13位是1。 解答: 比如找1001位数字 1、1位数有10个,0-9,数字为10x1=10个,显然1001>10,跳过这10个数值,在后找第991为位数字(1001-10) 2、 阅读全文
posted @ 2019-03-06 11:02 林木声 阅读(286) 评论(0) 推荐(0)
摘要:题目: 我们把只包含因子2、3和5的数称为丑数。求按从小到大的顺序的第1500个丑数。习惯上我们把1当做第一个丑数。 解答: 对于已经有的丑数,我们顺序存放在数组中,对于乘以2而言,必定存在一个某个丑数T2,排在它前面的每个丑数乘以2得到的结果都会小于已有的最大丑数,排在它之后的每二个丑数乘以2得到 阅读全文
posted @ 2019-03-06 09:58 林木声 阅读(181) 评论(0) 推荐(0)
摘要:题目: 请从字符串中找出一个最长的不含重复字符串的子字符串,计算该最长子字符串的长度。假设字符串中只包含'a'-'z'的字符。 解答: 阅读全文
posted @ 2019-03-06 09:00 林木声 阅读(715) 评论(0) 推荐(0)
摘要:PriorityQueue是基于优先级堆的极大优先级队列 在PriorityQueue提供的构造方法中,可以使用自定义的排序方法: 也可以使用元素自带的Comparable排序 因此,PriorityQueue要求在默认排序的时候,需要元素对象拥有Comparable功能。 但是,若对象在没有Com 阅读全文
posted @ 2019-03-05 17:19 林木声 阅读(344) 评论(0) 推荐(0)
摘要:题目: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 我们来分析一下上述算法的时间复杂度。假设总共有k个list,每个list的最大长度是n,那么运 阅读全文
posted @ 2019-03-05 16:58 林木声 阅读(345) 评论(0) 推荐(0)
摘要:队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。 LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。 以下实例演示了队列(Queue)的用法: 阅读全文
posted @ 2019-03-05 16:26 林木声 阅读(728) 评论(0) 推荐(0)
摘要:题目: 要求使用非递归的方法,中序遍历二叉树。 解答: 前序遍历 可以使用一个栈来模拟这种操作: 首先将root压栈; 每次从堆栈中弹出栈顶元素,表示当前访问的元素,对其进行打印; 依次判断其右子树,左子树是否非空,并进行压栈操作,至于为什么先压栈右子树,因为先压栈的后弹出,左子树需要先访问,因此后 阅读全文
posted @ 2019-03-05 16:22 林木声 阅读(5942) 评论(0) 推荐(0)
摘要:题目: 字符串转换为整数 : atoi 可能的输入: 1 带符号数 2 无符号数 3 零 4 空指针 5 超出表示范围 – 暂时仅仅是直接退出且设置最小 – 可以考虑此时抛个异常 6 非法输入,比如并不是一个0-9或者+ -组成的字符串 – 对于非法输入一律返回的是Integer.MIN_VALUE 阅读全文
posted @ 2019-03-05 15:45 林木声 阅读(222) 评论(0) 推荐(0)
摘要:题目: 实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。 解答: 阅读全文
posted @ 2019-03-05 15:27 林木声 阅读(123) 评论(0) 推荐(0)
摘要:题目: 不使用循环判断一个数字是不是2的n次方 解答: 阅读全文
posted @ 2019-03-05 15:01 林木声 阅读(273) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 ··· 8 下一页