ARTS-week36

Algorithms

Missing Number
思路: 用等差数列求和公式求出0到n的和 - 遍历数组算出给定数字的和

1
2
3
4
5
6
7
8
9
10
11
class Solution {
public:
int missingNumber(vector<int>& nums) {
int sum = 0;
int n = nums.size();
for (int i = 0; i < n; ++i) {
sum += nums[i];
}
return n * (n + 1) / 2 - sum;
}
};

First Bad Version
思路: 二分搜索。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Forward declaration of isBadVersion API.
bool isBadVersion(int version);

class Solution {
public:
int firstBadVersion(int n) {
int left = 0, right = n - 1;
while (left < right) {
int mid = left + (right - left) / 2;
if (isBadVersion(mid + 1)) {
right = mid;
}
else {
left = mid + 1;
}
}
return right + 1;
}
};

Review

本周阅读英文文章 A guide to Face Detection in Python

文中提到的关键词:
1)Haar特征选择
2)Cascading Classifiers
3)Dlib中提供的人脸检测工具使用了方向梯度直方图(HOG, Histogram of Oriented Gradients)的概念。
4)CNN

作者通过计算时间和准确性两个指标进行了评估,速度上,HOG最快,其次是Haar Cascading Classifiers和CNN,但Dlib的CNN往往是最准确的算法,HOG有一些识别小脸的问题。

Technique

阅读Tanenbaum的《计算机网络》一书中,关于成帧

数据链路层将比特流拆分为多个离散的帧,为每个帧计算一个称为校验和的短令牌,并将该校验和放在帧中一起传输。当帧到达目标机器时,要重新计算该帧的校验和。
成帧方法:
1)字节计数法;
利用头部的一个字段来标识该帧中的字符数。问题在于有可能因为一个传输错误而被弄混。这种方法很少被使用。

2)字节填充的标志字节法;
该方法考虑到了出错之后的重新同步问题,让每个帧用一些特殊的字节作为开始和结束,这些特殊字节通常相同,称为标志字节,作为帧的起始和结束。当标志字节出现在数据中,尤其传输二进制数据时,这种情况会严重干扰帧的分界。发送方的数据链路层在数据中”偶然”出现的每个标志字节前面插入一个特殊的转义字节(ESC),用来区别数据中的标志字节和分界的标志字节,这种技术称为字节填充。

举个栗子:

1
2
3
4
原始字节:
A FLAG B
填充之后:
A ESC FLAG B

3)比特填充的标志字节法;
帧的划分在比特级完成,因而帧可以包含任意大小单元组成的二进制比特数。每个帧的开始和结束由一个特殊的比特模式,011111100x7E标记。

每当发送方的数据链路层在数据中遇到连续5个1,便自动在输出的比特流中填入一个0。类似字节填充,在数据字段的标志字节前插入一个转义字节到出境字符中。还确保了转换的最小密度,由助于物理层同步,USB采用了这种比特填充技术。

举个栗子:

1
2
3
4
原始数据:
0110 11111 11111 11111 10010
填充数据:
0110 111110 111110 111110 10010

4)物理层编码违禁法;
使用”编码违禁”来区分帧的边界。优点在于用作分界符的信号是保留不用的,所以很容易通过他们找到帧的开始和结束,而且不需要填充数据。

例如,4B/5B线性编码模式下,4个数据位被映射成5个信号比特,通过这种方法确保线路上的信号有足够的跳变。这意味着32个可能的信号中有16个是不会被使用的。

Share

  • 使用fsarchiver创建全盘镜像

fsarchiver可以将整个磁盘分区中的内容保存成一个压缩归档文件,保留文件的扩展属性,可将当前文件系统恢复到磁盘中。

安装:

1
$ sudo apt install fsarchiver

创建文件系统备份

1
$ fsarchiver savefs backup.fsa /dev/sda1

从备份归档中恢复分区

1
$ fsarchiver restfs backup.fsa id=0,dest=/dev/sda1

id=0表示从备份归档中提取第一个分区的内容,将其恢复到由dest=/dev/sda1所指定的分区。

更多的操作可以查看官方文档:
http://www.fsarchiver.org/quickstart/

0%