Sorting in Java

Java 6 中 sort 方法默认采用的是传统快速排序。

Java 7 开始则使用改进版的双轴快速排序(DualPivotQuicksort)。

Java 8 中 Arrays 的排序方法只提供了两种算法的实现

Protocol Buffers

Protocol Buffers(简称:ProtoBuf)是一种开源跨平台的序列化数据结构的协议。其对于存储资料或在网络上进行通信的程序是很有用的。这个方法包含一个接口描述语言,描述一些数据结构,并提供程序工具根据这些描述产生代码,这些代码将用来生成或解析代表这些数据结构的字节流。

JSON (JavaScript Object Notation, /ˈdʒeɪsən/)

JSON(JavaScript Object Notation, /ˈdʒeɪsən/)是由道格拉斯·克罗克福特构想和设计的一种轻量级资料交换格式。其内容由属性和值所组成,因此也有易于阅读和处理的优势。JSON是独立于编程语言的资料格式,其不仅是JavaScript的子集,也采用了C语言家族的习惯用法,目前也有许多编程语言都能够将其解析和字符串化,其广泛使用的程度也使其成为通用的资料格式。

JDBC

Java Database Connectivity(JDBC) API 提供来自 Java 编程语言的通用数据访问。使用 JDBC API,您几乎可以访问任何数据源,从关系数据库到电子表格和平面文件。JDBC 技术还提供了一个通用基础,可以在此基础上构建工具和替代接口。JDBC API 为基于 SQL 的数据库访问提供调用级 API。

幂等 Idempotent

幂等是一个数学与计算机科学概念。

  • 在数学里,幂等有两种主要的定义。
    • 在某二元运算下,幂等元素是指被自己重复运算(或对于函数是为复合)的结果等于它自己的元素。例如,乘法下唯一两个幂等实数为0和1。
    • 某一元运算为幂等的时,其作用在任一元素两次后会和其作用一次的结果相同。例如,高斯符号便是幂等的。幂等用函数表达式就是:f(x) = f(f(x))。
    • 一元运算的定义是二元运算定义的特例
  • 计算机科学中,幂等表示一次和多次请求某一个资源应该具有同样的副作用,或者说,多次请求所产生的影响与一次请求执行的影响效果相同。

海量数据处理

所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。那解决办法呢?

  • 针对时间,采用巧妙的算法搭配合适的数据结构,如 Bloom filter/Hash/bit-map/堆/数据库或倒排索引/trie树,
  • 针对空间,无非就一个办法:大而化小,分而治之(hash映射)。

至于所谓的单机及集群问题,通俗点来讲,单机就是处理装载数据的机器有限(只要考虑cpu,内存,硬盘的数据交互),而集群,机器有多辆,适合分布式处理,并行计算。