小编Mal*_*alt的帖子

建议在Java中获取主机名的方法

以下哪项是获取Java当前计算机主机名的最佳和最便携方式?

Runtime.getRuntime().exec("hostname")

VS

InetAddress.getLocalHost().getHostName()

java network-programming hostname environment-variables

262
推荐指数
10
解决办法
31万
查看次数

虚拟Windows服务器上的Java调度程序执行程序计时问题

我们有一个Java应用程序需要在虚拟(Hyper-V)Windows 2012 R2 Server上运行,以及其他环境.在此虚拟Windows服务器上执行时,似乎遇到了奇怪的计时问题.我们已经将问题跟踪到Java预定执行程序中的不稳定调度:

public static class TimeRunnable implements Runnable {

    private long lastRunAt;

    @Override
    public void run() {
        long now = System.nanoTime();
        System.out.println(TimeUnit.NANOSECONDS.toMillis(now - lastRunAt));
        lastRunAt = now;
    }

}

public static void main(String[] args) {
    ScheduledExecutorService exec = Executors.newScheduledThreadPool(1);
    exec.scheduleAtFixedRate(new TimeRunnable(), 0, 10, TimeUnit.MILLISECONDS);
}
Run Code Online (Sandbox Code Playgroud)

此代码应每10ms运行一次TimeRunnable,在服务器上生成如下结果:

12
15
2
12
15
0
14
16
2
12
140
0
0
0
0
0
0
0
0
0
0
0
0
1
0
7
15
0
14
16
2
12 …
Run Code Online (Sandbox Code Playgroud)

java windows hyper-v

15
推荐指数
1
解决办法
683
查看次数

如何实例化在Kotlin中实现接口的匿名类

在Java中,实例化一个接口对象就像new Interface()... 一样简单,并覆盖所有必需的函数,如下所示AnimationListener

private void doingSomething(Context context) {
    Animation animation = AnimationUtils.loadAnimation(context, android.R.anim.fade_in);
    animation.setAnimationListener(new Animation.AnimationListener() {
        // All the other override functions
    });
}
Run Code Online (Sandbox Code Playgroud)

但是,在Kotlin我们打字的时候

private fun doingSomething(context: Context) {
    val animation = AnimationUtils.loadAnimation(context, android.R.anim.fade_in)
    animation.setAnimationListener(Animation.AnimationListener(){
        // All the other override functions
    })
}
Run Code Online (Sandbox Code Playgroud)

它错误投诉未解决参考AnimationListener.

interface kotlin

13
推荐指数
2
解决办法
6149
查看次数

来自eclipse的部分git提交(egit)

假设我有一个包含2个更改的文件.我如何使用egit只提交其中一个?

命令行版本可以在这个问题中找到.

eclipse git egit

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

为什么这个同步块似乎需要很长时间才能锁定?

我是java中的多线程新手,我有一个问题,有些人可能会发现微不足道.

我必须调试第三方代码,我需要一些基本信息,知道在哪里寻找问题,因为代码非常大.

运行以下代码时:

public void method()
{
   long startTime = System.currentTimeMillis();
   synchronized (obj)
   {
      log( "time:" + System.currentTimeMillis() - startTime + " ms" );
      ...
   }
}
Run Code Online (Sandbox Code Playgroud)

我明白了:

11:13:12 - time: 3816 ms
...
11:14:14 - time: 0 ms
Run Code Online (Sandbox Code Playgroud)

为什么需要这么长时间(3816毫秒)才能获得对象的锁定?我应该在哪里看?例如,我想可能的答案是寻找获取"obj"锁定的代码,例如:

synchronized (obj) { ... }
Run Code Online (Sandbox Code Playgroud)

或者是否可能在没有"synchronized"的对象"obj"上进行任何修改也可以锁定对象?

java multithreading android synchronized

12
推荐指数
2
解决办法
1524
查看次数

具有内部类的Java Singleton - 什么保证线程安全?

一个共同的(1,2)实现单的方式是使用具有静态构件的内部类:

public class Singleton  {    
    private static class SingletonHolder {    
        public static final Singleton instance = new Singleton();
    }    

    public static Singleton getInstance() {    
        return SingletonHolder.instance;    
    }

