随笔分类 -  Java

摘要:前言 Q: 为什么学习并发? A: 到目前为止,你学到的都是有关顺序编程的知识,即程序中的所有事物在任意时刻都只能执行一个步骤。 A: 编程问题中相当大的一部分都可以通过使用顺序编程来解决,然而,对于某些问题,如果能够并行地执行程序的多个部分,则会变得非常方便而且很有必要。 A: 并发编程可以使程序 阅读全文
posted @ 2019-04-27 23:34 fireway 阅读(717) 评论(0) 推荐(1)
摘要:堆的介绍 Q: 什么是堆? A: 这里的“堆”是指一种特殊的二叉树,不要和Java、C/C++等编程语言里的“堆”混淆,后者指的是程序员用new能得到的计算机内存的可用部分 A: 堆是有如下特点的二叉树: 1) 是一棵完全二叉树 2) 通常由数组实现。前面介绍了如何用数组表示树 3) 堆中的每个节点 阅读全文
posted @ 2018-12-05 07:44 fireway 阅读(678) 评论(0) 推荐(0)
摘要:前言 数据结构可划分为线性结构、树型结构和图型结构三大类。前面几篇讨论了数组、栈和队列、链表都是线性结构。树型结构中每个结点只允许有一个直接前驱结点,但允许有一个以上直接后驱结点。树型结构有树和二叉树(Binary Tree)两种,二叉树最多只允许有两个直接后继结点的有序树。 本篇将学习树的用途、运 阅读全文
posted @ 2018-08-23 07:03 fireway 阅读(1120) 评论(0) 推荐(0)
摘要:希尔排序 Q: 什么是希尔排序? A: 希尔排序因计算机科学家Donald L.Shell而得名,他在1959年发现了希尔排序算法。 A: 希尔排序基于插入排序,但是增加了一个新的特性,大大地提高了插入排序的执行效率。 Q: 回忆之前的插入排序,有哪些缺点? A: 回忆之前的简单排序的“插入排序”一 阅读全文
posted @ 2018-08-10 07:53 fireway 阅读(744) 评论(0) 推荐(0)
摘要:三角数字 Q: 什么是三角数字? A: 据说一群在毕达哥拉斯领导下工作的古希腊的数学家,发现了在数学序列1,3,6,10,15,21,……中有一种奇特的联系。这个数列中的第N项是由第N-1项加N得到的。 由此,第二项是由第一项(1)加上2,得3。第三项是由第二项(3)加上3得到6,依次类推。 这个序 阅读全文
posted @ 2018-07-14 10:10 fireway 阅读(1338) 评论(0) 推荐(0)
摘要:Q: 为什么要引入链表的概念?它是解决什么问题的? A: 数组作为数据存储结构有一定的缺陷,在无序数组中,搜索是低效的;而在有序数组中,插入效率又很低;不管在哪一个数组中删除效率都很低;况且一个数组创建后,它的大小是不可改变的。 A: 在本篇中,我们将学习一种新的数据结构 —— 链表,它可以解决上面 阅读全文
posted @ 2018-06-04 06:46 fireway 阅读(943) 评论(0) 推荐(0)
摘要:Q: 栈、队列与数组的区别? A: 本篇主要涉及三种数据存储类型:栈、队列和优先级队列,它与数组主要有如下三个区别: A: (一)程序员工具 数组和其他的结构(栈、队列、链表、树等等)都适用于数据库应用中作为数据记录。它们常用于记录那些对应于现实世界的对象和活动的数据,如职员档案等,这些结构便于数据 阅读全文
posted @ 2018-04-24 06:31 fireway 阅读(666) 评论(0) 推荐(1)
摘要:Q: 冒泡排序? A: 1) 比较相邻的元素。如果第一个比第二个大,就交换它们两个; 2) 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数; 3) 针对所有的元素重复以上的步骤,除了最后一个。因此总共有N - 1 趟; 4) 持续每次对越来越少的元素 阅读全文
posted @ 2018-03-22 06:48 fireway 阅读(358) 评论(0) 推荐(0)
摘要:Q: 数组的创建? A: Java中有两种数据类型,基本类型和对象类型,在许多编程语言中(甚至面向对象语言C++),数组也是基本类型。但在Java中把数组当做对象来看。因此在创建数组时,必须使用new操作符: int [] objArray = null; // defines a referenc 阅读全文
posted @ 2018-03-11 17:24 fireway 阅读(861) 评论(0) 推荐(0)
摘要:Q: 为什么要学习数据结构与算法? A: 如果说Java语言是自动档轿车,C语言就是手动档吉普。数据结构呢?是变速箱的工作原理。你完全可以不知道变速箱怎样工作,就把自动档的车子从1档开到4档,而且未必就比懂得的人慢。写程序这件事,和开车一样,经验可以起到很大作用,但如果你不知道底层是怎么工作的,就永 阅读全文
posted @ 2018-03-06 07:02 fireway 阅读(918) 评论(0) 推荐(0)
摘要:Q: 如何快速地存取员工的信息? A: 假设现在要写一个程序,存取一个公司的员工记录,这个小公司大约有1000个员工,每个员工记录需要1024个字节的存储空间,因此整个数据库的大小约为1MB。一般的计算机内存都可以满足。 为了尽可能地存取每个员工的记录,使用工号从1(公司创业者)到1000(最近雇佣 阅读全文
posted @ 2018-03-03 10:17 fireway 阅读(813) 评论(0) 推荐(0)
摘要:Q: 什么是外部存储? A: 外部存储特指某类磁盘系统,例如在大多数台式电脑或服务器中的硬盘。 Q: 如何访问外部存储? A: 我们所学的数据结构都是假设数据存储在内存中,但是,在很多情况下要处理的数据量太大,不能都存储在内存中。这种情况下需要另一种存储方式,访问外部磁盘文件上的数据。外部磁盘存储的 阅读全文
posted @ 2018-01-04 08:05 fireway 阅读(1355) 评论(0) 推荐(0)
摘要:Q1: 什么是2-3-4树? A1: 在介绍2-3-4树之前,我们先说明二叉树和多叉树的概念。 二叉树:每个节点有一个数据项,最多有两个子节点。 多叉树:(multiway tree)允许每个节点有更多的数据项和更多的子节点。在多叉树中,节点的数据项是按关键字升序排列。 A1: 2-3-4树就是多叉 阅读全文
posted @ 2017-12-20 08:19 fireway 阅读(487) 评论(0) 推荐(0)
摘要:前言 本篇将结合JDK1.6的TreeMap源码,来一起探索红-黑树的奥秘。红黑树是解决二叉搜索树的非平衡问题。 当插入(或者删除)一个新节点时,为了使树保持平衡,必须遵循一定的规则,这个规则就是红-黑规则: 1) 每个节点不是红色的就是黑色的 2) 根总是黑色的 3) 如果节点是红色的,则它的子节 阅读全文
posted @ 2017-11-19 22:34 fireway 阅读(569) 评论(0) 推荐(0)
摘要:类和接口 类和接口是Java程序设计语言的核心,也是Java语言的基本抽象单元 使类和成员的可访问性最小化 在公有类中使用访问方法而非公有域 使可变性最小化 复合优先于继承 继承(inheritance)是实现代码重用的有力手段,但它并非永远是完成这项工作的最佳工具。 在包的内部使用继承是非常安全的 阅读全文
posted @ 2017-08-21 08:00 fireway 阅读(234) 评论(0) 推荐(0)
摘要:考虑使用静态工厂方法代替构造器 类可以提供一个公有的静态工厂方法(public static factory method)来返回一个类的实例。例如,Boolean类的valueOf()方法: public static Boolean valueOf(boolean b) { return (b 阅读全文
posted @ 2017-08-01 08:32 fireway 阅读(682) 评论(0) 推荐(0)
摘要:service provider frameworks - 服务提供者框架: 多个服务提供者实现一个服务,系统为服务提供者的客户端提供多个实现,并把他们从多个实现中解耦出来。 SPF 包括以下组件: 示例: SPFTest 通过上面的例子可以看出,我们只需要输入一个key就可以得到对应的类的实例,进 阅读全文
posted @ 2017-07-21 08:41 fireway 阅读(3102) 评论(0) 推荐(0)
摘要:Ant的使用 什么是Apache Ant Apache Ant是一个基于java的软件构建工具(build tool),理论上它有点类似C/C++的make工具 为什么要用ant? make, gnumake, nmake, jam或其他已有的构建工具里,为什么还需要单独搞这个ant工具呢? 因为前 阅读全文
posted @ 2017-07-16 23:41 fireway 阅读(441) 评论(1) 推荐(0)