ARTS-week38

Algorithms

Power of Three

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
bool isPowerOfThree(int n) {
if (n <= 0) {
return false;
}
while (n % 3 == 0) {
n /= 3;
}
return n == 1;
}
};

Power of Four

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
bool isPowerOfFour(int num) {
if (num <= 0) {
return false;
}
while (num % 4 == 0) {
num /= 4;
}
return num == 1;
}
};

Review

本周阅读英文文章 Istio Observability with Go, gRPC, and Protocol Buffers-based Microservices

Technique

《计算机网络》第五章 网络层

网络层内部根据提供的服务类型,可能存在两种不同的组织方式。

如果提供的是无连接的服务,那么所有的数据包都被独立地注入到网络中,并且每个数据包独立路由,不需要提前建立任何设置。在这样的上下文中,数据包通常称为数据报,它类似与电报,对应的网络称为数据报网络。

如果提供的是面向连接的服务,那么,在发送数据包之前,必须先建立起一条从源路由器到目标路由器之间的路径,这个连接称为虚电路(VC,virtual circuit),它类似于电话系统中建立的物理电路,对应的网络称为虚电路网络。

路由算法是网络层软件的一部分,它负责确定一个入境数据包应该被发送到哪一条输出线路上。如果内部使用了数据报,那么路由器必须针对每一个到达的数据包重新选择路径,因为自上一次选择路径后,最佳路径可能已经改变。如果网络内部使用了虚电路,那么只有当建立一条新的虚电路时,才需要做路由决策,此后数据包只要沿着已经建立连接的路径向前传递即可。

有时对路由和转发两个功能进行区分是非常有用的,路由即对使用哪一条路径做出决策,而转发则是当一个数据包到达时该采取什么动作。可以将路由器想象成内部有两个进程,其中一个进程在每个数据包到达时对它进行处理,它在路由表中查找该数据包所对应的出境线路,即为转发进程;另一个进程负责生成和更新路由表,是路由算法发挥作用的地方。

路由算法分为两个大类:非自适应算法和自适应算法。

非自适应算法(nonadaptive algorithm)不会根据当前测量或者估计的流量和拓扑结构,来调整他们的路由决策。与此相反,自适应算法则会改变他们的路由决策以便反应出拓扑结构的变化,通常也会反映出流量的变化情况。动态路由算法会在多个方面有所不同: 获取信息的来源不同(例如,来自本地、相邻路由器,或所有路由器)、改变路径的时间不同(例如,每当拓扑发生变化时,或者每隔△t秒随负载变化)以及用于路由优化的度量不同(例如,距离、跳数或者估计的传输时间)。

Share

推荐两篇文章:
PROCESS MEMORY AND MEMORY CORRUPTIONS

Arm Heap Exploitation

0%