小编Jof*_*rey的帖子

Logger slf4j使用{}而不是字符串连接格式化的优点

使用{}而不是字符串连接有什么好处吗?

来自slf4j的一个例子

logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);
Run Code Online (Sandbox Code Playgroud)

代替

logger.debug("Temperature set to"+ t + ". Old temperature was " + oldT);
Run Code Online (Sandbox Code Playgroud)

我认为这是关于速度优化的,因为根据配置文件,可以在运行时避免参数评估(和字符串连接).但是只有两个参数是可能的,那么有时除了字符串连接之外别无选择.需要就此问题提出意见.

optimization logging concatenation string-formatting slf4j

86
推荐指数
3
解决办法
8万
查看次数

可以从工作线程调用NoticationManager.notify()吗?

我的问题更多的是关于什么是好的做法而不是可能的做法:

  • NoticationManager.notify()从工作线程调用是一件好事吗?
  • 系统是否在UI线程中执行它?

我总是试着记住,关于UI的东西应该在UI线程中执行,其余的在工作线程中执行,如Android doc关于进程和线程的建议:

此外,Andoid UI工具包不是线程安全的.因此,您不能从工作线程操纵UI - 您必须从UI线程对您的用户界面进行所有操作.因此,Android的单线程模型只有两个规则:

  • 不要阻止UI线程
  • 不要从UI线程外部访问Android UI工具包

然而,我对Android doc本身给出的一个例子感到惊讶(关于显示Notifications的进展),其中正在进行的通知进度直接从工作线程更新:

mNotifyManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mBuilder = new NotificationCompat.Builder(this);
mBuilder.setContentTitle("Picture Download")
    .setContentText("Download in progress")
    .setSmallIcon(R.drawable.ic_notification);
