我发现自己使用了以下练习,但每次使用它时,我内心都会有些畏缩.基本上,它是参数的前提条件测试,以确定是否应该完成实际工作.
public static void doSomething(List<String> things)
{
if(things == null || things.size() <= 0)
return;
//...snip... do actual work
}
Run Code Online (Sandbox Code Playgroud) 我注意到OutputStream如果 curl 请求是 ctrl+c,下面的代码将使用相同的对象(调试时相同的哈希代码),然后重新运行。即使使用不同的参数,它也使用相同的OutputStream. 这显然会导致非常奇怪的输出。
原始输出流NullPointerException在写入时开始抛出,OutputStream因为底层HttpOutputStream不再存在(管道损坏)。这就是为什么我认为后续请求会重用同一个OutputStream对象很奇怪。
在 finally 块中关闭输出流可解决此问题。我在网上看到的一些例子没有明确关闭输出流。是OutputStream预期的重用吗?有没有人对我为什么会看到这种行为有任何想法?
@RequestMapping(value= URI_ROOT, method= RequestMethod.POST, produces = {"text/event-stream"})
public StreamingResponseBody methodName(
... params
) {
return new StreamingResponseBody() {
@Override
public void writeTo(OutputStream outputStream) {
try {
... code ...
} catch (Exception e) {
LOGGER.info("Migration thread interrupted.",e);
} finally {
IoUtil.closeSilently(outputStream); // This fixes it.
}
}
};
}
Run Code Online (Sandbox Code Playgroud) 我很困惑第二行在这段代码中做了什么.我认为$ runas应该评估给用户的uid.$ <做什么?这包含在CGI脚本中.
my $runAS = (getpwnam("username"))[2];
$runAS = $< if ($runAS == 0);
Run Code Online (Sandbox Code Playgroud) 我目前正在使用一个具有一个大型RPC服务的GWT应用程序.它有100多种方法,所有方法都做不同的事情.如果将其拆分为多个RPC服务,我将获得什么样的性能优势/障碍?我相信我必须为每个人制作一个新的servlet.
所以我的主要问题是:GWT是否为每个正在运行的客户端创建一个新的RPC servlet?如果我有两个RPC服务,GWT会为一个应用程序有两个servlet吗?有两个RPC服务会导致任何性能问题.目前(一个tomcat实例上有10-15个并发用户)
我在一个我继承的大型应用程序中工作,并且遇到了一些最佳实践问题.
每次用户导航到"我们的客户编辑"页面时,都会创建一个新的演示者,并设置一个视图.有一个主要的客户编辑演示者和一个主视图.主视图中还有子视图,由主演示者的子演示者使用.在子演示者中,我在事件总线上注册事件处理程序.
我遇到的问题是,当第二次导航到联系人编辑器时,会再次创建演示者,并再次注册这些事件.现在,当一个事件发生时,它会被处理两次,每个presenter实例一次.
演示者不会被变量保留,但子视图由主视图引用.可能是视图中的这个引用是否阻止事件处理程序被删除?我的印象是,如果该对象被垃圾收集,将删除事件处理程序.如果不是这种情况,我应该从事件总线取消注册这些事件处理程序吗?
更新:演示者没有被垃圾收集.如果我可以修改代码以在不再需要它们时删除对这些演示者的所有引用,它们是否会被收集,因此将删除事件处理程序?