小编Alp*_*aaa的帖子

什么时候删除Java临时文件?

假设我使用该方法在Java中创建一个临时文件

File tmp = File.createTempFile(prefix, suffix);
Run Code Online (Sandbox Code Playgroud)

如果我没有明确调用该delete()方法,该文件何时被删除?

作为一种直觉,它可能是JVM终止时,或更早(由垃圾收集器)或更(通过某些操作系统清扫过程).

java garbage-collection temporary-files

79
推荐指数
4
解决办法
7万
查看次数

OkHttp:避免泄露连接警告

我正在使用OkHttp 3,我一直在泄漏连接警告:

WARNING: A connection to https://help.helpling.com/ was leaked. Did you forget to close a response body?
Jul 14, 2016 6:57:09 PM okhttp3.ConnectionPool pruneAndGetAllocationCount
Run Code Online (Sandbox Code Playgroud)

每次我得到一个ResponseBody,我要么调用.string()哪个可以为我关闭流,或者我在一个finally块中明确地关闭它,方法如下:

ResponseBody responseBody = response.body();
try (Reader responseReader = responseBody.charStream()) {
    ...
}
finally {
    responseBody.close();
}
Run Code Online (Sandbox Code Playgroud)

我的应用程序大量使用网络,但这种警告经常出现.我从来没有看到造成这种推测泄漏的任何问题,但我还是想知道,如果什么我做错了.

谁能对此有所了解?

java memory-leaks okhttp3

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

针对不同Logback appender的特定于程序包的日志记录级别

我有这个简单的Logback配置文件,包含两个appender和一些基于包名称的自定义日志记录级别.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<configuration>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%date{HH:mm}\t%-5level\t%msg%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>my_logger.log</file>
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%date{dd MMM HH:mm}|%class{0}|%-5level|%msg%n</pattern>
        </encoder>
    </appender>

    <!-- custom logging levels -->
    <logger name="myapp.package1" level="INFO" />
    <logger name="myapp.package2" level="INFO" />

    <root>
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>

</configuration>
Run Code Online (Sandbox Code Playgroud)

使用此配置,自定义日志记录级别将应用于两个appender.

如何更改它以便仅ConsoleAppender使用这些自定义日志记录级别,同时FileAppender坚持默认级别?

configuration logback

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

删除引用以帮助GC是一个好习惯吗?

我想知道你是否认为删除引用(设置它们null)到对象以帮助Java垃圾收集器是一个好习惯.

例如,假设您有一个包含两个字段的类,其中一个字段非常耗费内存.如果您知道只需要进行特定处理,则可以在之后立即将其置零以帮助GC.

假设我真的需要这两个字段,而不仅仅是内部变量,所以heavyObject1不能超出方法末尾的范围.

你会这样做作为一般做法吗?

public class TestClass {

   public static Object heavyObject1;
   public static Object object2;

   private static void action() {
    object2 = doSomething(heavyObject1);

    heavyObject1 = null; //is this good?
   }
}
Run Code Online (Sandbox Code Playgroud)

java garbage-collection

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

Eclipse:导出要在较旧的JRE上执行的Runnable JAR文件

到目前为止,从Eclipse导出Runnable JAR文件是从另一台计算机上的命令行启动Eclipse项目的最快方法。看到这个答案

一个问题是,如果要从其运行的计算机上安装的JRE早于Eclipse使用的JDK,则会出现此错误:

java.lang.UnsupportedClassVersionError: test_hello_world : Unsupported major.minor version 51.0
Run Code Online (Sandbox Code Playgroud)

我知道在Eclipse上我可以以较低的遵从性级别(例如1.6而不是1.7)来构建项目,但这似乎并不影响导出的JAR文件。

关于如何导出要在较旧的JRE上执行的Runnable JAR文件的任何想法吗?

java eclipse executable-jar

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

Logback:使用Java主类名作为日志文件名

我有几个可执行类,我想自动将日志文件名设置为正在执行的Java类的名称.

我知道我可以通过编程方式执行此操作,可能使用Reflection MDC,但是通过配置实现这一点并不是更简单的方法logback.xml吗?

这对我来说似乎是一个相当基本的需求,所以我很惊讶我找不到有关它的文档.

logback

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

在 ELKI 中运行聚类算法

我需要以编程方式使用 ELKI 来运行 k-medoids 聚类算法。我有一个相似度矩阵,我希望输入到算法中。

是否有任何代码片段可用于如何运行 ELKI 算法?我基本上需要知道如何创建DatabaseRelation对象,创建自定义距离函数,并读取算法输出。

不幸的是,ELKI 教程 ( http://elki.dbs.ifi.lmu.de/wiki/Tutorial ) 侧重于 GUI 版本和实现新算法,并且试图通过查看 Javadoc 来编写代码令人沮丧。

如果有人知道任何易于使用的 k-medoids 库,这也可能是这个问题的一个很好的答案。

java cluster-analysis k-means elki

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

为什么Java编译器默认不缩短名称?(性能和混淆)

我无法理解为什么Java编译器不会通过用一些唯一的ID替换它们来缩短变量,参数和方法名称的名称.

例如,给定课程

public class VeryVeryVeryVeryVeryLongClass {

    private int veryVeryVeryVeryVeryLongInt = 3;

    public void veryVeryVeryVeryVeryLongMethod(int veryVeryVeryVeryVeryLongParamName) {
        this.veryVeryVeryVeryVeryLongInt = veryVeryVeryVeryVeryLongParamName;
    }
}
Run Code Online (Sandbox Code Playgroud)

编译后的文件包含所有这些非常长的名称:

简单的唯一ID不会加快解析速度,还会提供第一个混淆吗?

java obfuscation compilation

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

斯坦福CoreNLP用于获取解析树的更快的替代方案?

我喜欢Stanford CoreNLP,现在它对我的NLP需求非常准确.问题在于分析大量文本(假设数百万句话)需要数天时间.

是否存在牺牲一些准确性以提高效率的替代Java实现(理想情况下)提供相同的API?

java nlp stanford-nlp

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