    private Singleton() {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

据说这个实现是懒惰的初始化和线程安全的.但究竟是什么保证了它的线程安全?处理 线程和锁定的JLS 17没有提到静态字段具有任何类型的先发生关系.我怎样才能确定初始化只发生一次并且所有线程都看到同一个实例?

java multithreading

12
推荐指数
2
解决办法
1061
查看次数

是否可以在HTTP标头字段中包含多个CRLF?

以下是最新HTTP RFC 7230中的HTTP消息定义

 HTTP-message   = start-line
                  *( header-field CRLF )
                  CRLF
                  [ message-body ]
Run Code Online (Sandbox Code Playgroud)

下面是header-field的定义,

 header-field   = field-name ":" OWS field-value OWS

 field-name     = token
 field-value    = *( field-content / obs-fold )
 field-content  = field-vchar [ 1*( SP / HTAB ) field-vchar ]
 field-vchar    = VCHAR / obs-text

 obs-fold       = CRLF 1*( SP / HTAB )
Run Code Online (Sandbox Code Playgroud)

..和:

obs-text       = %x80-FF
Run Code Online (Sandbox Code Playgroud)

..和ABNF的:

 VCHAR          =  %x21-7E
                                 ; visible (printing) characters
Run Code Online (Sandbox Code Playgroud)

正如我们所看到的,场值可以有多个障碍折叠,而障碍折叠有一个CRLF.我认为CRLF是标题行的结尾对我来说很奇怪.是否有一个例子表明多个CRLF被编码到一个标题字段中?或者,我是否误解了这个定义?

networking network-programming http network-protocols http-headers

11
推荐指数
1
解决办法
3195
查看次数

Jetty WebSocket api与标准JSR 356 API相比

码头9支持两种它自己的Jetty的WebSocket API,以及标准的JSR 356 API,为我承担其历史原因(Jetty的API 之前最后JSR 356).

我查看了两个API的基本文档,以及一些示例.这两个API看起来相当完整且非常相似.但是,我需要为我正在编写的新项目选择一个而不是另一个,并且我希望避免使用可能在将来被弃用的API,或者可能会变得功能不足.

那么两者之间是否有任何重要的区别,除了一个标准化的明显事实?

java jetty jsr websocket jetty-9

10
推荐指数
1
解决办法
2411
查看次数

RxJava Observable在第一次发射时得到通知

我有三个Observables,我和combineLastest合并:

    Observable<String> o1 = Observable.just("1");
    Observable<String> o2 = Observable.just("2");
    Observable<String> o3 = Observable.just("3");

    Observable.combineLatest(o1, o2, o3, new Func3<String, String, String, Object>() {
        @Override
        public Object call(String s, String s2, String s3) {
            return null;
        }
    });
Run Code Online (Sandbox Code Playgroud)

我想通知其中一个Observable的第一次发射而不忽略后面的发射,我想第一个操作员会这样做.是否有一个方便的操作员(例如):

    o1.doOnFirst(new Func1<String, Void>() {
        @Override
        public Void call(String s) {
            return null;
        }
    })
Run Code Online (Sandbox Code Playgroud)

java reactive-programming rx-java

10
推荐指数
3
解决办法
2576
查看次数

Java 将最大堆大小 (Xmx) 设置为物理内存的一部分

JDK 8中,默认最大堆大小为

物理内存的 1/4 或 1GB

并且可以使用开关覆盖它-Xmx

您可以使用 -Xmx 命令行选项覆盖此默认值。

Xmx开关使用字节,而不是分数。有没有一种简单的方法将最大堆设置为机器物理内存的 X%?

编辑:

你为什么问?嗯,首先是好奇心。我觉得很奇怪,默认的 Xmx 是根据物理内存的一小部分定义的,但是一旦我触摸它,它就会突然变成一个绝对值。其次,如果我将相同(或类似)的应用程序部署到两台不同的服务器,并且其中一台具有更多的物理内存,我希望能够选择自动让 JVM 利用额外的内存。它并不总是有意义,但有时确实有意义。

显而易见的解决方案是使用 shell 脚本来检查可用空间量并计算 Xmx,但这似乎是一个笨拙的解决方案。我想用纯Java应该可以实现。

java garbage-collection heap-memory

10
推荐指数
1
解决办法
7786
查看次数