小编Bri*_*ian的帖子

如何将Double []转换为double []?

我正在实现一个接口,其功能类似于可以包含对象类型的表.接口指定以下功能:

double[] getDoubles(int columnIndex);
Run Code Online (Sandbox Code Playgroud)

我感到难过的是,在我的实现中,我将表数据存储在2D Object数组(Object[][] data)中.当我需要返回值时,我想要执行以下操作(假设getDoubles()只会在包含双精度的列上调用,因此将不会ClassCastExceptions):

double[] getDoubles(int columnIndex) {
    return (double[]) data[columnIndex];
}
Run Code Online (Sandbox Code Playgroud)

但是 - Java不允许Object[]强制转换为double[].将它转换Double[]为正常是因为它Double是一个对象而不是一个原语,但我的接口指定数据将作为一个返回double[].

所以我有两个问题:

  1. 有什么办法可以从Object[][]表中获取列数据并返回原语数组吗?
  2. 如果我确实将界面更改为返回Double[],是否会对性能产生影响?

java arrays autoboxing

63
推荐指数
4
解决办法
8万
查看次数

在Java中访问内存的最佳方法是什么,类似于mmap?

我正在开发一个需要与C应用程序通信的Java应用程序.C应用程序使用共享内存和mmap进行通信,我需要Java应用程序才能访问相同的内存.

我的第一次尝试涉及使用JNI调用从共享内存中检索数据,但每次JNI调用的开销都会导致性能下降,因此我想要一种方法来获取Java中的内存并在Java端进行数据检索.

我的想法是我需要做以下事情:

  1. 使用一个JNI调用来获取我需要附加到的共享内存位置的位置
  2. 创建一个新的FileChannel()
  3. 使用该FileChannel使用map()创建MappedByteBuffer

这是最好的方法吗?另外,我不确定如何实际创建FileChannel以指向正确的内存位置.

java memory

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

C++返回本地对象

几个同事和我正在讨论当从C++方法返回局部变量(在堆栈上分配)时会发生什么.

以下代码适用于单元测试,但我认为这只是因为单元测试很幸运,并且不会尝试重用obj使用的堆栈上的内存.

这有用吗?

static MyObject createMyObject() {
    MyObject obj;
    return obj;
}
Run Code Online (Sandbox Code Playgroud)

c++

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

从64位应用程序加载32位共享库?

我有一个编译为32位的共享库.我可以在64位应用程序中使用它,还是需要将共享库编译为64位?

c++ shared-libraries

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

防止Java多次加载库

我有几个使用相同JNI库的类,称为"jni".在每个类中,我在类的静态初始化程序中调用了System.loadLibrary():

Class class1 {
    static{
        System.loadLibrary("jni");
    }
    ...
}

Class class2 {
    static{
        System.loadLibrary("jni");
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,我只想调用System.loadLibrary()一次,因为它可能需要一段时间.是否有一种简单而干净的方法来防止同一个库的多次加载?

java java-native-interface

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

有没有办法在FTP URL中指定绝对路径?

我正在使用Java URL和URLConnection类使用FTP将文件上传到服务器.我不需要做任何事情,只需上传文件,所以我想避免任何外部库,我担心使用不支持的sun.net.ftp类.

有没有办法在FTP连接字符串中使用绝对路径?我想把我的文件放在"/ ftptransfers/..."之类的东西,但FTP路径是相对于用户主目录的.

示例上传代码:

URL url = new URL("ftp://username:password@host/file.txt");
URLConnection uc = url.openConnection();
uc.setDoOutput(true);
OutputStream out = uc.getOutputStream() ;
out.write("THIS DATA WILL BE WRITTEN TO FILE".getBytes());
out.close();
Run Code Online (Sandbox Code Playgroud)

java ftp url

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

Web应用程序中Java静态成员的范围

Java静态变量是否在同一Web应用程序的实例之间共享?

class MyClass
{
    private static SomeClass myStaticObject = new SomeClass();
}
Run Code Online (Sandbox Code Playgroud)

如果Web应用程序使用MyClass并且该应用程序的多个实例在Web服务器上运行,那么myStaticObject是否已多次初始化?

java static

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

如何子类化模板化的基类?

我有以下数据结构:

struct fastEngine { ... }
struct slowEngine { ... }

template<typename T>
class Car {
   T engine;
   vector<T> backupEngines;

   virtual void drive() = 0;
}

class FastCar : public Car<fastEngine> {
   virtual void drive() {
      // use the values of "engine" in some way
   }
}

class SlowCar : public Car<slowEngine> {
   virtual void drive() {
      // use the values of "engine" in some way
   }
}

Car* getCarFromCarFactory() {  // 1
   if (randomNumber == 0)
      return new FastCar(); …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance templates

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

如何禁用JSpinner的键盘和鼠标输入?

当我尝试通过键盘或鼠标使JSpinner不可编辑时,如下所示:

((DefaultEditor) mySpinner.getEditor()).getTextField().setEditable(false);
mySpinner.setEnabled(false);
Run Code Online (Sandbox Code Playgroud)

它禁用任何键盘输入和粘贴,但我仍然可以单击向上/向下按钮并更改值.

如何禁用向上/向下按钮?

java swing jspinner

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

将 std*** 从 C++ 重定向到 Java 以进行日志记录

我有一个 C++ 应用程序和一个 Java 应用程序,它们需要以相同的方式记录消息。我的 Java 应用程序使用由 Log4j 配置支持的 Apache Commons Logging。我需要一个 log4j 配置,以便我可以在一个位置更改我的日志记录首选项。在我的 C++ 应用程序中,我捕获了对 printf() 和 fprintf(std***) 的所有调用,并且我认为我有以下选项:

  1. 在我的 C++ 应用程序中 fork,从 (f)printf() 调用到新进程 stdin 创建一个管道,并启动一个 Java 程序,该程序从 stdin 读取并使用 Commons Logging 记录

  2. 使用 JNI 的 JNI_CreateJVM() 在 C++ 应用程序中创建一个 JVM,并在进行 (f)printf() 调用时调用 Java 日志记录方法

  3. 使用 Log4cxx 之类的东西来读取与 Java 应用程序相同的配置并在 C++ 中本地登录

我想尽可能避免选项 3,因为我不想向我的应用程序添加另一个第三方依赖项。我知道从 C++ 过渡到 Java 会产生性能成本,但我不确定它是否会那么重要。

c++ java ipc pipe

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