1 引言

HDFS(Hadoop Distributed File System)是基于 GFS 的思想来实现的可扩展的分布式文件系统,支持海量数据的存储。HDFS 可以运行在低成本的硬件之上,具有高容错、高可靠性、高可拓展性、高吞吐率等特点,非常适合大规模数据集的应用。

项目代码: https://github.com/apache/hadoop

Read more »

1 前言

跳表(SkipList ) 又称跳跃表,是一种随机化的数据结构,可以视作二叉树的一个变种,它在性能上和红黑树,AVL 树不相上下,但是跳表的原理非常简单,在 RedisLeveLDB 中都有用到。同时也是面试中的热门问题。

Read more »

1 实际场景

1.1 订单处理系统

考虑实现一个订单处理系统,为了方便订单的后续处理,系统需要在订单保存的时候,每当订单的预定产品数量超过 1000 时,就需要将订单拆成两份订单来保存,若订单拆分后,数量仍然超过 1000,则持续拆分,直到每份订单的预定产品数量不超过 1000

其中根据当前业务,订单的类型分为两种:一种是个人订单;一种是公司订单;

Read more »

前言

最近在学习 HDFS,看到一篇很有意思的文章,通过漫画的形式来讲解 HDFS 的原理,可以很好地帮助初学者入门。

为什么市面上大多数的教材和技术书籍,要讲内容将的晦涩难懂,入门体验非常差。希望能多一些这种漫画的风趣幽默,并且通俗易懂的书出现,寓教于乐才是学习的高境界。

Read more »

1 实际场景

1.1 导出数据的应用框架

工厂方法模式一文中,讨论并使用工厂方法模式来解决了导出数据的应用框架中如何选择具体到处方式的问题,并没还有涉及到具体的数据导出实现方式,即,没有实现如何将数据导出成文本、xml 等具体的格式。本文场景需要讨论数据导出的具体实现。

Read more »

1 实际场景

1.1 读取配置文件的内容

很多应用项目中,都有与应用相关的配置文件,这些配置文件是由项目开发人员自定义的,在里面定义一些应用需要的参数数据。在实际的项目中,这种配置文件多采用 xml 格式的。也有采用 properties 格式(使用 Java 来读取 properties 格式的配置文件比较简单)

考虑如何实现代码来读取配置文件中的内容?

Read more »

1 实际场景

1.1 组装电脑

设想一个组装电脑的场景,在组装电脑时,需要选着一些配件,如:CPU、硬盘、内存、主板、电源、机箱等。为降低复杂度,目前只考虑 CPU 和主板。

事实上,我们在选择 CPU 的时候,面临一系列的问题,比如:品牌、型号、针脚数目、主频等问题,只有把这些都确定下来,才能确定具体的 CPU。同样,在选择主板的时候,也有一系列的问题,比如:品牌、芯片组、集成芯片、总线频率等问题,也只有这些都确定了,才能确定具体的主板。

在最终确定这个装机方案之前,还需要整体考虑各个配件之间的兼容性,比如:CPU 和主板,如果 CPU 针脚数和主板提供的 CPU 插口不兼容,是无法组装的。也就是说,装机方案是有整体性的,里面选择的各个配件之间是有关联的

对于装机工程师而言,他只知道组装一台电脑,需要相应的配件,但是具体使用什么样的配件,还得由客户说了算。也就是说装机工程师只是负责组装,而客户负责选择装配所需要的具体的配件。因此,当装机工程师为不同的客户组装电脑时,只需要按照客户的装机方案,去获取相应的配件,然后组装即可。

如何利用代码模拟选择配件进行装机的过程?

Read more »

1 实际场景

1.1 导出数据的应用框架

假设某个企业应用,需要每天定期额汇总各个分公司的业务数据,进行数据导入与核算。但是各个公司分布在不同的地方,且公司没有建设专用内网的条件。 需要各个公司将不同数据导出,然后由专门运输渠道将数据上交给总部。

则此应用需要:支持多种数据格式的导出(如:文本、数据库备份、Excel 格式、Xml 格式等等),并真正执行数据导出动作。

Read more »

1 引言

1.1 接口回顾

接口是 Java 的一种特殊抽象类,和一般的抽象类相比,接口里面所有的方法都是抽象方法,接口里面的所有属性都是常量。接口里面只有方法定义而不会有任何的方法实现。

Read more »

1 概述

算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。

那么应该如何去衡量不同算法之间的优劣呢?

Read more »