小编Jas*_*n S的帖子

关于NetCDF与HDF5存储科学数据的意见?

有没有足够的经验w/NetCDF和HDF5给出一些关于它们的优缺点作为存储科学数据的方式?

我已经使用过HDF5并希望通过Java进行读/写,但是接口本质上是C库的包装器,我发现这让人感到困惑,所以NetCDF看起来很吸引人,但我几乎一无所知.

编辑:我的应用程序"仅"用于数据记录,因此我得到一个具有自描述格式的文件.对我来说,重要的功能是能够添加任意元数据,具有快速写入访问权限以附加到字节数组,以及具有单写入器/多读取器并发(强烈首选但不是必须的.​​NetCDF文档说他们有SWMR但是没有不能说它们是否支持任何机制来确保两个作者不能同时打开同一个文件并带来灾难性后果.我喜欢HDF5的层次结构(特别是我喜欢有向无环图层次结构,比"常规"文件系统类层次结构更灵活),现在正在阅读NetCDF文档...如果它只允许一个数据集文件然后它可能不适合我.:(

更新 - 看起来像NetCDF-Java从netCDF-4文件读取,但只从不支持分层组的netCDF-3文件写入.织补.

更新2009年7月14日:我开始对Java中的HDF5感到非常不满.可用的库不是很好,它有一些主要的绊脚石,与Java的抽象层(复合数据类型)有关.C的一个很好的文件格式,但看起来我只是输了.> :(

hdf5 netcdf

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

python:命名一个具有双字名称的模块

我正在尝试将一个非常简单的模块与一个.py源文件组合在一起,并且已经遇到了障碍.我打算调用它scons-configimport scons-config不能用Python.我找到了这个问题,并看了PEP8风格指南,但有点困惑,它没有谈论双字名称约定.

处理这个问题的正确方法是什么?

  • 模块名称:SconsConfig?scons_config?sconsconfig?scons.config?
  • 其中单个.py文件的名称:scons-config.py?scons_config.py?

编辑:我确实看到"不鼓励使用下划线",这让我陷入了死胡同:我应该使用"sconsconfig"还是"scons_config"(我猜其他的已经出局了)?

python naming-conventions

65
推荐指数
4
解决办法
3万
查看次数

hg标签和hg书签有什么区别?

Mercurial中的标签书签之间有什么区别?我似乎无法找到关于两者如何不同的讨论.

tags mercurial bookmarks

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

C++:数组的构造函数初始化程序

我有大脑痉挛...如何在C++中正确初始化一组对象?

非数组示例:

struct Foo { Foo(int x) { /* ... */  } };

struct Bar { 
     Foo foo;

     Bar() : foo(4) {}
};
Run Code Online (Sandbox Code Playgroud)

数组示例:

struct Foo { Foo(int x) { /* ... */  } };

struct Baz { 
     Foo foo[3];

     // ??? I know the following syntax is wrong, but what's correct?
     Baz() : foo[0](4), foo[1](5), foo[2](6) {}
};
Run Code Online (Sandbox Code Playgroud)

编辑:狂野和疯狂的解决方法的想法值得赞赏,但在我的情况下他们不会帮助我.我正在开发一个嵌入式处理器,其中std :: vector和其他STL结构不可用,显而易见的解决方法是创建一个默认构造函数并使用一个init()可以在构造时间之后调用的显式方法,这样我就不会根本不得不使用初始化器.(这是我被Java的final关键字+灵活性与构造函数所破坏的情况之一.)

c++ constructor initializer

64
推荐指数
4
解决办法
13万
查看次数

如何在Mac上运行Eclipse -clean?

我可以eclipse -clean在我的电脑上运行,但在我的Mac上,可执行文件是Eclipse.app - 你如何使用命令行中的参数运行它?

java eclipse

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

Java中声明性GUI编程的建议

我想知道在Java中是否有任何关于声明性GUI编程的建议.(我厌恶基于视觉的GUI创建者/编辑器软件,但我对手动实例化JPanels和Boxes以及JLabel和JLists等感到有些厌倦)

这是我的整体问题,但对于我正在考虑的方法,我有两个具体的问题:

  1. JavaFX:JavaFX中是否有一个真实GUI显示的示例(例如,不是圆形和矩形,但是列表框和按钮以及标签等),它可以与访问和更新各种元素的Java源文件连接?

  2. 简单的旧Swing有一些东西要解析XUL-ish XML:有没有人发明过一种用于Java的声明性语法(如XUL)用于Java Swing?我想,要创建一些基于STaX的代码来创建一些代码,实例化Swing元素的层次结构,并通过某种对象模型访问层次结构,我认为这并不难.但我宁愿使用一些众所周知,记录和测试的东西,而不是试图自己发明这样的东西.

  3. JGoodies表格 - 不完全是声明性的,但有点接近我和JGoodies Binding有好运.但他们的表单布局的语法似乎有点神秘.

编辑:这里有很多很棒的答案!(我在上面添加了#3)我特别感谢您在使用其中一个框架进行实际应用时获得的任何经验.

ps我尝试了一些谷歌搜索("java gui declarative"),只是不太清楚要找什么.

java layout user-interface swing declarative

55
推荐指数
5
解决办法
8288
查看次数

什么时候最好在Java而不是AtomicBoolean中使用volatile boolean?

我已经查看了SO中的其他volatile和Atomicxxxx问题(包括这个),并阅读了java.util.current.atomic的描述,我对细微差别不太满意.

如果我在尝试使用volatile boolean和之间做出决定AtomicBoolean,除了AtomicBoolean提供的原子读取 - 修改 - 写入操作之外是否存在实际差异?(例如compareAndSet()getAndSet())

假设我有

volatile boolean flag;
Run Code Online (Sandbox Code Playgroud)

然后一个或多个线程设置标志(但不清除它).如果我有一个线程读取标志,如果设置,执行操作,然后清除标志,是否volatile足够?

AtomicBoolean的成本是否高于volatile布尔值

  • 记忆空间
  • 性能命中(volatile boolean似乎需要内存防护,AtomicBoolean似乎需要内存防护+根据java.util.current.atomic描述对CAS操作进行一些小锁定)

我的直觉调用是使用AtomicBoolean并且是安全的,但我想了解是否有任何情况可以使用volatile boolean(例如,如果我有数千个实例,性能是一个问题).

java concurrency atomic volatile

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

如何在Java中使用方法参数来实现多个接口?

在Java中执行此操作是合法的:

 void spew(Appendable x)
 {
     x.append("Bleah!\n");
 }
Run Code Online (Sandbox Code Playgroud)

我该怎么做(语法不合法):

 void spew(Appendable & Closeable x)
 {
     x.append("Bleah!\n");
     if (timeToClose())
         x.close();
 }
Run Code Online (Sandbox Code Playgroud)

我希望尽可能强制调用者使用Appendable和Closeable的对象,而不需要特定的类型.有多个标准类可以执行此操作,例如BufferedWriter,PrintStream等.

如果我定义自己的界面

 interface AppendableAndCloseable extends Appendable, Closeable {}
Run Code Online (Sandbox Code Playgroud)

因为实现Appendable和Closeable的标准类没有实现我的接口AppendableAndCloseable(除非我不理解Java以及我认为我做的...空接口仍然在其超级接口之上和之外添加唯一性),这将无法工作.

我能想到的最接近的是做以下其中一项:

  1. 选择一个接口(例如Appendable),并使用运行时测试来确保参数是instanceof其他参数.缺点:编译时没有遇到问题.

  2. 需要多个参数(捕获编译时正确但看起来很笨):

    void spew(Appendable xAppend, Closeable xClose)
    {
        xAppend.append("Bleah!\n");
        if (timeToClose())
            xClose.close();
    }
    
    Run Code Online (Sandbox Code Playgroud)

java oop multiple-inheritance

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

JSON和转义字符

我有一个字符串,它在Javascript中被序列化为JSON,然后反序列化为Java.

看起来如果字符串包含度数符号,那么我就会遇到问题.

我可以帮助找出应该责怪的人:

  • 它是Spidermonkey 1.8的实现吗?(这里面有一个JSON实现)
  • Google gson吗?
  • 我不做正确的事吗?

这是JSDB中发生的事情:

js>s='15\u00f8C'
15°C
js>JSON.stringify(s)
"15°C"
Run Code Online (Sandbox Code Playgroud)

我希望"15\u00f8C'这让我相信Spidermonkey的JSON实现没有做正确的事情...除了JSON主页的语法描述(是规范吗?)说char可以是

any-Unicode-character- except - " - 或 - \ - or- control-character"

所以也许它按原样传递字符串而不将其编码为\ u00f8 ...在这种情况下我会认为问题出在gson库中.

有人可以帮忙吗?

我想我的解决方法是使用不同的JSON库,或者在调用后自己手动转义字符串JSON.stringify()- 但如果这是一个错误,那么我想提交错误报告.

unicode json

52
推荐指数
3
解决办法
12万
查看次数

将异步计算包装到同步(阻塞)计算中

类似的问题:

我有一个对象,我希望向库客户端(特别是脚本客户端)公开一个方法,如:

interface MyNiceInterface
{
    public Baz doSomethingAndBlock(Foo fooArg, Bar barArg);
    public Future<Baz> doSomething(Foo fooArg, Bar barArg);
    // doSomethingAndBlock is the straightforward way;
    // doSomething has more control but deals with
    // a Future and that might be too much hassle for
    // scripting clients
}
Run Code Online (Sandbox Code Playgroud)

但我可用的原始"东西"是一组事件驱动的类:

interface BazComputationSink
{
    public void onBazResult(Baz result);
}

class ImplementingThing
{
    public void doSomethingAsync(Foo fooArg, Bar barArg, BazComputationSink sink);
}
Run Code Online (Sandbox Code Playgroud)

其中,ImplementingThing接受输入,做一些神秘的事情,如在任务队列上排队,然后在结果发生时,sink.onBazResult()在一个线程上调用,该线程可能与调用ImplementingThing.doSomethingAsync()的线程相同或不同.

有没有一种方法可以使用我拥有的事件驱动函数以及并发原语来实现MyNiceInterface,以便脚本客户端可以愉快地等待阻塞线程?

编辑:我可以使用FutureTask吗?

java concurrency asynchronous blocking

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