因此,根据我对延迟槽的理解,它们在调用分支指令时发生,并且分支之后的下一条指令也从内存加载.这有什么意义?在分支被采取的情况下,你不希望分支后的代码不运行吗?是否节省时间,以防分支机构没有被采取?
我正在查看管道图,看起来分支后的指令正在进行中..
可能重复:
我什么时候应该在课堂上使用"this"?
在引用实例的字段时,如何知道是否使用"this"?
例如:
return this.name
Run Code Online (Sandbox Code Playgroud)
我被教了一个有用的案例.即当输入参数与字段名称相同时:
public void setName(String name) {
this.name = name;
}
Run Code Online (Sandbox Code Playgroud)
除此之外,"这个"似乎不需要..还有什么其他案例?
我们学习了大O符号,但我经常看到T(n).例如,
public static Comparable[] mergeSort(Comparable[] A, int low, int high) {
if (low < high) { //at least 2 elements? //cost = c
int mid = (low + high)/2; //cost = d
Comparable[] A1 = mergeSort(A, low, mid); //cost = T(n/2) + e
Comparable[] A2 = mergeSort(A, mid+1, high); //cost = T(n/2) + f
return merge(A1,A2); //cost = g n + h
}
.... //cost = i
Run Code Online (Sandbox Code Playgroud)
我相信c,d,e,......意味着任意命名的常数.
T(n/2)是什么意思?T标记如何与大O相关?
我试图哈希一个unsigned long值,但哈希函数需要一个unsigned char *,如下面的实现中所示:
unsigned long djb2(unsigned char *key, int n)
{
unsigned long hash = 5381;
int i = 0;
while (i < n-8) {
hash = hash * 33 + key[i++];
hash = hash * 33 + key[i++];
hash = hash * 33 + key[i++];
hash = hash * 33 + key[i++];
hash = hash * 33 + key[i++];
hash = hash * 33 + key[i++];
hash = hash * 33 + key[i++];
hash …Run Code Online (Sandbox Code Playgroud)