小编Mic*_*l B的帖子

自Java 1.7.0u40以来Java WebStart应用程序的启动延迟很长

自从我们安装了Java 1.7.0u45以来,我们的WebStart应用程序显示了Windows系统启动时的一个主要延迟(我们还没有尝试过其他平台).

症状是双击桌面上的应用程序图标后,启动画面快速显示,停留一段时间(如之前所做)并关闭.在此之后我们有大约1分钟的延迟.然后,最后,应用程序窗口打开,一切都像魅力一样.

我们的应用程序在Java 1.7.0u25之前没有遇到任何问题.Java 1.7.0u40是问题出现的第一个版本.

我们的应用程序由单个(可执行)jar文件构成.最常见的部分是jar中的一些用于串行端口访问的本机类.我在这篇文章的末尾添加了jnlp文件.

我们试图找出延迟的原因是什么:

经过了Java Webstart的发行说明http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/enhancements-7.html我们的版本.

我们可以说,没有什么可以导致这种行为.我们注意到有新的Manifest条目(Permissions,Codebase,Application-Name).这些都被添加了.

看着谷歌和stackoverflow.

有些似乎有类似的问题,但我们从未见过解决方案.在许多情况下,人们在下载jar文件和重复下载时遇到问题.这似乎不是我们的问题.

使用坚韧的工具

我们想知道应用程序在上述时间内的作用.所以我们使用了sysinternals和wireshark中的进程资源管理器和进程监视器.我们发现在等待时间内,该过程尝试通过IP与'vip1.g-anycast1.cachefly.net'(205.234.175.175)和93.184.220.29进行通信.后者似乎是一个证书服务器,我真的不明白cachefly是什么东西.在这两种情况下,我们都会看到TCP syn,但没有答案,没有进一步的沟通.这两个地址都是可以ping的.

与IP-stuff无关:我们确定,应用程序没有下载,而是从缓存开始,并且我们的主要是延迟之后调用,而不是之前.

这就是我们陷入困境的地方

任何进一步的想法如何解决这个?我们是唯一经历过这种行为的人吗?

Jnlp(请注意,手动重新设置网址):

<?xml version="1.0" encoding="UTF-8"?>
<jnlp  spec="6.0+" codebase="http://53.48.16.33:8180/jenkins/job/TcuTerm%20-%20Deploy/lastSuccessfulBuild/artifact/5000_Construction/5100_Code_Base/TcuTerm/antlocal" >
    <information>
      <title>TcuTerm</title>
      <vendor>Development</vendor>
      <icon                 href="http://53.48.16.33:8180/jenkins/job/TcuTerm%20-%20Deploy/lastSuccessfulBuild/artifact/5000_Construction/5100_Code_Base/TcuTerm/src/com/x/tcu/app/term/resources/tcu.jpg"/>
      <icon kind="shortcut" href="http://53.48.16.33:8180/jenkins/job/TcuTerm%20-%20Deploy/lastSuccessfulBuild/artifact/5000_Construction/5100_Code_Base/TcuTerm/src/com/x/tcu/app/term/resources/tcu.jpg"/>
      <icon kind="splash"   href="http://53.48.16.33:8180/jenkins/job/TcuTerm%20-%20Deploy/lastSuccessfulBuild/artifact/5000_Construction/5100_Code_Base/TcuTerm/src/com/x/tcu/app/term/resources/splash.jpg"/>
      <homepage href="https://confluence.detss.corpintra.net/display/TCU/TcuTerm"/>
      <offline-allowed/>
      <shortcut>
        <desktop/>
        <menu submenu="TcuTerm"/>
      </shortcut>
    </information>
    <security>
      <all-permissions/>
    </security>
    <resources>
      <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
      <jar href="TcuTerm.jar" main="true"/>
    </resources>
    <application-desc main-class="com.x.tcu.app.term.TcuTerminal"/>
    <update check="timeout"/>
 </jnlp>
Run Code Online (Sandbox Code Playgroud)

java jnlp java-web-start

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

总结 std::integer_sequence 中的元素

出于教育目的,我尝试创建一个std::integer_sequence并将其元素总结为参数包。我希望这很简单,并编写了下面的代码。

步骤 1:创建一组 add() 操作以正确处理同类的、基于整数的参数包。用add<0,1,2,3>()-call测试并工作。

第 2 步:在这一步中,我想将 astd::integer_sequence作为模板参数传递,以对序列中的整数求和。我失败了,请参阅注释掉的代码。

如何将 astd::integer_sequence作为模板参数传递?

一个错误消息是没有函数模板 total 的实例与调用匹配。为什么?我期望一个整数序列相当于一个int参数包。

另一条错误消息表示Args模板参数是非常量的。怎么会这样?我希望这是一个后续错误,但我在实验中经常看到这种错误组合。

我正在使用 Microsoft VC++ 2017 编译器。

#include <iostream>
#include <utility>

template <typename T>
T add(T first) {
    return first;
}

template <typename T, typename ... Args>
T add(T car, Args... cdr) {
    return car + add(cdr...);
}

template <int ... Args>
int total() {
    return add(Args...);
}


int main(int argc, char** argv)
{
    using …
Run Code Online (Sandbox Code Playgroud)

c++ template-meta-programming variadic-templates visual-studio-2017

0
推荐指数
1
解决办法
535
查看次数