小编Wal*_*inz的帖子

用于提供静态内容的Servlet

我在两个不同的容器(Tomcat和Jetty)上部署了一个webapp,但是他们用于提供静态内容的默认servlet有一种不同的方式来处理我想要使用的URL结构(详细信息).

因此,我希望在webapp中包含一个小servlet来提供自己的静态内容(图像,CSS等).servlet应具有以下属性:

这样的servlet可以在某处使用吗?我能找到的最接近的是servlet书中的例子4-10.

更新:我想使用的URL结构 - 万一你想知道 - 只是:

    <servlet-mapping>
            <servlet-name>main</servlet-name>
            <url-pattern>/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>/static/*</url-pattern>
    </servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

所以所有请求都应该传递给主servlet,除非它们是static路径.问题是Tomcat的默认servlet不考虑ServletPath(因此它在主文件夹中查找静态文件),而Jetty则这样(因此它在static文件夹中查找).

java jsp servlets java-ee

143
推荐指数
9
解决办法
16万
查看次数

Haskell迭代超过2d列表,过滤,输出1d列表

我以为我在Haskell研究中一帆风顺,直到......

我有一个[[Int]]

tiles = [[1,0,0]
        ,[0,1,0]
        ,[0,1,0]
        ]
Run Code Online (Sandbox Code Playgroud)

和数据类型:

data Coord = Coord
    { x :: Int
    , y :: Int 
    } deriving (Eq)
Run Code Online (Sandbox Code Playgroud)

基于输入tiles,我一直在尝试输出a [Coord],这样Coord只有当值为tiles1 时才生成a ,并且Coord它将在2d列表中存储它的位置:

blackBox :: [[Int]] -> [Coord]
blackBox tiles = <magic> 
-- given the above example I would expect:
-- [(Coord 0 0),(Coord 1 1),(Coord 1 2)]
Run Code Online (Sandbox Code Playgroud)

我尝试过第一次将[[Int]]转换为[Int],通过:

foldTiles :: [[Int]] -> [Int]
foldTiles tiles = foldr (++) [] tiles
Run Code Online (Sandbox Code Playgroud)

但在那之后,我不确定如何传递指数.我想如果我可以映射"折叠的瓷砖",输出一个元组(值,索引),我可以很容易地找出其余部分.

更新如果有人感兴趣,我得到它的工作,这里是它的演示(源代码和GitHub的链接)!我将不得不花更多的时间来理解每个答案,因为这是我第一次使用FP编写游戏.非常感谢!

http://kennycason.com/posts/2013-10-10-haskell-sdl-gameboy-boxxle.html

haskell

16
推荐指数
1
解决办法
5246
查看次数

如何在Haskell中滚动快速BVH表示

我正在玩Haskell Raytracer,目前正在使用BVH实现,它强调一个天真的二叉树来存储层次结构,

data TreeBvh
   = Node Dimension TreeBvh TreeBvh AABB
   | Leaf AnyPrim AABB
Run Code Online (Sandbox Code Playgroud)

其中Dimension是X,YZ(用于更快的遍历)和AABB是我的类型的轴对齐边界框.这种方法运行得相当不错,但我真的很想尽可能快地得到它.所以我的下一步(当使用C/C++时)将使用这个树来构造一个扁平表示,其中节点存储在一个数组中,"left"子节点紧跟在它的父节点和父节点的右子节点的索引之后与父母一起存储,所以我有这样的事情:

data LinearNode
   = LinearNode Dimension Int AABB
   | LinearLeaf AnyPrim AABB

data LinearBvh
   = MkLinearBvh (Array Int LinearNode)
Run Code Online (Sandbox Code Playgroud)

我还没有真正尝试过这个,但我担心性能仍然低于标准,因为我不能将LinearNode实例存储在UArray中,也不能将Int正确子项的索引与组成该Float值的值一起存储.单个UArray中的AABB(如果我弄错了,请纠正我).使用两个阵列意味着缓存一致性差.所以我基本上都在寻找一种有效存储树的方法,因此我可以期待良好的遍历性能.它应该是

  • 紧凑
  • 具有良好的地方特性
  • 与最近的GHC编译器合作
  • 应尽可能小的间接(尽管"thunk"无法帮助表现,所以"unboxed"类型会让我觉得有帮助)

arrays haskell raytracing vector bounding-box

14
推荐指数
1
解决办法
877
查看次数

如何将JNLP API与Maven Project捆绑在一起

我有一个需要JNLP API的项目.我没有在Maven Central上找到一个神器,所以我添加了一个外部存储库,它将它提供给我的pom.该存储库本周末脱机.这是第二次这样的事情发生在我身上.

我知道这是一个很值得Maven是什么不是什么,但我真的只是想那个小JNLP-API-1.5.0.jar文件是

  1. 在我的SCM中(我不想只为一个依赖项滚动我自己的Maven存储库).
  2. 在项目构建的编译范围内.

我必须转向哪个旋钮才能实现这一目标?

jnlp dependencies maven-2 jar

12
推荐指数
1
解决办法
9542
查看次数

Haskell中的并发文件读/写?

我有一个存储Binary数据的大文件.有多个线程读取和写入这些文件,我当前的设计使用单个文件同步它们Lock.这样一来,我只有一个HandleReadWriteMode打开一个文件,并将所有线程对于单个锁定战斗时,他们觉得自己做一些I/O.

我想通过允许多个读者同时工作来改进这一点.我尝试过使用a RWLock并打开多个Handle.这RWLock将确保只有一个线程修改文件,同时允许多个线程(我有多个句柄打开,编译时常量)同时读取.当试图运行此,我被一个事实,即运行时命中只允许有一个 HandleReadWriteMode为随时文件存在.

我该如何解决这种情况?我认为获取/释放a Handle是一项昂贵的操作,因此在获取之后只需以适当的模式打开文件RWLock就不是一种选择.或者,也许有一个包,提供类似Java的API FileChannel读取写入  的方法呢?

PS:我想支持32位架构,因此文件> 4GiB无法实现内存映射IO,对吗?

concurrency file-io haskell

6
推荐指数
1
解决办法
1107
查看次数

以二进制补码表示读/写Haskell Integer

我需要以与Java对BigInteger类所做的兼容的方式读写Integers :

返回一个包含此BigInteger的二进制补码表示的字节数组.字节数组将采用big-endian字节顺序:最重要的字节位于第0个元素中.该数组将包含表示此BigInteger所需的最小字节数,包括至少一个符号位,即(ceil((this.bitLength()+ 1)/ 8)).

可悲的是,这排除了Data.Binary提供什么.在库中的某个地方遵循此约定,是否有效地进行ByteString< - > Integer转换?如果没有,怎么办呢?

基于Thomas M. DuBuisson(以及以下讨论)的回答,我现在有了

i2bs :: Integer -> B.ByteString
i2bs x
   | x == 0 = B.singleton 0
   | x < 0 = i2bs $ 2 ^ (8 * bytes) + x
   | otherwise = B.reverse $ B.unfoldr go x
   where
      bytes = (integerLogBase 2 (abs x) + 1) `quot` 8 + 1
      go i = if i == 0 then Nothing
                       else Just (fromIntegral …
Run Code Online (Sandbox Code Playgroud)

binary haskell integer twos-complement

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

在Grizzly的哪里挂接身份验证?

我正在使用注册了HttpServer两个HttpHandler实例的Grizzly :

  • 下面/api/*是提供产品API的Jersey REST风格的应用程序,以及
  • /*有一个StaticHttpHandler供应静态HTML / JavaScript内容(其中,除其他事项外,在会谈的API/api/

对于身份验证,我目前 使用ContainerRequestFilter实现HTTP Basic Auth 的Jersey来保护API ,该外观与另一个SO问题中提出的内容非常相似。

但是随着需求的变化,现在我想要求对到达服务器的所有请求进行身份验证。因此,我想将身份验证从Jersey升级到Grizzly一级。不幸的是,我完全找不到在Grizzly中可以在哪里连接“请求过滤器”(或任何所谓的过滤器)的方法。有人可以指出我相关的API吗?

authentication http grizzly

5
推荐指数
1
解决办法
1166
查看次数

Haskell Tail Split

这就是我想要做的:

如果我给 $hello world我,我会得到world

我在做什么是这样的:

tail (unwords (words "$hello world")) 但我得到了 "hello world"不是world

为了做到这一点,我该怎么办?

string haskell split tail

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

使用嵌套列表"压缩"普通列表

我正在寻找一个优雅的解决方案来解决以下问题.我有两个以下类型的列表:

[Float] 和, [[Float]]

第一个列表包含无限量的随机值.第二个列表包含我不再关心的值.它的结构是有限的,必须保留.第一个列表的值需要替换第二个列表的值.

显然,由于第一个列表包含随机值,我不想使用它们两次.任何人都可以帮助我以清晰,简洁简洁的方式做到这一点吗?

scramble :: [Float] -> [[Float]] -> [[Float]]
Run Code Online (Sandbox Code Playgroud)

给我你最好的一击

haskell

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

如何确定函数的类型?

假设我有一个函数map zipWith,我该如何确定它的类型?鉴于zipWith(a -> b -> c) -> [a] -> [b] -> [c]和的类型map(a -> b) -> [a] -> [b]

同样,我如何确定类似的函数类型zipWith sum

haskell types

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

返回数组Haskell中的特定项

我有一系列字符:

["AB", "CD", "EF", "GH"]
Run Code Online (Sandbox Code Playgroud)

我只想回来 ["EF"]

如何输入字符串和数字并让它返回字符数组中该点的元素?

例如

showMe :: String -> Int -> String
Run Code Online (Sandbox Code Playgroud)

string haskell char

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