Fork me on GitHub

ARTS(9)

ARTS 第九周

每周完成一个ARTS(也就是 Algorithm、Review、Tip、Share 简称ARTS):

  1. 每周至少做一个 leetcode 的算法题
  2. 阅读并点评至少一篇英文技术文章
  3. 学习至少一个技术技巧
  4. 分享一篇有观点和思考的技术文章。

Algorithm

力扣 539. 最小时间差

给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并已分钟数表示。

示例 1:

1
2
输入: ["23:59","00:00"]
输出: 1

备注:

  1. 列表中时间数在 2~20000 之间。
  2. 每个时间取值在 00:00~23:59 之间。

思路:1. 先转为分钟数;2. 将最小时间增加 1440 分钟后也加入比较(跟当前最大时间比较,取得差值);3. 比较相邻时间的差值,选择出最小的差值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

import org.junit.Assert;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

// 这里把中文标题当作类名只是为了方便使用,class 名称不建议使用中文
public class 最小时间差 {

@Test
public void testResult() {
List<String> timePoints = new ArrayList<>();
timePoints.add("23:59");
timePoints.add("00:00");
int result = findMinDifference(timePoints);
Assert.assertEquals(result, 1);
}

public int findMinDifference(List<String> timePoints) {
int n = timePoints.size();
int[] minutes = new int[n];

for (int i = 0; i < n; ++i) {
String temp = timePoints.get(i);
String clock = temp.substring(0, temp.indexOf(":"));
String minu = temp.substring(temp.indexOf(":") + 1);
minutes[i] = Integer.parseInt(clock) * 60 + Integer.parseInt(minu);
}
Arrays.sort(minutes);
int minDiff = minutes[0] + 24 * 60 - minutes[n - 1];
for (int i = 1; i < n; i++) {
int diff = minutes[i] - minutes[i - 1];
if (diff < minDiff) {
minDiff = diff;
}
}
return minDiff;
}
}

REVIEW

本周主要对官网上的 yarn 进行解读,原文地址:Apache Hadoop YARN

解读:

  1. yarn 分布式资源管理系统,可以容纳多种计算框架,具备集群资源共享,资源弹性收缩功能。
  2. yarn 是负责将资源管理工作调度拆分成单独的守护进程的过程。对象是单独的 job 或者 DAG job.
    1. 资源管理器 Resource Manager,负责最终的资源分配;
    2. NodeManager,负责 container 的资源用度,并报告给 Resource Manager。
    3. App Mstr 负责向 Resource Manager 申请资源。

 2. ResourceManager 有两个组分:scheduler 和 applicationManager。
      1. sheduler 专职负责定位资源,不理会当前 app 的status。比较常见的有:CapacityScheduler 和 FairScheduler。
      2. ApplicationManager 负责接受提交的 job,负责将执行 app 的第一个 container 指定为 ApplicaitonMaster,负责在 Failure 时重启 ApplicationMaster。ApplicationMaster 负责从 sheduler 申请合适的资源。
 3. yarn 支持资源预留(Resource reservation)的概念,为一些重要任务的**可预测执行**,申明某些资源的deadline。
 4. yarn 使用 Yarn 联合(yarn federation)的概念,将一些子集群扩大为更大的 yarn 集群,用于大型工作之中。

TIP

。。。当程序员千万别认真,认真你就输了

还有,情绪管理很重要

SHARE

分享内容见本站另一篇文章,点链接:Flink 入门笔记(1)

-------------The End-------------