我有以下代码:
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
}
};
timer.schedule(task, 10000);//execute after 10 seconds
Run Code Online (Sandbox Code Playgroud)
我们可以确定该任务是否已经由计时器执行或者是否仍然有效?
根据Avro 文档中“默认”属性的定义:“此字段的默认值,用于读取缺少此字段的实例(可选)。”
这意味着如果缺少相应的字段,则采用默认值。
但情况似乎并非如此。考虑以下student模式:
{
"type": "record",
"namespace": "com.example",
"name": "Student",
"fields": [{
"name": "age",
"type": "int",
"default": -1
},
{
"name": "name",
"type": "string",
"default": "null"
}
]
}
Run Code Online (Sandbox Code Playgroud)
架构说:如果缺少“年龄”字段,则将值视为 -1。同样对于“名称”字段。
现在,如果我尝试从以下 JSON 构建 Student 模型:
{"age":70}
Run Code Online (Sandbox Code Playgroud)
我得到这个例外:
org.apache.avro.AvroTypeException: Expected string. Got END_OBJECT
at org.apache.avro.io.JsonDecoder.error(JsonDecoder.java:698)
at org.apache.avro.io.JsonDecoder.readString(JsonDecoder.java:227)
Run Code Online (Sandbox Code Playgroud)
看起来默认值没有按预期工作。那么, default 在这里的作用究竟是什么?
这是用于生成学生模型的代码:
Decoder decoder = DecoderFactory.get().jsonDecoder(Student.SCHEMA$, studentJson);
SpecificDatumReader<Student> datumReader = new SpecificDatumReader<>(Student.class);
return datumReader.read(null, decoder);
Run Code Online (Sandbox Code Playgroud)
(Student类是由 Avro 编译器从学生模式自动生成的)
有没有一种方法可以运行gradle任务并将其输出保存到shell变量中?
例如,让我们考虑打印模块版本的gradle任务:
task getVersion << {
println '2.2.0'
}
Run Code Online (Sandbox Code Playgroud)
我像这样在shell中运行此任务:
$./gradlew getVersion
Run Code Online (Sandbox Code Playgroud)
是否可以将gradle任务getVersion的输出保存到shell变量中。例如:
VERSION=`./gradlew getVersion`
echo "Module Version is $VERSION"
Run Code Online (Sandbox Code Playgroud) 我有以下这个界面:
public interface FruitDetails {
public String getFruitName();
}
Run Code Online (Sandbox Code Playgroud)
几个实现上述接口的类:
public class Banana implements FruitDetails{
private int index;
public Banana(int i) {
index = i;
}
@Override
public String getFruitName() {
return "Banana Fruit " + index;
}
}
Run Code Online (Sandbox Code Playgroud)
和
public class Apple implements FruitDetails{
private int index;
public Apple(int i) {
index = i;
}
@Override
public String getFruitName() {
return "AppleFruit " + index;
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个打印水果细节的功能:
static void getFruitDetails(List<FruitDetails> fruits) {
for (FruitDetails fruitDetails : fruits) { …Run Code Online (Sandbox Code Playgroud)