小编Zac*_*ack的帖子

寻找实现javac重载决策算法的Java代码

假设我有一个Objects(特别是一个Object[])数组和一个Constructor对象数组.

任何人都可以向我推荐一些可以查看Constructor对象的Java代码,并根据我的数组中对象的实际类型选择最具体的Java代码.换句话说,我想要一种算法的实现,javac用于在一组重载方法中进行选择.

java overload-resolution

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

为什么gcc在main的开头推动%rbx?

最新版本的gcc正在制作对我来说没有意义的装配.我没有使用优化编译代码; 但是,即使没有优化,此代码的某些部分也没有意义.

这是C源:

  #include <stdio.h>

   int main()
   {
     int a = 1324;
     int b = 5657;
     int difference = 9876;
     int printf_answer = 2221;

     difference = a - b;

     printf_answer = printf("%d + %d = %d\n", a, b, difference);

     return difference;
   }
Run Code Online (Sandbox Code Playgroud)

它产生这个组件:

    .file   "exampleIML-1b.c"
    .section    .rodata
.LC0:
    .string "%d + %d = %d\n"
    .text
.globl main
    .type   main, @function
main:
.LFB0:
    .cfi_startproc
    pushq   %rbp
    .cfi_def_cfa_offset 16
    .cfi_offset 6, -16
    movq    %rsp, %rbp
    .cfi_def_cfa_register 6
    pushq   %rbx
    subq    $24, %rsp …
Run Code Online (Sandbox Code Playgroud)

assembly gcc

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

这个Java方法调用的歧义在哪里?

我得到一个"引用make is ambiguous"编译错误,我不明白.

我有这两种方法

public static <T> T make(String name, Class<T> parentClass, 
                         boolean rethrowRuntimeExceptions, 
                         Object... params) throws DLException

 public static <T> T make(String name, Class<T> parentClass,
                          Object... params) throws DLException
Run Code Online (Sandbox Code Playgroud)

这行代码被标记为含糊不清

  String className = "clsNme";
  String one = "1";
  String two = "2";     
  SimpleFactory.make(className, Object.class, false, one, two);
Run Code Online (Sandbox Code Playgroud)

这是错误

both method <T#1>make(String,Class<T#1>,boolean,Object...) in SimpleFactory and method <T#2>make(String,Class<T#2>,Object...) in SimpleFactory match
    [javac]   where T#1,T#2 are type-variables:
    [javac]     T#1 extends Object declared in method <T#1>make(String,Class<T#1>,boolean,Object...)
    [javac]     T#2 extends Object declared in method …
Run Code Online (Sandbox Code Playgroud)

java ambiguity variadic-functions mockito powermock

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

在i7上访问“原始”寄存器时是否存在瓶颈?

简洁版本:

在Intel i7处理器,是有某种瓶颈访问的“原始”寄存器(中eaxebxecxedx)是不存在的“新”寄存器(r8dr9d,等)?我正在计时一些代码,如果尝试并行运行三个添加指令,则只要三个添加指令中只有两个引用“原始”寄存器(例如,我使用eaxebxr9d)。如果我尝试使用三个“原始”寄存器,则CPI最高约为0.4。我在i7-3770和i7-4790上都观察到了。

细节:

我试图为我的计算机体系结构课程开发一个新的(希望很有趣)实验室。他们的目标是让他们在Intel i7处理器上计时一些汇编代码,并观察(a)处理器的吞吐量和(b)数据依赖性的后果。

当我尝试编写一些显示平均CPI为0.33的汇编代码(即,表明CPU可以保持每个周期3条指令的吞吐量)时,我发现只有在最多访问3条指令中的两条时才有可能“原始”通用寄​​存器。

实验设置

这是实验的基本概述:用于rdtsc对几千条指令进行时间分段,然后将“周期数”与定时指令的数量进行对比,以估算吞吐量。例如,在循环内运行此代码

    mov $0, %eax
    cpuid
    rdtsc
    movl    %eax, %r12d
    addl    $1, %eax
    addl    $1, %eax
    # the line above is copied "n" times 
    # (I use a ruby script to generate this part of the assembly)
    addl    $1, %eax

    rdtsc
    subl    %r12d, %eax
Run Code Online (Sandbox Code Playgroud)

允许我们报告执行一系列n addl指令所需的时间(以参考周期为单位)。(以上代码段是一个较长的程序的一部分,该程序重复多次测量,抛出前几千次试验,并报告最低和/或最常见的结果。)

结果有意义

当我对单个寄存器进行一系列加法运算时,我得到了预期的结果:

instructions    elapsed reference …
Run Code Online (Sandbox Code Playgroud)

optimization performance x86 intel cpu-architecture

6
推荐指数
0
解决办法
117
查看次数

使用 importmap 将 Rails 7 中仅在一页中使用的 Javascript 放置在何处

当使用带有导入映射的 Rails 7 时,我应该在哪里放置只应由一个视图执行的代码?

