我正在玩Jetty GzipHandler,它似乎工作得相当奇怪:它只压缩已经压缩的文件.
我的整个设置是
GzipHandler gzipHandler = new GzipHandler();
gzipHandler.setHandler(myHandler);
server.setHandler(gzipHandler);
Run Code Online (Sandbox Code Playgroud)
浏览器(Chromium)始终发送包含的标头
Accept-Encoding:gzip,deflate,sdch
Run Code Online (Sandbox Code Playgroud)
所以根据文件
GZIP Handler如果出现以下情况,此处理程序将gzip响应的内容:
- 过滤器映射到匹配路径
- 响应状态代码> = 200且<300
- 内容长度未知或大于minGzipSize initParameter或minGzipSize为0(默认值)
- content-type在mimeTypes initParameter中设置的逗号分隔的mimeTypes列表中,或者如果没有定义mimeTypes,则content-type不是"application/gzip"
- 资源未指定内容编码
它应该适用于两者.我只是不确定这path部分,但没有指明任何部分,我希望它适用于两者或两者都不适用.
我曾经window.location.reload(true)强行重装.标题相当长,所以我将它们链接起来:css和png.
我试图设置一些属性,但没有任何成功.如果我找到
jetty-servlets-9.1.3.v20140225-sources.jar,我会调试它.问题是:为什么GzipHandler决定只压缩压缩文件?它是完全确定的:jpg并且png被压缩(无论多小)并且没有其他文件.
通过setMimeTypes我可以排除图像.我调试它,我仍然没有线索,为什么其他静态资源永远不会被压缩.我仔细检查了myHandler它们是否均匀地对待它们(它们都是直接从预先计算出来的Map<String, byte[]>).
在服务器(嵌入式Jetty)上,我需要重定向到其他端口,而其他所有内容均保持不变,例如,从
http://com.example.myserver:1234/whatever?with=params#and-hash?and=whoknowswhat
Run Code Online (Sandbox Code Playgroud)
至
http://com.example.myserver:5678/whatever?with=params#and-hash?and=whoknowswhat
Run Code Online (Sandbox Code Playgroud)
看来我必须根据我不太了解的内容来组成结果URL:
为了生成伪随机排列,可以使用Knuth 洗牌。对合是一种自逆排列,我想,我可以通过禁止多次触摸一个元素来调整洗牌。然而,我不确定我是否可以有效地做到这一点,以及它是否平等地生成每个对合。
恐怕需要一个例子:在一个集合 上{0,1,2},有 6 个排列,其中 4 个是对合。我正在寻找一种以相同概率随机生成其中一个的算法。
一个正确但效率很低的算法是:使用 Knuth shuffle,如果没有对合则重试。
给定一组50k字符串,我需要找到所有对(s, t),这样s,t并且s + t都包含在这个集合中.
,还有一个额外的约束:s.length() >= 4 && t.length() >= 4.这使得可以通过长度为4的前缀和单独的后缀对字符串进行分组.然后,对于每个composed长度至少为8的字符串,我查找s使用前四个字符composed的候选集和t使用其最后四个字符的候选集.这有效,但需要查看30M候选对(s, t)才能找到7k结果.
这个令人惊讶的大量候选人来自这样一个事实,即字符串是来自有限词汇表的(主要是德语)单词,而单词的开头和结尾通常是相同的.它仍然比尝试所有2.5G对要好得多,但比我希望的要糟糕得多.
由于附加约束可能会被删除而且集合会增长,我正在寻找更好的算法.
有人抱怨我不问问题.所以缺少的问号在下一句的末尾.如何更有效地完成这项工作,理想情况下不使用约束?
我有时会使用一个计时器来调用System.exit,以便在几秒钟之后终止我的丢弃代码片段,这在它吃100%CPU和Windows因此而不负责任时非常有用.它非常方便,除非我在调试器中启动它.在调试器中我想自动禁用它,否则我会忘记它并且我的调试过程被杀死.我可以看一下进程是否在调试器中启动了吗?
注意:我知道我不应该将此用于任何严肃的事情.我不打算.
我需要类似的东西
@DefaultInstance(Level.NORMAL)
enum Level {NORMAL, FANCY, DEBUGGING}
Run Code Online (Sandbox Code Playgroud)
这将使Guice回归Level.NORMAL表达
injector.getInstance(Level.class)
Run Code Online (Sandbox Code Playgroud)
没有这样的事情@DefaultInstance.作为一种解决方法,我尝试@ProvidedBy了一个微不足道的Provider,但它不起作用.
我有一个程序处理大量文件,每个文件需要完成两件事:首先,读取并处理文件的某些部分,然后MyFileData存储结果.第一部分可以并行化,第二部分不能.
按顺序执行所有操作都非常慢,因为CPU必须等待磁盘,然后它会工作一点,然后它会发出另一个请求,然后再次等待...
我做了以下
class MyCallable implements Callable<MyFileData> {
MyCallable(File file) {
this.file = file;
}
public MyFileData call() {
return someSlowOperation(file);
}
private final File file;
}
for (File f : files) futures.add(executorService.submit(new MyCallable(f)));
for (Future<MyFileData> f : futures) sequentialOperation(f.get());
Run Code Online (Sandbox Code Playgroud)
它帮助了很多.但是,我想改进两件事:
自从Ubuntu从13.04更新到13.10以来,我遇到了Aptana Studio的问题.
顶部菜单无法点击.当我单击菜单项时不显示.
我试图重新安装Aptana(x64版本),但我仍有同样的问题.
有帮助吗?
我将我的程序简化为以下简单的片段,我仍然收到消息
名称"main :: FILE"仅使用一次:可能的拼写错误...
#!/usr/bin/perl -w
use strict;
use autodie qw(open close);
foreach my $f (@ARGV) {
local $/;
open FILE, "<", $f;
local $_ = <FILE>; # <--- HERE
close FILE;
print $_;
}
Run Code Online (Sandbox Code Playgroud)
这显然是不正确的,因为它被使用了三次.无论出于何种原因,只有标记的事件才算数.
我知道打开文件的更好方法(使用$ filehandle),但它不支付短脚本,是吗?那我怎么能摆脱错误的警告呢?