小编St.*_*rio的帖子

为什么用static,extern声明的变量和没有它的变量包含不同的值

请考虑以下代码段:

#include <stdio.h>

int a=5;

int main ()
{
    extern int a;
    printf("%d\n",a); //5
}

//---------//

#include <stdio.h>

int a=5;

int main ()
{
    static int a;
    printf("%d\n",a); //0
}

//---------//

#include <stdio.h>

int a=5;

int main ()
{
    int a;
    printf("%d\n",a); //12497123435
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么aextern说明符声明时显示5 ?当我们宣布astatic修改,然后alinkagea可表示从另一个范围的实体.

c++ linkage

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

理解线程内语义

你能用简单的词语解释"程序是否满足线程内语义"意味着什么?是否有可能提供满足这些语义并且不满足这些语义的程序的简单示例?

java multithreading java-memory-model

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

为什么 split(".") 会失败?爪哇

我编写了以下代码:

String[] arr = ((String) "asd.asd").split(".");
Run Code Online (Sandbox Code Playgroud)

arr=[]。为什么?

java

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

实际上'gradle -q任务'的作用是什么?

我写了一个构建脚本:

task hello                       // 1

hello << {                       // 2
            println "task hello"
}

hello << {                       // 3
   println "another task hello"
}
Run Code Online (Sandbox Code Playgroud)

正如我理解//1定义的对象Task类型,//2以及//3适用于leftShift(Closure c)运营商对这项任务.当我用命令运行该脚本时,gradle -q hello我看到以下输出:

task hello
another task hello
Run Code Online (Sandbox Code Playgroud)

考虑到这一点,我们可以说gradle -q task_name执行所有封闭的主体operator <<应用或命令有另一种意义吗?

java groovy gradle

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

什么是适用插件:'java'

如Gradle 文档中所述,第6.4节:

Gradle的构建脚本为您提供Groovy的全部功能.

我遇到以下命令:

apply plugin: 'java'
Run Code Online (Sandbox Code Playgroud)

我试图谷歌搜索从Groovy的角度来看它意味着什么,但我不知道.是否有Groovy等价物?

java groovy gradle

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

理解Java中的参考概念

我的问题是关于引用如何在Java中工作.据我所知,通过阅读 JLS 4.12.2,引用是一个正式名称,允许使用引用指向的对象.请考虑以下代码:

public class A{
    private int a = 0;

    void mutate(){
        a++;
    }
}

public void foo (A a){
    a.mutate();
}

public static void main(String[] args){
    A a = new A(); //a is a reference to the object of type A
    foo(a);
}
Run Code Online (Sandbox Code Playgroud)

函数a本地的引用是否与main函数内使用的引用相同foo?我的意思是==如果我们将操作符作为一个操作数应用于这些引用,则运算符将返回true吗?

java reference

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

如何在gradle中复制文件?

我正在尝试将war存档部署到Tomcat中.这是我编写的构建脚本:

apply plugin : 'war'

task deploy (dependsOn: war){
    copy {
        from "build/libs"
        into "E:/apache-tomcat-8.0.14/webapps"
        include "*.war"
    }
}
Run Code Online (Sandbox Code Playgroud)

但它没有效果.有没有war在根webapps.Gradle输出:

:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:war
:deploy
Run Code Online (Sandbox Code Playgroud)

怎么了?

请不要建议我使用任何tomcat-cargo插件.我只是想知道如何修复特定的文件复制任务.

java groovy gradle

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

我们可以在plpgsql函数的开始结束块中声明变量吗?

我试着编写简单的函数:

CREATE OR REPLACE FUNCTION add_mail_settings_column() RETURNS void AS $$
BEGIN
    asd text := 'asd';
END $$ 
LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

但它不起作用:

ERROR:  syntax error at or near "asd"
LINE 3:  asd text := 'asd';
Run Code Online (Sandbox Code Playgroud)

但如果我按如下方式移动它:

CREATE OR REPLACE FUNCTION add_mail_settings_column() RETURNS void AS $$
DECLARE
    asd text := 'asd';
BEGIN

END $$ 
LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

它工作正常.那么我们不能把变量声明放到函数体中吗?

sql postgresql plpgsql

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

覆盖和削弱访问修饰符

根据JLS 8.4.8.1

在类C中声明的实例方法m1将覆盖在类A中声明的另一个实例方法m2,如果以下所有条件都为真:

  • C是A的子类.

  • m1的签名是m2签名的子签名(§8.4.2).

  • 或者:

    • m2在与C相同的包中是公共的,受保护的或声明的,具有默认访问权限

    • m1覆盖方法m3(m3与m1不同,m3与m2不同),使得m3覆盖m2.

这似乎与以下代码不矛盾:

public class Main {

    public void f() { }
    public static class A extends Main {
        protected void f() { }
    }

    public static void main(String[] args) {

    }
}
Run Code Online (Sandbox Code Playgroud)

DEMO

但它没有编译,即使被覆盖的方法版本f()具有protected访问修饰符,如我提供的规则的第二点所述.怎么了?

java overriding jls

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

JSF 2.2所需的最低Tomcat版本

我想将我的JSF 1.2应用程序升级到JSF 2.2.什么是JSF 2.2所需的最低Tomcat版本?我目前正在使用Tomcat 5.是否可以在其上运行JSF 2.2?

jsf tomcat minimum-requirements jsf-2.2

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