具体来说,我有一个需要在加载时运行一些 Javascript 代码的视图。我的 JavaScript 看起来像这样:

import {TheController} from "./TheController"

let controller = new TheController();

document.onreadystatechange = function () {
  if (document.readyState === 'complete') {
    controller.onLoad();
  }
};  
Run Code Online (Sandbox Code Playgroud)

如何设置 Javascript 环境以便document.onreadystatechange代码仅由所需的视图执行?(当我将此代码放入由 导入的文件中时,一切几乎都能正常工作,但随后它会被每个application.js视图执行。)

我怀疑答案是创建单独的 importmaps 和 importmap_tags;但是,我可以在 Rails 7 中找到有关如何执行此操作的任何演示。

javascript ruby-on-rails import-maps ruby-on-rails-7

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

为什么 Javascript readline 问题方法在包裹在 Promise 中时会读取不止一行

为什么 Javascript readlinequestion方法在封装在 Promise 中时会读取不止一行?

下面的代码应该只是将行号添加到输入中。如果我运行它并在命令行中键入输入,它会按预期工作。但是,如果我将文件重定向到进程中,那么它会立即消耗整个文件。这是为什么?

预期输出:

Next line, please: File line 1
1       File line 1
Next line, please: File line 2
2       File line 2
Next line, please: File line 3
3       File line 3
Next line, please: File line 4
4       File line 4
Next line, please: Input stream closed.
Run Code Online (Sandbox Code Playgroud)

观察到的输出(运行时node testReadline.mjs < the_file.txt

Next line, please: File line 1
File line 2
File line 3
File line 4
1       File line 1 …
Run Code Online (Sandbox Code Playgroud)

javascript readline promise es6-promise

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

大写和NoClassDefFoundError与ClassNotFoundException

我看到跨平台的差异关于Class.forName()何时抛出ClassNotFoundException以及何时抛出NoClassDefFoundError.这个行为在某个地方定义得很好,还是我偶然发现了一个错误?

请考虑以下代码(默认包中的独立java文件):

public class DLExceptionType {

  private static void printFindError(String name) {
    System.out.print(name + ": ");
    try {
      Class.forName(name);
      System.out.println("** no error **");
    } catch (Throwable e) {
      System.out.println(e);
    }
  }

  public static void main(String[] args) {
    printFindError("DLExceptionType");
    printFindError("dLExceptionType"); // note the mis-capitalization
  }
}
Run Code Online (Sandbox Code Playgroud)

代码在Linux上生成预期输出:

[eos18:~]$ java -version DLExceptionType
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)
[eos18:~]$ java DLExceptionType
DLExceptionType: ** no error **
dLExceptionType: java.lang.ClassNotFoundException: dLExceptionType
Run Code Online (Sandbox Code Playgroud)

它在Windows上生成一个不同但可理解的输出: …

java classloader platform-independent

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

调整mips-gcc输出以与MARS一起使用

mips-gcc生成的MIPS汇编代码几乎(但不是完全)运行在Mars MIPS模拟器上。例如:

  • 编译器生成“ j $ 31”而不是“ jr $ 31”
  • 编译器将.align指令放置在Mars不允许的文本段中。

此外,生成的程序集还没有完全设置好,因此无法正确启动和停止(即,末尾没有sycall 10)。

这些问题似乎都可以通过简单的脚本轻松解决。但是,在我重新发明轮子之前,我想知道:(1)是否有任何gcc标志将使其中的一些问题消失?(2)是否有人知道可以修复mips-gcc输出以使其在火星上运行的现有程序?

(FWIW,我在gcc 3.3.6和4.6.1上看到相同的行为。)

mips spim mars-simulator

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

使用C ++ catch框架验证断言语句

是否可以使用C ++ CATCH框架来验证assert语句正确标识了无效的前提条件?

// Source code
void loadDataFile(FILE* input) {
  assert(input != NULL);
  ...
}

// Test code
TEST_CASE("loadDataFile asserts out when passed NULL", "[loadDataFile]") {
   loadDataFile(NULL)
   // Now what do I look for?
}
Run Code Online (Sandbox Code Playgroud)

c++ assert catch-unit-test

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

是否有可以编写黄瓜步骤定义的 Visual Studio Code 扩展?

是否有可以编写黄瓜步骤定义的 Visual Studio Code 扩展?

例如,如果我输入 IntelliJ

When I login as "fred" with password "barney"
Run Code Online (Sandbox Code Playgroud)

进入一个功能,然后在未定义的步骤上按 alt-enter,IntelliJ 将自动生成

When(/^I login as "([^"]*)" with password "([^"]*)"$/) do |arg1, arg2|
  pending
end
Run Code Online (Sandbox Code Playgroud)

在我的步骤定义文件之一中。

Visual Studio Code 也可以这样做吗?(我确实安装了 Cucumber Full Support;但是,它似乎只能自动完成现有步骤。)

intellij-idea cucumber auto-generate visual-studio-code

5
推荐指数
0
解决办法
1930
查看次数