小编maa*_*nus的帖子

以编程方式设置Jetty GzipHandler

我正在玩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)强行重装.标题相当长,所以我将它们链接起来:csspng.

我试图设置一些属性,但没有任何成功.如果我找到 jetty-servlets-9.1.3.v20140225-sources.jar,我会调试它.问题是:为什么GzipHandler决定只压缩压缩文件?它是完全确定的:jpg并且png被压缩(无论多小)并且没有其他文件.

更新

通过setMimeTypes我可以排除图像.我调试它,我仍然没有线索,为什么其他静态资源永远不会被压缩.我仔细检查了myHandler它们是否均匀地对待它们(它们都是直接从预先计算出来的Map<String, byte[]>).

compression http jetty embedded-jetty

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

重定向到其他端口,保留其余所有端口

在服务器(嵌入式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:

  • 浏览器使用的服务器名称
  • URL的其余部分

java embedded-jetty http-redirect

4
推荐指数
1
解决办法
4568
查看次数

如何生成伪随机卷积?

为了生成伪随机排列,可以使用Knuth 洗牌。对合是一种自逆排列,我想,我可以通过禁止多次触摸一个元素来调整洗牌。然而,我不确定我是否可以有效地做到这一点,以及它是否平等地生成每个对

恐怕需要一个例子:在一个集合 上{0,1,2},有 6 个排列,其中 4 个是对合。我正在寻找一种以相同概率随机生成其中一个的算法。

一个正确但效率很低的算法是:使用 Knuth shuffle,如果没有对合则重试。

random algorithm math permutation inverse

4
推荐指数
1
解决办法
498
查看次数

在一个庞大的集合中查找两个字符串的所有连接

给定一组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对要好得多,但比我希望的要糟糕得多.

我需要的

由于附加约束可能会被删除而且集合会增长,我正在寻找更好的算法.

"失踪"的问题

有人抱怨我不问问题.所以缺少的问号在下一句的末尾.如何更有效地完成这项工作,理想情况下不使用约束?

java algorithm string-algorithm

4
推荐指数
1
解决办法
148
查看次数

如何确定Java进程是否在调试器中启动?

我有时会使用一个计时器来调用System.exit,以便在几秒钟之后终止我的丢弃代码片段,这在它吃100%CPU和Windows因此而不负责任时非常有用.它非常方便,除非我在调试器中启动它.在调试器中我想自动禁用它,否则我会忘记它并且我的调试过程被杀死.我可以看一下进程是否在调试器中启动了吗?

注意:我知道我不应该将此用于任何严肃的事情.我不打算.

java debugging

3
推荐指数
1
解决办法
254
查看次数

如何为Guice指定默认的Enum实例?

我需要类似的东西

@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,但它不起作用.

java enums default guice

3
推荐指数
2
解决办法
2414
查看次数

优化许多文件的并行处理

我有一个程序处理大量文件,每个文件需要完成两件事:首先,读取并处理文件的某些部分,然后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)

它帮助了很多.但是,我想改进两件事:

  • sequentialOperation获取固定的顺序,而不是处理任何结果,请首先执行.我该怎么改变它?

  • 有数千个文件需要处理,启动数千个磁盘请求可能导致磁盘丢失.通过使用Executors.newFixedThreadPool(10)我限制了这个数字,但我正在寻找更好的东西.理想情况下,它应该是自我调整的,以便它在不同的计算机上工作最佳(例如,当RAID和/或NCQ可用时发出更多请求等).我不认为它可以基于找出的硬件配置,但测量的处理速度,并在此基础上应该优化某种程度上是可能的.任何的想法?

java parallel-processing multithreading executorservice

3
推荐指数
1
解决办法
1036
查看次数

自从我升级到Ubuntu 13.10后菜单未显示

自从Ubuntu从13.04更新到13.10以来,我遇到了Aptana Studio的问题.

顶部菜单无法点击.当我单击菜单项时不显示.

我试图重新安装Aptana(x64版本),但我仍有同样的问题.

有帮助吗?

aptana menu ubuntu-13.10

3
推荐指数
1
解决办法
1964
查看次数

ng-repeat 用于 3+ 层深层次结构

我想知道ng-repeat在多级结构中是否有一种理智的-ing方式。想象一下这样的数据

  • 最佳
    • 中间
    • 1
    • 2
    • 中间
    • 3
    • 4
    • 5
  • 最佳
    • 中间
    • 6
    • 中间
    • 7
    • 8
    • 9

然后显示为 HTML 列表意味着N嵌套循环(这对于固定 来说很简单N)。表的相同不起作用,因为所有<tr>s 必须在同一级别。有一个技巧使用tbody,但它只保存一个级别。

对于 2 个级别,使用ng-repeat-start/end. 对于 3 个级别,我需要一个像这个plunk一样的隐形行。我想知道是否有一个干净的解决方案以及如何将其扩展到 4 个级别(我真的希望我不需要 5 个级别)。

nested-loops angularjs angularjs-ng-repeat

3
推荐指数
1
解决办法
7683
查看次数

Perl错误地抱怨名称"main :: FILE"仅使用一次

我将我的程序简化为以下简单的片段,我仍然收到消息

名称"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),但它不支付短脚本,是吗?那我怎么能摆脱错误的警告呢?

perl warnings file

3
推荐指数
1
解决办法
616
查看次数