小编Tob*_*iSH的帖子

警告#13212:在需要堆栈对齐的函数中引用ebx

我正在尝试使用ICC 2018编译以下代码:

__asm {
        mov ebx, xx              ;xx address to registers
}
Run Code Online (Sandbox Code Playgroud)

其中xx的类型为int16.这是我函数中的第一条指令.

我使用上面的汇编代码得到以下警告:警告#13212:在需要堆栈对齐的函数中引用ebx

令人惊讶的是,当我用eax或esi替换ebx时,我看到警告消失了.我无法理解为什么我只看到ebx的问题,据我所知,ebx和eax都有相同的架构(32位寄存器).

此外,当我使用ICC 2013编译相同的代码时,我没有看到警告.

谁能帮我解决这个警告?

谢谢!

c++ assembly

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

System.out.println默认是线程安全的吗?

System.out返回"标准"输出流 - a PrintStream.该javadoc的PrintStream告诉我任何关于线程安全的,但看源的OpenJDKOracleJDK告诉我,println是同步的.

/**
 * Prints a String and then terminate the line.  This method behaves as
 * though it invokes <code>{@link #print(String)}</code> and then
 * <code>{@link #println()}</code>.
 *
 * @param x  The <code>String</code> to be printed.
 */
public void println(String x) {
    synchronized (this) {
        print(x);
        newLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

这非常适合我的经验:System.out.println()从不同的线程调用时,调用从未创建"混合"输出.

所以我的问题:

  1. 我可以依赖这种行为(使用不同的JVM)吗?
  2. 是否有一些我遗漏的文档描述了这种行为?

java openjdk multithreading

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

为什么命令模式下的shell(sh)变量未导出?

如果我运行这样的shell命令,我的导出变量是不可见的.

sh -c "export x=100; echo x is $x"
Run Code Online (Sandbox Code Playgroud)

我希望它输出"x是100"但它只是说"x是".如果我运行它是在交互模式下它按预期工作.

我的shell版本是:GNU bash,版本3.2.51(1)-release(x86_64-suse-linux-gnu)

linux shell sh

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

Flink(Kafka 来源)如何管理偏移量?

我正在使用 Flink FlinkKafkaConsumer09,我想知道 kafka 消费者的偏移量存储在哪里?

我在 Zookeeper 和 Kafka 的偏移主题中都找不到它们。kafka-consumer-offset工具也找不到。

这是 Flink 内部处理的吗?

apache-kafka apache-flink

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

Cassandra使用ThreadPriorityPolicy = 42启动错误

当我尝试启动Cassandra时,它向我显示错误,我已经在env.sh中对conf文件进行了更改,该文件也是如此.

没有相似类型错误的选项适用于此.

intx ThreadPriorityPolicy=42 is outside the allowed range [ 0 ... 1 ]
Improperly specified VM option 'ThreadPriorityPolicy=42'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Run Code Online (Sandbox Code Playgroud)

其他信息

java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
Run Code Online (Sandbox Code Playgroud)

java multithreading jvm cassandra

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

为什么flink检查点的创建差异如此之大

在创建flink检查点时,我能否以某种方式获取更多详细信息?创建flink检查点的时间因子10而异.这至少是我的jobmanager logfile告诉我的:

2017-02-14 09:03:43,234 INFO  org.apache.flink.runtime.checkpoint.CheckpointCoordinator     - Triggering checkpoint 161 @ 1487059423232
2017-02-14 09:08:17,447 INFO  org.apache.flink.runtime.checkpoint.CheckpointCoordinator     - Completed checkpoint 161 (in 271425 ms).
2017-02-14 09:08:43,233 INFO  org.apache.flink.runtime.checkpoint.CheckpointCoordinator     - Triggering checkpoint 162 @ 1487059723233
2017-02-14 09:09:46,684 INFO  org.apache.flink.runtime.checkpoint.CheckpointCoordinator     - Completed checkpoint 162 (in 61951 ms).
Run Code Online (Sandbox Code Playgroud)

检查点161只需要一分钟即可创建,而下一个检查点162需要4.5分钟(它持续8分钟而不是回到1.5分钟).

  • 这可能与我使用的一些TumblingWindows有关(窗口持续时间为3分钟)?
  • 有没有办法影响频率(和位置)旁边的检查点创建?

apache-flink

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

在 apache flink 中反序列化 protobuf 事件中的事件时出现问题

我正在我的 Flink 应用程序中读取来自 kinesis 的事件。事件采用 protobuf 格式。如果我'com.google.protobuf:protobuf-java:3.7.1'在 flink 应用程序中使用 with ,我就没有问题。但是,如果我将其更改为'com.google.protobuf:protobuf-java:3.10.0'我会得到上述堆栈跟踪异常

java.lang.IncompatibleClassChangeError: class com.google.protobuf.Descriptors$OneofDescriptor has interface com.google.protobuf.Descriptors$GenericDescriptor as super class
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
        at java.lang.Class.privateGetPublicMethods(Class.java:2902)
        at java.lang.Class.privateGetPublicMethods(Class.java:2917)
        at java.lang.Class.getMethods(Class.java:1615)
        at org.apache.flink.api.java.typeutils.TypeExtractor.isValidPojoField(TypeExtractor.java:1786)
        at org.apache.flink.api.java.typeutils.TypeExtractor.analyzePojo(TypeExtractor.java:1856)
        at org.apache.flink.api.java.typeutils.TypeExtractor.privateGetForClass(TypeExtractor.java:1746)
        at org.apache.flink.api.java.typeutils.TypeExtractor.privateGetForClass(TypeExtractor.java:1643)
        at org.apache.flink.api.java.typeutils.TypeExtractor.createTypeInfoWithTypeHierarchy(TypeExtractor.java:921)
        at org.apache.flink.api.java.typeutils.TypeExtractor.privateCreateTypeInfo(TypeExtractor.java:781)
        at org.apache.flink.api.java.typeutils.TypeExtractor.createTypeInfo(TypeExtractor.java:735)
        at org.apache.flink.api.java.typeutils.TypeExtractor.createTypeInfo(TypeExtractor.java:731)
        at org.apache.flink.api.common.typeinfo.TypeInformation.of(TypeInformation.java:211)
        at org.apache.flink.api.java.typeutils.ListTypeInfo.<init>(ListTypeInfo.java:45)
        at …
Run Code Online (Sandbox Code Playgroud)

java protocol-buffers amazon-kinesis apache-flink

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

为什么将 scala Set 转换为 Vector 而不是 List?

我想知道如果我要求一个子类,为什么 aSet[A]被转换Vector[A]为 a Seq[A]?为了说明这一点,请使用以下示例:

val A = Set("one", "two")
val B  = Set("one", "two", "three")

def f(one: Seq[String], other : Seq[String]) = {
  one.intersect(other) match {
    case head :: tail => head
    case _ => "unknown"
  }
}

f(A.to, B.to)
Run Code Online (Sandbox Code Playgroud)

这个函数将返回“unknown”而不是一个。原因是A.to将被强制转换为Vector[String]. cons 运算符 ( ::) 不是为 Vectors 定义的,而是为 Lists 定义的,因此应用了第二种情况并返回“unknown”。为了解决这个问题,我可以使用+:为所有定义的运算符Seqs或将 Set 转换为 List ( A.to[List])。所以我的(学术)问题是:

为什么会A.to返回一个 Vector。至少根据Scala 文档Seqis的默认实现LinearSeq …

types scala scala-collections

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