架构训练营 第 8 周

作业一

以下两题,至少完成一道

有两个单向链表(链表长度分别为 m,n),这两个单向链表有可能在某个元素合并,如下图所示的这样,也可能不合并。现在给定两个链表的头指针,在不修改链表的情况下,如何快速地判断这两个链表是否合并?如果合并,找到合并的元素,也就是图中的 x 元素。
请用(伪)代码描述算法,并给出时间复杂度和空间复杂度。

class Node {
	String val;
	Node next;
}

Node crossNode(Node left, Node right) {
	Map<String, List<Node>> map = getNodeMap(Node left);
	while (right != null) {
		if (map.containsKey(right.val) {
			for (Node node : map.get(right.val)) {
				if (isSameNode(node, right) {
					return right;
				}
			}
		}
		right = right.next;
	}
	return null;
}

Map<String, List<Node>> getNodeMap(Node left) {
	Node tmpLeft = left;
	Map<String, List<Node>> map = new HashMap<>();
	while (tmpLeft != null) {
		if (map.containsKey(tmpLeft.val) {
			map.get(tmpLeft.val).add(tmpLeft);
		} else {
			List<Node> values = new List<>();
			values.add(tmpLeft);
			map.put(tmpLeft.val, values);
		}
		tmpLeft = tmpLeft.next;
	}
	return map;
}

boolean isSame(Node left, Node right) {
	Node tmpLeft = left;
	Node tmpRight = right;
	while (tmpLeft != null && right != null) {
		if (!tmpLeft.val.equals(right.val) {
			return false;
		}
		tmpLeft = tmpLeft.next;
		tmpRight = tmpRight.next;
	}
	if (tmpLeft == null && tmpRight == null) {
		return true;
	} else {
		return false;
	}
}

时间复杂度: O(N)
空间复杂度:O(N)

请画出 DataNode 服务器节点宕机的时候,HDFS 的处理过程时序图。

在这里插入图片描述

作业二

根据当周学习情况,完成一篇学习总结

actor 模型最早在 erlang 中,scala 的陡峭的学习曲线,actor 模型对于中间件是ok 的,但是对于应用层,并不合适。
RAID 技术解决了文件高可用问题
HDFS 解决了文件系统跨服务器的高可用
分布式文件系统可以用 ceph,glusterfs。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值