GVKun编程网logo

为什么在Linux机器上安装Java时使用替代命令(linux为什么要安装jdk)

15

本文将带您了解关于为什么在Linux机器上安装Java时使用替代命令的新内容,同时我们还将为您解释linux为什么要安装jdk的相关知识,另外,我们还将为您提供关于asp.net–在Linux机器上安

本文将带您了解关于为什么在Linux机器上安装Java时使用替代命令的新内容,同时我们还将为您解释linux为什么要安装jdk的相关知识,另外,我们还将为您提供关于asp.net – 在Linux机器上安装Visual Studio、c – 在Linux机器上获取用户的默认电子邮件、EC2 Linux机器上安装的OpenJDK 8不支持ECDHE密码套件、java – Linux机器上Netty 4.1的性能调优的实用信息。

本文目录一览:

为什么在Linux机器上安装Java时使用替代命令(linux为什么要安装jdk)

为什么在Linux机器上安装Java时使用替代命令(linux为什么要安装jdk)

在Linux机器上安装Java时,需要以下命令(请参见教程中的命令)。

alternatives --install /usr/bin/java java /usr/java/jre1.7.0_01/bin/java 20000

man alternatives 终端上的命令说:

替代方案-维护符号链接以确定默认命令

我不明白为什么在安装Java(JRE或JDK)时需要此命令20000,该行末尾指的是什么?请谨慎解释。

答案1

小编典典

它不特定于Linux,仅适用于某些发行版。最好维护软件或库的多个版本,并在它们之间轻松切换。您的应用程序仅指向符号链接,您可以随时轻松切换该符号链接,而不必遍历应用程序的所有配置。我不知道20000是什么意思,但是这里是联机帮助页:http
:
//linux.about.com/library/cmd/blcmdl8_alternatives.htm(但您也应该在系统中使用该信息)

asp.net – 在Linux机器上安装Visual Studio

asp.net – 在Linux机器上安装Visual Studio

请告诉我如何在Linux上安装Visual Studio任何版本
像UBUNTU 11.0

解决方法:

您需要使用Mono.它允许.NET支持和运行ASP.NET的能力.您也可以查看MonoDevelop这是一个类似于Visual Studio期望它是跨平台的IDE.

c – 在Linux机器上获取用户的默认电子邮件

c – 在Linux机器上获取用户的默认电子邮件

有没有办法以编程方式获取当前用户的电子邮件地址?
我知道这封电子邮件通常是user @ hostname,但有没有我能收到的电子邮件?
我知道如何获取用户名和主机名,以便我自己构建它,但我想确保即使电子邮件不是user @ hostname也能获得电子邮件地址.

C中的代码表示赞赏.

谢谢

最佳答案
没有用户帐户到电子邮件地址的标准映射 – 至少不适用于普通的/ etc / passwd派生帐户.考虑到用户可能甚至没有电子邮件地址.

EC2 Linux机器上安装的OpenJDK 8不支持ECDHE密码套件

EC2 Linux机器上安装的OpenJDK 8不支持ECDHE密码套件

从在EC2 Amazon Linux计算机上运行开始时jetty-distribution-9.3.0.v20150612openjdk 1.8.0_51将显示不支持所有已配置的ECDHE套件的打印。

2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA not supported

这些在jetty/etc/jetty-ssl-context.xml- 中启用

<Set name="IncludeCipherSuites">
<Array type="java.lang.String">
 <!-- TLS 1.2 AEAD only (all are SHA-2 as well) -->
  <Item>TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256</Item>
  <Item>TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256</Item>
  <Item>TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384</Item>
  <Item>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</Item>
  <Item>TLS_DHE_RSA_WITH_AES_256_GCM_SHA384</Item>
  <Item>TLS_DHE_RSA_WITH_AES_128_GCM_SHA256</Item>
...

我读过Oracle Java 8
应该支持这些协议,但是OpenJDK可能不支持这些协议吗?还是应该以某种方式启用它?

更新资料

Oracle的JCE加密提供程序安装在下jre/lib/security/,但没有帮助。

java – Linux机器上Netty 4.1的性能调优

java – Linux机器上Netty 4.1的性能调优

我正在使用Netty 4.1 Beta3构建一个消息传递应用程序来设计我的服务器,并且服务器理解MQTT协议.

这是我的MqttServer.java类,它设置Netty服务器并将其绑定到特定端口.

