小编Rom*_*n C的帖子

在try-catch中混淆无限递归的输出

请考虑以下代码.

public class Action {
private static int i=1;
public static void main(String[] args) {
    try{
        System.out.println(i);
        i++;
        main(args);
    }catch (StackOverflowError e){
        System.out.println(i);
        i++;
        main(args);
    }
 }

}
Run Code Online (Sandbox Code Playgroud)

我得到了4338正确的价值.捕获StackOverflowError输出后如下连线.

4336
4337
4338 // up to this point out put can understand 
433943394339 // 4339 repeating thrice  
434043404340
4341
434243424342
434343434343
4344
4345
434643464346
434743474347
4348
434943494349
435043504350
Run Code Online (Sandbox Code Playgroud)

在这里考虑现场演示.它正常工作i=4330.其实这是怎么发生的?

供参考:

我做了以下代码来实现这里发生的事情.

public class Action {

    private static int i = 1;
    private static …
Run Code Online (Sandbox Code Playgroud)

java stack-overflow

53
推荐指数
2
解决办法
2697
查看次数

ActiveMQ:如何在使用临时队列时处理代理故障转移

在我的JMS应用程序上,我们在Producers上使用临时队列,以便能够从Consumer应用程序接收回复.

我在这个主题中提到的完全相同的问题:http://activemq.2283324.n4.nabble.com/jira-Created-AMQ-3336-Temporary-Destination-errors-on-HA-failover-in -broker-网络与故障转移-TT-td3551034.html#a3612738

每当我在网络中重新启动一个任意代理时,在尝试将回复发送到临时队列时,我在使用者应用程序日志中收到了许多这样的错误:

javax.jms.InvalidDestinationException:
  Cannot publish to a deleted Destination: temp-queue://ID:...
Run Code Online (Sandbox Code Playgroud)

然后我看到加里在那里建议使用的回应

jms.watchTopicAdvisories=false
Run Code Online (Sandbox Code Playgroud)

作为客户端的URL参数brokerURL.我使用此附加参数立即更改了客户端代理URL.但是现在,当我在网络中重新启动我的代理进行此故障转移测试时,我发现这样的错误:

javax.jms.JMSException: 
  The destination temp-queue:
    //ID:client.host-65070-1308610734958-2:1:1 does not exist.
Run Code Online (Sandbox Code Playgroud)

我使用的是ActiveMQ 5.5版本.我的客户端代理URL如下所示:

failover:(tcp://amq-host1:61616,tcp://amq-host2.tred.aol.com:61616,tcp://amq-host3:61616,tcp://amq-host4:61616)?jms.useAsyncSend=true&timeout=5000&jms.watchTopicAdvisories=false
Run Code Online (Sandbox Code Playgroud)

另外,这是我的4个代理之一的activemq配置XML: amq1.xml

有人可以在这里查看这个问题并建议我在这个设置中犯了什么错误.

更新:

为了进一步澄清我在代码中如何进行请求 - 响应:

  1. 我已经使用了每个生产者目的地(即临时队列)并在每个消息的回复标题中设置它.
  2. 我已经在JMSCorrelationID标头中发送了每条消息唯一的相关标识符.
  3. 据我所知,即使Camel和Spring也使用临时队列进行请求 - 响应机制.唯一的区别是Spring JMS实现为每条消息创建和销毁临时队列,而我在生产者的生命周期中创建临时队列.当客户端(生产者)应用程序关闭时,或者当AMQ代理意识到没有与此临时队列连接的活动生成器时,将销毁此临时队列.
  4. 我已经在生产者端的每条消息上设置了消息到期,这样消息就不会在队列中停留太长时间(60秒).

java activemq-classic jms failovercluster

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

Eclipse:导出运行配置

我用eclipse编写了一个复杂的Java应用程序,它使用项目文件夹中包含的许多.jar库.

有一种快速方法可以导出应用程序的运行配置,允许我从shell运行它(我实际上不需要在机器周围移动它,所以没有jar导出或类似的东西).

我只需要从Eclipse中分离执行,但由于项目有很多设置,我想自动导出脚本(可能是.sh或只是一个简单的长行).

java eclipse execution

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

jQuery multiselect下拉菜单

我有一个简单的html多选下拉列表:

<select id="transactionType" multiple="multiple" size="10">
  <option value="ALLOC">ALLOC</option>
  <option value="LOAD1">LOAD1</option>
  <option value="LOAD2">LOAD2</option>
  <!-- etcetera... -->
</select>
Run Code Online (Sandbox Code Playgroud)

我希望在javascript被禁用的情况下继续使用此列表但是使用javaScript我想将列表呈现为多选下拉列表.也就是说它只显示列表中的一个项目,直到被点击,然后将展开以显示x项目并提供滚动,我可以在按住shift或ctrl的同时选择多个元素.

jQuery的新手正在搜索http://jquery.com/但还没有找到我需要的东西.

编辑 Struts2用户,所选答案将url编码为[]这会导致struts2中的问题,但修复非常容易.只需打开jquery.multiSelect.js并搜索"[]"并删除在字符串连接中使用的一个实例.我也使用jQuery 1.4.4而不是与它捆绑在一起的1.3.2,一切正常.

jquery jquery-ui jquery-plugins multi-select

50
推荐指数
4
解决办法
35万
查看次数

Spring MVC + JSON = 406不可接受

我正在尝试生成一个简单的JSON响应.现在我得到406 Not Acceptable错误.Tomcat说:"此请求标识的资源只能根据请求"接受"标题生成具有不可接受特征的响应." 即使我的Accept标题是

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Run Code Online (Sandbox Code Playgroud)

在tomcat/lib中,我有所有Tomcat jar,Spring jar和jackson-all-1.9.0.jar.我正在使用Spring 3.2.2和Tomcat 7.

我知道这个问题已经讨论了很多次,但没有一个解决方案适合我.

web.xml中

<web-app id="WebApp_ID" version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <display-name>Spring Web MVC Application</display-name>

  <servlet>
    <servlet-name>dispatcher</servlet-name>
        <servlet-class>
                  org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.htm</url-pattern>
  </servlet-mapping>

</web-app>
Run Code Online (Sandbox Code Playgroud)

调度员servlet.xml中

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
     http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
        <property name="prefix">
            <value>/WEB-INF/pages/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>
 <context:component-scan base-package="com.smiechmateusz.controller" />
 <context:annotation-config />

    <mvc:annotation-driven />

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

HelloWorldController.java

package com.smiechmateusz.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import …
Run Code Online (Sandbox Code Playgroud)

java spring json

50
推荐指数
7
解决办法
15万
查看次数

Mockito - 如何验证模拟从未被调用过

我正在寻找一种方法来验证Mockito,在测试期间没有与给定模拟器的任何交互.对于具有验证模式的给定方法,很容易实现never(),但我还没有找到完整模拟的解决方案.

我实际想要实现的目标:在测试中验证,没有任何内容打印到控制台.jUnit的一般想法是这样的:

private PrintStream systemOut;

@Before
public void setUp() {
    // spy on System.out
    systemOut = spy(System.out);
}

@After
public void tearDown() {
    verify(systemOut, never());  // <-- that doesn't work, just shows the intention
}
Run Code Online (Sandbox Code Playgroud)

A PrintStream有很多方法,我真的不想用每个单独的验证验证每个方法 - 对于System.err...来说也是如此

所以我希望,如果有一个简单的解决方案,我可以,鉴于我有一个很好的测试覆盖率,迫使软件工程师(和我自己)删除他们的(我的)调试代码,System.out.println("Breakpoint#1");或者e.printStacktrace();在提交更改之前或之前.

java junit mockito

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

如何预测递归方法的最大调用深度?

为了估计最大调用深度,递归方法可以用给定量的存储器实现,在堆栈溢出错误可能发生之前计算所用存储器的(近似)公式是什么?

编辑:

许多人回答"它依赖",这是合理的,所以让我们通过使用一个微不足道但具体的例子来删除一些变量:

public static int sumOneToN(int n) {
    return n < 2 ? 1 : n + sumOneToN(n - 1);
}
Run Code Online (Sandbox Code Playgroud)

很容易证明,在我的Eclipse IDE中运行它会爆炸n不到1000(对我来说非常低).这个调用深度限制是否可以在不执行的情况下估算?

编辑:我不禁认为Eclipse有一个固定的最大调用深度1000,因为我得到了998,但是有一个用于main,一个用于初始调用方法,1000总而言之.这是一个"太圆"的数字恕我直言,是一个巧合.我会进一步调查.我只是Dux开销-Xss vm参数; 它是最大的堆栈大小,所以Eclipse运行器必须-Xss1000设置在某处

java memory stack-overflow recursion jvm

49
推荐指数
2
解决办法
7515
查看次数

在Xcode 4.2/iOS 5下的控制台中没有异常堆栈跟踪?

在Xcode 3.x和iOS 4下,如果在模拟器中发出未处理的异常信号,则在控制台输出中会产生异常堆栈跟踪(类似于Java).

当我在Xcode 4.2下的iOS 5中引发未处理的异常时,运行完全相同的应用程序代码,不会发生堆栈跟踪.(我确实弄清楚如何设置异常断点,但这不会在控制台中产生回溯.)

这仅仅是我需要在某处创建的Xcode设置,还是Xcode 4/iOS 5的"功能"?有没有办法恢复这一点功能?

更新

不幸的是,添加一个uncaughtExceptionHandler不起作用.这是处理程序:

void uncaughtExceptionHandler(NSException *exception) {
    NSLog(@"uncaughtExceptionHnadler -- Exception %@", [exception description]);
    // Because iOS 5 doesn't provide a traceback, provide one here
    NSLog(@"Stack trace: %@", [exception callStackSymbols]);
    // Let Flurry look at the error
    [FlurryAPI logError:@"Uncaught" message:@"Crash!" exception:exception];
}                                               
Run Code Online (Sandbox Code Playgroud)

(事实证明它已经存在,做Flurry的事情,所以我只是添加了堆栈跟踪.)

这是它启用的地方(只在声明处理程序的下面几行):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Enable uncaught exception handler to dump stack and let Flurry log the exception
    NSUncaughtExceptionHandler* hdlr = NSGetUncaughtExceptionHandler();
    NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
    NSUncaughtExceptionHandler* newHdlr …
Run Code Online (Sandbox Code Playgroud)

ios5 xcode4.2

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

String vs char []

我从IBM获得了一些名为"从Java代码到Java堆:了解应用程序的内存使用情况"的幻灯片,它说,当我们使用String而不是char[],

单个字符的最大开销为24:1!

但是我无法理解这里提到的开销.有人可以帮忙吗?

资源 :

在此输入图像描述

java memory string memory-management

47
推荐指数
2
解决办法
7208
查看次数

我为什么要签署我的JAR文件?

我为什么要签署我的JAR文件?

我知道我需要签署我的客户端JAR文件(包含Applet),以便可以完成文件系统访问等特殊操作,以便窗口底部的烦人位不会显示,但为什么还要显示?我是否需要签署包含Servlet等的服务器端JAR文件?

关于何时何何不签署JAR的一些基本规则将不胜感激 - 谢谢!

java jar signed-applet

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