小编Chr*_*utz的帖子

UML类图关联vs(聚合|组合)-Diamonds

我不确定我是否正确使用了关联和聚合或合成钻石.

我会使用Association for interfaces,因为我无法实例化它们.就像他们在这里做的那样.或者对于静态类,同样的原因.

我只使用可以实例化的物体的钻石.像普通班一样.

但我不确定这是否是区分它们的正确方法,因为如果你再次检查,你会发现它们并没有那么具体.在UML 2.3 规范中,我无法获得更多,所以你如何使用它?

还有第三种方式,虚线<>箭头,但我没有胶水何时使用这个.那么也许你也可以帮助我呢?

uml

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

如何提高 GZIP 性能

目前我确实遇到了这段代码将被调用 > 500k 次的问题。压缩后的大小byte[]小于 1KB。每次调用该方法时,都必须创建所有流。所以我正在寻找一种方法来改进这段代码。

private byte[] unzip(byte[] data) throws IOException, DataFormatException {

    byte[] unzipData = new byte[4096];

    try (ByteArrayInputStream in = new ByteArrayInputStream(data);
         GZIPInputStream gzipIn = new GZIPInputStream(in);
         ByteArrayOutputStream out = new ByteArrayOutputStream()) {

        int read = 0;
        while( (read = gzipIn.read(unzipData)) != -1) {
            out.write(unzipData, 0, read);
        }

        return out.toByteArray();
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试ByteArrayOutputStream用 a替换ByteBuffer,但在创建时我不知道需要分配多少字节。

此外,我尝试使用Inflater但我偶然发现了此处描述的问题。

任何其他想法我可以做些什么来提高此代码的性能。

更新#1

  • 也许这个库可以帮助某人。
  • 还有一个开放的JDK-Bug

java performance gzip

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

如何获得真正可用的分辨率

Toolkit.getDefaultToolkit().getScreenSize()

我做了屏幕尺寸.

但通常这不是我自己的程序可用的大小,因为在Mac上有一个顶部的菜单栏和一个底部的图标栏.Windows确实有一个图标栏.那么我如何获得真正的可用空间呢?

java size swing window

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

如何从命令行停止OSGI应用程序

我有一个运行的osgi(equinox容器)应用程序.它将通过bash脚本启动.见felix gogo shell

java -jar ... _osgi.jar -console 1234 &
Run Code Online (Sandbox Code Playgroud)

这一切都很好,我也可以阻止它

telnet localhost 1234
<osgi>stop 0
Run Code Online (Sandbox Code Playgroud)

但我正在寻找的是如何将其嵌入到bash脚本中以停止osgi应用程序.

我已经试过了

echo stop 0 | telnet localhost 1234
Run Code Online (Sandbox Code Playgroud)

但这不起作用.因此,如果有人知道如何将其放入bash脚本中,请告诉我.

java bash osgi shutdown

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

如何根据自己的Equal类消除流中的重复条目

我确实有像这里描述的类似问题.但首先我有两个不同之处,我确实使用了流api,第二个我已经有了一个equals()hashCode()方法.但是在流中,博客的平等性在这种情况下与Blog课堂上定义的不同.

Collection<Blog> elements = x.stream()
    ... // a lot of filter and map stuff
    .peek(p -> sysout(p)) // a stream of Blog
    .? // how to remove duplicates - .distinct() doesn't work
Run Code Online (Sandbox Code Playgroud)

我有一个具有相等方法的类,可以ContextBlogEqual使用该方法调用它

public boolean equal(Blog a, Blog b);
Run Code Online (Sandbox Code Playgroud)

有没有办法根据ContextBlogEqual#equal方法使用我当前的流方法删除所有重复的条目?

我认为已经在分组,但这也不起作用,因为为什么blogAblogB相等的原因不仅仅是一个参数.此外,我不知道如何使用.reduce(..),因为还有一个以上的元素.

java equality java-8 java-stream

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

Eclipse neon 解析目标定义非常慢

上周我安装了 Eclipse Neon。我从一个新的工作空间开始,因为我不喜欢旧东西带来任何麻烦。在我们的项目中,我们有自己的目标定义,看起来像

在此输入图像描述

您会注意到,我们依赖于 p2 目录而不是软件方面。我们确实有 15 个。我想没那么多。但每次我们更改现有目录时,都需要很长时间 > 3-4-5 分钟才能解析目标定义。

在此输入图像描述

我所看到的是,当进度达到 45% 时,会出现第二个进度条,穿过许多不同的 http 站点。但为什么?我们使用 p2 目录而不是软件方面。有谁知道发生了什么以及我是否需要设置任何设置?因为我确信目标定义中提供了所需的一切。

target-platform eclipse-neon

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

对于此示例,正确的重新抛出代码如何?

昨天我在本文中重新介绍了Java 7中新的异常处理.

在文章中,他们展示了一个不能在Java 6中运行的示例(No 4).我只是复制了它.

public class ExampleExceptionRethrowInvalid {

public static void demoRethrow()throws IOException {
    try {

        // forcing an IOException here as an example,
        // normally some code could trigger this.
        throw new IOException("Error");
    }
    catch(Exception exception) {
        /*
         * Do some handling and then rethrow.
         */
        throw exception;
    }
}

public static void main( String[] args )
{
    try {
        demoRethrow();
    }
    catch(IOException exception) {
        System.err.println(exception.getMessage());
    }
}
}
Run Code Online (Sandbox Code Playgroud)

就像在描述的文章中一样,它不会编译,因为类型不匹配 - 抛出IOException-和-throw exception-.在Java 7中它会.所以我的问题是.

如何在Java 6中正确实现这种异常的重新抛出?我不喜欢建议的实现例子没有五.我知道如果未经检查的异常,你尝试处理的是品味和问题.那么我该怎么做才能得到-throws …

java exception-handling

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

如何改进这个哈希函数

反正有没有提高这个哈希的初始化速度?目前,我的机器大约需要20分钟.

#prepare hash()
hash <- list();

mappedV <- # matrix with more than 200,000 elements
for( i in 1:nrow(mappedV) ) {
  hash[[paste(mappedV[i,], collapse = '.')]] <- 0;
}
Run Code Online (Sandbox Code Playgroud)

在这段代码之前,我使用了一个矩阵,但这花了我超过3个小时.所以我不会抱怨20分钟.如果有更好的选择,我只是好奇.我使用哈希函数来计算200,000种可能组合中的每一种.

PS:并发可能是一种选择.但这并没有改善散列.

hash r

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

Equinox分开日志文件夹

有没有办法为equinox日志文件定义输出文件夹?

如果选中此链接,则可以定义配置文件夹.但我没有找到更改日志输出文件夹的方法.(注意:配置和日志文件夹是不同的文件夹.)

一个解决方法是

java -jar org.eclipse.osgi.jar -consoleLog > ../var/log/osgi.log
Run Code Online (Sandbox Code Playgroud)

但我真的不喜欢这个,因为我不能使用这些参数(eclipse.log.backup.max eclipse.log.size.max).

不知道怎么解决这个问题?

directory settings logging osgi equinox

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