EventLoopGroup bosspool=new NioEventLoopGroup();
        EventLoopGroup workerPool=new NioEventLoopGroup();

        try {

            ServerBootstrap boot=new ServerBootstrap();

            boot.group(bosspool,workerPool);
            boot.channel(NioServerSocketChannel.class);
            boot.childHandler(new MqttProxyChannel());

            boot.bind(port).sync().channel().closeFuture().sync();

        } catch (Exception e) {
            e.printstacktrace();
        }finally {          
            workerPool.shutdownGracefully();
            bosspool.shutdownGracefully();
        }
    }

现在,我在Mac上对我的应用程序进行了负载测试,具有以下配置

网络性能非常出色.在执行我的代码时我查看了jstack,发现netty NIO产生了大约19个线程,并且它们似乎都没有等待等待通道或其他东西.

然后我在linux机器上执行了我的代码

这是一款2核15GB机器.问题是我的MQTT客户端发送的数据包似乎需要很长时间才能通过netty管道,并且在获取jstack时我发现有5个netty线程,所有这些都被困在这个

."nioEventLoopGroup-3-4" #112 prio=10 os_prio=0 tid=0x00007fb774008800 nid=0x2a0e runnable [0x00007fb768fec000]
        java.lang.Thread.State: RUNNABLE
             at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
             at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
             at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
             at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
             - locked <0x00000006d0fdc898> (a 
io.netty.channel.nio.SelectedSelectionKeySet)
             - locked <0x00000006d100ae90> (a java.util.Collections$UnmodifiableSet)
             - locked <0x00000006d0fdc7f0> (a sun.nio.ch.EPollSelectorImpl)
             at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
             at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:621)
             at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:309)
             at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:834)
             at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
             at java.lang.Thread.run(Thread.java:745)

这是一些与linux机器上的epoll相关的性能问题.如果是,则应对netty配置进行哪些更改以处理此问题或提高性能.

编辑

本地系统上的Java版本是: –

java版“1.8.0_40”
Java(TM)SE运行时环境(版本1.8.0_40-b27)
Java HotSpot(TM)64位服务器VM(内置25.40-b25,混合模式)

AWS上的Java版本是: –

openjdk版“1.8.0_40-internal”
OpenJDK运行时环境(build 1.8.0_40-internal-b09)
OpenJDK 64位服务器VM(内置25.40-b13,混合模式)

解决方法

使用工作线程来查看是否可以提高性能. NioEventLoopGroup()的标准构造函数创建默认的事件循环线程数量:
DEFAULT_EVENT_LOOP_THREADS = Math.max(1,SystemPropertyUtil.getInt(
            "io.netty.eventLoopThreads",Runtime.getRuntime().availableProcessors() * 2));

如您所见,您可以将io.netty.eventLoopThreads作为启动参数传递,但我通常不这样做.

您还可以在NioEventLoopGroup()的构造函数中传递线程数.

在我们的环境中,我们拥有接受来自数百个客户端的通信的netty服务器.通常一个boss线程来处理连接就足够了.工作线程数量需要缩放.我们用这个:

private final static int BOSS_THREADS = 1;
private final static int MAX_WORKER_THREADS = 12;
EventLoopGroup bossGroup = new NioEventLoopGroup(BOSS_THREADS);
EventLoopGroup workerGroup = new NioEventLoopGroup(calculateThreadCount());
private int calculateThreadCount() {
    int threadCount;
    if ((threadCount = SystemPropertyUtil.getInt("io.netty.eventLoopThreads",0)) > 0) {
        return threadCount;
    } else {
        threadCount = Runtime.getRuntime().availableProcessors() * 2;
        return threadCount > MAX_WORKER_THREADS ? MAX_WORKER_THREADS : threadCount;
    }
}

所以在我们的例子中我们只使用一个boss线程.工作线程取决于是否已发出启动参数.如果没有,那么使用核心* 2但不超过12.

您必须测试自己,尽管哪些数字最适合您的环境.

我们今天的关于为什么在Linux机器上安装Java时使用替代命令linux为什么要安装jdk的分享就到这里,谢谢您的阅读,如果想了解更多关于asp.net – 在Linux机器上安装Visual Studio、c – 在Linux机器上获取用户的默认电子邮件、EC2 Linux机器上安装的OpenJDK 8不支持ECDHE密码套件、java – Linux机器上Netty 4.1的性能调优的相关信息,可以在本站进行搜索。

本文标签: