https://www.gravatar.com/avatar/932f1b40c8d0202ce03a0df412bfb0ff?s=240&d=mp

chaomai's Odyssey

Docker笔记

Docker笔记

操作系统虚拟化

Operating-system-level virtualization, 又叫做容器化(containerization),指的是操作系统提供了这样一个功能,内核允许存在多个隔离的用户空间实例,每个实例叫做一个容器(container)。

函数式编程相关

Notes of Functional Programming in Scala and more.

Pure Function

对于一个函数 f: A => B,如果任何一个值 a: A 都有只有一个 b: B 与之对应,使得 b 仅仅由 a 决定,那么这个函数是纯函数。任何内部或外部状态的改变都不影响 f(a) 的结果。

scanRight和动态规划

scanRight

这是 Functional Programming in Scala 一书中,练习5.16的一个问题。问题是,把 tail 泛化为 scanRight,这个 scanRight 需要返回中间结果形式的 stream。例如:

1
2
scala> Stream(3, 2, 1).scanRight(0)(_ + _).toList
res0: List[Int] = List(6, 5, 3, 0)

注:1. 给定一个 stream,tail 会将这个输入的所有后缀作为 stream 返回;2. 中间结果形式的 stream 意味着结果是以 call-by-name 的方式构造的;3. 遍历 scanRight 的时间复杂度应该为 $O(n)$。

Awk关键点记录

Variables

一个变量名就是一个合法的表达式。awk 的变量被默认初始化为空 string,当转换为数字时,是0,因此不需要显式初始化变量。

在为 awk 指定参数时,可以定义变量并赋值,-v variable=text,这样的变量在 BEGIN 之前就被定义,可以在 BEGIN 中使用。但 -v 必须先于文件名参数和程序文本。

Hive笔记

cluster by vs order by vs sort by

  • ORDER BY x: guarantees global ordering, but does this by pushing all data through just one reducer. This is basically unacceptable for large datasets. You end up one sorted file as output.

  • SORT BY x: orders data at each of N reducers, but each reducer can receive overlapping ranges of data. You end up with N or more sorted files with overlapping ranges.