// Start a lengthy operation in a background thread
new Thread(
    new Runnable() {
        @Override
        public void run() {
            int incr;
            // Do the "lengthy" operation 20 times
            for (incr = 0; incr <= 100; incr+=5) {
                    // Sets the progress indicator to a max value, the …
Run Code Online (Sandbox Code Playgroud)

notifications multithreading android android-notifications

43
推荐指数
1
解决办法
8040
查看次数

Kotlin是否提供任何性能提升?

Kotlin是否提供任何性能提升?有没有基准测试?Kotlin比Java更快吗?我在Kotlin网站上找到了这个.https://kotlinlang.org/docs/reference/comparison-to-java.html 谈论语言功能而不是性能.

java kotlin

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

Jacoco Gradle中的最小代码覆盖率阈值

如何在Jacoco Gradle中设置最小代码覆盖率?

如果不满足,我希望构建失败.

gradle jacoco

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

如何结束/关闭 MutableSharedFlow?

SharedFlow刚刚在协程 1.4.0-M1 中引入,它旨在替换所有BroadcastChannel实现(如设计问题描述中所述)。

我有一个用例,我使用 aBroadcastChannel来表示传入的 Web 套接字帧,以便多个侦听器可以“订阅”这些帧。当我移动到 a 时,我遇到的问题SharedFlow是当我收到关闭帧或上游错误时我无法“结束”流程(我想这样做是为了通知所有订阅者流程已经结束)。

当我想有效地“关闭” 时,如何使所有订阅终止SharedFlow?有没有办法区分正常关闭和异常关闭?(如频道)

如果MutableSharedFlow不允许将流的结尾传达给订阅者,如果BroadcastChannel被弃用/删除,有什么替代方法?

kotlin kotlin-coroutines kotlin-coroutines-flow

12
推荐指数
1
解决办法
2221
查看次数

新的元空间到底有多远,何时停止

使用Java 8删除PermGen,我们不能再使用JVM参数来更改它或限制它.

但如果我的应用程序中有内存泄漏,我想了解它.我不希望JVM分配千兆字节的内存.

所以我的问题是:它会走多远,何时会停止,我可以将其限制在操作系统(使用ulimit)吗?

java java-8

8
推荐指数
1
解决办法
161
查看次数

如何使用@ConfigurationProperties 注入 java.nio.file.Path 依赖项

我正在使用 Spring Boot 并具有以下组件类:

@Component
@ConfigurationProperties(prefix="file")
public class FileManager {

    private Path localDirectory;

    public void setLocalDirectory(File localDirectory) {
        this.localDirectory = localDirectory.toPath();
    }

...

}
Run Code Online (Sandbox Code Playgroud)

以及以下 yaml 属性文件:

file:
     localDirectory: /var/data/test
Run Code Online (Sandbox Code Playgroud)

我想通过替换为 java.nio.file.Path 来删除 java.io.File(setLocalDirectory)的引用。但是,执行此操作时收到绑定错误。有没有办法将属性绑定到路径(例如,通过使用注释)?

spring properties-file java.nio.file spring-boot

8
推荐指数
2
解决办法
3849
查看次数

join()如何在java中工作?它是否保证在main()之前执行?

我试图用join()来理解代码流.

public class Multi extends Thread {

    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println(Thread.currentThread().getName());
        }
    }

    public static void main(String[] args) {

        Thread t1 = new Multi();
        Thread t2 = new Multi();
        Thread t3 = new Multi();
        Thread t4 = new Multi();

        t1.start();
        try {
            t1.join();
        } catch (Exception e) {
        }

        t2.start();        
        t3.start();
        try {
            t3.join();
        } catch (Exception e) {
        }        
        t4.start();

        System.out.println("........" + Thread.currentThread().getName());

        t1.setName("A");
        t2.setName("B");
        t3.setName("C");
        t4.setName("D");
    } …
Run Code Online (Sandbox Code Playgroud)

java multithreading

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

使用常量将枚举转换为类

是否有IntelliJ重构允许自动将枚举转换为类,从而将其枚举值转换为static final字段?

我似乎无法找到任何关于它的东西,我只找到关于提取常量但不是我正在寻找的东西.

我正在寻找的例子

例如,我想像这样一个枚举:

public enum Planet {

    MERCURY (3.303e+23, 2.4397e6),
    VENUS   (4.869e+24, 6.0518e6),
    EARTH   (5.976e+24, 6.37814e6),
    MARS    (6.421e+23, 3.3972e6),
    JUPITER (1.9e+27,   7.1492e7),
    SATURN  (5.688e+26, 6.0268e7),
    URANUS  (8.686e+25, 2.5559e7),
    NEPTUNE (1.024e+26, 2.4746e7);

    private final double mass;   // in kilograms
    private final double radius; // in meters

    Planet(double mass, double radius) {
        this.mass = mass;
        this.radius = radius;
    }

    // getters here
}
Run Code Online (Sandbox Code Playgroud)

进入这样一个类:

public class Planet {
    public static final Planet MERCURY = new Planet(3.303e+23, 2.4397e6);
    public …
Run Code Online (Sandbox Code Playgroud)

java intellij-idea

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

如何将元素相对于其父元素居中?

我有以下容器:

#container {
  width: 75%;
  margin: 0 auto;
  background-color: #FFF;
  padding: 20px 40px;
  border: solid 1px black;
  margin-top: 20px;
}
Run Code Online (Sandbox Code Playgroud)

它是使用nifty:layout Rails生成器生成的.我如何将这个容器内部的内容居中,而不是整个页面?

编辑:很抱歉没有提供进一步的信息:).这就是我想要的中心:

<div id="nav">
    <ul>
        <% if current_user %>
            <li><%= link_to "Sign out",destroy_user_session_path %><span>|</span></li>
            <li><%= link_to "New snippet",new_snippet_path %><span>|</span></li>
        <% else %>
            <li><%= link_to "Login",new_user_session_path %><span>|</span></li>
            <li><%= link_to "Register",new_user_registration_path %><span>|</span></li>
        <% end %>
        <li><%= link_to "Snippets",snippets_path %><span>|</span></li>
        <li><%= link_to "Chat",messages_path %></li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止的CSS:

#nav {
    list-style-type:none;
    padding:0;
    margin:0;
}

#nav li {
    display:inline;
}
Run Code Online (Sandbox Code Playgroud)

css

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