请考虑以下代码.
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) 在我的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
有人可以在这里查看这个问题并建议我在这个设置中犯了什么错误.
为了进一步澄清我在代码中如何进行请求 - 响应:
我用eclipse编写了一个复杂的Java应用程序,它使用项目文件夹中包含的许多.jar库.
有一种快速方法可以导出应用程序的运行配置,允许我从shell运行它(我实际上不需要在机器周围移动它,所以没有jar导出或类似的东西).
我只需要从Eclipse中分离执行,但由于项目有很多设置,我想自动导出脚本(可能是.sh或只是一个简单的长行).
我有一个简单的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,一切正常.
我正在尝试生成一个简单的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) 我正在寻找一种方法来验证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();在提交更改之前或之前.
为了估计最大调用深度,递归方法可以用给定量的存储器实现,在堆栈溢出错误可能发生之前计算所用存储器的(近似)公式是什么?
许多人回答"它依赖",这是合理的,所以让我们通过使用一个微不足道但具体的例子来删除一些变量:
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设置在某处
在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) 我从IBM获得了一些名为"从Java代码到Java堆:了解应用程序的内存使用情况"的幻灯片,它说,当我们使用String而不是char[],
单个字符的最大开销为24:1!
但是我无法理解这里提到的开销.有人可以帮忙吗?
资源 :

我为什么要签署我的JAR文件?
我知道我需要签署我的客户端JAR文件(包含Applet),以便可以完成文件系统访问等特殊操作,以便窗口底部的烦人位不会显示,但为什么还要显示?我是否需要签署包含Servlet等的服务器端JAR文件?
关于何时何何不签署JAR的一些基本规则将不胜感激 - 谢谢!