小编Gab*_*是好人的帖子

const数据存储在哪里?

例如:

在文件中demo.c,

#inlcude<stdio.h>
int a = 5;
int main(){
  int b=5;
  int c=a;
  printf("%d", b+c);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

因为int a = 5,编译器是否将其转换为虚拟内存地址处的存储区0x5,例如,Ox0000000f在const区域中,以便将int c = a其转换为类似的内容movl 0x0000000f %eax

然后,对于int b = 5,数字5不会被放入const区域,而是直接转换为汇编指令中的立即数mov $0x5 %ebx.

c++

5
推荐指数
1
解决办法
431
查看次数

JavaScript 函数参数和作用域

我用下面列出的代码做了一些测试:

function foo(x) {
    alert(y);
}
var y = 'I am defined outside foo definition';
foo();
Run Code Online (Sandbox Code Playgroud)

上面的代码给了我一个警告“我被定义在 foo 定义之外”。

然后另一个测试:

function bar(x) {
    alert(x);
}
var x = 'I am defined outside foo definition';
bar();

function bar(x) {
    alert(x);
}
x = 'I am defined outside bar definition';
bar();
Run Code Online (Sandbox Code Playgroud)

以上两个代码都给我一个警告“未定义”。

所以为什么?

javascript scope function

4
推荐指数
1
解决办法
2190
查看次数

Spring Data JPA 存储库方法重载

例如,我有一本书 JpaRepository。书籍有一个名为 的字段Name,书籍存储库有一个方法findOneByName(与 jpa 存储库方法命名约定相同)。但我需要两个不同的版本来findOneByName在不同的用例中使用。一种版本是带锁注释的,另一种是无锁的。像这样:

public interface BookRepository extends JpaRepository<BookDAO, Long> {

   @Lock(LockModeType.READ)
   BookDAO findOneByName( String name );

   BookDAO findOneByName( String name );
}
Run Code Online (Sandbox Code Playgroud)

在 Spring 中可以实现这一目标吗?如果是的话,调用时如何区分这两个方法。如果没有,是否有另一种方法可以在仍然使用 Spring JPA 存储库接口(如 findOneBy***)的情况下完成此操作。

orm spring hibernate spring-data-jpa

2
推荐指数
1
解决办法
3091
查看次数

C++中关键字new的解释

cppreference的网站上,我看到以下句子:

这是C++中保留关键字的列表.由于它们由语言使用,因此这些关键字不可用于重新定义或重载.

在关键词中,有新的.但我知道我们可以在C++中重载新内容.所以上面的引用是错误的,或者关键字new还有其他什么?

c++ operator-overloading new-operator

1
推荐指数
1
解决办法
95
查看次数

fork()神秘地包括在内

下面是使用fork()来展示它是如何工作的代码(fork.c).

gcc --version 节目 gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4

#include <stdio.h>
int num = 0;
int main(int argc, char*argv[]){
    int pid;
    pid = fork();       
    if(pid == 0){       /*child*/
        num = 1;
    }else if(pid > 0){  /*parent*/
        num = 2;
    }
    printf("%d", num);
}
Run Code Online (Sandbox Code Playgroud)

然后gcc fork.c -o fork编译.它编译时没有任何错误,可执行文件正确运行.但我没有明确包含头文件unistd.h,我还检查了所有递归包含的头文件(gcc -H)

. /usr/include/stdio.h
.. /usr/include/features.h
... /usr/include/x86_64-linux-gnu/sys/cdefs.h
.... /usr/include/x86_64-linux-gnu/bits/wordsize.h
... /usr/include/x86_64-linux-gnu/gnu/stubs.h
.... /usr/include/x86_64-linux-gnu/gnu/stubs-64.h
.. /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h
.. /usr/include/x86_64-linux-gnu/bits/types.h
... /usr/include/x86_64-linux-gnu/bits/wordsize.h
... /usr/include/x86_64-linux-gnu/bits/typesizes.h
.. /usr/include/libio.h
... /usr/include/_G_config.h
.... /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h
.... …
Run Code Online (Sandbox Code Playgroud)

c linux gcc posix

0
推荐指数
1
解决办法
1566
查看次数